From: Aaron Lipinski Date: Sun, 4 Apr 2021 00:16:26 +0000 (+1200) Subject: tell dns process if we want 4 or 6 X-Git-Tag: v0.95~6^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F394%2Fhead;p=thirdparty%2Fmtr.git tell dns process if we want 4 or 6 --- diff --git a/ui/dns.c b/ui/dns.c index 94af8b7..902aa67 100644 --- a/ui/dns.c +++ b/ui/dns.c @@ -124,7 +124,7 @@ static void set_sockaddr_ip( } void dns_open( - sa_family_t family) + void) { int pid; @@ -173,7 +173,8 @@ void dns_open( buf[strlen(buf) - 1] = 0; /* chomp newline. */ - longipstr(buf, &host, family); + sa_family_t family = (buf[0] == '4') ? AF_INET : AF_INET6; + longipstr(buf +1, &host, family); set_sockaddr_ip(family, &sa, &host); salen = (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6); @@ -256,7 +257,7 @@ char *dns_lookup2( ip_t * ip) { struct dns_results *r; - char buf[INET6_ADDRSTRLEN + 1]; + char buf[INET6_ADDRSTRLEN + 2]; // af_byte + addr + null int rv; r = findip(ctl, ip); @@ -270,7 +271,8 @@ char *dns_lookup2( r->name = NULL; r->next = results; results = r; - snprintf(buf, sizeof(buf), "%s\n", strlongip(ctl->af, ip)); + char ip4or6 = (ctl->af == AF_INET) ? '4' : '6'; + snprintf(buf, sizeof(buf), "%c%s\n", ip4or6, strlongip(ctl->af, ip)); rv = write(todns[1], buf, strlen(buf)); if (rv < 0) error(0, errno, "couldn't write to resolver process"); diff --git a/ui/dns.h b/ui/dns.h index b15d6ad..921110e 100644 --- a/ui/dns.h +++ b/ui/dns.h @@ -23,7 +23,7 @@ /* Prototypes for dns.c */ extern void dns_open( - sa_family_t family); + void); extern int dns_waitfd( void); extern void dns_ack( diff --git a/ui/mtr.c b/ui/mtr.c index b959919..91773f4 100644 --- a/ui/mtr.c +++ b/ui/mtr.c @@ -858,7 +858,7 @@ int main( } lock(stdout); - dns_open(ctl.af); + dns_open(); display_open(&ctl); display_loop(&ctl);