From: Roger Wolff Date: Mon, 25 Aug 2014 08:05:27 +0000 (+0200) Subject: AQ: Added include for redhat, and fixed salen for BSD X-Git-Tag: v0.88~43^2~7^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7316e6a15f30111fce48c387da86eb41eb2bb99b;p=thirdparty%2Fmtr.git AQ: Added include for redhat, and fixed salen for BSD --- diff --git a/dns.c b/dns.c index b899410..dd6fbdb 100644 --- a/dns.c +++ b/dns.c @@ -24,6 +24,10 @@ #include "config.h" +// This was a big "include everything" section. I've now commented out +// most includes and we'll get complaints if we need something. Compiles +// cleanly like this on Unbuntu 14.04 -- REW +// AQ: Added signal.h for RedHat derivatives. //#include //#include //#include @@ -48,6 +52,7 @@ //#include #include #include +#include //#include //#include @@ -195,26 +200,27 @@ void dns_open(void) while (fgets (buf, sizeof (buf), infp)) { ip_t host; struct sockaddr_storage sa; + socklen_t salen; char hostname [NI_MAXHOST]; char result [INET6_ADDRSTRLEN + NI_MAXHOST + 2]; - // Find IPV6 version + if (!fork ()) { int rv; buf[strlen(buf)-1] = 0; // chomp newline. longipstr (buf, &host, af); - - printf ("resolving %s (%d)\n", strlongip (&host), af); - + //printf ("resolving %s (%d)\n", strlongip (&host), af); set_sockaddr_ip (&sa, &host); + salen = (af == AF_INET)?sizeof(struct sockaddr_in): + sizeof(struct sockaddr_in6); - rv = getnameinfo ((struct sockaddr *) &sa, sizeof (sa), + rv = getnameinfo ((struct sockaddr *) &sa, salen, hostname, sizeof (hostname), NULL, 0, 0); sprintf (result, "%s %s\n", strlongip (&host), hostname); - printf ("resolved: %s -> %s (%d)\n", strlongip (&host), hostname, rv); + //printf ("resolved: %s -> %s (%d)\n", strlongip (&host), hostname, rv); rv = write (fromdns[1], result, strlen (result)); if (rv < 0) perror ("write DNS lookup result");