ans.pl revision 633c5dc507fa3133a6d49a55cfe84bf4fd522c72
#
# Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
#
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# $Id$
#
# Ad hoc name server
#
$pidf->close or die "cannot close pid file: $!";
for (;;) {
print "REQUEST:\n";
$packet->print;
my $donotrespond = 0;
if ($qname eq "foo.info") {
$donotrespond = 1;
} elsif ($qname eq "cname1.example.com") {
# Data for the "cname + other data / 1" test
} elsif ($qname eq "cname2.example.com") {
# Data for the "cname + other data / 2" test: same RRs in opposite order
$qname eq "badcname.example.org" ||
$qname eq "goodcname.example.org" ||
$qname eq "foo.baddname.example.org" ||
$qname eq "foo.gooddname.example.org") {
if ($qtype eq "A") {
$packet->push("answer",
" 300 A 192.0.2.1"));
} elsif ($qtype eq "AAAA") {
$packet->push("answer",
" 300 AAAA 2001:db8:beef::1"));
}
} elsif ($qname eq "badcname.example.net" ||
$qname eq "goodcname.example.net") {
# delegation to avoid automatic acceptance for subdomain aliases
# expected to be accepted regardless of the filter setting.
} else {
# Data for the "bogus referrals" test
$packet->push("authority", new Net::DNS::RR("below.www.example.com 300 NS ns.below.www.example.com"));
}
if ($donotrespond == 0) {
print "RESPONSE:\n";
$packet->print;
print "\n";
}
}