diff options
Diffstat (limited to 'libxtables/xtables.c')
-rw-r--r-- | libxtables/xtables.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libxtables/xtables.c b/libxtables/xtables.c index c5b38890..d43f9706 100644 --- a/libxtables/xtables.c +++ b/libxtables/xtables.c @@ -1210,13 +1210,20 @@ const char *xtables_ipaddr_to_numeric(const struct in_addr *addrp) static const char *ipaddr_to_host(const struct in_addr *addr) { - struct hostent *host; + static char hostname[NI_MAXHOST]; + struct sockaddr_in saddr = { + .sin_family = AF_INET, + .sin_addr = *addr, + }; + int err; - host = gethostbyaddr(addr, sizeof(struct in_addr), AF_INET); - if (host == NULL) + + err = getnameinfo((const void *)&saddr, sizeof(struct sockaddr_in), + hostname, sizeof(hostname) - 1, NULL, 0, 0); + if (err != 0) return NULL; - return host->h_name; + return hostname; } static const char *ipaddr_to_network(const struct in_addr *addr) |