]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Make resolver tests more civilized
authorWitold Kręcicki <wpk@isc.org>
Thu, 5 Jul 2018 12:46:49 +0000 (14:46 +0200)
committerMichał Kępień <michal@isc.org>
Tue, 17 Jul 2018 09:31:09 +0000 (11:31 +0200)
bin/tests/system/resolver/ans2/ans.pl
bin/tests/system/resolver/ans3/ans.pl
bin/tests/system/resolver/ans8/ans.pl

index 937c187863a3b45c1bef9b7610d9412d978bcadd..ff78fdc2dab1ba49da3f23381a6915f0ec312dd2 100644 (file)
@@ -99,20 +99,10 @@ 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 eq "example.net" && $qtype eq "NS") {
+       } elsif ($qname =~ /\.example\.net/ || $qname =~ /^example\.net/) {
                $packet->header->aa(1);
-               $packet->push("answer", new Net::DNS::RR("example.net 300 NS a.root-servers.nil."));
-       } elsif ($qname eq "badcname.example.net" ||
-                $qname eq "goodcname.example.net") {
-               # Data for CNAME/DNAME filtering.  We need to make one-level
-               # delegation to avoid automatic acceptance for subdomain aliases
-               $packet->push("authority", new Net::DNS::RR("example.net 300 NS ns.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 =~ /^nodata\.example\.net$/i) {
-               $packet->header->aa(1);
-       } elsif ($qname =~ /^nxdomain\.example\.net$/i) {
-               $packet->header->aa(1);
-               $packet->header->rcode(NXDOMAIN);
        } elsif ($qname =~ /sub\.example\.org/) {
                # Data for CNAME/DNAME filtering.  The final answers are
                # expected to be accepted regardless of the filter setting.
index 4f1ef38bf59097d490ffa415b5d77ac06c904766..ce5715831db01a347ec14bcf6d592c98824a8661 100644 (file)
@@ -75,6 +75,11 @@ 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 .
@@ -89,6 +94,10 @@ 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"));
        }
index 948859d69854e5c23cd3aa0a51891be17053b449..59c55b738bcc983165f47bc006878910294d30fb 100644 (file)
@@ -44,33 +44,38 @@ $SIG{TERM} = \&rmpid;
 
 sub handleUDP {
        my ($buf) = @_;
-       my $request;
+       my $packet;
 
        if ($Net::DNS::VERSION > 0.68) {
-               $request = new Net::DNS::Packet(\$buf, 0);
+               $packet = new Net::DNS::Packet(\$buf, 0);
                $@ and die $@;
        } else {
                my $err;
-               ($request, $err) = new Net::DNS::Packet(\$buf, 0);
+               ($packet, $err) = new Net::DNS::Packet(\$buf, 0);
                $err and die $err;
        }
 
-       my @questions = $request->question;
+       my @questions = $packet->question;
        my $qname = $questions[0]->qname;
        my $qtype = $questions[0]->qtype;
        my $qclass = $questions[0]->qclass;
-       my $id = $request->header->id;
-
-       my $packet = new Net::DNS::Packet();
+       my $id = $packet->header->id;
 
        $packet->header->qr(1);
        $packet->header->aa(0);
-       $packet->header->id($id);
+       $packet->header->tc(0);
 
        if ($qname eq "truncated.no-questions") {
+               $packet->pop("question");
                $packet->header->tc(1);
-       } else {
-               $packet->header->tc(0);
+       } elsif ($qname eq "not-truncated.no-questions") {
+               $packet->pop("question");
+       } elsif ($qname eq "no-questions" && $qtype eq "NS") {
+               $packet->header->aa(1);
+               $packet->push("answer", new Net::DNS::RR("no-questions. 300 NS ns.no-questions"));
+       } elsif ($qname eq "ns.no-questions" && $qtype eq "A") {
+               $packet->header->aa(1);
+               $packet->push("answer", new Net::DNS::RR("ns.no-questions. 300 A 10.53.0.8"));
        }
 
        # Net::DNS versions < 0.68 insert an ./ANY RR into the QUESTION section