From: bert hubert Date: Mon, 7 Apr 2014 15:04:12 +0000 (+0200) Subject: implement DNAME. Probably some rough edges. X-Git-Tag: rec-3.6.0-rc1~69 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dee07500bc2e924ac631a51f954cef46c23c148;p=pdns implement DNAME. Probably some rough edges. --- diff --git a/modules/tinydnsbackend/data b/modules/tinydnsbackend/data index 403966b6e..26098dbd2 100644 --- a/modules/tinydnsbackend/data +++ b/modules/tinydnsbackend/data @@ -20017,7 +20017,7 @@ Cexternal.example.com:somewhere.else.net.:120 +host-9998.example.com:192.168.1.14:120 +host-9999.example.com:192.168.1.15:120 :hwinfo.example.com:13:\003abc\003def:120 -:ipv6.example.com:28:\040\001\006\250\000\000\000\001\002\020K\377\376KLa:120 +3ipv6.example.com:200106a80000000102104bfffe4b4c61:120 &italy.example.com::italy-ns1.example.com.:120 &italy.example.com::italy-ns2.example.com.:120 +italy-ns1.example.com:192.168.5.1:120 @@ -20154,6 +20154,7 @@ Ztest.com:ns1.test.com.:ahu.example.com.:2005092501:28800:7200:604800:86400:3600 +b.c.test.com:5.6.7.8:3600 +\052.a.b.c.test.com:8.7.6.5:3600 +counter.test.com:1.1.1.5:3600 +:d.test.com:39:\002d2\005test2\003com\000:3600 :_double._tcp.dc.test.com:33:\000\000\000d\001\205\007server1\004test\003com\000:3600 :_double._tcp.dc.test.com:33:\000\001\000d\001\205\007server1\004test\003com\000:3600 :_ldap._tcp.dc.test.com:33:\000\000\000d\001\205\007server2\007example\003net\000:3600 diff --git a/modules/tinydnsbackend/data.cdb b/modules/tinydnsbackend/data.cdb index 916e491a5..8f8658c92 100644 Binary files a/modules/tinydnsbackend/data.cdb and b/modules/tinydnsbackend/data.cdb differ diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index ffa1cce6b..eb8cd0db2 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -65,6 +65,7 @@ void declareArguments() ::arg().set("retrieval-threads", "Number of AXFR-retrieval threads for slave operation")="2"; ::arg().setSwitch("experimental-json-interface", "If the webserver should serve JSON data")="no"; ::arg().setSwitch("experimental-api-readonly", "If the JSON API should disallow data modification")="no"; + ::arg().setSwitch("experimental-dname-processing", "If we should support DNAME records")="no"; ::arg().setCmd("help","Provide a helpful message"); ::arg().setCmd("version","Output version and compilation date"); @@ -349,6 +350,7 @@ void mainthread() g_anyToTcp = ::arg().mustDo("any-to-tcp"); g_addSuperfluousNSEC3 = ::arg().mustDo("add-superfluous-nsec3-for-old-bind"); + DNSPacket::s_udpTruncationThreshold = std::max(512, ::arg().asNum("udp-truncation-threshold")); DNSPacket::s_doEDNSSubnetProcessing = ::arg().mustDo("edns-subnet-processing"); { diff --git a/pdns/dnsrecords.cc b/pdns/dnsrecords.cc index 798db95e2..85ce9c401 100644 --- a/pdns/dnsrecords.cc +++ b/pdns/dnsrecords.cc @@ -119,6 +119,7 @@ boilerplate_conv(AAAA, ns_t_aaaa, conv.xfrIP6(d_ip6); ); boilerplate_conv(NS, ns_t_ns, conv.xfrLabel(d_content, true)); boilerplate_conv(PTR, ns_t_ptr, conv.xfrLabel(d_content, true)); boilerplate_conv(CNAME, ns_t_cname, conv.xfrLabel(d_content, true)); +boilerplate_conv(DNAME, ns_t_dname, conv.xfrLabel(d_content)); boilerplate_conv(MR, ns_t_mr, conv.xfrLabel(d_alias, true)); boilerplate_conv(MINFO, ns_t_minfo, conv.xfrLabel(d_rmailbx, true); conv.xfrLabel(d_emailbx, true)); boilerplate_conv(TXT, ns_t_txt, conv.xfrText(d_text, true)); @@ -493,6 +494,7 @@ void reportBasicTypes() void reportOtherTypes() { AFSDBRecordContent::report(); + DNAMERecordContent::report(); SPFRecordContent::report(); NAPTRRecordContent::report(); LOCRecordContent::report(); diff --git a/pdns/dnsrecords.hh b/pdns/dnsrecords.hh index 59dc0a9c6..fd2197cc8 100644 --- a/pdns/dnsrecords.hh +++ b/pdns/dnsrecords.hh @@ -201,6 +201,16 @@ private: string d_content; }; +class DNAMERecordContent : public DNSRecordContent +{ +public: + includeboilerplate(DNAME) + +private: + string d_content; +}; + + class MRRecordContent : public DNSRecordContent { public: diff --git a/pdns/packethandler.cc b/pdns/packethandler.cc index d923d7c28..698c764d0 100644 --- a/pdns/packethandler.cc +++ b/pdns/packethandler.cc @@ -1,6 +1,6 @@ /* PowerDNS Versatile Database Driven Nameserver - Copyright (C) 2002-2012 PowerDNS.COM BV + Copyright (C) 2002-2014 PowerDNS.COM BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as @@ -62,6 +62,7 @@ PacketHandler::PacketHandler():B(s_programname) { ++s_count; d_doFancyRecords = (::arg()["fancy-records"]!="no"); + d_doDNAME=::arg().mustDo("experimental-dname-processing"); d_doRecursion= ::arg().mustDo("recursor"); d_logDNSDetails= ::arg().mustDo("log-dns-details"); d_doIPv6AdditionalProcessing = ::arg().mustDo("do-ipv6-additional-processing"); @@ -331,6 +332,37 @@ vector PacketHandler::getBestReferralNS(DNSPacket *p, SOAData return ret; } +vector PacketHandler::getBestDNAMESynth(DNSPacket *p, SOAData& sd, string &target) +{ + vector ret; + DNSResourceRecord rr; + string prefix; + string subdomain(target); + do { + DLOG(L<<"Attempting DNAME lookup for "< rrset = getBestDNAMESynth(p, sd, target); + if(!rrset.empty()) { + BOOST_FOREACH(DNSResourceRecord& rr, rrset) { + rr.d_place = DNSResourceRecord::ANSWER; + r->addRecord(rr); + } + return true; + } + return false; +} bool PacketHandler::tryWildcard(DNSPacket *p, DNSPacket*r, SOAData& sd, string &target, string &wildcard, bool& retargeted, bool& nodata) { retargeted = nodata = false; @@ -1199,7 +1246,6 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse) return r; } - string target=p->qdomain; // catch chaos qclass requests @@ -1312,7 +1358,7 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse) // see what we get.. B.lookup(QType(QType::ANY), target, p, sd.domain_id); rrset.clear(); - weDone = weRedirected = weHaveUnauth = 0; + weDone = weRedirected = weHaveUnauth = false; while(B.get(rr)) { if (p->qtype.getCode() == QType::ANY) { @@ -1350,6 +1396,7 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse) rrset.push_back(rr); } + DLOG(L<<"After first ANY query for '"<qtype.getCode() == QType::CNAME) || (p->qtype.getCode() == QType::ANY)) && retargetcount > 0)) diff --git a/pdns/packethandler.hh b/pdns/packethandler.hh index c182ef31f..630f4d939 100644 --- a/pdns/packethandler.hh +++ b/pdns/packethandler.hh @@ -95,6 +95,8 @@ private: void makeNXDomain(DNSPacket* p, DNSPacket* r, const std::string& target, const std::string& wildcard, SOAData& sd); void makeNOError(DNSPacket* p, DNSPacket* r, const std::string& target, const std::string& wildcard, SOAData& sd, int mode); vector getBestReferralNS(DNSPacket *p, SOAData& sd, const string &target); + vector getBestDNAMESynth(DNSPacket *p, SOAData& sd, string &target); + bool tryDNAME(DNSPacket *p, DNSPacket*r, SOAData& sd, string &target); bool tryReferral(DNSPacket *p, DNSPacket*r, SOAData& sd, const string &target); bool getBestWildcard(DNSPacket *p, SOAData& sd, const string &target, string &wildcard, vector* ret); @@ -108,6 +110,7 @@ private: bool d_doRecursion; bool d_logDNSDetails; bool d_doIPv6AdditionalProcessing; + bool d_doDNAME; int d_sendRootReferral; AuthLua* d_pdl; diff --git a/pdns/pdns.conf-dist b/pdns/pdns.conf-dist index e5564835a..a41c136c2 100644 --- a/pdns/pdns.conf-dist +++ b/pdns/pdns.conf-dist @@ -154,6 +154,11 @@ # # experimental-api-readonly=no +################################# +# experimental-dname-processing If we should support DNAME records +# +# experimental-dname-processing=no + ################################# # experimental-json-interface If the webserver should serve JSON data # diff --git a/pdns/qtype.hh b/pdns/qtype.hh index f959dd9e6..ba83eb298 100644 --- a/pdns/qtype.hh +++ b/pdns/qtype.hh @@ -81,7 +81,7 @@ public: // more solaris fun #undef DS enum typeenum {A=1, NS=2, CNAME=5, SOA=6, MR=9, PTR=12, HINFO=13, MX=15, TXT=16, RP=17, AFSDB=18, SIG=24, KEY=25, AAAA=28, LOC=29, SRV=33, NAPTR=35, KX=36, - CERT=37, A6=38, OPT=41, DS=43, SSHFP=44, IPSECKEY=45, RRSIG=46, NSEC=47, DNSKEY=48, DHCID=49, NSEC3=50, NSEC3PARAM=51, + CERT=37, A6=38, DNAME=39, OPT=41, DS=43, SSHFP=44, IPSECKEY=45, RRSIG=46, NSEC=47, DNSKEY=48, DHCID=49, NSEC3=50, NSEC3PARAM=51, TLSA=52, SPF=99, EUI48=108, EUI64=109, TSIG=250, IXFR=251, AXFR=252, MAILB=253, MAILA=254, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types; typedef pair namenum; static vector names; @@ -141,6 +141,7 @@ private: qtype_insert("KX", 36); qtype_insert("CERT", 37); qtype_insert("A6", 38); + qtype_insert("DNAME", 39); qtype_insert("OPT", 41); qtype_insert("DS", 43); qtype_insert("SSHFP", 44); diff --git a/pdns/zoneparser-tng.cc b/pdns/zoneparser-tng.cc index 0d9022877..c241e90f6 100644 --- a/pdns/zoneparser-tng.cc +++ b/pdns/zoneparser-tng.cc @@ -401,6 +401,7 @@ bool ZoneParserTNG::get(DNSResourceRecord& rr) case QType::NS: case QType::CNAME: + case QType::DNAME: case QType::PTR: case QType::AFSDB: rr.content=stripDot(toCanonic(d_zonename, rr.content)); diff --git a/regression-tests.nobackend/tinydns-data-check/expected_result b/regression-tests.nobackend/tinydns-data-check/expected_result index 894b69837..36c5fbb4e 100644 --- a/regression-tests.nobackend/tinydns-data-check/expected_result +++ b/regression-tests.nobackend/tinydns-data-check/expected_result @@ -1,5 +1,5 @@ 4bc48a8d9b8d04b553be67639e5656e8 ../regression-tests/zones/example.com -4e9eed426f0cd123c08dffb9e715824a ../regression-tests/zones/test.com +38f421f6dd6c842f6f4f8a5a996cdb7d ../regression-tests/zones/test.com 005b3381db2a7dc70b690484f6ab7770 ../regression-tests/zones/test.dyndns 21213b4e8cd56e4184696a1bafd987d7 ../regression-tests/zones/wtest.com 42b442de632686e94bde75acf66cf524 ../regression-tests/zones/nztest.com @@ -9,4 +9,4 @@ a63dc120391d9df0003f2ec4f461a6af ../regression-tests/zones/secure-delegated.dns 24514dc104b22206daeb973ff9303545 ../regression-tests/zones/minimal.com 0b20d7a0250576451135483b863750bf ../regression-tests/zones/tsig.com b1f775045fa2cf0a3b91aa834af06e49 ../regression-tests/zones/stest.com -a691ba21cde91f1b9f3cc92c7a078636 ../modules/tinydnsbackend/data.cdb +11085cc884e2db8bbd5a4710aad23604 ../modules/tinydnsbackend/data.cdb diff --git a/regression-tests/backends/bind-master b/regression-tests/backends/bind-master index 38acff18e..f5a061309 100644 --- a/regression-tests/backends/bind-master +++ b/regression-tests/backends/bind-master @@ -4,7 +4,7 @@ case $context in --no-shuffle --launch=bind --bind-config=./named.conf \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --no-config --experimental-dname-processing \ --bind-ignore-broken-records=yes & skipreasons="nodnssec nodyndns nometa" bindwait @@ -51,7 +51,7 @@ case $context in --bind-dnssec-db=./dnssec.sqlite3 \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes --direct-dnskey=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --no-config --experimental-dname-processing \ --bind-ignore-broken-records=yes $lua_prequery & bindwait ;; diff --git a/regression-tests/backends/bind-slave b/regression-tests/backends/bind-slave index 0ddd00134..28b224792 100644 --- a/regression-tests/backends/bind-slave +++ b/regression-tests/backends/bind-slave @@ -30,6 +30,6 @@ --no-shuffle --launch=bind --bind-config=./named-slave.conf --slave \ --send-root-referral --retrieval-threads=1 --config-name=bind-slave \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config --bind-dnssec-db=./dnssec-slave.sqlite3 & + --cache-ttl=$cachettl --no-config --experimental-dname-processing --bind-dnssec-db=./dnssec-slave.sqlite3 & echo 'waiting for zones to be loaded' bindwait bind-slave diff --git a/regression-tests/backends/gmysql-master b/regression-tests/backends/gmysql-master index e971274eb..70581bb61 100644 --- a/regression-tests/backends/gmysql-master +++ b/regression-tests/backends/gmysql-master @@ -35,7 +35,7 @@ __EOF__ --no-shuffle --launch=gmysql \ --master --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes --direct-dnskey=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gmysql-dbname="$GMYSQLDB" \ --gmysql-user="$GMYSQLUSER" \ --gmysql-host="$GMYSQLHOST" \ @@ -87,7 +87,7 @@ __EOF__ --no-shuffle --launch --launch+=random --launch+=gmysql --launch+=random --gmysql-dnssec \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes --direct-dnskey=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gmysql-dbname="$GMYSQLDB" \ --gmysql-user="$GMYSQLUSER" \ --gmysql-host="$GMYSQLHOST" \ diff --git a/regression-tests/backends/gmysql-slave b/regression-tests/backends/gmysql-slave index 39646d143..3af5c7e2f 100644 --- a/regression-tests/backends/gmysql-slave +++ b/regression-tests/backends/gmysql-slave @@ -36,7 +36,7 @@ --no-shuffle --launch=gmysql --gmysql-dnssec \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --query-cache-ttl=$cachettl --no-config --slave --retrieval-threads=4 \ + --cache-ttl=$cachettl --query-cache-ttl=$cachettl --experimental-dname-processing --no-config --slave --retrieval-threads=4 \ --gmysql-dbname="$GMYSQL2DB" \ --gmysql-user="$GMYSQL2USER" \ --gmysql-host="$GMYSQL2HOST" \ diff --git a/regression-tests/backends/gpgsql-master b/regression-tests/backends/gpgsql-master index 23231af54..d62eac45b 100644 --- a/regression-tests/backends/gpgsql-master +++ b/regression-tests/backends/gpgsql-master @@ -27,7 +27,7 @@ __EOF__ --no-shuffle --launch=gpgsql \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gpgsql-dbname="$GPGSQLDB" \ --gpgsql-user="$GPGSQLUSER" & skipreasons="nodnssec nodyndns" @@ -67,7 +67,7 @@ __EOF__ --no-shuffle --launch=gpgsql --gpgsql-dnssec \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gpgsql-dbname="$GPGSQLDB" \ --gpgsql-user="$GPGSQLUSER" $lua_prequery & if [ $context = gpgsql-nsec3 ] diff --git a/regression-tests/backends/gsqlite3-master b/regression-tests/backends/gsqlite3-master index f98ab6d47..1f709894b 100644 --- a/regression-tests/backends/gsqlite3-master +++ b/regression-tests/backends/gsqlite3-master @@ -21,7 +21,7 @@ __EOF__ --no-shuffle --launch=gsqlite3 \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gsqlite3-database=pdns.sqlite3 & skipreasons="nodnssec nodyndns" ;; @@ -54,7 +54,7 @@ __EOF__ --no-shuffle --launch=gsqlite3 --gsqlite3-dnssec \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --gsqlite3-database=pdns.sqlite3 $lua_prequery & if [ $context = gsqlite3-nsec3 ] then diff --git a/regression-tests/backends/gsqlite3-slave b/regression-tests/backends/gsqlite3-slave index 162ef33c8..ec80b662c 100644 --- a/regression-tests/backends/gsqlite3-slave +++ b/regression-tests/backends/gsqlite3-slave @@ -22,7 +22,7 @@ $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --socket-dir=./ \ --no-shuffle --launch=gsqlite3 --gsqlite3-dnssec \ --fancy-records --send-root-referral \ - --cache-ttl=0 --query-cache-ttl=0 --no-config --slave --retrieval-threads=4 \ + --cache-ttl=0 --query-cache-ttl=0 --experimental-dname-processing --no-config --slave --retrieval-threads=4 \ --gsqlite3-database=pdns.sqlite31 --gsqlite3-pragma-synchronous=0 \ --config-name=gsqlite32 & echo 'waiting for zones to be slaved' diff --git a/regression-tests/backends/mydns-master b/regression-tests/backends/mydns-master index e45490591..9eda2866c 100644 --- a/regression-tests/backends/mydns-master +++ b/regression-tests/backends/mydns-master @@ -24,7 +24,7 @@ __EOF__ $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ --no-shuffle --launch=mydns \ --master --send-root-referral \ - --cache-ttl=0 --no-config \ + --cache-ttl=0 --experimental-dname-processing --no-config \ --mydns-rr-active=no --mydns-soa-active=no --mydns-use-minimal-ttl=no \ --mydns-dbname="$MYDNSDB" \ --mydns-user="$MYDNSUSER" \ diff --git a/regression-tests/backends/opendbx-master b/regression-tests/backends/opendbx-master index be04f6721..79046ab08 100644 --- a/regression-tests/backends/opendbx-master +++ b/regression-tests/backends/opendbx-master @@ -10,7 +10,7 @@ case $context in $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ --no-shuffle --launch=opendbx \ --send-root-referral \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --opendbx-backend=sqlite3 --opendbx-host-read=./ --opendbx-host-write=./ \ --opendbx-database=pdns-opendbx.sqlite3 & skipreasons="nodnssec noent nodyndns nometa" diff --git a/regression-tests/backends/remote-master b/regression-tests/backends/remote-master index d270ab33b..9d9fb81f6 100644 --- a/regression-tests/backends/remote-master +++ b/regression-tests/backends/remote-master @@ -106,7 +106,7 @@ EOF $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ --no-shuffle --launch=remote \ - --query-logging --loglevel=9 --cache-ttl=$cachettl --no-config \ + --query-logging --loglevel=9 --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --send-root-referral --distributor-threads=1 \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ --remote-connection-string="$connstr" $remote_add_param & diff --git a/regression-tests/backends/tinydns-master b/regression-tests/backends/tinydns-master index 20e34bd30..be883d564 100644 --- a/regression-tests/backends/tinydns-master +++ b/regression-tests/backends/tinydns-master @@ -2,7 +2,7 @@ case $context in tinydns) $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ --no-shuffle --launch=tinydns \ - --cache-ttl=$cachettl --no-config \ + --cache-ttl=$cachettl --experimental-dname-processing --no-config \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes \ --tinydns-dbfile=../modules/tinydnsbackend/data.cdb & diff --git a/regression-tests/tests/dname-self/command b/regression-tests/tests/dname-self/command new file mode 100755 index 000000000..146bde574 --- /dev/null +++ b/regression-tests/tests/dname-self/command @@ -0,0 +1,2 @@ +#!/bin/sh +cleandig d.test.com A diff --git a/regression-tests/tests/dname-self/description b/regression-tests/tests/dname-self/description new file mode 100644 index 000000000..7c6b6eb5e --- /dev/null +++ b/regression-tests/tests/dname-self/description @@ -0,0 +1 @@ +Make sure a DNAME does not synthesise for its own owner name. diff --git a/regression-tests/tests/dname-self/expected_result b/regression-tests/tests/dname-self/expected_result new file mode 100644 index 000000000..4c9dd540c --- /dev/null +++ b/regression-tests/tests/dname-self/expected_result @@ -0,0 +1,3 @@ +1 test.com. IN SOA 3600 ns1.test.com. ahu.example.com. 2005092501 28800 7200 604800 86400 +Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0 +Reply to question for qname='d.test.com.', qtype=A diff --git a/regression-tests/tests/dname-self/skip-unboundhost b/regression-tests/tests/dname-self/skip-unboundhost new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/dname-self/skip.mydns b/regression-tests/tests/dname-self/skip.mydns new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/dname-self/skip.nodnssec b/regression-tests/tests/dname-self/skip.nodnssec new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/dname/command b/regression-tests/tests/dname/command new file mode 100755 index 000000000..1dc914771 --- /dev/null +++ b/regression-tests/tests/dname/command @@ -0,0 +1,2 @@ +#!/bin/sh +cleandig www.d.test.com A diff --git a/regression-tests/tests/dname/description b/regression-tests/tests/dname/description new file mode 100644 index 000000000..904accf3c --- /dev/null +++ b/regression-tests/tests/dname/description @@ -0,0 +1 @@ +Check that we synthesise a CNAME from a DNAME. diff --git a/regression-tests/tests/dname/expected_result b/regression-tests/tests/dname/expected_result new file mode 100644 index 000000000..349055273 --- /dev/null +++ b/regression-tests/tests/dname/expected_result @@ -0,0 +1,29 @@ +0 d.test.com. IN DNAME 3600 d2.test2.com. +0 www.d.test.com. IN CNAME 3600 www.d2.test2.com. +1 . IN NS 518400 a.root-servers.net. +1 . IN NS 518400 b.root-servers.net. +1 . IN NS 518400 c.root-servers.net. +1 . IN NS 518400 d.root-servers.net. +1 . IN NS 518400 e.root-servers.net. +1 . IN NS 518400 f.root-servers.net. +1 . IN NS 518400 g.root-servers.net. +1 . IN NS 518400 h.root-servers.net. +1 . IN NS 518400 i.root-servers.net. +1 . IN NS 518400 j.root-servers.net. +1 . IN NS 518400 k.root-servers.net. +1 . IN NS 518400 l.root-servers.net. +1 . IN NS 518400 m.root-servers.net. +2 a.root-servers.net. IN A 3600000 198.41.0.4 +2 b.root-servers.net. IN A 3600000 192.228.79.201 +2 c.root-servers.net. IN A 3600000 192.33.4.12 +2 d.root-servers.net. IN A 3600000 199.7.91.13 +2 e.root-servers.net. IN A 3600000 192.203.230.10 +2 f.root-servers.net. IN A 3600000 192.5.5.241 +2 g.root-servers.net. IN A 3600000 192.112.36.4 +2 h.root-servers.net. IN A 3600000 128.63.2.53 +2 i.root-servers.net. IN A 3600000 192.36.148.17 +2 j.root-servers.net. IN A 3600000 192.58.128.30 +2 k.root-servers.net. IN A 3600000 193.0.14.129 +2 l.root-servers.net. IN A 3600000 199.7.83.42 +Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0 +Reply to question for qname='www.d.test.com.', qtype=A diff --git a/regression-tests/tests/dname/skip-unboundhost b/regression-tests/tests/dname/skip-unboundhost new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/dname/skip.mydns b/regression-tests/tests/dname/skip.mydns new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/dname/skip.nodnssec b/regression-tests/tests/dname/skip.nodnssec new file mode 100644 index 000000000..e69de29bb diff --git a/regression-tests/tests/ent-axfr/expected_result b/regression-tests/tests/ent-axfr/expected_result index 05ab7f2e5..6d584c4f1 100644 --- a/regression-tests/tests/ent-axfr/expected_result +++ b/regression-tests/tests/ent-axfr/expected_result @@ -7,7 +7,8 @@ _underscore.test.com. IN NSEC 86400 aland.test.com. TXT RRSIG NSEC aland.test.com. IN NSEC 86400 blah.test.com. TXT RRSIG NSEC b.c.test.com. IN NSEC 86400 *.a.b.c.test.com. A RRSIG NSEC blah.test.com. IN NSEC 86400 b.c.test.com. NS RRSIG NSEC -counter.test.com. IN NSEC 86400 _double._tcp.dc.test.com. A RRSIG NSEC +counter.test.com. IN NSEC 86400 d.test.com. A RRSIG NSEC +d.test.com. IN NSEC 86400 _double._tcp.dc.test.com. DNAME RRSIG NSEC enum.test.com. IN NSEC 86400 hightxt.test.com. NAPTR RRSIG NSEC hightxt.test.com. IN NSEC 86400 ns1.test.com. TXT RRSIG NSEC SPF ns1.test.com. IN NSEC 86400 ns2.test.com. A RRSIG NSEC diff --git a/regression-tests/tests/ent-axfr/expected_result.nsec3 b/regression-tests/tests/ent-axfr/expected_result.nsec3 index c7fd31997..6e41649cd 100644 --- a/regression-tests/tests/ent-axfr/expected_result.nsec3 +++ b/regression-tests/tests/ent-axfr/expected_result.nsec3 @@ -1,6 +1,7 @@ 0bh8di769i8vvtkdds8efjda19abigo5.test.com. IN NSEC3 86400 1 0 1 abcd 2EU2GULBU53H9UVHFALSHPBO2A83T6L2 TXT RRSIG SPF 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN NSEC3 86400 1 0 1 abcd 2GKS2N3JPQF62QOHAVFQ1PHOLM3HR7RA NS SOA MX RRSIG DNSKEY NSEC3PARAM -2gks2n3jpqf62qohavfq1pholm3hr7ra.test.com. IN NSEC3 86400 1 0 1 abcd 53L445R26RG1CSBI4TS1K3I3EL1F30VM TXT RRSIG +2gks2n3jpqf62qohavfq1pholm3hr7ra.test.com. IN NSEC3 86400 1 0 1 abcd 4UL8F3M96VCONEA85U93DH9SG570J4FU TXT RRSIG +4ul8f3m96vconea85u93dh9sg570j4fu.test.com. IN NSEC3 86400 1 0 1 abcd 53L445R26RG1CSBI4TS1K3I3EL1F30VM DNAME RRSIG 53l445r26rg1csbi4ts1k3i3el1f30vm.test.com. IN NSEC3 86400 1 0 1 abcd 79RA8K3G5KAI1HG9JLHBR6P0TP933M7V SRV RRSIG 79ra8k3g5kai1hg9jlhbr6p0tp933m7v.test.com. IN NSEC3 86400 1 0 1 abcd 79U3DAS6UCCTNS1BR3TVD8QKANNI351L A RRSIG 79u3das6ucctns1br3tvd8qkanni351l.test.com. IN NSEC3 86400 1 0 1 abcd 7MMURA8H40BE5N4KOAN7RNMKURSAMH99 diff --git a/regression-tests/tests/ent-axfr/expected_result.nsec3-optout b/regression-tests/tests/ent-axfr/expected_result.nsec3-optout index 4088b798d..d050528e6 100644 --- a/regression-tests/tests/ent-axfr/expected_result.nsec3-optout +++ b/regression-tests/tests/ent-axfr/expected_result.nsec3-optout @@ -1,6 +1,7 @@ 0bh8di769i8vvtkdds8efjda19abigo5.test.com. IN NSEC3 86400 1 1 1 abcd 2EU2GULBU53H9UVHFALSHPBO2A83T6L2 TXT RRSIG SPF 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN NSEC3 86400 1 1 1 abcd 2GKS2N3JPQF62QOHAVFQ1PHOLM3HR7RA NS SOA MX RRSIG DNSKEY NSEC3PARAM -2gks2n3jpqf62qohavfq1pholm3hr7ra.test.com. IN NSEC3 86400 1 1 1 abcd 53L445R26RG1CSBI4TS1K3I3EL1F30VM TXT RRSIG +2gks2n3jpqf62qohavfq1pholm3hr7ra.test.com. IN NSEC3 86400 1 1 1 abcd 4UL8F3M96VCONEA85U93DH9SG570J4FU TXT RRSIG +4ul8f3m96vconea85u93dh9sg570j4fu.test.com. IN NSEC3 86400 1 1 1 abcd 53L445R26RG1CSBI4TS1K3I3EL1F30VM DNAME RRSIG 53l445r26rg1csbi4ts1k3i3el1f30vm.test.com. IN NSEC3 86400 1 1 1 abcd 79RA8K3G5KAI1HG9JLHBR6P0TP933M7V SRV RRSIG 79ra8k3g5kai1hg9jlhbr6p0tp933m7v.test.com. IN NSEC3 86400 1 1 1 abcd 79U3DAS6UCCTNS1BR3TVD8QKANNI351L A RRSIG 79u3das6ucctns1br3tvd8qkanni351l.test.com. IN NSEC3 86400 1 1 1 abcd 7MMURA8H40BE5N4KOAN7RNMKURSAMH99 diff --git a/regression-tests/zones/test.com b/regression-tests/zones/test.com index 142dea3b2..7a74777bf 100644 --- a/regression-tests/zones/test.com +++ b/regression-tests/zones/test.com @@ -37,3 +37,4 @@ b.c IN A 5.6.7.8 aland IN TXT "\195\133LAND ISLANDS" hightxt IN TXT "v=spf1 mx ip4:78.46.192.210 –all" hightxt IN SPF "v=spf1 mx ip4:78.46.192.210 –all" +d IN DNAME d2.test2.com.