From: Michał Kępień Date: Tue, 17 Jul 2018 09:21:39 +0000 (+0200) Subject: [squash] Make resolver tests even more civilized (ans2.pl and ans3.pl) X-Git-Tag: v9.13.3~103^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82082ecd568be250a3faf1f87fd2cb3b1ff80b47;p=thirdparty%2Fbind9.git [squash] Make resolver tests even more civilized (ans2.pl and ans3.pl) Prevent ans2.pl from responding authoritatively for any name at or below example.net. Make ans3.pl properly answer example.net/NS queries. Use string comparisons instead of regular expressions where possible. --- diff --git a/bin/tests/system/resolver/ans2/ans.pl b/bin/tests/system/resolver/ans2/ans.pl index ff78fdc2dab..79bb10205c8 100644 --- a/bin/tests/system/resolver/ans2/ans.pl +++ b/bin/tests/system/resolver/ans2/ans.pl @@ -80,7 +80,7 @@ for (;;) { } elsif (($qname eq "baddname.example.org" || $qname eq "gooddname.example.org") && $qtype eq "NS") { $packet->header->aa(1); $packet->push("answer", new Net::DNS::RR("example.org 300 NS a.root-servers.nil.")); - } elsif ($qname eq "www.example.org" || $qname eq "www.example.net" || + } elsif ($qname eq "www.example.org" || $qname eq "badcname.example.org" || $qname eq "goodcname.example.org" || $qname eq "foo.baddname.example.org" || @@ -99,9 +99,8 @@ for (;;) { } elsif ($qname eq "net" && $qtype eq "NS") { $packet->header->aa(1); $packet->push("answer", new Net::DNS::RR("net 300 NS a.root-servers.nil.")); - } elsif ($qname =~ /\.example\.net/ || $qname =~ /^example\.net/) { - $packet->header->aa(1); - $packet->push("authority", new Net::DNS::RR("example.net 300 NS ns.example.net.")); + } elsif ($qname =~ /example\.net/) { + $packet->push("authority", new Net::DNS::RR("example.net 300 NS ns.example.net")); $packet->push("additional", new Net::DNS::RR("ns.example.net 300 A 10.53.0.3")); } elsif ($qname =~ /sub\.example\.org/) { # Data for CNAME/DNAME filtering. The final answers are diff --git a/bin/tests/system/resolver/ans3/ans.pl b/bin/tests/system/resolver/ans3/ans.pl index ce5715831db..972ca5c8de5 100644 --- a/bin/tests/system/resolver/ans3/ans.pl +++ b/bin/tests/system/resolver/ans3/ans.pl @@ -56,8 +56,26 @@ for (;;) { my @questions = $packet->question; my $qname = $questions[0]->qname; + my $qtype = $questions[0]->qtype; - if ($qname eq "badcname.example.net") { + if ($qname eq "example.net" && $qtype eq "NS") { + $packet->push("answer", new Net::DNS::RR($qname . " 300 NS ns.example.net")); + $packet->push("additional", new Net::DNS::RR("ns.example.net 300 A 10.53.0.3")); + } elsif ($qname eq "ns.example.net") { + $packet->push("answer", new Net::DNS::RR($qname . " 300 A 10.53.0.3")); + } elsif ($qname eq "nodata.example.net") { + # Do not add a SOA RRset. + } elsif ($qname eq "nxdomain.example.net") { + # Do not add a SOA RRset. + $packet->header->rcode(NXDOMAIN); + } elsif ($qname eq "www.example.net") { + # Data for address/alias filtering. + if ($qtype eq "A") { + $packet->push("answer", new Net::DNS::RR($qname . " 300 A 192.0.2.1")); + } elsif ($qtype eq "AAAA") { + $packet->push("answer", new Net::DNS::RR($qname . " 300 AAAA 2001:db8:beef::1")); + } + } elsif ($qname eq "badcname.example.net") { $packet->push("answer", new Net::DNS::RR($qname . " 300 CNAME badcname.example.org")); @@ -75,11 +93,6 @@ for (;;) { $packet->push("answer", new Net::DNS::RR($qname . " 300 CNAME goodcname.example.org")); - } elsif ($qname =~ /^nodata\.example\.net$/i) { - $packet->header->aa(1); - } elsif ($qname =~ /^nxdomain\.example\.net$/i) { - $packet->header->aa(1); - $packet->header->rcode(NXDOMAIN); } elsif ($qname eq "cname.sub.example.org") { $packet->push("answer", new Net::DNS::RR($qname . @@ -94,10 +107,6 @@ for (;;) { } elsif ($qname eq "www.ok.sub.example.org") { $packet->push("answer", new Net::DNS::RR($qname . " 300 A 192.0.2.1")); - } elsif ($qname eq "ns.example.net") { - $packet->push("answer", - new Net::DNS::RR($qname . - " 300 A 10.53.0.3")); } else { $packet->push("answer", new Net::DNS::RR("www.example.com 300 A 1.2.3.4")); }