diff --git a/util.c b/util.c index 5b745a1..d3b352a 100644 --- a/util.c +++ b/util.c @@ -19,7 +19,7 @@ // to use char *fmtaddr(in_addr_t addr, int n) { - static char addrs[4][16]; + static char addrs[4][INET_ADDRSTRLEN]; struct in_addr in; if (n < 0 || n >= 4) @@ -29,6 +29,18 @@ char *fmtaddr(in_addr_t addr, int n) return strcpy(addrs[n], inet_ntoa(in)); } +// format ipv6 addr; n chooses one of 4 static buffers to use +char *fmtaddr6(struct in6_addr *addr, int n) +{ + static char addrs[4][INET6_ADDRSTRLEN]; + + if (n < 0 || n >= 4) + return ""; + + inet_ntop(AF_INET6, addr, addrs[n], sizeof(addrs[n])); + return addrs[n]; +} + char *fmtMacAddr(uint8_t *pMacAddr) { // FF:FF:FF:FF:FF:FF (len(18)= 2*6 + 5 (:) + 1 (zero terminal)) diff --git a/util.h b/util.h index 2345860..332c6f8 100644 --- a/util.h +++ b/util.h @@ -2,6 +2,7 @@ #define __UTIL_H__ char *fmtaddr(in_addr_t addr, int n); +char *fmtaddr6(struct in6_addr *addr, int n); char *fmtMacAddr(uint8_t *pMacAddr); void *shared_malloc(unsigned int size); pid_t fork_and_close(void);