X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=util.c;h=59ed427ca532956bdae93f31d0e898e4e1afd999;hb=5e7a63be9a512bf979e5538e6a694d5fd66b9380;hp=d1621fcb5acfe3534556cf17843c1c42ec4d05e6;hpb=656df7e2c9b688150ebe991d79a64ac096bb5f8e;p=secnet.git diff --git a/util.c b/util.c index d1621fc..59ed427 100644 --- a/util.c +++ b/util.c @@ -543,33 +543,27 @@ void string_item_to_iaddr(const item_t *item, uint16_t port, union iaddr *ia, #endif /* CONFIG_IPV6 */ } -#define IADDR_NBUFS_SHIFT 3 -#define IADDR_NBUFS (1 << IADDR_NBUFS_SHIFT) +#define IADDR_NBUFS 8 const char *iaddr_to_string(const union iaddr *ia) { - static int b; - - b++; - b &= IADDR_NBUFS-1; - #ifndef CONFIG_IPV6 - static char bufs[IADDR_NBUFS][100]; + SBUF_DEFINE(IADDR_NBUFS, 100); assert(ia->sa.sa_family == AF_INET); - snprintf(bufs[b], sizeof(bufs[b]), "[%s]:%d", + snprintf(SBUF, sizeof(SBUF), "[%s]:%d", inet_ntoa(ia->sin.sin_addr), ntohs(ia->sin.sin_port)); #else /* CONFIG_IPV6 => we have adns_addr2text */ - static char bufs[IADDR_NBUFS][1+ADNS_ADDR2TEXT_BUFLEN+20]; + SBUF_DEFINE(IADDR_NBUFS, 1+ADNS_ADDR2TEXT_BUFLEN+20); int port; - char *addrbuf = bufs[b]; + char *addrbuf = SBUF; *addrbuf++ = '['; int addrbuflen = ADNS_ADDR2TEXT_BUFLEN; @@ -585,11 +579,11 @@ const char *iaddr_to_string(const union iaddr *ia) int addrl = strlen(addrbuf); portbuf += addrl; - snprintf(portbuf, sizeof(bufs[b])-addrl, "]:%d", port); + snprintf(portbuf, sizeof(SBUF)-addrl, "]:%d", port); #endif /* CONFIG_IPV6 */ - return bufs[b]; + return SBUF; } bool_t iaddr_equal(const union iaddr *ia, const union iaddr *ib,