The nightmare called IPv6 even more code needed char buf[NI_MAXHOST]; const char * log_sockaddr(void *vp) { struct sockaddr *sa = vp; if (getnameinfo(sa, sa->sa_len, buf, NI_MAXHOST, NULL, 0, NI_NUMERICHOST)) return ("(unknown)"); else return (buf); } vs. inet_ntoa(addr);