]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
tell dns process if we want 4 or 6 394/head
authorAaron Lipinski <kris.lipinski@gmail.com>
Sun, 4 Apr 2021 00:16:26 +0000 (12:16 +1200)
committerAaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
Thu, 8 Apr 2021 20:22:12 +0000 (08:22 +1200)
ui/dns.c
ui/dns.h
ui/mtr.c

index 94af8b7e620e28cd8581ee50b9998ce1a289e849..902aa677c8789934fa254b20691892af65a579f1 100644 (file)
--- 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");
index b15d6ad0a46e6f8ec3b09c7100308fbc1bb8530b..921110e4a14810615abdb1b93f0b301de0777921 100644 (file)
--- 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(
index b95991987381f83e0769fa90daad0e9e655a7883..91773f4d729b52beee675da891f405cb52ac10dd 100644 (file)
--- 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);