[mtr] dns: iterate over all configured nameservers

Michal Sekletar msekleta at fedoraproject.org
Tue Oct 8 10:46:38 UTC 2013


commit 70f281edd0097e2c4c7e42b15b6e3368a6d5fcd2
Author: Michal Sekletar <msekleta at redhat.com>
Date:   Tue Oct 1 14:33:10 2013 +0200

    dns: iterate over all configured nameservers
    
    Previously if there were three nameservers configured and third one was
    reachable via IPv6 we didn't sent query to it, since NSCOUNT6 was equal to
    one. Clearly it was the original intention to sent query to all IPv6
    nameservers.
    
    Reported-by: Benedikt Gollatz <benedikt at gollatz.net>
    
    Resolves: #966174

 mtr-query-all-ipv6-nameservers.patch |   57 ++++++++++++++++++++++++++++++++++
 mtr.spec                             |    3 ++
 2 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/mtr-query-all-ipv6-nameservers.patch b/mtr-query-all-ipv6-nameservers.patch
new file mode 100644
index 0000000..c5f11c1
--- /dev/null
+++ b/mtr-query-all-ipv6-nameservers.patch
@@ -0,0 +1,57 @@
+From eae1b58c5a9f074f79a0edfaeb1cf7a4e77a34cb Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <sekletar.m at gmail.com>
+Date: Tue, 24 Sep 2013 12:56:11 +0200
+Subject: [PATCH] dns: iterate over all configured nameservers
+
+Previously if there were three nameservers configured and third one was
+reachable via IPv6 we didn't sent query to it, since NSCOUNT6 was equal to
+one. Clearly it was the original intention to sent query to all IPv6
+nameservers.
+
+Reported-by: Benedikt Gollatz <benedikt at gollatz.net>
+---
+ dns.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/dns.c b/dns.c
+index 221665d..e89fd4b 100644
+--- a/dns.c
++++ b/dns.c
+@@ -938,7 +938,7 @@ void dorequest(char *s,int type,word id)
+   hp->id = id;	/* htons() deliberately left out (redundant) */
+ #ifdef ENABLE_IPV6
+   if (resfd6 > 0) {
+-    for (i = 0;i < NSCOUNT6;i++) {
++    for (i = 0;i < myres.nscount;i++) {
+       if (!NSSOCKADDR6(i))
+ 	continue;
+       if (NSSOCKADDR6(i)->sin6_family == AF_INET6)
+@@ -1342,7 +1342,7 @@ void dns_ack6(void)
+     /* Check to see if this server is actually one we sent to */
+     if ( addrcmp( (void *) &(from6->sin6_addr), (void *) &localhost6,
+                   (int) AF_INET6 ) == 0 ) {
+-      for (i = 0;i < NSCOUNT6;i++) {
++      for (i = 0;i < myres.nscount;i++) {
+         if (!NSSOCKADDR6(i))
+           continue;
+ 
+@@ -1353,14 +1353,14 @@ void dns_ack6(void)
+ 	  break;
+       }
+     } else
+-      for (i = 0;i < NSCOUNT6;i++) {
++      for (i = 0;i < myres.nscount;i++) {
+         if (!NSSOCKADDR6(i))
+           continue;
+ 	if ( addrcmp( (void *) &(NSSOCKADDR6(i)->sin6_addr),
+ 		      (void *) &(from6->sin6_addr), AF_INET6 ) == 0 )
+ 	  break;
+       }
+-    if (i == NSCOUNT6) {
++    if (i == myres.nscount) {
+       snprintf(tempstring, sizeof(tempstring), 
+ 	       "Resolver error: Received reply from unknown source: %s",
+ 	       inet_ntop( AF_INET6, &(from6->sin6_addr), addrstr,
+-- 
+1.8.3.1
+
diff --git a/mtr.spec b/mtr.spec
index 14d26f1..f434f3c 100644
--- a/mtr.spec
+++ b/mtr.spec
@@ -20,6 +20,7 @@ Patch2: mtr-xml-format-fixes.patch
 Patch3: mtr-default-hostname.patch
 Patch4: mtr-ipv6-on-ipv4-only.patch
 Patch5: mtr-introduce-grace-period.patch
+Patch6: mtr-query-all-ipv6-nameservers.patch
 
 BuildRequires: ncurses-devel gtk2-devel desktop-file-utils
 BuildRequires: autoconf automake libtool
@@ -47,6 +48,7 @@ diagnostic tool.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 %build
 export CFLAGS="%{optflags} -fPIE"
@@ -95,6 +97,7 @@ desktop-file-install \
 - migrate from consolehelper to policykit (#502750)
 - specfile cleanup
 - introduce grace period (#1009051)
+- query all ipv6 nameservers (#966174)
 
 * Sat Sep 14 2013 Michal Sekletar <msekleta at redhat.com> - 2:0.85-3
 - enable hardened build


More information about the scm-commits mailing list