diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2014-10-26 13:33:22 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2014-10-26 13:33:22 +0000 |
commit | 2d2623da8e641df1a7cb2ac8d33ec9ecee34c76e (patch) | |
tree | 3f92f41ec5ccfec6ad87b6f65e3c093a29ead44f | |
parent | 23ffe855689dff34e12df167eb3801088bfb1c94 (diff) | |
parent | 724c9dd3c97671f5b7a3b56e8b29e7e2c1ca3689 (diff) |
Merge tag 'adns-1.5.0-rc1' into dgit/sid
adns release 1.5.0~rc1
90 files changed, 486 insertions, 122 deletions
@@ -5,6 +5,7 @@ config.status autom4te.cache dist_tmp adns-*.tar.gz +adns-*.tar.gz.sig common.make settings.make *.tmp* diff --git a/Makefile.in b/Makefile.in index 5151ade..68146ba 100644 --- a/Makefile.in +++ b/Makefile.in @@ -24,7 +24,7 @@ include ./common.make # Remember to change ADNS_VERSION_STRING in client/client.h too, and # possibly library soname (MAJOR and MINOR in common.make.in). -DISTVERSION= 1.5.0~rc0 +DISTVERSION= 1.5.0~rc1 srcdir= @srcdir@ VPATH= @srcdir@ @@ -1,22 +1,39 @@ -Changes in adns 1.5, since adns 1.4, are: +Changes in adns 1.5.0, since adns 1.4, are: + + New features: * This release provides full IPv6 support. Applications can request AAAA records (containing IPv6 addresses) as well as, or instead of, A records (containing IPv4 addresses). adns 1.5 can speak to nameservers over IPv6. - * adns_addr2text and adns_text2addr: Convenient C functions for - converting between addresses and address literals. These carry - less baggage than getaddrinfo and getnameinfo. + * adns_addr2text and adns_text2addr: Convenient C functions for + converting between addresses and address literals. These carry + less baggage than getaddrinfo and getnameinfo. + + Bugfixes: + + * We fix a crashing bug in adnslogres. (Debian#392102.) + + * Previously, parsing of some adns_specific options in resolv.conf + would go awry if multiple options were specified on the same line. + (Fixed since 1.5.0~rc0.) - * There is a fix to the one currently known bug in the resolver: - previously, some harmless but wrong owner names for checked ptr + * adns now knows to ignore more things in resolv.conf, rather than + warn about them, and there's also an option to disable all of these + warnings. (Debian#411263.) (Fixed since 1.5.0~rc0.) + + * Previously, some harmless but wrong owner names for checked ptr queries would be accepted; now they are rejected with `Domain invalid for particular DNS query type'. - * We fix a crashing bug in adnslogres. (Debian#392102.) + Other: + + * There are some minor API/ABI changes and improvements, for future + proofing. - * There are also some build system and test suite improvements. + * There are also some build system, test suite and coding style + improvements. * Licence is now GPLv3. @@ -43,3 +60,11 @@ Compatibility: IPv6 as well as IPv4 information if simply asked for `addresses'. Calling programs which did not ask for a specific address type ought to cope with this. + + The API in 1.5.0 also fixes a technical nonconformance to the C + specification. On platforms where an `enum' type might be an + integer type whose size is bits is not a power of two, there could + be an incompatible ABI change between 1.4 and 1.5 - but we don't + think there are many (if any) such platforms which are sufficiently + POSIX-like for adns. (Changed since 1.5.0~rc0.) + diff --git a/README.html b/README.html index d5bcf90..3d7c06e 100644 --- a/README.html +++ b/README.html @@ -15,7 +15,6 @@ library and utilities.</strong> <!-- Please ensure that all links continine to be correct --> <!-- both for www.gnu.org and chiark. --> <!-- --> -<!-- $Id$ --> <p> diff --git a/RELEASE-CHECKLIST b/RELEASE-CHECKLIST new file mode 100755 index 0000000..d2fb527 --- /dev/null +++ b/RELEASE-CHECKLIST @@ -0,0 +1,94 @@ +#!/bin/bash +# This is for the benefit of the upstream maintainers of GNU adns +# +# * Maybe rerun autoconf +# * Ensure changelog reflects changes +# * Ensure NEWS reflects changes +# * Maybe update MAJOR and/or MINOR in common.make.in +# * Update DISTVERSION in Makefile.in +# * Update ADNS_VERSION_STRING in client/client.h +# +# * Run this script +# ./RELEASE-CHECKLIST [--real] <version> +# +# * On chiark, maybe, replace ~ian/public-html/adns/current +# with symlink to web-$(version) (as directed by script) +# +# * Send release announcement (use last one as template) +# +# * Update DISTVERSION, ADNS_VERSION_STRING and start new changelog entry + +set -e + +fail () { echo >&2 "$0: $*"; exit 16; } + +real=false +if [ "x$1" = x--real ]; then + real=true; shift +fi + +if [ $# != 1 ]; then fail "wrong # arguments"; fi +wantversion="$1" + +version=`sed -n <Makefile.in 's/^DISTVERSION=[ ]*//p'` + +if [ "x$version" != "x$wantversion" ]; then + fail "you say version $wantversion but tree is $version" +fi + +gpgkey='-u 0x48B50D39' +chiark=chiark:/u/ian/public-html/adns +chiarkftp=$chiark/ftp + +x () { echo "----- $* -----"; "$@"; } +wx () { if $real; then x "$@"; else echo "WOULD: $*"; fi; } + +x git clean -xdff +x ./configure +x make -j4 +x make check +x make dist +rm -rf web +x make web-install + +distdir=adns-$version +distfile=$distdir.tar.gz +x test -f $distfile + +rm -rf dist_tmp +mkdir dist_tmp +cd dist_tmp +tar axf ../$distfile +cd $distdir +git init --quiet +git fetch --quiet ../.. HEAD +git add . +git commit --quiet -m T +git diff --exit-code FETCH_HEAD +cd ../.. + +tag=adns-${version//\~/-} +webout=docs-$version + +wx gpg --detach-sign $distfile +wx git tag -s $gpgkey -m "adns release $version" $tag +wx git push origin $tag~0:master $tag + +distfiles="$distfile $distfile.sig" +wx rsync -vP $distfiles $chiarkftp/ + +wx rsync -rvP web/. $chiark/$webout + +wx sha256sum $distfiles + +if ! $real; then echo "NOT REAL"; exit 0; fi + +cat <<END + +TO UPDATE WEB PAGE DOCS: + ssh ${chiark%%:*} + cd ${chiark#*:} + rm -f docs.tmp + ln -s $webout docs.tmp + mv -Tf docs.tmp docs +END @@ -1,3 +1,35 @@ +adns (1.5.0~rc1) UPSTREAM; urgency=low + + ABI/API changes: + * Provide adns_qf_cname_strict flag, currently ignored because it's the + default. This will allow us to make this not the default in the future + while retaining forward and backward API and ABI compatibility. + * Add `sizeforce' enum member value to force enum types in the APIs to be + big (which will avoids theoretical future ABI-incompatibility). + * Reject unknown flags passed by our caller. This will make it ABI-safe + (although not ABI-backward-compatible) to add new flags in the future, + as newer clients running against this old library will get ENOSYS. + + resolv.conf parsing: + * Support `adns_ignoreunkcfg' resolv.conf option to ignore unknown + options and keywords in resolv.conf. + * Ignore various BIND9 resolv.conf keywords and options. + * Fix resolv.conf option word splitting. + + Tests, build system, coding style, etc.: + * Test cases show rrtype flag values in hex. + * Parallelise `make check'. + * Make vbuf__append_quoted1035 no longer extern (there are no out-of-file + callers). + * Remove all RCSids. + * When releasing, check that the `make dist' tarball is identical to git. + And provide a test mode for the RELEASE-CHECKLIST doc/script. + * Add `make dist' tarball signature to .gitignore. + * More correctly and effectively work around bugs in make (Debian #4073, + #756123) affecting regress. + + -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 26 Oct 2014 13:24:00 +0000 + adns (1.5.0~rc0) UPSTREAM; urgency=low New features: diff --git a/client/adnsheloex.c b/client/adnsheloex.c index 0ec2a41..848de21 100644 --- a/client/adnsheloex.c +++ b/client/adnsheloex.c @@ -29,9 +29,6 @@ * This file is by Tony Finch, based on adnslogres.c. */ -static const char * const cvsid = - "$Id$"; - #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> diff --git a/client/adnslogres.c b/client/adnslogres.c index a93e855..1a99694 100644 --- a/client/adnslogres.c +++ b/client/adnslogres.c @@ -32,9 +32,6 @@ * subsequently. */ -static const char * const cvsid = - "$Id$"; - #include <sys/types.h> #include <sys/time.h> diff --git a/client/adnstest.c b/client/adnstest.c index 0e0db03..59a3bbc 100644 --- a/client/adnstest.c +++ b/client/adnstest.c @@ -102,6 +102,7 @@ static void usageerr(const char *why) { "initflags: p use poll(2) instead of select(2)\n" " s use adns_wait with specified query, instead of 0\n" "queryflags: a print status abbrevs instead of strings\n" + "typenum: may be 0x<hex>|<dec>, or 0x<hex> or <dec>\n" "exit status: 0 ok (though some queries may have failed)\n" " 1 used by test harness to indicate test failed\n" " 2 unable to submit or init or some such\n" @@ -207,12 +208,19 @@ int main(int argc, char *const *argv) { if (ch==',') tc++; types_a= malloc(sizeof(*types_a)*(tc+1)); if (!types_a) { perror("malloc types"); quitnow(3); } - for (cp= argv[1]+1, ti=0; ti<tc; ti++) { - types_a[ti]= strtoul(cp,&cp,10); - if ((ch= *cp)) { - if (ch != ',') usageerr("unexpected char (not comma) in or between types"); + for (cp= argv[1]+1, ti=0; ti<tc; ) { + types_a[ti]= 0; + for (;;) { + types_a[ti] |= strtoul(cp,&cp,0); + ch= *cp; + if (!ch) break; cp++; + if (ch=='|') continue; + if (ch==',') break; + usageerr("unexpected char (not comma) in or between types"); } + ti++; + if (!ch) break; } types_a[ti]= adns_r_none; types= types_a; diff --git a/client/client.h b/client/client.h index d8a7e2a..5d2f475 100644 --- a/client/client.h +++ b/client/client.h @@ -27,7 +27,7 @@ #ifndef CLIENT_H_INCLUDED #define CLIENT_H_INCLUDED -#define ADNS_VERSION_STRING "1.5.0~rc0" +#define ADNS_VERSION_STRING "1.5.0~rc1" #define COPYRIGHT_MESSAGE \ "Copyright (C) 1997-2000,2003,2006,2014 Ian Jackson\n" \ diff --git a/client/fanftest.c b/client/fanftest.c index 85a40a8..3caa882 100644 --- a/client/fanftest.c +++ b/client/fanftest.c @@ -31,9 +31,6 @@ * modified by Ian Jackson as it was incorporated into adns. */ -static const char * const cvsid = - "$Id$"; - #include <sys/types.h> #include <sys/time.h> diff --git a/regress/Makefile.in b/regress/Makefile.in index 34be146..b0035e7 100644 --- a/regress/Makefile.in +++ b/regress/Makefile.in @@ -45,8 +45,14 @@ ALL_OBJS= $(HARNLOBJS) dtest.o hrecord.o hplayback.o all install uninstall: $(TARGETS) -check: $(TARGETS) - srcdir=$(srcdir) $(srcdir)/checkall +ALL_TESTS:=$(patsubst $(srcdir)/case-%.sys,%,$(wildcard $(srcdir)/case-*.sys)) + +check: $(TARGETS) $(addprefix check-,$(ALL_TESTS)) + @echo + @echo 'all tests passed or maybe skipped.' + +check-%: case-%.sys + @srcdir=$(srcdir) $(srcdir)/r1test $* || test $? = 5 LINK_CMD= $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ diff --git a/regress/case-1stservbroken.sys b/regress/case-1stservbroken.sys index 0892857..fe4363c 100644 --- a/regress/case-1stservbroken.sys +++ b/regress/case-1stservbroken.sys @@ -1,5 +1,5 @@ adnstest 1stservbroken -:12 trunc.test.iwj.relativity.greenend.org.uk +:0x0|12 trunc.test.iwj.relativity.greenend.org.uk start 940102940.701451 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-1stservtotcp.sys b/regress/case-1stservtotcp.sys index f5d4f4c..e6ef382 100644 --- a/regress/case-1stservtotcp.sys +++ b/regress/case-1stservtotcp.sys @@ -1,5 +1,5 @@ adnstest 1stservto -:12 trunc.test.iwj.relativity.greenend.org.uk +:0x0|12 trunc.test.iwj.relativity.greenend.org.uk start 940100259.965940 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-2ndservok.sys b/regress/case-2ndservok.sys index 31777c9..6765361 100644 --- a/regress/case-2ndservok.sys +++ b/regress/case-2ndservok.sys @@ -1,5 +1,5 @@ adnstest 2ndserver -:1 davenant.relativity.greenend.org.uk +:0x0|1 davenant.relativity.greenend.org.uk start 940100095.012145 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-2ndservtcp.sys b/regress/case-2ndservtcp.sys index cc702bf..fa9e994 100644 --- a/regress/case-2ndservtcp.sys +++ b/regress/case-2ndservtcp.sys @@ -1,5 +1,5 @@ adnstest 2ndserver -:12 trunc.test.iwj.relativity.greenend.org.uk +:0x0|12 trunc.test.iwj.relativity.greenend.org.uk start 940100083.268555 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-aaaa-simple.sys b/regress/case-aaaa-simple.sys index aecfafe..25873ed 100644 --- a/regress/case-aaaa-simple.sys +++ b/regress/case-aaaa-simple.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:28 stratocaster.distorted.org.uk +:0x0|28 stratocaster.distorted.org.uk start 1401870460.843715 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-aaaa-sort.sys b/regress/case-aaaa-sort.sys index 5f9f3b5..4860661 100644 --- a/regress/case-aaaa-sort.sys +++ b/regress/case-aaaa-sort.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:28 maddr.dnserr.distorted.org.uk +:0x0|28 maddr.dnserr.distorted.org.uk start 1401871954.600653 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-addr-multi-af.sys b/regress/case-addr-multi-af.sys index ef40368..1edce47 100644 --- a/regress/case-addr-multi-af.sys +++ b/regress/case-addr-multi-af.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:16842753,16842767,50397185,50397199 maddr.dnserr.distorted.org.uk mx.dnserr.distorted.org.uk 0x400/maddr.dnserr.distorted.org.uk 0x400/mx.dnserr.distorted.org.uk 0x800/maddr.dnserr.distorted.org.uk 0x800/mx.dnserr.distorted.org.uk 0xc00/maddr.dnserr.distorted.org.uk 0xc00/mx.dnserr.distorted.org.uk +:0x1010000|1,0x1010000|15,0x3010000|1,0x3010000|15 maddr.dnserr.distorted.org.uk mx.dnserr.distorted.org.uk 0x400/maddr.dnserr.distorted.org.uk 0x400/mx.dnserr.distorted.org.uk 0x800/maddr.dnserr.distorted.org.uk 0x800/mx.dnserr.distorted.org.uk 0xc00/maddr.dnserr.distorted.org.uk 0xc00/mx.dnserr.distorted.org.uk start 1402445458.222480 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-bogus-sortlist.sys b/regress/case-bogus-sortlist.sys index bc39fa8..4cb4b26 100644 --- a/regress/case-bogus-sortlist.sys +++ b/regress/case-bogus-sortlist.sys @@ -1,2 +1,2 @@ ./adnstest bogus-sortlist -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk diff --git a/regress/case-brokenmail.sys b/regress/case-brokenmail.sys index 6846e7a..c9ead48 100644 --- a/regress/case-brokenmail.sys +++ b/regress/case-brokenmail.sys @@ -1,5 +1,5 @@ adnstest default -0x400 -:15,16842767 broken-mail.test.iwj.relativity.greenend.org.uk. 256/broken-mail.test.iwj.relativity.greenend.org.uk. 0x104/broken-mail.test.iwj.relativity.greenend.org.uk. +:0x0|15,0x1010000|15 broken-mail.test.iwj.relativity.greenend.org.uk. 256/broken-mail.test.iwj.relativity.greenend.org.uk. 0x104/broken-mail.test.iwj.relativity.greenend.org.uk. start 934726868.117908 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-child.sys b/regress/case-child.sys index c35fe9b..49829c0 100644 --- a/regress/case-child.sys +++ b/regress/case-child.sys @@ -1,5 +1,5 @@ adnstest default -:65548 134.76.224.195.in-addr.arpa +:0x10000|12 134.76.224.195.in-addr.arpa start 929574747.401802 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-cnametocname.sys b/regress/case-cnametocname.sys index de83e03..33cbd7d 100644 --- a/regress/case-cnametocname.sys +++ b/regress/case-cnametocname.sys @@ -1,5 +1,5 @@ adnstest default -:1 intel.ugcs.caltech.edu. +:0x0|1 intel.ugcs.caltech.edu. start 938369896.279735 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-comprinf.sys b/regress/case-comprinf.sys index b9705a1..01411ba 100644 --- a/regress/case-comprinf.sys +++ b/regress/case-comprinf.sys @@ -1,5 +1,5 @@ adnstest default -:12 37.45.18.172.in-addr.arpa. +:0x0|12 37.45.18.172.in-addr.arpa. start 951961094.184850 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-connfail.sys b/regress/case-connfail.sys index 85bb21c..f84f99d 100644 --- a/regress/case-connfail.sys +++ b/regress/case-connfail.sys @@ -1,5 +1,5 @@ ./adnstest 2ndserver -:1 2/davenant.greenend.org.uk +:0x0|1 2/davenant.greenend.org.uk start 1056289303.784817 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-flags10.sys b/regress/case-flags10.sys index 6c50b73..24431ed 100644 --- a/regress/case-flags10.sys +++ b/regress/case-flags10.sys @@ -1,5 +1,5 @@ adnstest default -:1 ,aaaaaaaaaa/chiark.greenend.org.uk +:0x0|1 ,aaaaaaaaaa/chiark.greenend.org.uk start 929580072.670441 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-flags9.sys b/regress/case-flags9.sys index e5b5ceb..4b01b37 100644 --- a/regress/case-flags9.sys +++ b/regress/case-flags9.sys @@ -1,5 +1,5 @@ adnstest default -:1 ,aaaaaaaaa/chiark.greenend.org.uk +:0x0|1 ,aaaaaaaaa/chiark.greenend.org.uk start 929580075.263215 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-formerr.sys b/regress/case-formerr.sys index 1f026d9..79c4c4e 100644 --- a/regress/case-formerr.sys +++ b/regress/case-formerr.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/h.rndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. +:0x0|1 1/h.rndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. start 951956380.814815 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-lockup.sys b/regress/case-lockup.sys index 59efb4e..486632a 100644 --- a/regress/case-lockup.sys +++ b/regress/case-lockup.sys @@ -1,5 +1,5 @@ adnstest noserver -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk start 912889153.349504 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdom0.sys b/regress/case-longdom0.sys index 6963993..f6d3a56 100644 --- a/regress/case-longdom0.sys +++ b/regress/case-longdom0.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/0rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk. +:0x0|1 1/0rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk. start 951955651.857473 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdom1.sys b/regress/case-longdom1.sys index 15a9605..718aaed 100644 --- a/regress/case-longdom1.sys +++ b/regress/case-longdom1.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/10rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk. +:0x0|1 1/10rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk. start 951955690.505811 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdomsrch0.sys b/regress/case-longdomsrch0.sys index 66ed755..ff0a22d 100644 --- a/regress/case-longdomsrch0.sys +++ b/regress/case-longdomsrch0.sys @@ -1,5 +1,5 @@ adnstest ndots100 -:1 1/10rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk +:0x0|1 1/10rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk start 951956073.321566 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdomsrch1.sys b/regress/case-longdomsrch1.sys index e706c58..c3deb1b 100644 --- a/regress/case-longdomsrch1.sys +++ b/regress/case-longdomsrch1.sys @@ -1,5 +1,5 @@ adnstest ndots100 -:1 1/0rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk +:0x0|1 1/0rndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk start 951956087.269350 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdomsrch1b.sys b/regress/case-longdomsrch1b.sys index cd780da..3ef9468 100644 --- a/regress/case-longdomsrch1b.sys +++ b/regress/case-longdomsrch1b.sys @@ -1,5 +1,5 @@ adnstest ndots100 -:1 1/1xxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk +:0x0|1 1/1xxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk start 951956136.566877 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longdomsrch2.sys b/regress/case-longdomsrch2.sys index 65e23e8..683c44b 100644 --- a/regress/case-longdomsrch2.sys +++ b/regress/case-longdomsrch2.sys @@ -1,5 +1,5 @@ adnstest ndots100 -:1 1/xxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk +:0x0|1 1/xxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.llanfairpwllgwyngyllgogerychwyrndrobwlxxxxxxxxxxlllantysiliogog.relativity.greenend.org.uk start 951956143.624786 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longlab0.sys b/regress/case-longlab0.sys index 6e39ee6..bea6488 100644 --- a/regress/case-longlab0.sys +++ b/regress/case-longlab0.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/yrndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. +:0x0|1 1/yrndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. start 951955250.786132 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-longlab1.sys b/regress/case-longlab1.sys index b73482f..bc8d0f0 100644 --- a/regress/case-longlab1.sys +++ b/regress/case-longlab1.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/hyrndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. +:0x0|1 1/hyrndrobwlxxxxxxxxxxlllantysiliogogllanfairpwllgwyngyllgogerychw.relativity.greenend.org.uk. start 951955261.286712 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-mailboxes.sys b/regress/case-mailboxes.sys index 81457da..5889227 100644 --- a/regress/case-mailboxes.sys +++ b/regress/case-mailboxes.sys @@ -1,5 +1,5 @@ adnstest default -:131089 silly-rp.test.iwj.relativity.greenend.org.uk +:0x20000|17 silly-rp.test.iwj.relativity.greenend.org.uk start 923859567.899146 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-manya.sys b/regress/case-manya.sys index 492c620..4eb0386 100644 --- a/regress/case-manya.sys +++ b/regress/case-manya.sys @@ -1,5 +1,5 @@ adnstest default -:1 manyaddrs.test.iwj.relativity.greenend.org.uk +:0x0|1 manyaddrs.test.iwj.relativity.greenend.org.uk start 912888920.123769 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-ndots-as.sys b/regress/case-ndots-as.sys index b9afa75..0f0db44 100644 --- a/regress/case-ndots-as.sys +++ b/regress/case-ndots-as.sys @@ -1,5 +1,5 @@ adnstest default -:1 5/newsx.davenant 5/news.davenant 5/news.davenant.greenend.org.uk 5/trunc.test.iwj.relativity 5/trunx.test.iwj.relativity 5/test.iwj.relativity +:0x0|1 5/newsx.davenant 5/news.davenant 5/news.davenant.greenend.org.uk 5/trunc.test.iwj.relativity 5/trunx.test.iwj.relativity 5/test.iwj.relativity start 931992163.221752 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-ndots.sys b/regress/case-ndots.sys index 7934cc9..8fd6be9 100644 --- a/regress/case-ndots.sys +++ b/regress/case-ndots.sys @@ -1,5 +1,5 @@ adnstest ndots -,s -:1 5/newsx.davenant 5/news.davenant 5/news.davenant.greenend.org.uk 5/trunc.test.iwj.relativity 5/trunx.test.iwj.relativity 5/test.iwj.relativity +:0x0|1 5/newsx.davenant 5/news.davenant 5/news.davenant.greenend.org.uk 5/trunc.test.iwj.relativity 5/trunx.test.iwj.relativity 5/test.iwj.relativity start 924365863.351594 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-ndotsbad.sys b/regress/case-ndotsbad.sys index eaf457d..b5ebfb4 100644 --- a/regress/case-ndotsbad.sys +++ b/regress/case-ndotsbad.sys @@ -1,2 +1,2 @@ adnstest ndotsbad -:1 5/news.davenant.greenend.org.uk +:0x0|1 5/news.davenant.greenend.org.uk diff --git a/regress/case-noinfto.sys b/regress/case-noinfto.sys index 96d7fe1..63d2fd0 100644 --- a/regress/case-noinfto.sys +++ b/regress/case-noinfto.sys @@ -1,5 +1,5 @@ adnstest noserver -,p -:1 a.b.c.d +:0x0|1 a.b.c.d start 940011574.766962 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-norm.sys b/regress/case-norm.sys index 9059105..8c87430 100644 --- a/regress/case-norm.sys +++ b/regress/case-norm.sys @@ -1,5 +1,5 @@ adnstest default -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk start 912888966.802483 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-poll.sys b/regress/case-poll.sys index 51a276d..1c0e8af 100644 --- a/regress/case-poll.sys +++ b/regress/case-poll.sys @@ -1,5 +1,5 @@ adnstest default -,p -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk start 931719947.391142 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-polltimeout.sys b/regress/case-polltimeout.sys index ee87357..ca5ce03 100644 --- a/regress/case-polltimeout.sys +++ b/regress/case-polltimeout.sys @@ -1,5 +1,5 @@ adnstest noserver -,p -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk start 931719968.733439 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-ptr-aaaa-caps.sys b/regress/case-ptr-aaaa-caps.sys index 4637e7c..8ff0db9 100644 --- a/regress/case-ptr-aaaa-caps.sys +++ b/regress/case-ptr-aaaa-caps.sys @@ -1,5 +1,5 @@ ./adnstest default -:65548 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.D.1.0.8.A.B.0.1.0.0.2.IP6.ARPA +:0x10000|12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.D.1.0.8.A.B.0.1.0.0.2.IP6.ARPA start 1406162686.218685 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-ptr-aaaa-check.sys b/regress/case-ptr-aaaa-check.sys index 5b538fe..68e453d 100644 --- a/regress/case-ptr-aaaa-check.sys +++ b/regress/case-ptr-aaaa-check.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:65548 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa +:0x10000|12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa start 1401919115.064959 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-ptr-aaaa-mismatch.sys b/regress/case-ptr-aaaa-mismatch.sys index 84655c4..360509f 100644 --- a/regress/case-ptr-aaaa-mismatch.sys +++ b/regress/case-ptr-aaaa-mismatch.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:65548 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.b.d.0.1.0.0.2.ip6.arpa +:0x10000|12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.b.d.0.1.0.0.2.ip6.arpa start 1401919322.902230 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-ptr-aaaa-plain.sys b/regress/case-ptr-aaaa-plain.sys index 085dcd0..343cffc 100644 --- a/regress/case-ptr-aaaa-plain.sys +++ b/regress/case-ptr-aaaa-plain.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa +:0x0|12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa start 1401918956.635299 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-ptr-aaaa.sys b/regress/case-ptr-aaaa.sys index 8b7a614..d2e21df 100644 --- a/regress/case-ptr-aaaa.sys +++ b/regress/case-ptr-aaaa.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:65548 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa +:0x10000|12 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa start 1401919090.054985 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-ptrbaddom.sys b/regress/case-ptrbaddom.sys index 5c571a7..f53995a 100644 --- a/regress/case-ptrbaddom.sys +++ b/regress/case-ptrbaddom.sys @@ -1,5 +1,5 @@ adnstest default -:12,65548 37.45.18.172.in-addr.arpa.test.iwj.relativity.greenend.org.uk. +:0x0|12,0x10000|12 37.45.18.172.in-addr.arpa.test.iwj.relativity.greenend.org.uk. start 951960654.608219 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-ptrbaddom2.sys b/regress/case-ptrbaddom2.sys index 71f86a2..cdd266a 100644 --- a/regress/case-ptrbaddom2.sys +++ b/regress/case-ptrbaddom2.sys @@ -1,5 +1,5 @@ ./adnstest default -:65548 00.45.18.172.in-addr.arpa 6.945.18.172.in-addr.arpa 4.0.0.0.g.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa +:0x10000|12 00.45.18.172.in-addr.arpa 6.945.18.172.in-addr.arpa 4.0.0.0.g.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.9.d.1.0.8.a.b.0.1.0.0.2.ip6.arpa start 1406163217.059538 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-quote.sys b/regress/case-quote.sys index e54f90f..475aeb7 100644 --- a/regress/case-quote.sys +++ b/regress/case-quote.sys @@ -1,5 +1,5 @@ adnstest default -:1 hyphen.cname.test.iwj.relativity.greenend.org.uk dot.cname.test.iwj.relativity.greenend.org.uk plus.cname.test.iwj.relativity.greenend.org.uk slash.cname.test.iwj.relativity.greenend.org.uk underscore.cname.test.iwj.relativity.greenend.org.uk quote.cname.test.iwj.relativity.greenend.org.uk backslash.cname.test.iwj.relativity.greenend.org.uk null.cname.test.iwj.relativity.greenend.org.uk space.cname.test.iwj.relativity.greenend.org.uk hash.cname.test.iwj.relativity.greenend.org.uk del.cname.test.iwj.relativity.greenend.org.uk meta-null.cname.test.iwj.relativity.greenend.org.uk meta-del.cname.test.iwj.relativity.greenend.org.uk +:0x0|1 hyphen.cname.test.iwj.relativity.greenend.org.uk dot.cname.test.iwj.relativity.greenend.org.uk plus.cname.test.iwj.relativity.greenend.org.uk slash.cname.test.iwj.relativity.greenend.org.uk underscore.cname.test.iwj.relativity.greenend.org.uk quote.cname.test.iwj.relativity.greenend.org.uk backslash.cname.test.iwj.relativity.greenend.org.uk null.cname.test.iwj.relativity.greenend.org.uk space.cname.test.iwj.relativity.greenend.org.uk hash.cname.test.iwj.relativity.greenend.org.uk del.cname.test.iwj.relativity.greenend.org.uk meta-null.cname.test.iwj.relativity.greenend.org.uk meta-del.cname.test.iwj.relativity.greenend.org.uk start 951958420.936685 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-rootquery.sys b/regress/case-rootquery.sys index f23340c..b290763 100644 --- a/regress/case-rootquery.sys +++ b/regress/case-rootquery.sys @@ -1,5 +1,5 @@ adnstest default -:131078 . 1/. +:0x20000|6 . 1/. start 924364442.672925 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-rr_addr-binary-compat.sys b/regress/case-rr_addr-binary-compat.sys index a75ebf8..c1ae7bb 100644 --- a/regress/case-rr_addr-binary-compat.sys +++ b/regress/case-rr_addr-binary-compat.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:16842753,65537 maddr.dnserr.distorted.org.uk +:0x1010000|1,0x10000|1 maddr.dnserr.distorted.org.uk start 1402443258.469312 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/case-search-as.sys b/regress/case-search-as.sys index 267e1b0..442a0a5 100644 --- a/regress/case-search-as.sys +++ b/regress/case-search-as.sys @@ -1,5 +1,5 @@ adnstest default -:1 0x5/news 0x5/chiark 1/news 1/chiark +:0x0|1 0x5/news 0x5/chiark 1/news 1/chiark start 931992052.232208 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-search.sys b/regress/case-search.sys index e74a52d..4c6675c 100644 --- a/regress/case-search.sys +++ b/regress/case-search.sys @@ -1,5 +1,5 @@ adnstest default -,s -:1 0x5/news 0x5/chiark 1/news 1/chiark +:0x0|1 0x5/news 0x5/chiark 1/news 1/chiark start 924360470.478357 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-searchabs.sys b/regress/case-searchabs.sys index 97d99b5..ee547ba 100644 --- a/regress/case-searchabs.sys +++ b/regress/case-searchabs.sys @@ -1,5 +1,5 @@ adnstest default -:1 1/news.davenant +:0x0|1 1/news.davenant start 924363451.882765 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-sillyrp.sys b/regress/case-sillyrp.sys index f746d72..f5d8e51 100644 --- a/regress/case-sillyrp.sys +++ b/regress/case-sillyrp.sys @@ -1,5 +1,5 @@ adnstest default -:17,131089 0x70/silly-rp-dm.test.iwj.relativity.greenend.org.uk 0x70/silly-rp-lp.test.iwj.relativity.greenend.org.uk silly-rp-lp.test.iwj.relativity.greenend.org.uk silly-rp-dm.test.iwj.relativity.greenend.org.uk +:0x0|17,0x20000|17 0x70/silly-rp-dm.test.iwj.relativity.greenend.org.uk 0x70/silly-rp-lp.test.iwj.relativity.greenend.org.uk silly-rp-lp.test.iwj.relativity.greenend.org.uk silly-rp-dm.test.iwj.relativity.greenend.org.uk start 929580348.131048 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-tcpbreakin.sys b/regress/case-tcpbreakin.sys index f2d5fe3..d20b0d9 100644 --- a/regress/case-tcpbreakin.sys +++ b/regress/case-tcpbreakin.sys @@ -1,5 +1,5 @@ adnstest default -:65548 2/6.45.18.172.in-addr.arpa +:0x10000|12 2/6.45.18.172.in-addr.arpa start 957718868.938329 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-tcpmultipart.sys b/regress/case-tcpmultipart.sys index bcb8ad4..8f59ea9 100644 --- a/regress/case-tcpmultipart.sys +++ b/regress/case-tcpmultipart.sys @@ -1,5 +1,5 @@ adnstest tunnel -:12 2/132.76.224.195.in-addr.arpa 2/manymorerrs.test.culture.dotat.at. 2/132.76.224.195.in-addr.arpa +:0x0|12 2/132.76.224.195.in-addr.arpa 2/manymorerrs.test.culture.dotat.at. 2/132.76.224.195.in-addr.arpa start 938365454.994875 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-tcpptr.sys b/regress/case-tcpptr.sys index 61da167..662689c 100644 --- a/regress/case-tcpptr.sys +++ b/regress/case-tcpptr.sys @@ -1,5 +1,5 @@ adnstest default -:65548 2/6.45.18.172.in-addr.arpa +:0x10000|12 2/6.45.18.172.in-addr.arpa start 957718868.938329 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-timeout.sys b/regress/case-timeout.sys index 4ce68f9..3fb78d3 100644 --- a/regress/case-timeout.sys +++ b/regress/case-timeout.sys @@ -1,5 +1,5 @@ adnstest noserver -:1 chiark.greenend.org.uk +:0x0|1 chiark.greenend.org.uk start 912889153.349504 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-trunc.sys b/regress/case-trunc.sys index af088ad..d57547d 100644 --- a/regress/case-trunc.sys +++ b/regress/case-trunc.sys @@ -1,5 +1,5 @@ adnstest default -:1 trunc.test.iwj.relativity.greenend.org.uk +:0x0|1 trunc.test.iwj.relativity.greenend.org.uk start 912888921.274801 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-unknown-flags-harmless.err b/regress/case-unknown-flags-harmless.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/regress/case-unknown-flags-harmless.err diff --git a/regress/case-unknown-flags-harmless.out b/regress/case-unknown-flags-harmless.out new file mode 100644 index 0000000..08a05a8 --- /dev/null +++ b/regress/case-unknown-flags-harmless.out @@ -0,0 +1,5 @@ +adns debug: using nameserver 172.18.45.6 +chiark.greenend.org.uk flags 1074266112 type 1 A(-) submitted +chiark.greenend.org.uk flags 1074266112 type A(-): OK; nrrs=1; cname=$; owner=$; ttl=3600 + 212.13.197.229 +rc=0 diff --git a/regress/case-unknown-flags-harmless.sys b/regress/case-unknown-flags-harmless.sys new file mode 100644 index 0000000..e06fc00 --- /dev/null +++ b/regress/case-unknown-flags-harmless.sys @@ -0,0 +1,34 @@ +./adnstest default -0x4000 +:0x60000000|1 0x40080000/chiark.greenend.org.uk + start 1414182720.022422 + socket domain=AF_INET type=SOCK_DGRAM + socket=6 + +0.000183 + fcntl fd=6 cmd=F_GETFL + fcntl=~O_NONBLOCK&... + +0.000097 + fcntl fd=6 cmd=F_SETFL O_NONBLOCK|... + fcntl=OK + +0.000076 + sendto fd=6 addr=172.18.45.6:53 + 311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267 + 02756b00 00010001. + sendto=40 + +0.000272 + select max=7 rfds=[6] wfds=[] efds=[] to=1.999728 + select=1 rfds=[6] wfds=[] efds=[] + +0.102141 + recvfrom fd=6 buflen=512 + recvfrom=OK addr=172.18.45.6:53 + 311f8580 00010001 00020002 06636869 61726b08 67726565 6e656e64 036f7267 + 02756b00 00010001 c00c0001 00010000 0e100004 d40dc5e5 c0130002 00010001 + 51800011 036e7331 0a72656c 61746976 697479c0 13c01300 02000100 01518000 + 06036e73 30c048c0 61000100 01000151 800004ac 122d06c0 44000100 01000151 + 800004ac 122d0b. + +0.000252 + recvfrom fd=6 buflen=512 + recvfrom=EAGAIN + +0.000070 + close fd=6 + close=OK + +0.000138 diff --git a/regress/case-unknown-flags-init.err b/regress/case-unknown-flags-init.err new file mode 100644 index 0000000..8d1d1d8 --- /dev/null +++ b/regress/case-unknown-flags-init.err @@ -0,0 +1 @@ +adns failure: init: errno=ENOSYS diff --git a/regress/case-unknown-flags-init.out b/regress/case-unknown-flags-init.out new file mode 100644 index 0000000..daa767e --- /dev/null +++ b/regress/case-unknown-flags-init.out @@ -0,0 +1 @@ +rc=2 diff --git a/regress/case-unknown-flags-init.sys b/regress/case-unknown-flags-init.sys new file mode 100644 index 0000000..e177c78 --- /dev/null +++ b/regress/case-unknown-flags-init.sys @@ -0,0 +1,2 @@ +./adnstest default -0x6000 +:0x60000000|1 0x40080000/chiark.greenend.org.uk diff --git a/regress/case-unknown-flags-query.err b/regress/case-unknown-flags-query.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/regress/case-unknown-flags-query.err diff --git a/regress/case-unknown-flags-query.out b/regress/case-unknown-flags-query.out new file mode 100644 index 0000000..ac8e541 --- /dev/null +++ b/regress/case-unknown-flags-query.out @@ -0,0 +1,3 @@ +adns debug: using nameserver 172.18.45.6 +chiark.greenend.org.uk flags 1075314688 type 1 not implemented +rc=0 diff --git a/regress/case-unknown-flags-query.sys b/regress/case-unknown-flags-query.sys new file mode 100644 index 0000000..ce849e8 --- /dev/null +++ b/regress/case-unknown-flags-query.sys @@ -0,0 +1,15 @@ +./adnstest default -0x4000 +:0x60000000|1 0x40180000/chiark.greenend.org.uk + start 1414182790.489799 + socket domain=AF_INET type=SOCK_DGRAM + socket=6 + +0.000123 + fcntl fd=6 cmd=F_GETFL + fcntl=~O_NONBLOCK&... + +0.000047 + fcntl fd=6 cmd=F_SETFL O_NONBLOCK|... + fcntl=OK + +0.000039 + close fd=6 + close=OK + +0.000149 diff --git a/regress/case-unknown-flags-type.err b/regress/case-unknown-flags-type.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/regress/case-unknown-flags-type.err diff --git a/regress/case-unknown-flags-type.out b/regress/case-unknown-flags-type.out new file mode 100644 index 0000000..a12353a --- /dev/null +++ b/regress/case-unknown-flags-type.out @@ -0,0 +1,3 @@ +adns debug: using nameserver 172.18.45.6 +chiark.greenend.org.uk flags 1074266112 type 1 not implemented +rc=0 diff --git a/regress/case-unknown-flags-type.sys b/regress/case-unknown-flags-type.sys new file mode 100644 index 0000000..41705b8 --- /dev/null +++ b/regress/case-unknown-flags-type.sys @@ -0,0 +1,15 @@ +./adnstest default -0x4000 +:0x70000000|1 0x40080000/chiark.greenend.org.uk + start 1414182770.758670 + socket domain=AF_INET type=SOCK_DGRAM + socket=6 + +0.000142 + fcntl fd=6 cmd=F_GETFL + fcntl=~O_NONBLOCK&... + +0.000080 + fcntl fd=6 cmd=F_SETFL O_NONBLOCK|... + fcntl=OK + +0.000060 + close fd=6 + close=OK + +0.000170 diff --git a/regress/case-unknownq.sys b/regress/case-unknownq.sys index bb73c13..60e6d2d 100644 --- a/regress/case-unknownq.sys +++ b/regress/case-unknownq.sys @@ -1,5 +1,5 @@ adnstest default -:32767 davenant.relativity.greenend.org.uk. +:0x0|32767 davenant.relativity.greenend.org.uk. start 933811310.565828 socket domain=AF_INET type=SOCK_DGRAM socket=4 diff --git a/regress/case-unkopts.err b/regress/case-unkopts.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/regress/case-unkopts.err diff --git a/regress/case-unkopts.out b/regress/case-unkopts.out new file mode 100644 index 0000000..42ee65b --- /dev/null +++ b/regress/case-unkopts.out @@ -0,0 +1,10 @@ +adns debug: using nameserver 172.18.45.6 +adns: <supplied configuration text>:5: unknown option `wombat' +adns: <supplied configuration text>:6: unknown configuration directive `stoat' +adns: <supplied configuration text>:7: unknown option `zorkmid' +adns: <supplied configuration text>:8: option adns_af has bad value or entry `dampstring' (option must be `any', or list of `ipv4',`ipv6') +adns: <supplied configuration text>:8: unknown option `spong' +chiark.greenend.org.uk flags 0 type 1 A(-) submitted +chiark.greenend.org.uk flags 0 type A(-): OK; nrrs=1; cname=$; owner=$; ttl=3600 + 212.13.197.229 +rc=0 diff --git a/regress/case-unkopts.sys b/regress/case-unkopts.sys new file mode 100644 index 0000000..dadf4c3 --- /dev/null +++ b/regress/case-unkopts.sys @@ -0,0 +1,34 @@ +./adnstest unkopts +:0x0|1 chiark.greenend.org.uk + start 1414184606.322883 + socket domain=AF_INET type=SOCK_DGRAM + socket=6 + +0.000116 + fcntl fd=6 cmd=F_GETFL + fcntl=~O_NONBLOCK&... + +0.000047 + fcntl fd=6 cmd=F_SETFL O_NONBLOCK|... + fcntl=OK + +0.000040 + sendto fd=6 addr=172.18.45.6:53 + 311f0100 00010000 00000000 06636869 61726b08 67726565 6e656e64 036f7267 + 02756b00 00010001. + sendto=40 + +0.000202 + select max=7 rfds=[6] wfds=[] efds=[] to=1.999798 + select=1 rfds=[6] wfds=[] efds=[] + +0.002958 + recvfrom fd=6 buflen=512 + recvfrom=OK addr=172.18.45.6:53 + 311f8580 00010001 00020002 06636869 61726b08 67726565 6e656e64 036f7267 + 02756b00 00010001 c00c0001 00010000 0e100004 d40dc5e5 c0130002 00010001 + 51800011 036e7331 0a72656c 61746976 697479c0 13c01300 02000100 01518000 + 06036e73 30c048c0 61000100 01000151 800004ac 122d06c0 44000100 01000151 + 800004ac 122d0b. + +0.000383 + recvfrom fd=6 buflen=512 + recvfrom=EAGAIN + +0.000138 + close fd=6 + close=OK + +0.000180 diff --git a/regress/case-v6-map.sys b/regress/case-v6-map.sys index 3f69f2c..3e92dce 100644 --- a/regress/case-v6-map.sys +++ b/regress/case-v6-map.sys @@ -1,5 +1,5 @@ ./adnstest distorted -:16842753,16842767,65537 0x1000/distorted.org.uk +:0x1010000|1,0x1010000|15,0x10000|1 0x1000/distorted.org.uk start 1402443121.225484 socket domain=AF_INET type=SOCK_DGRAM socket=6 diff --git a/regress/init-unkopts.text b/regress/init-unkopts.text new file mode 100644 index 0000000..a148864 --- /dev/null +++ b/regress/init-unkopts.text @@ -0,0 +1,11 @@ +nameserver 172.18.45.6 +sortlist 127.0.0.1/32 172.18.45.0/28 172.18.45.0/24 +search davenant.greenend.org.uk greenend.org.uk +lwserver 127.0.0.1 +options timeout:1 attempts:30 rotate no-check-names inet6 edns0 wombat +stoat +options adns_checkc:freq zorkmid +options adns_af:any adns_af:ipv6,ipv4,dampstring spong +options adns_ignoreunkcfg wombat2 +stoat2 +options adns_af:any adns_af:ipv6,ipv4,dampstring2 spong2 diff --git a/src/addrfam.c b/src/addrfam.c index 528036c..5067048 100644 --- a/src/addrfam.c +++ b/src/addrfam.c @@ -256,9 +256,18 @@ static bool addrtext_scope_use_ifname(const struct sockaddr *sa) { IN6_IS_ADDR_MC_LINKLOCAL(in6); } +static int textaddr_check_qf(adns_queryflags flags) { + if (flags & ~(adns_queryflags)(adns_qf_addrlit_scope_forbid| + adns_qf_addrlit_scope_numeric| + adns_qf_addrlit_ipv4_quadonly| + 0x40000000)) + return ENOSYS; + return 0; +} + int adns_text2addr(const char *text, uint16_t port, adns_queryflags flags, struct sockaddr *sa, socklen_t *salen_io) { - int af; + int r, af; char copybuf[INET6_ADDRSTRLEN]; const char *parse=text; const char *scopestr=0; @@ -266,6 +275,8 @@ int adns_text2addr(const char *text, uint16_t port, adns_queryflags flags, void *dst; uint16_t *portp; + r= textaddr_check_qf(flags); if (r) return r; + #define INVAL(how) do{ \ af_debug("invalid: %s: `%s'", how, text); \ return EINVAL; \ @@ -389,7 +400,9 @@ int adns_text2addr(const char *text, uint16_t port, adns_queryflags flags, int adns_addr2text(const struct sockaddr *sa, adns_queryflags flags, char *buffer, int *buflen_io, int *port_r) { const void *src; - int port; + int r, port; + + r= textaddr_check_qf(flags); if (r) return r; if (*buflen_io < ADNS_ADDR2TEXT_BUFLEN) { *buflen_io = ADNS_ADDR2TEXT_BUFLEN; @@ -50,8 +50,6 @@ * or the GNU Library General Public License, as appropriate, along * with this program; if not, write to the Free Software Foundation. * - * - * $Id$ */ #ifndef ADNS_H_INCLUDED @@ -110,13 +108,14 @@ typedef enum { /* In general, or together the desired flags: */ adns_if_permit_ipv4= 0x0400,/* allow _addr queries to return IPv4 addresses */ adns_if_permit_ipv6= 0x0800,/* allow _addr queries to return IPv6 addresses */ - adns_if_afmask= 0x0c00 + adns_if_afmask= 0x0c00, /* These are policy flags, and overridden by the adns_af:... option in * resolv.conf. If the adns_qf_want_... query flags are incompatible with * these settings (in the sense that no address families are permitted at * all) then the query flags take precedence; otherwise only records which * satisfy all of the stated requirements are allowed. */ + adns__if_sizeforce= 0x7fff, } adns_initflags; typedef enum { /* In general, or together the desired flags: */ @@ -129,6 +128,7 @@ typedef enum { /* In general, or together the desired flags: */ adns_qf_quoteok_anshost=0x00000040,/* ... in things supposedly hostnames */ adns_qf_quotefail_cname=0x00000080,/* refuse if quote-req chars in CNAME we go via */ adns_qf_cname_loose= 0x00000100,/* allow refs to CNAMEs - without, get _s_cname */ + adns_qf_cname_strict= 0x00010000,/* forbid CNAME refs (default, currently) */ adns_qf_cname_forbid= 0x00000200,/* don't follow CNAMEs, instead give _s_cname */ adns_qf_want_ipv4= 0x00000400,/* try to return IPv4 addresses */ @@ -145,7 +145,8 @@ typedef enum { /* In general, or together the desired flags: */ adns_qf_addrlit_scope_numeric=0x00004000,/* %<scope> may only be numeric */ adns_qf_addrlit_ipv4_quadonly=0x00008000,/* reject non-dotted-quad ipv4 */ - adns__qf_internalmask= 0x0ff00000 + adns__qf_internalmask= 0x0ff00000, + adns__qf_sizeforce= 0x7fffffff } adns_queryflags; typedef enum { @@ -214,7 +215,9 @@ typedef enum { adns_r_srv_raw= 33, adns_r_srv= adns_r_srv_raw|adns__qtf_deref, - adns_r_addr= adns_r_a|adns__qtf_deref + adns_r_addr= adns_r_a|adns__qtf_deref, + + adns__rrt_sizeforce= 0x7fffffff, } adns_rrtype; @@ -586,6 +589,12 @@ int adns_init_logfn(adns_state *newstate_r, adns_initflags flags, * Lookups occur (logically) concurrently; use the `sortlist' directive to * control the relative order of addresses in answers. This option * overrides the corresponding init flags (covered by adns_if_afmask). + * + * adns_ignoreunkcfg + * Ignore unknown options and configuration directives, rather than + * logging them. To be effective, appear in the configuration + * before the unknown options. ADNS_RES_OPTIONS is generally early + * enough. * * There are a number of environment variables which can modify the * behaviour of adns. They take effect only if adns_init is used, and @@ -706,8 +715,7 @@ int adns_addr2text(const struct sockaddr *sa, adns_queryflags flags, * port is always in host byte order and is simply copied to and * from the appropriate sockaddr field (byteswapped as necessary). * - * The only flags supported are adns_qf_addrlit_...; others are - * ignored. + * The only flags supported are adns_qf_addrlit_... * * Error return values are: * @@ -730,6 +738,8 @@ int adns_addr2text(const struct sockaddr *sa, adns_queryflags flags, * * EAFNOSUPPORT sa->sa_family is not supported (addr2text only). * + * ENOSYS Unsupported flags set. + * * Only if neither adns_qf_addrlit_scope_forbid nor * adns_qf_addrlit_scope_numeric are set: * diff --git a/src/internal.h b/src/internal.h index ad7d4d7..9334a6f 100644 --- a/src/internal.h +++ b/src/internal.h @@ -394,6 +394,7 @@ struct adns__state { adns_sockaddr base, mask; } sortlist[MAXSORTLIST]; char **searchlist; + unsigned config_report_unknown:1; unsigned short rand48xsubi[3]; }; @@ -865,8 +866,6 @@ void adns__update_expires(adns_query qu, unsigned long ttl, * now + ttl. */ -int vbuf__append_quoted1035(vbuf *vb, const byte *buf, int len); - bool adns__labels_equal(const byte *a, int al, const byte *b, int bl); /* From event.c: */ diff --git a/src/parse.c b/src/parse.c index 80b7974..caedf15 100644 --- a/src/parse.c +++ b/src/parse.c @@ -26,7 +26,7 @@ #include "internal.h" -int vbuf__append_quoted1035(vbuf *vb, const byte *buf, int len) { +static int vbuf_append_quoted1035(vbuf *vb, const byte *buf, int len) { char qbuf[10]; int i, ch; @@ -142,7 +142,7 @@ adns_status adns__parse_domain_more(findlabel_state *fls, adns_state ads, if (!adns__vbuf_append(vb,".",1)) return adns_s_nomemory; } if (flags & pdf_quoteok) { - if (!vbuf__append_quoted1035(vb,dgram+labstart,lablen)) + if (!vbuf_append_quoted1035(vb,dgram+labstart,lablen)) return adns_s_nomemory; } else { ch= dgram[labstart]; diff --git a/src/query.c b/src/query.c index 1f51b69..ff56fc3 100644 --- a/src/query.c +++ b/src/query.c @@ -275,6 +275,12 @@ int adns_submit(adns_state ads, adns__consistency(ads,0,cc_entex); + if (flags & ~(adns_queryflags)0x4009ffff) + /* 0x40080000 are reserved for `harmless' future expansion + * 0x00000020 used to be adns_qf_quoteok_cname, now the default; + * see also addrfam.c:textaddr_check_qf */ + return ENOSYS; + typei= adns__findtype(type); if (!typei) return ENOSYS; diff --git a/src/setup.c b/src/setup.c index 12d2241..7171f5b 100644 --- a/src/setup.c +++ b/src/setup.c @@ -260,65 +260,95 @@ static void ccf_sortlist(adns_state ads, const char *fn, static void ccf_options(adns_state ads, const char *fn, int lno, const char *buf) { - const char *word; + const char *opt, *word, *endword, *endopt; char *ep; unsigned long v; - int i,l; + int l; if (!buf) return; +#define WORD__IS(s,op) ((endword-word) op (sizeof(s)-1) && \ + !memcmp(word,s,(sizeof(s)-1))) +#define WORD_IS(s) (WORD__IS(s,==)) +#define WORD_STARTS(s) (WORD__IS(s,>=) ? ((word+=sizeof(s)-1)) : 0) + while (nextword(&buf,&word,&l)) { - if (l==5 && !memcmp(word,"debug",5)) { + opt=word; + endopt=endword=word+l; + if (WORD_IS("debug")) { ads->iflags |= adns_if_debug; continue; } - if (l>=6 && !memcmp(word,"ndots:",6)) { - v= strtoul(word+6,&ep,10); - if (l==6 || ep != word+l || v > INT_MAX) { + if (WORD_STARTS("ndots:")) { + v= strtoul(word,&ep,10); + if (ep==word || ep != endword || v > INT_MAX) { configparseerr(ads,fn,lno,"option `%.*s' malformed" - " or has bad value",l,word); + " or has bad value",l,opt); continue; } ads->searchndots= v; continue; } - if (l>=12 && !memcmp(word,"adns_checkc:",12)) { - if (!strcmp(word+12,"none")) { + if (WORD_STARTS("adns_checkc:")) { + if (WORD_IS("none")) { ads->iflags &= ~adns_if_checkc_freq; ads->iflags |= adns_if_checkc_entex; - } else if (!strcmp(word+12,"entex")) { + } else if (WORD_IS("entex")) { ads->iflags &= ~adns_if_checkc_freq; ads->iflags |= adns_if_checkc_entex; - } else if (!strcmp(word+12,"freq")) { + } else if (WORD_IS("freq")) { ads->iflags |= adns_if_checkc_freq; } else { configparseerr(ads,fn,lno, "option adns_checkc has bad value `%s' " - "(must be none, entex or freq", word+12); + "(must be none, entex or freq", word); } continue; } - if (l>=8 && !memcmp(word,"adns_af:",8)) { - word += 8; + if (WORD_STARTS("adns_af:")) { ads->iflags &= ~adns_if_afmask; - if (strcmp(word,"any")) for (;;) { - i= strcspn(word,","); - if (i>=4 && !memcmp(word,"ipv4",4)) + if (!WORD_IS("any")) for (;;) { + const char *comma= memchr(word,',',endopt-word); + endword=comma?comma:endopt; + if (WORD_IS("ipv4")) ads->iflags |= adns_if_permit_ipv4; - else if (i>=4 && !memcmp(word,"ipv6",4)) + else if (WORD_IS("ipv6")) ads->iflags |= adns_if_permit_ipv6; else { - configparseerr(ads,fn,lno, "option adns_af has bad value `%.*s' " - "(must be `any' or list {`ipv4',`ipv6'},...)", - i, word); + if (ads->config_report_unknown) + adns__diag(ads,-1,0,"%s:%d: " + "option adns_af has bad value or entry `%.*s' " + "(option must be `any', or list of `ipv4',`ipv6')", + fn,lno, (int)(endword-word),word); break; } - if (!word[i]) break; - word= word + i + 1; + if (!comma) break; + word= comma+1; } continue; } - adns__diag(ads,-1,0,"%s:%d: unknown option `%.*s'", fn,lno, l,word); + if (WORD_IS("adns_ignoreunkcfg")) { + ads->config_report_unknown=0; + continue; + } + if (/* adns's query strategy is not configurable */ + WORD_STARTS("timeout:") || + WORD_STARTS("attempts:") || + WORD_IS("rotate") || + /* adns provides the application with knob for this */ + WORD_IS("no-check-names") || + /* adns normally does IPv6 if the application wants it; control + * this with the adns_af: option if you like */ + WORD_IS("inet6") || + /* adns does not do edns0 and this is not a problem */ + WORD_IS("edns0")) + continue; + if (ads->config_report_unknown) + adns__diag(ads,-1,0,"%s:%d: unknown option `%.*s'", fn,lno, l,opt); } + +#undef WORD__IS +#undef WORD_IS +#undef WORD_STARTS } static void ccf_clearnss(adns_state ads, const char *fn, @@ -355,8 +385,9 @@ static void ccf_lookup(adns_state ads, const char *fn, int lno, adns__diag(ads,-1,0,"%s:%d: yp lookups not supported by adns", fn,lno); found_bind=-1; } else { - adns__diag(ads,-1,0,"%s:%d: unknown `lookup' database `%.*s'", - fn,lno, l,word); + if (ads->config_report_unknown) + adns__diag(ads,-1,0,"%s:%d: unknown `lookup' database `%.*s'", + fn,lno, l,word); found_bind=-1; } } @@ -364,6 +395,10 @@ static void ccf_lookup(adns_state ads, const char *fn, int lno, adns__diag(ads,-1,0,"%s:%d: `lookup' specified, but not `bind'", fn,lno); } +static void ccf_ignore(adns_state ads, const char *fn, int lno, + const char *buf) { +} + static const struct configcommandinfo { const char *name; void (*fn)(adns_state ads, const char *fn, int lno, const char *buf); @@ -376,6 +411,7 @@ static const struct configcommandinfo { { "clearnameservers", ccf_clearnss }, { "include", ccf_include }, { "lookup", ccf_lookup }, /* OpenBSD */ + { "lwserver", ccf_ignore }, /* BIND9 lwresd */ { 0 } }; @@ -481,8 +517,9 @@ static void readconfiggeneric(adns_state ads, const char *filename, !(strlen(ccip->name)==dirl && !memcmp(ccip->name,p,q-p)); ccip++); if (!ccip->name) { - adns__diag(ads,-1,0,"%s:%d: unknown configuration directive `%.*s'", - filename,lno,(int)(q-p),p); + if (ads->config_report_unknown) + adns__diag(ads,-1,0,"%s:%d: unknown configuration directive `%.*s'", + filename,lno,(int)(q-p),p); continue; } while (ctype_whitespace(*q)) q++; @@ -567,6 +604,10 @@ static int init_begin(adns_state *ads_r, adns_initflags flags, adns_state ads; pid_t pid; + if (flags & ~(adns_initflags)(0x4fff)) + /* 0x4000 is reserved for `harmless' future expansion */ + return ENOSYS; + ads= malloc(sizeof(*ads)); if (!ads) return errno; ads->iflags= flags; @@ -590,6 +631,7 @@ static int init_begin(adns_state *ads_r, adns_initflags flags, ads->tcpstate= server_disconnected; timerclear(&ads->tcptimeout); ads->searchlist= 0; + ads->config_report_unknown=1; pid= getpid(); ads->rand48xsubi[0]= pid; diff --git a/src/types.c b/src/types.c index 06d0d4c..d65e155 100644 --- a/src/types.c +++ b/src/types.c @@ -1693,6 +1693,10 @@ DEEP_TYPE(unknown,0, "unknown",byteblock,opaque, 0, opaque ); const typeinfo *adns__findtype(adns_rrtype type) { const typeinfo *begin, *end, *mid; + if (type & ~(adns_rrtype)0x63ffffff) + /* 0x60000000 is reserved for `harmless' future expansion */ + return 0; + if (type & adns_r_unknown) return &typeinfo_unknown; type &= adns_rrt_reprmask; |