Use getnameinfo(3) instead of inet_ntop(3) to make printable versions of

sockaddr_in6 structures. getnameinfo(3) does the same thing, but it is
also able to represent a scope zone id as described in the RFC 4007.

MFC after:	2 weeks
This commit is contained in:
Andrey V. Elsukov 2013-06-07 08:06:48 +00:00
parent 4feadec3c4
commit b9ef8051ae
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=251486

View File

@ -74,6 +74,7 @@ extern int errno;
#include <grp.h>
#include <inttypes.h>
#include <locale.h>
#include <netdb.h>
#include <nl_types.h>
#include <pwd.h>
#include <stdio.h>
@ -1531,7 +1532,8 @@ ktrsockaddr(struct sockaddr *sa)
memset(&sa_in6, 0, sizeof(sa_in6));
memcpy(&sa_in6, sa, sa->sa_len);
check_sockaddr_len(in6);
inet_ntop(AF_INET6, &sa_in6.sin6_addr, addr, sizeof addr);
getnameinfo((struct sockaddr *)&sa_in6, sizeof(sa_in6),
addr, sizeof(addr), NULL, 0, NI_NUMERICHOST);
printf("[%s]:%u", addr, htons(sa_in6.sin6_port));
break;
}