]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
add a toy name server that replies from the wrong address
authorEvan Hunt <each@isc.org>
Thu, 1 Aug 2019 05:21:59 +0000 (22:21 -0700)
committerDiego dos Santos Fronza <diego@isc.org>
Tue, 3 Sep 2019 13:14:15 +0000 (10:14 -0300)
bin/dig/include/dig/dig.h
bin/tests/system/digdelv/ans6/ans.pl [new file with mode: 0644]
util/copyrights

index 9a4689951ef1bdd1928b77020d4cf9c37152c4d9..563cd9d4ed8524d143018a60efec13ad08ae655b 100644 (file)
@@ -142,8 +142,8 @@ struct dig_lookup {
                idnout,
                expandaaaa,
                qr,
-               accept_reply_unexpected_src;  /*%  print replies from unexpected 
-                                                  sources. */
+               accept_reply_unexpected_src;  /*%  print replies from unexpected
+                                                  sources. */
        char textname[MXNAME]; /*% Name we're going to be looking up */
        char cmdline[MXNAME];
        dns_rdatatype_t rdtype;
diff --git a/bin/tests/system/digdelv/ans6/ans.pl b/bin/tests/system/digdelv/ans6/ans.pl
new file mode 100644 (file)
index 0000000..90f9073
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/perl -w
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+use IO::File;
+use IO::Socket;
+use Net::DNS;
+use Net::DNS::Packet;
+
+my $localport = int($ENV{'PORT'});
+if (!$localport) { $localport = 5300; }
+
+my $sock = IO::Socket::INET->new(LocalAddr => "10.53.0.6",
+   LocalPort => $localport, Proto => "udp") or die "$!";
+
+my $pidf = new IO::File "ans.pid", "w" or die "cannot open pid file: $!";
+print $pidf "$$\n" or die "cannot write pid file: $!";
+$pidf->close or die "cannot close pid file: $!";
+sub rmpid { unlink "ans.pid"; exit 1; };
+
+$SIG{INT} = \&rmpid;
+$SIG{TERM} = \&rmpid;
+
+for (;;) {
+       $sock->recv($buf, 512);
+
+       print "**** request from " , $sock->peerhost, " port ", $sock->peerport, "\n";
+
+       my $packet;
+
+       if ($Net::DNS::VERSION > 0.68) {
+               $packet = new Net::DNS::Packet(\$buf, 0);
+               $@ and die $@;
+       } else {
+               my $err;
+               ($packet, $err) = new Net::DNS::Packet(\$buf, 0);
+               $err and die $err;
+       }
+
+       print "REQUEST:\n";
+       $packet->print;
+
+       $packet->header->qr(1);
+
+       my @questions = $packet->question;
+       my $qname = $questions[0]->qname;
+       my $qtype = $questions[0]->qtype;
+
+       my $donotrespond = 0;
+
+       $packet->header->aa(1);
+       if ($qtype eq "A") {
+               $packet->push("answer",
+                             new Net::DNS::RR($qname .  " 300 A 10.53.0.5"));
+       } else {
+               $donotrespond = 1;
+       }
+
+       if ($donotrespond == 0) {
+                my $sendsock =
+                        IO::Socket::INET->new(LocalAddr => "10.53.1.2",
+                                              PeerAddr => $sock->peerhost,
+                                              PeerPort => "5300",
+                                              Proto => "udp") or die "$!";
+                print "**** response from ", $sendsock->sockhost, " to " ,
+                      $sendsock->peerhost, " port ", $sendsock->peerport, "\n";
+               $sendsock->send($packet->data);
+                $sendsock->close;
+               print "RESPONSE:\n";
+               $packet->print;
+               print "\n";
+       } else {
+               print "DROP:\n";
+       }
+}
index fd2e88db744d5f18d18f858311ead30fdaf6a94c..95166341027814f6996d7f2543364decc64b7373 100644 (file)
 ./bin/tests/system/digcomp.pl                  PERL    2000,2001,2004,2007,2012,2013,2016,2018,2019
 ./bin/tests/system/digdelv/ans4/startme                X       2017,2018,2019
 ./bin/tests/system/digdelv/ans5/ans.pl         PERL    2019
+./bin/tests/system/digdelv/ans6/ans.pl         PERL    2019
 ./bin/tests/system/digdelv/clean.sh            SH      2015,2016,2018,2019
 ./bin/tests/system/digdelv/ns2/sign.sh         SH      2018,2019
 ./bin/tests/system/digdelv/prereq.sh           SH      2018,2019