--- dnscache-conf works --- tinydns-conf works --- pickdns-conf works --- walldns-conf works --- rbldns-conf works --- axfrdns-conf works --- cache handles simple example un un deux un deux trois un deux trois quatre un deux trois quatre cinq een deux trois quatre cinq een twee trois quatre cinq een twee drie quatre cinq een twee drie vier cinq een twee drie vier vijf 0 --- cache handles overwriting un een een deux een twee een twee trois een twee drie twee drie quatre twee drie vier drie vier cinq drie vier vijf 0 --- cache handles long chains 1 2 3 4 5 6 7 8 9 0 --- dnsip finds IP address of network-surveys.cr.yp.to 131.193.178.100 0 --- dnsip does not find nonexistent.cr.yp.to 0 --- dnsip rejects overly long domain names dnsip: fatal: unable to find IP address for x.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789: protocol error 111 --- dnsip handles IP address on input 1.2.3.4 127.0.0.1 10.43.166.133 10.43.166.133 0 --- dnsip allows 0 to be omitted 127.0.0.1 0 --- dnsip handles multiple IP addresses on input 1.2.3.4 5.6.7.8 9.10.11.12 13.14.15.16 0 --- dnsipq handles simple examples 1.2.3.4 1.2.3.4 localhost 127.0.0.1 localhost 127.0.0.1 5.6.7.8 5.6.7.8 network-surveys.cr.yp.to 131.193.178.100 nonexistent.whatever.cr.yp.to 0 --- dnsmx finds MX record for network-surveys.cr.yp.to 0 a.mx.network-surveys.cr.yp.to 0 --- dnsmx manufactures MX record for nonexistent.cr.yp.to 0 nonexistent.cr.yp.to 0 --- dnsmx rejects overly long domain names dnsmx: fatal: unable to find MX records for 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789: protocol error 111 --- dnstxt finds TXT record for leap.yp.to 8222222206660602022066620620. 0 --- dnstxt does not find nonexistent.cr.yp.to 0 --- dnstxt rejects overly long domain names dnstxt: fatal: unable to find TXT records for 0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789.0123456789: protocol error 111 --- dnsname finds host name of 131.193.178.100 network-surveys.cr.yp.to 0 --- dnsname does not find 127.5.6.7 0 --- dnsname rejects misformatted IP addresses dnsname: fatal: unable to parse IP address 1.2.3 111 --- dnsfilter finds some host names 131.193.178.100+one=network-surveys.cr.yp.to two three 127.5.6.7+one two three 10+one two three 0 --- tinydns-data complains about unrecognized initial characters tinydns-data: fatal: unable to parse data line 3: unrecognized leading character 111 --- tinydns-data complains if it cannot create data.tmp tinydns-data: fatal: unable to create data.tmp: symbolic link loop 111 --- tinydns-data handles simple example 0 --- tinydns-data produces A records 1 wormhole.movie.edu: 117 bytes, 1+2+2+1 records, response, authoritative, noerror additional: a.ns.movie.edu 259200 A 192.249.249.3 answer: wormhole.movie.edu 86400 A 192.249.249.1 answer: wormhole.movie.edu 86400 A 192.253.253.1 authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu query: 1 wormhole.movie.edu 0 --- tinydns-data produces NS records 2 movie.edu: 117 bytes, 1+2+0+3 records, response, authoritative, noerror query: 2 movie.edu answer: movie.edu 259200 NS a.ns.movie.edu answer: movie.edu 259200 NS wormhole.movie.edu additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 --- tinydns-data produces SOA records 6 movie.edu: 164 bytes, 1+1+2+3 records, response, authoritative, noerror query: 6 movie.edu answer: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 --- tinydns-data produces PTR records 12 1.253.253.192.in-addr.arpa: 175 bytes, 1+1+3+3 records, response, authoritative, noerror query: 12 1.253.253.192.in-addr.arpa answer: 1.253.253.192.in-addr.arpa 86400 PTR wormhole.movie.edu authority: 253.253.192.in-addr.arpa 259200 NS a.ns.253.253.192.in-addr.arpa authority: 253.253.192.in-addr.arpa 259200 NS b.ns.253.253.192.in-addr.arpa authority: 253.253.192.in-addr.arpa 259200 NS c.ns.253.253.192.in-addr.arpa additional: a.ns.253.253.192.in-addr.arpa 259200 A 192.249.249.3 additional: b.ns.253.253.192.in-addr.arpa 259200 A 192.249.249.1 additional: c.ns.253.253.192.in-addr.arpa 259200 A 192.253.253.1 0 --- tinydns-data produces MX records 15 movie.edu: 154 bytes, 1+1+2+4 records, response, authoritative, noerror query: 15 movie.edu answer: movie.edu 86400 MX 0 a.mx.movie.edu authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu additional: a.mx.movie.edu 86400 A 192.249.249.1 additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 --- tinydns-data produces TXT records 16 movie.edu: 146 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 movie.edu answer: movie.edu 86400 16 \020Movie\040University authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 --- tinydns-data produces AXFR responses 252 movie.edu: 27 bytes, 1+0+0+0 records, response, authoritative, notimp query: 252 movie.edu 0 --- tinydns-data produces ANY responses 255 movie.edu: 293 bytes, 1+9+0+4 records, response, authoritative, noerror query: 255 movie.edu answer: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 answer: movie.edu 259200 NS a.ns.movie.edu answer: movie.edu 259200 NS wormhole.movie.edu answer: movie.edu 86400 MX 0 a.mx.movie.edu answer: movie.edu 86400 16 \020Movie\040University answer: movie.edu 86400 12345 One answer: movie.edu 86400 12345 Two answer: movie.edu 86400 12346 Three answer: movie.edu 86400 12346 Four additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 additional: a.mx.movie.edu 86400 A 192.249.249.1 0 --- tinydns-data produces records of any type 12345 movie.edu: 147 bytes, 1+2+2+3 records, response, authoritative, noerror query: 12345 movie.edu answer: movie.edu 86400 12345 One answer: movie.edu 86400 12345 Two authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 12346 movie.edu: 150 bytes, 1+2+2+3 records, response, authoritative, noerror query: 12346 movie.edu answer: movie.edu 86400 12346 Three answer: movie.edu 86400 12346 Four authority: movie.edu 259200 NS a.ns.movie.edu authority: movie.edu 259200 NS wormhole.movie.edu additional: a.ns.movie.edu 259200 A 192.249.249.3 additional: wormhole.movie.edu 86400 A 192.249.249.1 additional: wormhole.movie.edu 86400 A 192.253.253.1 0 --- tinydns-data produces NODATA responses 54321 movie.edu: 79 bytes, 1+0+1+0 records, response, authoritative, noerror query: 54321 movie.edu authority: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 0 --- tinydns-data produces NXDOMAIN responses 1 this.does.not.exist.movie.edu: 99 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 this.does.not.exist.movie.edu authority: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 0 --- tinydns-data produces NXDOMAIN responses for suffixes 1 ns.movie.edu: 79 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 ns.movie.edu authority: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 0 --- tinydns-data produces NXDOMAIN ANY responses for suffixes 255 ns.movie.edu: 79 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 ns.movie.edu authority: movie.edu 2560 SOA a.ns.movie.edu hostmaster.movie.edu 987654321 16384 2048 1048576 2560 0 --- tinydns-data does not produce responses outside its bailiwick 1 edu: 0 --- tinydns-data does not include TXT in additional sections 1 blah.movie.edu: 62 bytes, 1+1+1+0 records, response, authoritative, noerror query: 1 blah.movie.edu answer: blah.movie.edu 259200 A 1.2.3.4 authority: blah.movie.edu 259200 NS blah.movie.edu 0 --- tinydns-data handles another example 0 --- tinydns-data uses serial 1 for mtime 0 255 test: 152 bytes, 1+3+0+3 records, response, authoritative, noerror query: 255 test answer: test 2560 SOA a.ns.test hostmaster.test 1 16384 2048 1048576 2560 answer: test 259200 NS a.ns.test answer: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data does not split size-127 TXT records 16 127.test: 249 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 127.test answer: 127.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data splits size-128 TXT records 16 128.test: 251 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 128.test answer: 128.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\0017 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data splits size-254 TXT records 16 254.test: 377 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 254.test answer: 254.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data doubly splits size-255 TXT records 16 255.test: 379 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 255.test answer: 255.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\0014 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data excludes the additional section if necessary 16 387.test: 512 bytes, 1+1+2+3 records, response, authoritative, noerror query: 16 387.test answer: 387.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\1774567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\006123456 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 16 388.test: 465 bytes, 1+1+2+0 records, response, authoritative, noerror query: 16 388.test answer: 388.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\1774567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\0071234567 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test 0 --- tinydns-data excludes the authority section if necessary 16 435.test: 512 bytes, 1+1+2+0 records, response, authoritative, noerror query: 16 435.test answer: 435.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\17745678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678906123456789012345678901234567890123456789012345678901234 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test 0 16 436.test: 478 bytes, 1+1+0+0 records, response, authoritative, noerror query: 16 436.test answer: 436.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\177456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789071234567890123456789012345678901234567890123456789012345 0 --- tinydns-data handles size-1000 TXT records 16 1000.test: 1047 bytes, 1+1+0+0 records, response, authoritative, noerror query: 16 1000.test answer: 1000.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\1774567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\1771234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\1778901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234\1775678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\1772345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678o901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 0 --- tinydns-data handles unusual characters in owner names 1 \000\001\177\200\277\056\056\056.test: 130 bytes, 1+1+2+3 records, response, authoritative, noerror query: 1 \000\001\177\200\277\056\056\056.test answer: \000\001\177\200\277\056\056\056.test 86400 A 10.5.6.7 authority: test 259200 NS a.ns.test authority: test 259200 NS b.ns.test additional: a.ns.test 259200 A 10.2.3.4 additional: b.ns.test 259200 A 10.2.3.6 additional: b.ns.test 259200 A 10.2.3.5 0 --- tinydns-data handles unusual characters in PTR results 12 7.6.5.10.in-addr.arpa: 99 bytes, 1+1+1+1 records, response, authoritative, noerror query: 12 7.6.5.10.in-addr.arpa answer: 7.6.5.10.in-addr.arpa 86400 PTR \000\001\177\200\277\056\056\056.test authority: 7.6.5.10.in-addr.arpa 259200 NS ns.7.6.5.10.in-addr.arpa additional: ns.7.6.5.10.in-addr.arpa 259200 A 10.5.6.7 0 --- tinydns-data handles delegations 1 x.\000\001\177\200\277\056\056\056.test: 66 bytes, 1+0+1+1 records, response, noerror query: 1 x.\000\001\177\200\277\056\056\056.test authority: x.\000\001\177\200\277\056\056\056.test 259200 NS ns.x.\000\001\177\200\277\056\056\056.test additional: ns.x.\000\001\177\200\277\056\056\056.test 259200 A 10.8.9.10 0 1 ns.x.\000\001\177\200\277\056\056\056.test: 66 bytes, 1+0+1+1 records, response, noerror query: 1 ns.x.\000\001\177\200\277\056\056\056.test authority: x.\000\001\177\200\277\056\056\056.test 259200 NS ns.x.\000\001\177\200\277\056\056\056.test additional: ns.x.\000\001\177\200\277\056\056\056.test 259200 A 10.8.9.10 0 1 z.y.x.\000\001\177\200\277\056\056\056.test: 70 bytes, 1+0+1+1 records, response, noerror query: 1 z.y.x.\000\001\177\200\277\056\056\056.test authority: x.\000\001\177\200\277\056\056\056.test 259200 NS ns.x.\000\001\177\200\277\056\056\056.test additional: ns.x.\000\001\177\200\277\056\056\056.test 259200 A 10.8.9.10 0 --- tinydns-data handles another example 0 --- tinydns-data handles TTLs 255 test: 202 bytes, 1+6+0+2 records, response, authoritative, noerror query: 255 test answer: test 98765 SOA primary.server host.master 1234567 2345678 3456789 4567890 5678901 answer: test 37 NS ns.test answer: test 41 MX 0 mx.test answer: test 42 16 \004Text answer: test 43 12345 Binary answer: test 39 A 1.2.3.4 additional: ns.test 37 A 1.2.3.4 additional: mx.test 41 A 1.2.3.4 0 255 www.test: 75 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 www.test answer: www.test 40 A 1.2.3.4 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 255 child.test: 61 bytes, 1+0+1+1 records, response, noerror query: 255 child.test authority: child.test 38 NS ns.child.test additional: ns.child.test 38 A 1.2.3.5 0 --- tinydns-data handles CNAMEs 255 mail.test: 78 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 mail.test answer: mail.test 44 CNAME www.test authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 5 mail.test: 78 bytes, 1+1+1+1 records, response, authoritative, noerror query: 5 mail.test answer: mail.test 44 CNAME www.test authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 1 mail.test: 78 bytes, 1+1+1+1 records, response, authoritative, noerror query: 1 mail.test answer: mail.test 44 CNAME www.test authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 255 foo.mail.test: 92 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 foo.mail.test authority: test 98765 SOA primary.server host.master 1234567 2345678 3456789 4567890 5678901 0 --- tinydns-data does not apply wildcard A to base name 1 wild.test: 88 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 1 wild.test authority: test 98765 SOA primary.server host.master 1234567 2345678 3456789 4567890 5678901 0 --- tinydns-data handles wildcard A records 1 x.wild.test: 78 bytes, 1+1+1+1 records, response, authoritative, noerror query: 1 x.wild.test answer: x.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 1 xy.wild.test: 79 bytes, 1+1+1+1 records, response, authoritative, noerror query: 1 xy.wild.test answer: xy.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 1 x.z.wild.test: 80 bytes, 1+1+1+1 records, response, authoritative, noerror query: 1 x.z.wild.test answer: x.z.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data handles wildcard MX records 255 wild.test: 88 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 wild.test authority: test 98765 SOA primary.server host.master 1234567 2345678 3456789 4567890 5678901 0 --- tinydns-data does not apply wildcard MX to base name 255 x.wild.test: 115 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 x.wild.test answer: x.wild.test 46 MX 54321 mail.wild.test answer: x.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 255 xy.wild.test: 116 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 xy.wild.test answer: xy.wild.test 46 MX 54321 mail.wild.test answer: xy.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 15 x.z.wild.test: 101 bytes, 1+1+1+2 records, response, authoritative, noerror query: 15 x.z.wild.test answer: x.z.wild.test 46 MX 54321 mail.wild.test authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 255 x.z.wild.test: 117 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 x.z.wild.test answer: x.z.wild.test 46 MX 54321 mail.wild.test answer: x.z.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 255 \052.wild.test: 115 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 \052.wild.test answer: \052.wild.test 46 MX 54321 mail.wild.test answer: \052.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data uses wildcard under base of sub-wildcard 255 alias.wild.test: 119 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 alias.wild.test answer: alias.wild.test 46 MX 54321 mail.wild.test answer: alias.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data handles wildcard CNAME records 255 xyz.alias.wild.test: 84 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 xyz.alias.wild.test answer: xyz.alias.wild.test 50 CNAME wild.test authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 255 \052.alias.wild.test: 82 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 \052.alias.wild.test answer: \052.alias.wild.test 50 CNAME wild.test authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data lets explicit record override wildcard 255 override.wild.test: 85 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 override.wild.test answer: override.wild.test 47 A 1.2.3.8 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data handles overrides sanely 255 x.override.wild.test: 124 bytes, 1+2+1+2 records, response, authoritative, noerror query: 255 x.override.wild.test answer: x.override.wild.test 46 MX 54321 mail.wild.test answer: x.override.wild.test 45 A 1.2.3.6 authority: test 37 NS ns.test additional: mail.wild.test 46 A 1.2.3.7 additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data overrides wildcard with subdomain wildcard 255 x.wild.wild.test: 83 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 x.wild.wild.test answer: x.wild.wild.test 48 A 1.2.3.9 authority: test 37 NS ns.test additional: ns.test 37 A 1.2.3.4 0 --- tinydns-data overrides wildcard with delegation 255 child.wild.test: 69 bytes, 1+0+1+1 records, response, noerror query: 255 child.wild.test authority: child.wild.test 259200 NS 49.ns.child.wild.test additional: 49.ns.child.wild.test 259200 A 1.2.3.10 0 255 x.child.wild.test: 71 bytes, 1+0+1+1 records, response, noerror query: 255 x.child.wild.test authority: child.wild.test 259200 NS 49.ns.child.wild.test additional: 49.ns.child.wild.test 259200 A 1.2.3.10 0 --- tinydns-data handles another example 0 --- tinydns-data handles ending time 255 www.four: 0 255 www.six: 74 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 www.six answer: www.six 3600 A 1.2.3.6 authority: six 3600 NS ns.six additional: ns.six 3600 A 1.2.3.6 0 --- tinydns-data handles starting time 255 www.five: 75 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 www.five answer: www.five 86400 A 1.2.3.5 authority: five 259200 NS ns.five additional: ns.five 259200 A 1.2.3.5 0 255 www.seven: 0 --- tinydns-edit handles simple examples 0 0 0 0 0 0 0 0 0 0 .heaven.af.mil:1.2.3.5:a:259200 .heaven.af.mil:1.2.3.6:b:259200 &sub.heaven.af.mil:1.2.10.11:a:259200 &sub.heaven.af.mil:1.2.10.12:b:259200 =lion.heaven.af.mil:1.2.3.4:86400 =tiger.heaven.af.mil:1.2.3.5:86400 =bear.heaven.af.mil:1.2.3.6:86400 +www.heaven.af.mil:1.2.3.4:86400 @heaven.af.mil:1.2.3.4:a::86400 @heaven.af.mil:1.2.3.7:b::86400 --- tinydns-edit rejects hosts with old names or IP addresses tinydns-edit: fatal: IP address already used 100 tinydns-edit: fatal: host name already used 100 .heaven.af.mil:1.2.3.5:a:259200 .heaven.af.mil:1.2.3.6:b:259200 &sub.heaven.af.mil:1.2.10.11:a:259200 &sub.heaven.af.mil:1.2.10.12:b:259200 =lion.heaven.af.mil:1.2.3.4:86400 =tiger.heaven.af.mil:1.2.3.5:86400 =bear.heaven.af.mil:1.2.3.6:86400 +www.heaven.af.mil:1.2.3.4:86400 @heaven.af.mil:1.2.3.4:a::86400 @heaven.af.mil:1.2.3.7:b::86400 --- tinydns-edit recognizes alternate forms of host names tinydns-edit: fatal: host name already used 100 .heaven.af.mil:1.2.3.5:a:259200 .heaven.af.mil:1.2.3.6:b:259200 &sub.heaven.af.mil:1.2.10.11:a:259200 &sub.heaven.af.mil:1.2.10.12:b:259200 =lion.heaven.af.mil:1.2.3.4:86400 =tiger.heaven.af.mil:1.2.3.5:86400 =bear.heaven.af.mil:1.2.3.6:86400 +www.heaven.af.mil:1.2.3.4:86400 @heaven.af.mil:1.2.3.4:a::86400 @heaven.af.mil:1.2.3.7:b::86400 --- tinydns-edit copies TTLs from previous NS records 0 .test:1.2.3.4:a:3600 .test:1.2.3.5:b:3600 --- dnscache handles dotted-decimal names 255 127.43.123.234: 48 bytes, 1+1+0+0 records, response, noerror query: 255 127.43.123.234 answer: 127.43.123.234 655360 A 127.43.123.234 0 --- tinydns works 127.43.0.100 127.43.0.101 0 1234 a.mx.test 45678 b.mx.test 0 255 www.test: 91 bytes, 1+2+1+1 records, response, authoritative, noerror additional: ns.test 259200 A 127.43.0.2 answer: www.test 86400 A 127.43.0.100 answer: www.test 86400 A 127.43.0.101 authority: test 259200 NS ns.test query: 255 www.test 0 255 test: 173 bytes, 1+4+0+3 records, response, authoritative, noerror query: 255 test answer: test 2560 SOA ns.test hostmaster.test 987654321 16384 2048 1048576 2560 answer: test 259200 NS ns.test answer: test 86400 MX 1234 a.mx.test answer: test 86400 MX 45678 b.mx.test additional: ns.test 259200 A 127.43.0.2 additional: a.mx.test 86400 A 127.43.0.100 additional: b.mx.test 86400 A 127.43.0.101 0 --- dnscache handles large TXT records 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 --- walldns handles in-addr.arpa names 7.6.43.127.in-addr.arpa 0 234.123.43.127.in-addr.arpa 0 127.43.123.234 0 255 234.123.43.127.in-addr.arpa: 75 bytes, 1+2+0+0 records, response, authoritative, noerror query: 255 234.123.43.127.in-addr.arpa answer: 234.123.43.127.in-addr.arpa 655360 A 127.43.123.234 answer: 234.123.43.127.in-addr.arpa 655360 PTR 234.123.43.127.in-addr.arpa 0 --- walldns handles dotted-decimal names 255 127.43.123.234: 48 bytes, 1+1+0+0 records, response, authoritative, noerror query: 255 127.43.123.234 answer: 127.43.123.234 655360 A 127.43.123.234 0 --- walldns rejects other names 255 blah.test: temporary failure 0 --- rbldns works 127.0.0.3 0 See http://www.rbl.test/5.4.3.2 0 255 2.3.4.5.rbl.test: 94 bytes, 1+2+0+0 records, response, authoritative, noerror query: 255 2.3.4.5.rbl.test answer: 2.3.4.5.rbl.test 2048 A 127.0.0.3 answer: 2.3.4.5.rbl.test 2048 16 \037See\040http://www.rbl.test/5.4.3.2 0 127.0.0.3 0 See http://www.rbl.test/4.1.255.200 0 255 200.255.1.4.rbl.test: 102 bytes, 1+2+0+0 records, response, authoritative, noerror query: 255 200.255.1.4.rbl.test answer: 200.255.1.4.rbl.test 2048 A 127.0.0.3 answer: 200.255.1.4.rbl.test 2048 16 #See\040http://www.rbl.test/4.1.255.200 0 127.0.0.3 0 See http://www.rbl.test/4.0.255.200 0 255 200.255.0.4.rbl.test: 102 bytes, 1+2+0+0 records, response, authoritative, noerror query: 255 200.255.0.4.rbl.test answer: 200.255.0.4.rbl.test 2048 A 127.0.0.3 answer: 200.255.0.4.rbl.test 2048 16 #See\040http://www.rbl.test/4.0.255.200 0 127.0.0.3 0 See http://www.rbl.test/4.0.0.1 0 255 1.0.0.4.rbl.test: 94 bytes, 1+2+0+0 records, response, authoritative, noerror query: 255 1.0.0.4.rbl.test answer: 1.0.0.4.rbl.test 2048 A 127.0.0.3 answer: 1.0.0.4.rbl.test 2048 16 \037See\040http://www.rbl.test/4.0.0.1 0 0 0 255 0.0.0.4.rbl.test: 34 bytes, 1+0+0+0 records, response, authoritative, nxdomain query: 255 0.0.0.4.rbl.test 0 --- tinydns handles differentiation 0 127.43.0.102 0 127.43.0.100 127.43.0.102 0 127.43.0.100 127.43.0.102 0 255 pick.test5: 81 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 pick.test5 authority: test5 2560 SOA me.ns.test5 hostmaster.test5 987654321 16384 2048 1048576 2560 0 255 pick2.test5: 81 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 pick2.test5 answer: pick2.test5 86400 A 127.43.0.102 authority: test5 259200 NS me.ns.test5 additional: me.ns.test5 259200 A 127.43.0.2 0 255 pick3.test5: 97 bytes, 1+2+1+1 records, response, authoritative, noerror additional: me.ns.test5 259200 A 127.43.0.2 answer: pick3.test5 86400 A 127.43.0.100 answer: pick3.test5 86400 A 127.43.0.102 authority: test5 259200 NS me.ns.test5 query: 255 pick3.test5 0 103 bytes, 1+2+1+1 records, response, authoritative, noerror 255 really.wild.test5: additional: me.ns.test5 259200 A 127.43.0.2 answer: really.wild.test5 86400 A 127.43.0.100 answer: really.wild.test5 86400 A 127.43.0.102 authority: test5 259200 NS me.ns.test5 query: 255 really.wild.test5 0 --- tinydns-get handles differentiation 255 pick.test5: 80 bytes, 1+1+1+1 records, response, authoritative, noerror query: 255 pick.test5 answer: pick.test5 86400 A 127.43.0.101 authority: test5 259200 NS ex.ns.test5 additional: ex.ns.test5 259200 A 127.43.0.2 0 255 pick2.test5: 82 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 pick2.test5 authority: test5 2560 SOA ex.ns.test5 hostmaster.test5 987654321 16384 2048 1048576 2560 0 255 pick3.test5: 97 bytes, 1+2+1+1 records, response, authoritative, noerror additional: ex.ns.test5 259200 A 127.43.0.2 answer: pick3.test5 86400 A 127.43.0.100 answer: pick3.test5 86400 A 127.43.0.101 authority: test5 259200 NS ex.ns.test5 query: 255 pick3.test5 0 103 bytes, 1+2+1+1 records, response, authoritative, noerror 255 really.wild.test5: additional: ex.ns.test5 259200 A 127.43.0.2 answer: really.wild.test5 86400 A 127.43.0.100 answer: really.wild.test5 86400 A 127.43.0.101 authority: test5 259200 NS ex.ns.test5 query: 255 really.wild.test5 0 255 pick.test5: 81 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 pick.test5 authority: test5 2560 SOA i4.ns.test5 hostmaster.test5 987654321 16384 2048 1048576 2560 0 255 pick2.test5: 82 bytes, 1+0+1+0 records, response, authoritative, nxdomain query: 255 pick2.test5 authority: test5 2560 SOA i4.ns.test5 hostmaster.test5 987654321 16384 2048 1048576 2560 0 255 pick3.test5: 97 bytes, 1+2+1+1 records, response, authoritative, noerror additional: i4.ns.test5 259200 A 127.43.0.2 answer: pick3.test5 86400 A 127.43.0.100 answer: pick3.test5 86400 A 127.43.0.104 authority: test5 259200 NS i4.ns.test5 query: 255 pick3.test5 0 103 bytes, 1+2+1+1 records, response, authoritative, noerror 255 really.wild.test5: additional: i4.ns.test5 259200 A 127.43.0.2 answer: really.wild.test5 86400 A 127.43.0.100 answer: really.wild.test5 86400 A 127.43.0.104 authority: test5 259200 NS i4.ns.test5 query: 255 really.wild.test5 0 --- pickdns works 127.43.0.101 0 127.43.0.102 0 255 pick.test: 43 bytes, 1+1+0+0 records, response, authoritative, noerror query: 255 pick.test answer: pick.test 5 A 127.43.0.101 0 --- pickdns answers MX 0 pick.test 0 --- pickdns rejects queries for unknown information 255 pick11.test: temporary failure 0 16 pick2.test: temporary failure 0 --- axfrdns rejects unauthorized transfer attempts axfr-get: fatal: unable to parse AXFR results: protocol error 111 axfr-get: fatal: unable to parse AXFR results: protocol error 111 --- axfrdns works 0 #987654321 auto axfr-get Ztest:ns.test.:hostmaster.test.:987654321:16384:2048:1048576:2560:2560 &test::ns.test.:259200 +ns.test:127.43.0.2:259200 +www.test:127.43.0.100:86400 +www.test:127.43.0.101:86400 @test::a.mx.test.:1234:86400 +a.mx.test:127.43.0.100:86400 @test::b.mx.test.:45678:86400 +b.mx.test:127.43.0.101:86400 &pick.test::ns.pick.test.:259200 +ns.pick.test:127.43.0.3:259200 &pick2.test::ns.pick2.test.:259200 +ns.pick2.test:127.43.0.3:259200 &rbl.test::ns.rbl.test.:259200 +ns.rbl.test:127.43.0.5:259200 :big.test:16:\1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\1774567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\1771234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\1778901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234\1775678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\1772345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678o901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789:86400 --- axfrdns handles differentiation 0 #987654321 auto axfr-get Ztest5:me.ns.test5.:hostmaster.test5.:987654321:16384:2048:1048576:2560:2560 &test5::me.ns.test5.:259200 +me.ns.test5:127.43.0.2:259200 +pick2.test5:127.43.0.102:86400 +pick3.test5:127.43.0.100:86400 +pick3.test5:127.43.0.102:86400 +\052.wild.test5:127.43.0.100:86400 +\052.wild.test5:127.43.0.102:86400 0 #987654321 auto axfr-get Ztest5:i3.ns.test5.:hostmaster.test5.:987654321:16384:2048:1048576:2560:2560 &test5::i3.ns.test5.:259200 +i3.ns.test5:127.43.0.2:259200 +pick3.test5:127.43.0.100:86400 +pick3.test5:127.43.0.103:86400 +\052.wild.test5:127.43.0.100:86400 +\052.wild.test5:127.43.0.103:86400 0 #987654321 auto axfr-get Ztest5:i4.ns.test5.:hostmaster.test5.:987654321:16384:2048:1048576:2560:2560 &test5::i4.ns.test5.:259200 +i4.ns.test5:127.43.0.2:259200 +pick3.test5:127.43.0.100:86400 +pick3.test5:127.43.0.104:86400 +\052.wild.test5:127.43.0.100:86400 +\052.wild.test5:127.43.0.104:86400 0 #987654321 auto axfr-get Ztest5:i5.ns.test5.:hostmaster.test5.:987654321:16384:2048:1048576:2560:2560 &test5::i5.ns.test5.:259200 +i5.ns.test5:127.43.0.2:259200 +pick3.test5:127.43.0.100:86400 +pick3.test5:127.43.0.105:86400 +\052.wild.test5:127.43.0.100:86400 +\052.wild.test5:127.43.0.105:86400 --- axfrdns gives authoritative answers 255 test4: 727 bytes, 1+12+0+0 records, response, authoritative, noerror query: 255 test4 answer: test4 2560 SOA ns.test4 hostmaster.test4 987654321 16384 2048 1048576 2560 answer: test4 259200 NS ns.test4 answer: test4 86400 16 3001234567890123456789012345678901234567890123456789 answer: test4 86400 16 3101234567890123456789012345678901234567890123456789 answer: test4 86400 16 3201234567890123456789012345678901234567890123456789 answer: test4 86400 16 3301234567890123456789012345678901234567890123456789 answer: test4 86400 16 3401234567890123456789012345678901234567890123456789 answer: test4 86400 16 3501234567890123456789012345678901234567890123456789 answer: test4 86400 16 3601234567890123456789012345678901234567890123456789 answer: test4 86400 16 3701234567890123456789012345678901234567890123456789 answer: test4 86400 16 3801234567890123456789012345678901234567890123456789 answer: test4 86400 16 3901234567890123456789012345678901234567890123456789 0 --- axfrdns handles size-1000 TXT records 255 big.test: 1046 bytes, 1+1+0+0 records, response, authoritative, noerror query: 255 big.test answer: big.test 86400 16 \1770123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\1777890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123\1774567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\1771234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\1778901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234\1775678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901\1772345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678o901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 0 --- axfr-get handles zones with wildcards 0 #987654321 auto axfr-get Ztest2:ns.test2.:hostmaster.test2.:987654321:16384:2048:1048576:2560:2560 &test2::ns.test2.:259200 +ns.test2:127.43.0.2:259200 +\052.test2:127.43.0.102:86400 C\052.www.test2:www.test2.:5000 +one.test2:127.43.0.103:86400 +two.test2:127.43.0.104:2