diff --git a/usr.bin/netstat/inet.c b/usr.bin/netstat/inet.c --- a/usr.bin/netstat/inet.c +++ b/usr.bin/netstat/inet.c @@ -1507,15 +1507,19 @@ char * inetname(struct in_addr *inp) { - char *cp; + struct sockaddr_in sin = { + .sin_len = sizeof(struct sockaddr_in), + .sin_family = AF_INET, + .sin_addr = *inp, + }; + char *cp, host[NI_MAXHOST]; static char line[MAXHOSTNAMELEN]; - struct hostent *hp; cp = 0; if (!numeric_addr && inp->s_addr != INADDR_ANY) { - hp = gethostbyaddr((char *)inp, sizeof (*inp), AF_INET); - if (hp) { - cp = hp->h_name; + if (getnameinfo((struct sockaddr *)&sin, sin.sin_len, + host, sizeof(host), NULL, 0, NI_NAMEREQD) == 0) { + cp = host; trimdomain(cp, strlen(cp)); } }