Returning the buffer allows using it in the logging functions in easier way. This also makes the API consistent with sockunion.
Add also PREFIX_STRLEN to be the generic buffer length required for any prefix string representation. Signed-off-by: Timo Teräs <[email protected]> --- lib/prefix.c | 7 ++++--- lib/prefix.h | 5 ++++- lib/zclient.c | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/prefix.c b/lib/prefix.c index 57cf12a..63742f3 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -760,14 +760,15 @@ str2prefix (const char *str, struct prefix *p) return 0; } -int -prefix2str (const struct prefix *p, char *str, int size) +const char * +prefix2str (union prefix46constptr pu, char *str, int size) { + const struct prefix *p = pu.p; char buf[BUFSIZ]; inet_ntop (p->family, &p->u.prefix, buf, BUFSIZ); snprintf (str, size, "%s/%d", buf, p->prefixlen); - return 0; + return str; } struct prefix * diff --git a/lib/prefix.h b/lib/prefix.h index 404a63a..bc8aebc 100644 --- a/lib/prefix.h +++ b/lib/prefix.h @@ -129,6 +129,9 @@ union prefix46constptr #define INET6_BUFSIZ 51 #endif /* INET6_BUFSIZ */ +/* Maximum prefix string length (IPv6) */ +#define PREFIX_STRLEN 51 + /* Max bit/byte length of IPv4 address. */ #define IPV4_MAX_BYTELEN 4 #define IPV4_MAX_BITLEN 32 @@ -179,7 +182,7 @@ extern void prefix_free (struct prefix *); extern const char *prefix_family_str (const struct prefix *); extern int prefix_blen (const struct prefix *); extern int str2prefix (const char *, struct prefix *); -extern int prefix2str (const struct prefix *, char *, int); +extern const char *prefix2str (union prefix46constptr, char *, int); extern int prefix_match (const struct prefix *, const struct prefix *); extern int prefix_same (const struct prefix *, const struct prefix *); extern int prefix_cmp (const struct prefix *, const struct prefix *); diff --git a/lib/zclient.c b/lib/zclient.c index 21cdc94..329a2de 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -809,11 +809,11 @@ zebra_interface_address_read (int type, struct stream *s) else if (CHECK_FLAG(ifc->flags, ZEBRA_IFA_PEER)) { /* carp interfaces on OpenBSD with 0.0.0.0/0 as "peer" */ - char buf[BUFSIZ]; - prefix2str (ifc->address, buf, sizeof(buf)); + char buf[PREFIX_STRLEN]; zlog_warn("warning: interface %s address %s " "with peer flag set, but no peer address!", - ifp->name, buf); + ifp->name, + prefix2str (ifc->address, buf, sizeof buf)); UNSET_FLAG(ifc->flags, ZEBRA_IFA_PEER); } } -- 2.4.1 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
