chiark / gitweb /
Support IPv6 in addr queries.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 11 Jun 2014 00:02:49 +0000 (01:02 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 19 Oct 2014 20:09:57 +0000 (21:09 +0100)
This is the end-game.  Add flags and options to allow clients and
administrators to choose which address families they want returned.  For
logical compatibility with old clients, don't return foreign address
families unless explicitly requested.

Lots of tests are modified to select only IPv4 addresses.  There's
nothing else up my sleeve.  A new test is added for the additional
functionality; more are expected later.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
36 files changed:
client/adh-opts.c
client/adh-query.c
client/adnshost.h
client/adnstest.c
regress/case-abbrev.sys
regress/case-abbrevto.sys
regress/case-addr-multi-af.err [new file with mode: 0644]
regress/case-addr-multi-af.out [new file with mode: 0644]
regress/case-addr-multi-af.sys [new file with mode: 0644]
regress/case-adh-cancel.sys
regress/case-adh-cancel2.sys
regress/case-adh-norm.sys
regress/case-adh-pipe.sys
regress/case-brokenmail.sys
regress/case-datapluscname.sys
regress/case-datapluscnamewait.sys
regress/case-manyptrwrong.sys
regress/case-manyptrwrongrem.sys
regress/case-manyptrwrongrst.sys
regress/case-manyptrwrongrty.sys
regress/case-norecurse.sys
regress/case-norecurse2.sys
regress/case-norecurse3.sys
regress/case-owner.sys
regress/case-rootqueryall-as.sys
regress/case-rootqueryall.sys
regress/case-srvha.sys
regress/case-tcpallfail.sys
regress/case-tcpblock.sys
regress/case-tcpblockbrk.sys
regress/case-tcpblockwr.sys
regress/case-v6-transport-simple.sys
src/adns.h
src/internal.h
src/setup.c
src/types.c

index 7670ba5..1521b5c 100644 (file)
@@ -31,7 +31,7 @@ int ov_env=1, ov_pipe=0, ov_asynch=0;
 int ov_verbose= 0;
 adns_rrtype ov_type= adns_r_none;
 int ov_search=0, ov_qc_query=0, ov_qc_anshost=0, ov_qc_cname=1;
-int ov_tcp=0, ov_cname=0, ov_v6map=0, ov_format=fmt_default;
+int ov_tcp=0, ov_cname=0, ov_afflags=0, ov_v6map=0, ov_format=fmt_default;
 char *ov_id= 0;
 struct perqueryflags_remember ov_pqfr = { 1,1,1, tm_none };
 
@@ -106,6 +106,13 @@ static const struct optioninfo perquery_options[]= {
   { ot_value,            "Do not show the TTL (default)",
     "Tn", "no-ttl",        &ov_pqfr.ttl, tm_none },
 
+  { ot_desconly, "per-query address family options (for `addr' etc.):" },
+  { ot_value,           "Only return IPv4 addresses",
+    "A4", "--addr-ipv4-only", &ov_afflags, adns_qf_want_ipv4 },
+  { ot_value,           "Only return IPv6 addresses",
+    "A6", "--addr-ipv6-only", &ov_afflags, adns_qf_want_ipv6 },
+  { ot_value,           "Return all available addresses (default)",
+    "Aa", "--addr-all",           &ov_afflags, 0 },
   { ot_flag,            "Return IPv4 addresses as IPv6-mapped",
     "Am", "--addr-ipv6-mapped", &ov_v6map, 1 },
   
index aa2918e..1a78bdb 100644 (file)
@@ -93,7 +93,7 @@ static void prep_query(struct query_node **qun_r, int *quflags_r) {
     (ov_qc_anshost ? adns_qf_quoteok_anshost : 0) |
     (ov_qc_cname ? 0 : adns_qf_quoteok_cname) |
     (ov_v6map ? adns_qf_ipv6_mapv4 : 0) |
-    ov_cname;
+    ov_cname | ov_afflags;
     
   *qun_r= qun;
 }
index 69d9374..a739399 100644 (file)
@@ -42,6 +42,7 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
+#define ADNS_FEATURE_MANYAF
 #include "config.h"
 #include "adns.h"
 #include "dlist.h"
@@ -80,7 +81,7 @@ extern int ov_env, ov_pipe, ov_asynch;
 extern int ov_verbose;
 extern adns_rrtype ov_type;
 extern int ov_search, ov_qc_query, ov_qc_anshost, ov_qc_cname;
-extern int ov_tcp, ov_cname, ov_format, ov_v6map;
+extern int ov_tcp, ov_cname, ov_afflags, ov_v6map, ov_format;
 extern char *ov_id;
 extern struct perqueryflags_remember ov_pqfr;
 
index 20f7c31..99da619 100644 (file)
@@ -32,6 +32,7 @@
 #include <string.h>
 #include <errno.h>
 
+#define ADNS_FEATURE_MANYAF
 #include "config.h"
 #include "adns.h"
 
index e1f2b4f..1b92433 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 ,a/greenend.org.uk
  start 929580078.542974
  socket domain=PF_INET type=SOCK_DGRAM
index 507c94a..a1faf9a 100644 (file)
@@ -1,4 +1,4 @@
-adnstest noserver
+adnstest noserver -0x400
 ,a/greenend.org.uk
  start 929580082.699581
  socket domain=PF_INET type=SOCK_DGRAM
diff --git a/regress/case-addr-multi-af.err b/regress/case-addr-multi-af.err
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regress/case-addr-multi-af.out b/regress/case-addr-multi-af.out
new file mode 100644 (file)
index 0000000..d34d03b
--- /dev/null
@@ -0,0 +1,164 @@
+adns debug: using nameserver 172.29.199.224
+maddr.dnserr.distorted.org.uk flags 0 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 0 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 0 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 0 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 0 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 0 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 0 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 0 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 1024 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 1024 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 1024 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 1024 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 1024 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 1024 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 1024 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 1024 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 2048 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 2048 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 2048 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 2048 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 2048 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 2048 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 2048 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 2048 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 3072 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 3072 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 3072 type 65537 A(addr) submitted
+maddr.dnserr.distorted.org.uk flags 3072 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 3072 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 3072 type 65551 MX(+addr) submitted
+mx.dnserr.distorted.org.uk flags 3072 type 65537 A(addr) submitted
+mx.dnserr.distorted.org.uk flags 3072 type 65551 MX(+addr) submitted
+maddr.dnserr.distorted.org.uk flags 0 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 0 type A(addr): OK; nrrs=6; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET 192.0.2.2
+ INET 203.0.113.1
+ INET 203.0.113.2
+ INET 192.0.2.1
+maddr.dnserr.distorted.org.uk flags 0 type A(addr): OK; nrrs=12; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET6 2001:db8:2::1
+ INET6 2001:db8:2::2
+ INET 203.0.113.1
+ INET 203.0.113.2
+ INET 192.0.2.1
+ INET 192.0.2.2
+ INET6 2001:db8:3::1
+ INET6 2001:db8:3::2
+ INET6 2001:db8:1::1
+ INET6 2001:db8:1::2
+maddr.dnserr.distorted.org.uk flags 0 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 0 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 0 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 1024 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 1024 type A(addr): OK; nrrs=6; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET 203.0.113.2
+ INET 192.0.2.1
+ INET 192.0.2.2
+ INET 203.0.113.1
+maddr.dnserr.distorted.org.uk flags 1024 type A(addr): OK; nrrs=6; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET 192.0.2.1
+ INET 192.0.2.2
+ INET 203.0.113.1
+ INET 203.0.113.2
+maddr.dnserr.distorted.org.uk flags 1024 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 1024 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 1024 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 2048 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 2048 type A(addr): OK; nrrs=6; cname=$; owner=$; ttl=14400
+ INET6 2001:db8:2::2
+ INET6 2001:db8:2::1
+ INET6 2001:db8:3::1
+ INET6 2001:db8:3::2
+ INET6 2001:db8:1::1
+ INET6 2001:db8:1::2
+maddr.dnserr.distorted.org.uk flags 2048 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 2048 type A(addr): OK; nrrs=6; cname=$; owner=$; ttl=14400
+ INET6 2001:db8:2::1
+ INET6 2001:db8:2::2
+ INET6 2001:db8:3::1
+ INET6 2001:db8:3::2
+ INET6 2001:db8:1::1
+ INET6 2001:db8:1::2
+mx.dnserr.distorted.org.uk flags 2048 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 2048 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 3072 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 3072 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+maddr.dnserr.distorted.org.uk flags 3072 type A(addr): OK; nrrs=12; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET6 2001:db8:2::1
+ INET6 2001:db8:2::2
+ INET 203.0.113.2
+ INET 192.0.2.1
+ INET 192.0.2.2
+ INET 203.0.113.1
+ INET6 2001:db8:1::2
+ INET6 2001:db8:3::1
+ INET6 2001:db8:3::2
+ INET6 2001:db8:1::1
+maddr.dnserr.distorted.org.uk flags 3072 type A(addr): OK; nrrs=12; cname=$; owner=$; ttl=14400
+ INET 198.51.100.1
+ INET 198.51.100.2
+ INET6 2001:db8:2::1
+ INET6 2001:db8:2::2
+ INET 192.0.2.1
+ INET 192.0.2.2
+ INET 203.0.113.1
+ INET 203.0.113.2
+ INET6 2001:db8:3::1
+ INET6 2001:db8:3::2
+ INET6 2001:db8:1::1
+ INET6 2001:db8:1::2
+mx.dnserr.distorted.org.uk flags 3072 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 3072 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=14400
+mx.dnserr.distorted.org.uk flags 0 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.2 INET 198.51.100.1 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 INET 192.0.2.2 )
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 aaaa.dnserr.distorted.org.uk permfail 301 nodata "No such data" ( )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 )
+mx.dnserr.distorted.org.uk flags 0 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.1 INET 198.51.100.2 INET6 2001:db8:2::1 INET6 2001:db8:2::2 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 INET 192.0.2.2 INET6 2001:db8:3::2 INET6 2001:db8:1::1 INET6 2001:db8:1::2 INET6 2001:db8:3::1 )
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 aaaa.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::1 )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 INET6 2001:db8::2 )
+mx.dnserr.distorted.org.uk flags 1024 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.1 INET 198.51.100.2 INET 192.0.2.2 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 )
+ 69 aaaa.dnserr.distorted.org.uk permfail 301 nodata "No such data" ( )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 )
+mx.dnserr.distorted.org.uk flags 1024 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.1 INET 198.51.100.2 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 INET 192.0.2.2 )
+ 69 aaaa.dnserr.distorted.org.uk permfail 301 nodata "No such data" ( )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 )
+mx.dnserr.distorted.org.uk flags 2048 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8:2::1 INET6 2001:db8:2::2 INET6 2001:db8:1::1 INET6 2001:db8:1::2 INET6 2001:db8:3::1 INET6 2001:db8:3::2 )
+ 69 aaaa.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::1 )
+ 69 a.dnserr.distorted.org.uk permfail 301 nodata "No such data" ( )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::2 )
+mx.dnserr.distorted.org.uk flags 2048 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8:2::1 INET6 2001:db8:2::2 INET6 2001:db8:1::2 INET6 2001:db8:3::1 INET6 2001:db8:3::2 INET6 2001:db8:1::1 )
+ 69 aaaa.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::1 )
+ 69 a.dnserr.distorted.org.uk permfail 301 nodata "No such data" ( )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::2 )
+mx.dnserr.distorted.org.uk flags 3072 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.1 INET 198.51.100.2 INET6 2001:db8:2::1 INET6 2001:db8:2::2 INET 192.0.2.2 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 INET6 2001:db8:3::1 INET6 2001:db8:3::2 INET6 2001:db8:1::1 INET6 2001:db8:1::2 )
+ 69 aaaa.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::1 )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 INET6 2001:db8::2 )
+mx.dnserr.distorted.org.uk flags 3072 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=14400
+ 69 a.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.16 )
+ 69 maddr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.1 INET 198.51.100.2 INET6 2001:db8:2::2 INET6 2001:db8:2::1 INET 203.0.113.1 INET 203.0.113.2 INET 192.0.2.1 INET 192.0.2.2 INET6 2001:db8:3::1 INET6 2001:db8:3::2 INET6 2001:db8:1::1 INET6 2001:db8:1::2 )
+ 69 aaaa.dnserr.distorted.org.uk ok 0 ok "OK" ( INET6 2001:db8::1 )
+ 70 addr.dnserr.distorted.org.uk ok 0 ok "OK" ( INET 198.51.100.17 INET6 2001:db8::2 )
+rc=0
diff --git a/regress/case-addr-multi-af.sys b/regress/case-addr-multi-af.sys
new file mode 100644 (file)
index 0000000..14b1661
--- /dev/null
@@ -0,0 +1,1236 @@
+./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
+ start 1402445458.222480
+ socket domain=PF_INET type=SOCK_DGRAM
+ socket=6
+ +0.000026
+ fcntl fd=6 cmd=F_GETFL
+ fcntl=~O_NONBLOCK&...
+ +0.000012
+ fcntl fd=6 cmd=F_SETFL O_NONBLOCK|...
+ fcntl=OK
+ +0.000010
+ sendto fd=6 addr=172.29.199.224:53
+     31200100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000089
+ sendto fd=6 addr=172.29.199.224:53
+     31210100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000043
+ sendto fd=6 addr=172.29.199.224:53
+     31230100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000040
+ sendto fd=6 addr=172.29.199.224:53
+     31240100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000031
+ sendto fd=6 addr=172.29.199.224:53
+     31250100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000040
+ sendto fd=6 addr=172.29.199.224:53
+     31270100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     31280100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000035
+ sendto fd=6 addr=172.29.199.224:53
+     312a0100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000041
+ sendto fd=6 addr=172.29.199.224:53
+     312b0100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001.
+ sendto=44
+ +0.000030
+ sendto fd=6 addr=172.29.199.224:53
+     312c0100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000036
+ sendto fd=6 addr=172.29.199.224:53
+     312e0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000041
+ sendto fd=6 addr=172.29.199.224:53
+     312f0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     31310100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000043
+ sendto fd=6 addr=172.29.199.224:53
+     31320100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31340100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31350100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000037
+ sendto fd=6 addr=172.29.199.224:53
+     31370100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31380100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000037
+ sendto fd=6 addr=172.29.199.224:53
+     313a0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000045
+ sendto fd=6 addr=172.29.199.224:53
+     313b0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     313d0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000054
+ sendto fd=6 addr=172.29.199.224:53
+     313e0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31400100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001.
+ sendto=44
+ +0.000040
+ sendto fd=6 addr=172.29.199.224:53
+     31410100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     31430100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001.
+ sendto=44
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31440100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     31460100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000046
+ sendto fd=6 addr=172.29.199.224:53
+     31470100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000031
+ sendto fd=6 addr=172.29.199.224:53
+     31480100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     314a0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001.
+ sendto=47
+ +0.000041
+ sendto fd=6 addr=172.29.199.224:53
+     314b0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000031
+ sendto fd=6 addr=172.29.199.224:53
+     314c0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001.
+ sendto=47
+ +0.000038
+ sendto fd=6 addr=172.29.199.224:53
+     314e0100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     314f0100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001.
+ sendto=44
+ +0.000033
+ sendto fd=6 addr=172.29.199.224:53
+     31500100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000040
+ sendto fd=6 addr=172.29.199.224:53
+     31520100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001.
+ sendto=44
+ +0.000039
+ sendto fd=6 addr=172.29.199.224:53
+     31530100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001.
+ sendto=44
+ +0.000029
+ sendto fd=6 addr=172.29.199.224:53
+     31540100 00010000 00000000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001.
+ sendto=44
+ +0.000038
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.998489
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.002108
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31208580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004c0 000202c0
+     0c000100 01000038 400004c6 336401c0 0c000100 01000038 400004c6 336402c0
+     0c000100 01000038 400004cb 007101c0 0c000100 01000038 400004cb 007102c0
+     0c000100 01000038 400004c0 000201c0 12000200 01000038 40000d07 76616d70
+     69726502 6e73c012 c0120002 00010000 3840000d 0a74656c 65636173 746572c0
+     a3c01200 02000100 00384000 09067261 64697573 c0a3c012 00020001 00003840
+     000c0970 72656369 73696f6e c0a3c0cd 00010001 00003840 00043e31 cc92c0cd
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c09b 00010001
+     00003840 00043e31 cc96c09b 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c0e2 00010001 00003840 0004d40d c646c0e2 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0b4 00010001 00003840 0004d40d
+     c647c0b4 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000161
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31218580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000082
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000013
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.996257
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000270
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31238580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004c6 336401c0
+     0c000100 01000038 400004c6 336402c0 0c000100 01000038 400004cb 007101c0
+     0c000100 01000038 400004cb 007102c0 0c000100 01000038 400004c0 000201c0
+     0c000100 01000038 400004c0 000202c0 12000200 01000038 40000f09 70726563
+     6973696f 6e026e73 c012c012 00020001 00003840 000a0776 616d7069 7265c0a5
+     c0120002 00010000 3840000d 0a74656c 65636173 746572c0 a5c01200 02000100
+     00384000 09067261 64697573 c0a5c0e5 00010001 00003840 00043e31 cc92c0e5
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c0b6 00010001
+     00003840 00043e31 cc96c0b6 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c09b 00010001 00003840 0004d40d c646c09b 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0cc 00010001 00003840 0004d40d
+     c647c0cc 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000125
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000028
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.995834
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.005597
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31248580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     03000000 00000000 000001c0 0c001c00 01000038 40001020 010db800 03000000
+     00000000 000002c0 0c001c00 01000038 40001020 010db800 01000000 00000000
+     000001c0 0c001c00 01000038 40001020 010db800 01000000 00000000 000002c0
+     0c001c00 01000038 40001020 010db800 02000000 00000000 000001c0 0c001c00
+     01000038 40001020 010db800 02000000 00000000 000002c0 12000200 01000038
+     40000d07 76616d70 69726502 6e73c012 c0120002 00010000 3840000c 09707265
+     63697369 6f6ec0eb c0120002 00010000 38400009 06726164 697573c0 ebc01200
+     02000100 00384000 0d0a7465 6c656361 73746572 c0ebc114 00010001 00003840
+     00043e31 cc92c114 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0e3 00010001 00003840 00043e31 cc96c0e3 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c0fc 00010001 00003840 0004d40d c646c0fc
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c129 00010001
+     00003840 0004d40d c647c129 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000159
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000046
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.990103
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000396
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31258580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000049
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000035
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.989663
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000161
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31278580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000069
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.989452
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000179
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31288580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400009 00450461 616161c0
+     0fc00c00 0f000100 00384000 0a004505 6d616464 72c00fc0 0c000f00 01000038
+     40000900 46046164 6472c00f c00c000f 00010000 38400006 00450161 c00fc00f
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 0fc00f00 02000100
+     00384000 0a077661 6d706972 65c094c0 0f000200 01000038 40000d0a 74656c65
+     63617374 6572c094 c00f0002 00010000 38400009 06726164 697573c0 94c07a00
+     01000100 00384000 04c63364 10c03a00 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c04f00 01000100 00384000 04c63364 02c04f00 01000100
+     00384000 04cb0071 01c04f00 01000100 00384000 04cb0071 02c04f00 01000100
+     00384000 04c00002 01c04f00 01000100 00384000 04c00002 02c04f00 01000100
+     00384000 04c63364 01.
+ +0.000167
+ sendto fd=6 addr=172.29.199.224:53
+     31560100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000104
+ sendto fd=6 addr=172.29.199.224:53
+     31580100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000083
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000029
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.988925
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000192
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     312a8580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000070
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000020
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.988643
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000123
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     312b8580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000069
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.988503
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000159
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     312c8580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 3840000a 0045056d 61646472
+     c00fc00c 000f0001 00003840 00090046 04616464 72c00fc0 0c000f00 01000038
+     40000600 450161c0 0fc00c00 0f000100 00384000 09004504 61616161 c00fc00f
+     00020001 00003840 00100a74 656c6563 61737465 72026e73 c00fc00f 00020001
+     00003840 000c0970 72656369 73696f6e c095c00f 00020001 00003840 00090672
+     61646975 73c095c0 0f000200 01000038 40000a07 76616d70 697265c0 95c06500
+     01000100 00384000 04c63364 10c07700 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c03a00 01000100 00384000 04cb0071 01c03a00 01000100
+     00384000 04cb0071 02c03a00 01000100 00384000 04c00002 01c03a00 01000100
+     00384000 04c00002 02c03a00 01000100 00384000 04c63364 01c03a00 01000100
+     00384000 04c63364 02.
+ +0.000169
+ sendto fd=6 addr=172.29.199.224:53
+     315a0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000079
+ sendto fd=6 addr=172.29.199.224:53
+     315c0100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000058
+ sendto fd=6 addr=172.29.199.224:53
+     315d0100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001.
+ sendto=46
+ +0.000045
+ sendto fd=6 addr=172.29.199.224:53
+     315f0100 00010000 00000000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001.
+ sendto=43
+ +0.000058
+ sendto fd=6 addr=172.29.199.224:53
+     31610100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000077
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     312e8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004cb 007102c0
+     0c000100 01000038 400004c0 000201c0 0c000100 01000038 400004c0 000202c0
+     0c000100 01000038 400004c6 336401c0 0c000100 01000038 400004c6 336402c0
+     0c000100 01000038 400004cb 007101c0 12000200 01000038 40000c06 72616469
+     7573026e 73c012c0 12000200 01000038 40000d0a 74656c65 63617374 6572c0a2
+     c0120002 00010000 3840000a 0776616d 70697265 c0a2c012 00020001 00003840
+     000c0970 72656369 73696f6e c0a2c09b 00010001 00003840 00043e31 cc92c09b
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c0cc 00010001
+     00003840 00043e31 cc96c0cc 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c0e2 00010001 00003840 0004d40d c646c0e2 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0b3 00010001 00003840 0004d40d
+     c647c0b3 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000176
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     312f8580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000085
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31318580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004c0 000201c0
+     0c000100 01000038 400004c0 000202c0 0c000100 01000038 400004c6 336401c0
+     0c000100 01000038 400004c6 336402c0 0c000100 01000038 400004cb 007101c0
+     0c000100 01000038 400004cb 007102c0 12000200 01000038 40000c06 72616469
+     7573026e 73c012c0 12000200 01000038 40000a07 76616d70 697265c0 a2c01200
+     02000100 00384000 0c097072 65636973 696f6ec0 a2c01200 02000100 00384000
+     0d0a7465 6c656361 73746572 c0a2c09b 00010001 00003840 00043e31 cc92c09b
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c0b3 00010001
+     00003840 00043e31 cc96c0b3 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c0c9 00010001 00003840 0004d40d c646c0c9 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0e1 00010001 00003840 0004d40d
+     c647c0e1 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000175
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000044
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.987536
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000757
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31328580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000072
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31348580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000058
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000020
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.986707
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000275
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31358580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400009 00460461 646472c0
+     0fc00c00 0f000100 00384000 06004501 61c00fc0 0c000f00 01000038 40000900
+     45046161 6161c00f c00c000f 00010000 3840000a 0045056d 61646472 c00fc00f
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 0fc00f00 02000100
+     00384000 0d0a7465 6c656361 73746572 c094c00f 00020001 00003840 000a0776
+     616d7069 7265c094 c00f0002 00010000 38400009 06726164 697573c0 94c04f00
+     01000100 00384000 04c63364 10c06100 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c07600 01000100 00384000 04c00002 02c07600 01000100
+     00384000 04c63364 01c07600 01000100 00384000 04c63364 02c07600 01000100
+     00384000 04cb0071 01c07600 01000100 00384000 04cb0071 02c07600 01000100
+     00384000 04c00002 01.
+ +0.000186
+ sendto fd=6 addr=172.29.199.224:53
+     31630100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000086
+ sendto fd=6 addr=172.29.199.224:53
+     31650100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000072
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31378580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000094
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.986051
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000294
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31388580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400006 00450161 c00fc00c
+     000f0001 00003840 00090045 04616161 61c00fc0 0c000f00 01000038 40000a00
+     45056d61 646472c0 0fc00c00 0f000100 00384000 09004604 61646472 c00fc00f
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 0fc00f00 02000100
+     00384000 09067261 64697573 c094c00f 00020001 00003840 000a0776 616d7069
+     7265c094 c00f0002 00010000 3840000d 0a74656c 65636173 746572c0 94c03a00
+     01000100 00384000 04c63364 10c04c00 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c06100 01000100 00384000 04c63364 01c06100 01000100
+     00384000 04c63364 02c06100 01000100 00384000 04cb0071 01c06100 01000100
+     00384000 04cb0071 02c06100 01000100 00384000 04c00002 01c06100 01000100
+     00384000 04c00002 02.
+ +0.000183
+ sendto fd=6 addr=172.29.199.224:53
+     31670100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000083
+ sendto fd=6 addr=172.29.199.224:53
+     31690100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000093
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     313a8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     02000000 00000000 000002c0 0c001c00 01000038 40001020 010db800 03000000
+     00000000 000001c0 0c001c00 01000038 40001020 010db800 03000000 00000000
+     000002c0 0c001c00 01000038 40001020 010db800 01000000 00000000 000001c0
+     0c001c00 01000038 40001020 010db800 01000000 00000000 000002c0 0c001c00
+     01000038 40001020 010db800 02000000 00000000 000001c0 12000200 01000038
+     40000c06 72616469 7573026e 73c012c0 12000200 01000038 40000d0a 74656c65
+     63617374 6572c0ea c0120002 00010000 3840000a 0776616d 70697265 c0eac012
+     00020001 00003840 000c0970 72656369 73696f6e c0eac0e3 00010001 00003840
+     00043e31 cc92c0e3 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c114 00010001 00003840 00043e31 cc96c114 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c12a 00010001 00003840 0004d40d c646c12a
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c0fb 00010001
+     00003840 0004d40d c647c0fb 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000202
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     313b8580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000095
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000018
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.985203
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.001040
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     313d8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     03000000 00000000 000001c0 0c001c00 01000038 40001020 010db800 03000000
+     00000000 000002c0 0c001c00 01000038 40001020 010db800 01000000 00000000
+     000001c0 0c001c00 01000038 40001020 010db800 01000000 00000000 000002c0
+     0c001c00 01000038 40001020 010db800 02000000 00000000 000001c0 0c001c00
+     01000038 40001020 010db800 02000000 00000000 000002c0 12000200 01000038
+     40000d07 76616d70 69726502 6e73c012 c0120002 00010000 38400009 06726164
+     697573c0 ebc01200 02000100 00384000 0d0a7465 6c656361 73746572 c0ebc012
+     00020001 00003840 000c0970 72656369 73696f6e c0ebc0fc 00010001 00003840
+     00043e31 cc92c0fc 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0e3 00010001 00003840 00043e31 cc96c0e3 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c12a 00010001 00003840 0004d40d c646c12a
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c111 00010001
+     00003840 0004d40d c647c111 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000235
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     313e8580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000091
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31408580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000058
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31418580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400009 00450461 616161c0
+     0fc00c00 0f000100 00384000 0a004505 6d616464 72c00fc0 0c000f00 01000038
+     40000900 46046164 6472c00f c00c000f 00010000 38400006 00450161 c00fc00f
+     00020001 00003840 000d0776 616d7069 7265026e 73c00fc0 0f000200 01000038
+     40000d0a 74656c65 63617374 6572c092 c00f0002 00010000 38400009 06726164
+     697573c0 92c00f00 02000100 00384000 0c097072 65636973 696f6ec0 92c07a00
+     01000100 00384000 04c63364 10c03a00 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c04f00 01000100 00384000 04c63364 02c04f00 01000100
+     00384000 04cb0071 01c04f00 01000100 00384000 04cb0071 02c04f00 01000100
+     00384000 04c00002 01c04f00 01000100 00384000 04c00002 02c04f00 01000100
+     00384000 04c63364 01.
+ +0.000157
+ sendto fd=6 addr=172.29.199.224:53
+     316b0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000087
+ sendto fd=6 addr=172.29.199.224:53
+     316d0100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001.
+ sendto=46
+ +0.000060
+ sendto fd=6 addr=172.29.199.224:53
+     316f0100 00010000 00000000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001.
+ sendto=43
+ +0.000057
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31438580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000057
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.983552
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000477
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31448580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 3840000a 0045056d 61646472
+     c00fc00c 000f0001 00003840 00090046 04616464 72c00fc0 0c000f00 01000038
+     40000600 450161c0 0fc00c00 0f000100 00384000 09004504 61616161 c00fc00f
+     00020001 00003840 00100a74 656c6563 61737465 72026e73 c00fc00f 00020001
+     00003840 00090672 61646975 73c095c0 0f000200 01000038 40000a07 76616d70
+     697265c0 95c00f00 02000100 00384000 0c097072 65636973 696f6ec0 95c06500
+     01000100 00384000 04c63364 10c07700 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c03a00 01000100 00384000 04cb0071 01c03a00 01000100
+     00384000 04cb0071 02c03a00 01000100 00384000 04c00002 01c03a00 01000100
+     00384000 04c00002 02c03a00 01000100 00384000 04c63364 01c03a00 01000100
+     00384000 04c63364 02.
+ +0.000172
+ sendto fd=6 addr=172.29.199.224:53
+     31710100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000093
+ sendto fd=6 addr=172.29.199.224:53
+     31730100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001.
+ sendto=46
+ +0.000059
+ sendto fd=6 addr=172.29.199.224:53
+     31750100 00010000 00000000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001.
+ sendto=43
+ +0.000058
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31468580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004cb 007102c0
+     0c000100 01000038 400004c0 000201c0 0c000100 01000038 400004c0 000202c0
+     0c000100 01000038 400004c6 336401c0 0c000100 01000038 400004c6 336402c0
+     0c000100 01000038 400004cb 007101c0 12000200 01000038 40000c06 72616469
+     7573026e 73c012c0 12000200 01000038 40000c09 70726563 6973696f 6ec0a2c0
+     12000200 01000038 40000a07 76616d70 697265c0 a2c01200 02000100 00384000
+     0d0a7465 6c656361 73746572 c0a2c09b 00010001 00003840 00043e31 cc92c09b
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c0cb 00010001
+     00003840 00043e31 cc96c0cb 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c0b3 00010001 00003840 0004d40d c646c0b3 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0e1 00010001 00003840 0004d40d
+     c647c0e1 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000188
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31478580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     01000000 00000000 000002c0 0c001c00 01000038 40001020 010db800 02000000
+     00000000 000001c0 0c001c00 01000038 40001020 010db800 02000000 00000000
+     000002c0 0c001c00 01000038 40001020 010db800 03000000 00000000 000001c0
+     0c001c00 01000038 40001020 010db800 03000000 00000000 000002c0 0c001c00
+     01000038 40001020 010db800 01000000 00000000 000001c0 12000200 01000038
+     40000d07 76616d70 69726502 6e73c012 c0120002 00010000 3840000c 09707265
+     63697369 6f6ec0eb c0120002 00010000 38400009 06726164 697573c0 ebc01200
+     02000100 00384000 0d0a7465 6c656361 73746572 c0ebc114 00010001 00003840
+     00043e31 cc92c114 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0e3 00010001 00003840 00043e31 cc96c0e3 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c0fc 00010001 00003840 0004d40d c646c0fc
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c129 00010001
+     00003840 0004d40d c647c129 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000242
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31488580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000093
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     314a8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 010001c0 0c000100 01000038 400004c0 000201c0
+     0c000100 01000038 400004c0 000202c0 0c000100 01000038 400004c6 336401c0
+     0c000100 01000038 400004c6 336402c0 0c000100 01000038 400004cb 007101c0
+     0c000100 01000038 400004cb 007102c0 12000200 01000038 40000d07 76616d70
+     69726502 6e73c012 c0120002 00010000 38400009 06726164 697573c0 a3c01200
+     02000100 00384000 0c097072 65636973 696f6ec0 a3c01200 02000100 00384000
+     0d0a7465 6c656361 73746572 c0a3c0b4 00010001 00003840 00043e31 cc92c0b4
+     001c0001 00003840 00102001 04701f09 1b980000 00000000 0002c09b 00010001
+     00003840 00043e31 cc96c09b 001c0001 00003840 00102001 04701f09 1b980000
+     00000000 0006c0c9 00010001 00003840 0004d40d c646c0c9 001c0001 00003840
+     00102001 0ba80000 01d90000 00000000 0006c0e1 00010001 00003840 0004d40d
+     c647c0e1 001c0001 00003840 00102001 0ba80000 01d90000 00000000 0007.
+ +0.000176
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     314b8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     02000000 00000000 000001c0 0c001c00 01000038 40001020 010db800 02000000
+     00000000 000002c0 0c001c00 01000038 40001020 010db800 03000000 00000000
+     000001c0 0c001c00 01000038 40001020 010db800 03000000 00000000 000002c0
+     0c001c00 01000038 40001020 010db800 01000000 00000000 000001c0 0c001c00
+     01000038 40001020 010db800 01000000 00000000 000002c0 12000200 01000038
+     4000100a 74656c65 63617374 6572026e 73c012c0 12000200 01000038 40000a07
+     76616d70 697265c0 eec01200 02000100 00384000 09067261 64697573 c0eec012
+     00020001 00003840 000c0970 72656369 73696f6e c0eec115 00010001 00003840
+     00043e31 cc92c115 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0ff 00010001 00003840 00043e31 cc96c0ff 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c12a 00010001 00003840 0004d40d c646c12a
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c0e3 00010001
+     00003840 0004d40d c647c0e3 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000241
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     314c8580 00010000 00010000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 0f0001c0 12000600 01000038 40002a06 72616469
+     7573c019 0a686f73 746d6173 746572c0 19780bf8 6a000151 8000000e 10001275
+     00000038 40.
+ +0.000089
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     314e8580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000056
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.981853
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000959
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     314f8580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000072
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31508580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400009 00460461 646472c0
+     0fc00c00 0f000100 00384000 06004501 61c00fc0 0c000f00 01000038 40000900
+     45046161 6161c00f c00c000f 00010000 3840000a 0045056d 61646472 c00fc00f
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 0fc00f00 02000100
+     00384000 0a077661 6d706972 65c094c0 0f000200 01000038 40000906 72616469
+     7573c094 c00f0002 00010000 3840000d 0a74656c 65636173 746572c0 94c04f00
+     01000100 00384000 04c63364 10c06100 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c07600 01000100 00384000 04c00002 02c07600 01000100
+     00384000 04c63364 01c07600 01000100 00384000 04c63364 02c07600 01000100
+     00384000 04cb0071 01c07600 01000100 00384000 04cb0071 02c07600 01000100
+     00384000 04c00002 01.
+ +0.000160
+ sendto fd=6 addr=172.29.199.224:53
+     31770100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000087
+ sendto fd=6 addr=172.29.199.224:53
+     31780100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001.
+ sendto=46
+ +0.000045
+ sendto fd=6 addr=172.29.199.224:53
+     317a0100 00010000 00000000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001.
+ sendto=43
+ +0.000059
+ sendto fd=6 addr=172.29.199.224:53
+     317c0100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000060
+ sendto fd=6 addr=172.29.199.224:53
+     317e0100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000069
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31528580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 00010001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000057
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31538580 00010000 00010000 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 001c0001 c00f0006 00010000 3840002a 06726164 697573c0
+     160a686f 73746d61 73746572 c016780b f86a0001 51800000 0e100012 75000000
+     3840.
+ +0.000058
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000019
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.980388
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000215
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31548580 00010004 00040008 026d7806 646e7365 72720964 6973746f 72746564
+     036f7267 02756b00 000f0001 c00c000f 00010000 38400006 00450161 c00fc00c
+     000f0001 00003840 00090045 04616161 61c00fc0 0c000f00 01000038 40000a00
+     45056d61 646472c0 0fc00c00 0f000100 00384000 09004604 61646472 c00fc00f
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 0fc00f00 02000100
+     00384000 09067261 64697573 c094c00f 00020001 00003840 000d0a74 656c6563
+     61737465 72c094c0 0f000200 01000038 40000a07 76616d70 697265c0 94c03a00
+     01000100 00384000 04c63364 10c04c00 1c000100 00384000 1020010d b8000000
+     00000000 00000000 01c06100 01000100 00384000 04c63364 01c06100 01000100
+     00384000 04c63364 02c06100 01000100 00384000 04cb0071 01c06100 01000100
+     00384000 04cb0071 02c06100 01000100 00384000 04c00002 01c06100 01000100
+     00384000 04c00002 02.
+ +0.000173
+ sendto fd=6 addr=172.29.199.224:53
+     31800100 00010000 00000000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001.
+ sendto=43
+ +0.000068
+ sendto fd=6 addr=172.29.199.224:53
+     31820100 00010000 00000000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000059
+ sendto fd=6 addr=172.29.199.224:53
+     31840100 00010000 00000000 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001.
+ sendto=47
+ +0.000067
+ sendto fd=6 addr=172.29.199.224:53
+     31860100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001.
+ sendto=46
+ +0.000062
+ sendto fd=6 addr=172.29.199.224:53
+     31870100 00010000 00000000 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001.
+ sendto=46
+ +0.000044
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000015
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.989220
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000156
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31568580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000082
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000022
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.988960
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000271
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31588580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 000f0970 72656369 73696f6e 026e73c0 11c01100 02000100
+     00384000 09067261 64697573 c054c011 00020001 00003840 000d0a74 656c6563
+     61737465 72c054c0 11000200 01000038 40000a07 76616d70 697265c0 54c06500
+     01000100 00384000 043e31cc 92c06500 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c09300 01000100 00384000 043e31cc 96c09300 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c04a00 01000100 00384000
+     04d40dc6 46c04a00 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c07a00 01000100 00384000 04d40dc6 47c07a00 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000285
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     315a8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     03000000 00000000 000002c0 0c001c00 01000038 40001020 010db800 01000000
+     00000000 000001c0 0c001c00 01000038 40001020 010db800 01000000 00000000
+     000002c0 0c001c00 01000038 40001020 010db800 02000000 00000000 000001c0
+     0c001c00 01000038 40001020 010db800 02000000 00000000 000002c0 0c001c00
+     01000038 40001020 010db800 03000000 00000000 000001c0 12000200 01000038
+     40000c06 72616469 7573026e 73c012c0 12000200 01000038 40000d0a 74656c65
+     63617374 6572c0ea c0120002 00010000 3840000c 09707265 63697369 6f6ec0ea
+     c0120002 00010000 3840000a 0776616d 70697265 c0eac0e3 00010001 00003840
+     00043e31 cc92c0e3 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c12c 00010001 00003840 00043e31 cc96c12c 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c114 00010001 00003840 0004d40d c646c114
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c0fb 00010001
+     00003840 0004d40d c647c0fb 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000369
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     315c8580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 000c0672 61646975 73026e73 c011c011 00020001 00003840
+     000c0970 72656369 73696f6e c051c011 00020001 00003840 000d0a74 656c6563
+     61737465 72c051c0 11000200 01000038 40000a07 76616d70 697265c0 51c04a00
+     01000100 00384000 043e31cc 92c04a00 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c09300 01000100 00384000 043e31cc 96c09300 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c06200 01000100 00384000
+     04d40dc6 46c06200 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c07a00 01000100 00384000 04d40dc6 47c07a00 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000309
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000020
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.988741
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000441
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     315d8580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001c00c 001c0001 00003840 00102001 0db80000
+     00000000 00000000 0002c011 00020001 00003840 000f0970 72656369 73696f6e
+     026e73c0 11c01100 02000100 00384000 0a077661 6d706972 65c060c0 11000200
+     01000038 40000d0a 74656c65 63617374 6572c060 c0110002 00010000 38400009
+     06726164 697573c0 60c0a000 01000100 00384000 043e31cc 92c0a000 1c000100
+     00384000 10200104 701f091b 98000000 00000000 02c07100 01000100 00384000
+     043e31cc 96c07100 1c000100 00384000 10200104 701f091b 98000000 00000000
+     06c05600 01000100 00384000 04d40dc6 46c05600 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 06c08700 01000100 00384000 04d40dc6 47c08700
+     1c000100 00384000 1020010b a8000001 d9000000 00000000 07.
+ +0.000200
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     315f8580 00010000 00010000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001c0 0e000600 01000038 40002a06 72616469 7573c015
+     0a686f73 746d6173 746572c0 15780bf8 6a000151 8000000e 10001275 00000038
+     40.
+ +0.000135
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31618580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000151
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31638580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 000d0776 616d7069 7265026e 73c011c0 11000200 01000038
+     40000c09 70726563 6973696f 6ec052c0 11000200 01000038 40000906 72616469
+     7573c052 c0110002 00010000 3840000d 0a74656c 65636173 746572c0 52c07b00
+     01000100 00384000 043e31cc 92c07b00 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c04a00 01000100 00384000 043e31cc 96c04a00 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c06300 01000100 00384000
+     04d40dc6 46c06300 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c09000 01000100 00384000 04d40dc6 47c09000 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000277
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31658580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000135
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31678580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000049
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000099
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.990153
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000667
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31698580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 000c0672 61646975 73026e73 c011c011 00020001 00003840
+     000a0776 616d7069 7265c051 c0110002 00010000 3840000d 0a74656c 65636173
+     746572c0 51c01100 02000100 00384000 0c097072 65636973 696f6ec0 51c04a00
+     01000100 00384000 043e31cc 92c04a00 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c06200 01000100 00384000 043e31cc 96c06200 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c09100 01000100 00384000
+     04d40dc6 46c09100 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c07800 01000100 00384000 04d40dc6 47c07800 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000262
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     316b8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     01000000 00000000 000001c0 0c001c00 01000038 40001020 010db800 01000000
+     00000000 000002c0 0c001c00 01000038 40001020 010db800 02000000 00000000
+     000001c0 0c001c00 01000038 40001020 010db800 02000000 00000000 000002c0
+     0c001c00 01000038 40001020 010db800 03000000 00000000 000001c0 0c001c00
+     01000038 40001020 010db800 03000000 00000000 000002c0 12000200 01000038
+     40000f09 70726563 6973696f 6e026e73 c012c012 00020001 00003840 00090672
+     61646975 73c0edc0 12000200 01000038 40000d0a 74656c65 63617374 6572c0ed
+     c0120002 00010000 3840000a 0776616d 70697265 c0edc0fe 00010001 00003840
+     00043e31 cc92c0fe 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c12c 00010001 00003840 00043e31 cc96c12c 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c0e3 00010001 00003840 0004d40d c646c0e3
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c113 00010001
+     00003840 0004d40d c647c113 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000306
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     316d8580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001c00c 001c0001 00003840 00102001 0db80000
+     00000000 00000000 0002c011 00020001 00003840 000f0970 72656369 73696f6e
+     026e73c0 11c01100 02000100 00384000 09067261 64697573 c060c011 00020001
+     00003840 000d0a74 656c6563 61737465 72c060c0 11000200 01000038 40000a07
+     76616d70 697265c0 60c07100 01000100 00384000 043e31cc 92c07100 1c000100
+     00384000 10200104 701f091b 98000000 00000000 02c09f00 01000100 00384000
+     043e31cc 96c09f00 1c000100 00384000 10200104 701f091b 98000000 00000000
+     06c05600 01000100 00384000 04d40dc6 46c05600 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 06c08600 01000100 00384000 04d40dc6 47c08600
+     1c000100 00384000 1020010b a8000001 d9000000 00000000 07.
+ +0.000302
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     316f8580 00010000 00010000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001c0 0e000600 01000038 40002a06 72616469 7573c015
+     0a686f73 746d6173 746572c0 15780bf8 6a000151 8000000e 10001275 00000038
+     40.
+ +0.000145
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31718580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     01000000 00000000 000002c0 0c001c00 01000038 40001020 010db800 02000000
+     00000000 000001c0 0c001c00 01000038 40001020 010db800 02000000 00000000
+     000002c0 0c001c00 01000038 40001020 010db800 03000000 00000000 000001c0
+     0c001c00 01000038 40001020 010db800 03000000 00000000 000002c0 0c001c00
+     01000038 40001020 010db800 01000000 00000000 000001c0 12000200 01000038
+     40000d07 76616d70 69726502 6e73c012 c0120002 00010000 38400009 06726164
+     697573c0 ebc01200 02000100 00384000 0d0a7465 6c656361 73746572 c0ebc012
+     00020001 00003840 000c0970 72656369 73696f6e c0ebc0fc 00010001 00003840
+     00043e31 cc92c0fc 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0e3 00010001 00003840 00043e31 cc96c0e3 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c12a 00010001 00003840 0004d40d c646c12a
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c111 00010001
+     00003840 0004d40d c647c111 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000327
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31738580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001c00c 001c0001 00003840 00102001 0db80000
+     00000000 00000000 0002c011 00020001 00003840 000c0672 61646975 73026e73
+     c011c011 00020001 00003840 000c0970 72656369 73696f6e c05dc011 00020001
+     00003840 000a0776 616d7069 7265c05d c0110002 00010000 3840000d 0a74656c
+     65636173 746572c0 5dc05600 01000100 00384000 043e31cc 92c05600 1c000100
+     00384000 10200104 701f091b 98000000 00000000 02c08600 01000100 00384000
+     043e31cc 96c08600 1c000100 00384000 10200104 701f091b 98000000 00000000
+     06c06e00 01000100 00384000 04d40dc6 46c06e00 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 06c09c00 01000100 00384000 04d40dc6 47c09c00
+     1c000100 00384000 1020010b a8000001 d9000000 00000000 07.
+ +0.000280
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31758580 00010000 00010000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001c0 0e000600 01000038 40002a06 72616469 7573c015
+     0a686f73 746d6173 746572c0 15780bf8 6a000151 8000000e 10001275 00000038
+     40.
+ +0.000135
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31778580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 00100a74 656c6563 61737465 72026e73 c011c011 00020001
+     00003840 000c0970 72656369 73696f6e c055c011 00020001 00003840 000a0776
+     616d7069 7265c055 c0110002 00010000 38400009 06726164 697573c0 55c09400
+     01000100 00384000 043e31cc 92c09400 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c07e00 01000100 00384000 043e31cc 96c07e00 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c06600 01000100 00384000
+     04d40dc6 46c06600 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c04a00 01000100 00384000 04d40dc6 47c04a00 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000261
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31788580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001c00c 001c0001 00003840 00102001 0db80000
+     00000000 00000000 0002c011 00020001 00003840 00100a74 656c6563 61737465
+     72026e73 c011c011 00020001 00003840 000a0776 616d7069 7265c061 c0110002
+     00010000 3840000c 09707265 63697369 6f6ec061 c0110002 00010000 38400009
+     06726164 697573c0 61c0a000 01000100 00384000 043e31cc 92c0a000 1c000100
+     00384000 10200104 701f091b 98000000 00000000 02c07200 01000100 00384000
+     043e31cc 96c07200 1c000100 00384000 10200104 701f091b 98000000 00000000
+     06c08800 01000100 00384000 04d40dc6 46c08800 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 06c05600 01000100 00384000 04d40dc6 47c05600
+     1c000100 00384000 1020010b a8000001 d9000000 00000000 07.
+ +0.000272
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     317a8580 00010000 00010000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001c0 0e000600 01000038 40002a06 72616469 7573c015
+     0a686f73 746d6173 746572c0 15780bf8 6a000151 8000000e 10001275 00000038
+     40.
+ +0.000049
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     317c8580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000123
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     317e8580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     02000000 00000000 000001c0 0c001c00 01000038 40001020 010db800 02000000
+     00000000 000002c0 0c001c00 01000038 40001020 010db800 03000000 00000000
+     000001c0 0c001c00 01000038 40001020 010db800 03000000 00000000 000002c0
+     0c001c00 01000038 40001020 010db800 01000000 00000000 000001c0 0c001c00
+     01000038 40001020 010db800 01000000 00000000 000002c0 12000200 01000038
+     40000f09 70726563 6973696f 6e026e73 c012c012 00020001 00003840 000a0776
+     616d7069 7265c0ed c0120002 00010000 3840000d 0a74656c 65636173 746572c0
+     edc01200 02000100 00384000 09067261 64697573 c0edc12d 00010001 00003840
+     00043e31 cc92c12d 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0fe 00010001 00003840 00043e31 cc96c0fe 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c0e3 00010001 00003840 0004d40d c646c0e3
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c114 00010001
+     00003840 0004d40d c647c114 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000294
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31808580 00010000 00010000 01610664 6e736572 72096469 73746f72 74656403
+     6f726702 756b0000 1c0001c0 0e000600 01000038 40002a06 72616469 7573c015
+     0a686f73 746d6173 746572c0 15780bf8 6a000151 8000000e 10001275 00000038
+     40.
+ +0.000075
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31828580 00010000 00010000 04616161 6106646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c011 00060001 00003840 002a0672 61646975
+     73c0180a 686f7374 6d617374 6572c018 780bf86a 00015180 00000e10 00127500
+     00003840.
+ +0.000041
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000026
+ select max=7 rfds=[6] wfds=[] efds=[] to=1.992946
+ select=1 rfds=[6] wfds=[] efds=[]
+ +0.000486
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31848580 00010006 00040008 056d6164 64720664 6e736572 72096469 73746f72
+     74656403 6f726702 756b0000 1c0001c0 0c001c00 01000038 40001020 010db800
+     02000000 00000000 000002c0 0c001c00 01000038 40001020 010db800 03000000
+     00000000 000001c0 0c001c00 01000038 40001020 010db800 03000000 00000000
+     000002c0 0c001c00 01000038 40001020 010db800 01000000 00000000 000001c0
+     0c001c00 01000038 40001020 010db800 01000000 00000000 000002c0 0c001c00
+     01000038 40001020 010db800 02000000 00000000 000001c0 12000200 01000038
+     40000d07 76616d70 69726502 6e73c012 c0120002 00010000 3840000c 09707265
+     63697369 6f6ec0eb c0120002 00010000 38400009 06726164 697573c0 ebc01200
+     02000100 00384000 0d0a7465 6c656361 73746572 c0ebc114 00010001 00003840
+     00043e31 cc92c114 001c0001 00003840 00102001 04701f09 1b980000 00000000
+     0002c0e3 00010001 00003840 00043e31 cc96c0e3 001c0001 00003840 00102001
+     04701f09 1b980000 00000000 0006c0fc 00010001 00003840 0004d40d c646c0fc
+     001c0001 00003840 00102001 0ba80000 01d90000 00000000 0006c129 00010001
+     00003840 0004d40d c647c129 001c0001 00003840 00102001 0ba80000 01d90000
+     00000000 0007.
+ +0.000144
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31868580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b000001 0001c00c 00010001 00003840 0004c633 6411c011
+     00020001 00003840 000c0672 61646975 73026e73 c011c011 00020001 00003840
+     000d0a74 656c6563 61737465 72c051c0 11000200 01000038 40000c09 70726563
+     6973696f 6ec051c0 11000200 01000038 40000a07 76616d70 697265c0 51c04a00
+     01000100 00384000 043e31cc 92c04a00 1c000100 00384000 10200104 701f091b
+     98000000 00000000 02c09300 01000100 00384000 043e31cc 96c09300 1c000100
+     00384000 10200104 701f091b 98000000 00000000 06c07b00 01000100 00384000
+     04d40dc6 46c07b00 1c000100 00384000 1020010b a8000001 d9000000 00000000
+     06c06200 01000100 00384000 04d40dc6 47c06200 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 07.
+ +0.000128
+ recvfrom fd=6 buflen=512
+ recvfrom=OK addr=172.29.199.224:53
+     31878580 00010001 00040008 04616464 7206646e 73657272 09646973 746f7274
+     6564036f 72670275 6b00001c 0001c00c 001c0001 00003840 00102001 0db80000
+     00000000 00000000 0002c011 00020001 00003840 00100a74 656c6563 61737465
+     72026e73 c011c011 00020001 00003840 00090672 61646975 73c061c0 11000200
+     01000038 40000a07 76616d70 697265c0 61c01100 02000100 00384000 0c097072
+     65636973 696f6ec0 61c07200 01000100 00384000 043e31cc 92c07200 1c000100
+     00384000 10200104 701f091b 98000000 00000000 02c08700 01000100 00384000
+     043e31cc 96c08700 1c000100 00384000 10200104 701f091b 98000000 00000000
+     06c09d00 01000100 00384000 04d40dc6 46c09d00 1c000100 00384000 1020010b
+     a8000001 d9000000 00000000 06c05600 01000100 00384000 04d40dc6 47c05600
+     1c000100 00384000 1020010b a8000001 d9000000 00000000 07.
+ +0.000110
+ recvfrom fd=6 buflen=512
+ recvfrom=EAGAIN
+ +0.000024
+ close fd=6
+ close=OK
+ +0.000143
index a34d2ad..bd1f8cf 100644 (file)
@@ -1,4 +1,4 @@
-./adnshost default -f
+./adnshost default -f -A4
 
  start 969124425.922896
  socket domain=PF_INET type=SOCK_DGRAM
index 379119a..a2facec 100644 (file)
@@ -1,4 +1,4 @@
-./adnshost default -f
+./adnshost default -f -A4
 
  start 969124594.885114
  socket domain=PF_INET type=SOCK_DGRAM
index 36537db..54fe667 100644 (file)
@@ -1,4 +1,4 @@
-./adnshost default
+./adnshost default -A4
 chiark.greenend.org.uk
  start 969122933.609498
  socket domain=PF_INET type=SOCK_DGRAM
index 7b2c4f6..625ea18 100644 (file)
@@ -1,4 +1,4 @@
-./adnshost default -f
+./adnshost default -f -A4
 
  start 969123801.904882
  socket domain=PF_INET type=SOCK_DGRAM
index 3268143..0322e14 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+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.
  start 934726868.117908
  socket domain=PF_INET type=SOCK_DGRAM
index 67fb9aa..b33043f 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 292/170.99.219.194.in-addr.arpa
  start 933809668.543946
  socket domain=PF_INET type=SOCK_DGRAM
index f94a7b2..c58be33 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 292/170.99.219.194.in-addr.arpa
  start 933809632.795174
  socket domain=PF_INET type=SOCK_DGRAM
index 264fa83..79e2ce4 100644 (file)
@@ -1,4 +1,4 @@
-adnstest ncipher
+adnstest ncipher -0x400
 254.0.99.203.in-addr.arpa
  start 933269010.293417
  socket domain=PF_INET type=SOCK_DGRAM
index 90512d1..4acb741 100644 (file)
@@ -1,4 +1,4 @@
-adnstest manyptrwrong
+adnstest manyptrwrong -0x400
 292/254.0.99.203.in-addr.arpa
  start 933286859.476326
  socket domain=PF_INET type=SOCK_DGRAM
index 07a1cc5..df52b44 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 292/254.0.99.203.in-addr.arpa
  start 933289772.727140
  socket domain=PF_INET type=SOCK_DGRAM
index 1c0d425..0d5f3dd 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 292/254.0.99.203.in-addr.arpa
  start 933286845.072950
  socket domain=PF_INET type=SOCK_DGRAM
index acc867e..3365fec 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default -0x16
+adnstest default -0x416
 4.204.50.158.in-addr.arpa
  start 939764098.821612
  socket domain=PF_INET type=SOCK_DGRAM
index a181503..a8424eb 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default -0x16
+adnstest default -0x416
 4.204.50.158.in-addr.arpa
  start 939764277.018636
  socket domain=PF_INET type=SOCK_DGRAM
index df9816f..0d3ce7e 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default -0x16
+adnstest default -0x416
 2.203.156.195.in-addr.arpa1
  start 939764258.086555
  socket domain=PF_INET type=SOCK_DGRAM
index c43f4d9..ed310bd 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 4/chiark.greenend.org.uk
  start 933206012.504679
  socket domain=PF_INET type=SOCK_DGRAM
index 7ae7a77..c001282 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default
+adnstest default -0x400
 . 1/.
  start 931992019.753022
  socket domain=PF_INET type=SOCK_DGRAM
index 41ce7db..184c83f 100644 (file)
@@ -1,4 +1,4 @@
-adnstest default -,s
+adnstest default -0x400,s
 . 1/.
  start 924364450.165424
  socket domain=PF_INET type=SOCK_DGRAM
index 1c2499b..1bb2de5 100644 (file)
@@ -1,4 +1,4 @@
-./adnshost default
+./adnshost default -A4
 -t srv _srv._tcp.test.iwj.relativity.greenend.org.uk. _jabber._tcp.jabber.org _sip._udp.voip.net.cam.ac.uk.
  start 1144348939.753711
  socket domain=PF_INET type=SOCK_DGRAM
index 53a0d8b..c0e0140 100644 (file)
@@ -1,4 +1,4 @@
-adnstest anarres
+adnstest anarres -0x400
 2/test.iwj.relativity.greenend.org.uk.
  start 962142174.403028
  socket domain=PF_INET type=SOCK_DGRAM
index 9a130bb..e211840 100644 (file)
@@ -1,4 +1,4 @@
-adnstest anarres
+adnstest anarres -0x400
 2/test.iwj.relativity.greenend.org.uk.
  start 962142246.340485
  socket domain=PF_INET type=SOCK_DGRAM
index ae497ae..ecc388f 100644 (file)
@@ -1,4 +1,4 @@
-adnstest anarres -0x300
+adnstest anarres -0x700
 2/test.iwj.relativity.greenend.org.uk.
  start 962143388.709150
  socket domain=PF_INET type=SOCK_DGRAM
index 6ccc54e..5453b22 100644 (file)
@@ -1,4 +1,4 @@
-adnstest anarres -0x300
+adnstest anarres -0x700
 2/test.iwj.relativity.greenend.org.uk. 2/test.iwj.relativity.greenend.org.uk. 2/test.iwj.relativity.greenend.org.uk.
  start 962143438.172669
  socket domain=PF_INET type=SOCK_DGRAM
index 8561ab4..29fe47b 100644 (file)
@@ -1,4 +1,4 @@
-./adnstest distorted-v6
+./adnstest distorted-v6 -0x400
 www.distorted.org.uk
  start 1402047441.083542
  socket domain=PF_INET6 type=SOCK_DGRAM
index 7d78bf7..c75dbb6 100644 (file)
 extern "C" { /* I really dislike this - iwj. */
 #endif
 
+/* Whether to support address families other than IPv4 in responses which use
+ * the `adns_rr_addr' structure.  This is a source-compatibility issue: old
+ * clients may not expect to find address families other than AF_INET in
+ * their query results.  There's a separate binary compatibility issue to do
+ * with the size of the `adns_rr_addr' structure, but we'll assume you can
+ * cope with that because you have this header file.  Define
+ * `ADNS_FEATURE_IPV4ONLY' if you only want to see AF_INET addresses by
+ * default, or `ADNS_FEATURE_MANYAF' to allow multiple address families; the
+ * default is currently to stick with AF_INET only, but this is likely to
+ * change in a later release of ADNS.  Note that any adns_qf_want_... flags
+ * in your query are observed: this setting affects only the default address
+ * families.
+ */
+#if !defined(ADNS_FEATURE_IPV4ONLY) && !defined(ADNS_FEATURE_MANYAF)
+#  define ADNS_FEATURE_IPV4ONLY
+#elif defined(ADNS_FEATURE_IPV4ONLY) && defined(ADNS_FEATURE_MANYAF)
+#  error "Feature flags ADNS_FEATURE_IPV4ONLY and ..._MANYAF are incompatible"
+#endif
+
 /* All struct in_addr anywhere in adns are in NETWORK byte order. */
 
 typedef struct adns__state *adns_state;
@@ -88,7 +107,17 @@ typedef enum { /* In general, or together the desired flags: */
  adns_if_eintr=       0x0020,/* allow _wait and _synchronous to return EINTR */
  adns_if_nosigpipe=   0x0040,/* applic has SIGPIPE ignored, do not protect */
  adns_if_checkc_entex=0x0100,/* consistency checks on entry/exit to adns fns */
- adns_if_checkc_freq= 0x0300 /* consistency checks very frequently (slow!) */
+ adns_if_checkc_freq= 0x0300,/* consistency checks very frequently (slow!) */
+
+ 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
+   /* 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_initflags;
 
 typedef enum { /* In general, or together the desired flags: */
@@ -102,10 +131,21 @@ typedef enum { /* In general, or together the desired flags: */
  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_forbid=   0x00000200,/* don't follow CNAMEs, instead give _s_cname */
+
+ adns_qf_want_ipv4=     0x00000400,/* try to return IPv4 addresses */
+ adns_qf_want_ipv6=     0x00000800,/* try to return IPv6 addresses */
+ adns_qf_want_allaf=    0x00000c00,/* all the above flag bits */
+   /* Without any of the _qf_want_... flags, _qtf_deref queries try to return
+    * all address families permitted by _if_permit_... (as overridden by the
+    * `adns_af:...'  configuration option).  Set flags to restrict the
+    * returned address families to the ones selected.
+    */
  adns_qf_ipv6_mapv4=    0x00001000,/*  ... return IPv4 addresses as v6-mapped */
+
  adns_qf_addrlit_scope_forbid=0x00002000,/* forbid %<scope> in IPv6 literals */
  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_queryflags;
 
@@ -116,8 +156,12 @@ typedef enum {
  adns__qtf_mail822=  0x20000,/* return mailboxes in RFC822 rcpt field fmt   */
 
  adns__qtf_bigaddr=0x1000000,/* use the new larger sockaddr union */
+ adns__qtf_manyaf= 0x2000000,/* permitted to return multiple address families */
 
  adns__qtf_deref=    adns__qtf_deref_bit|adns__qtf_bigaddr
+#ifdef ADNS_FEATURE_MANYAF
+                    |adns__qtf_manyaf
+#endif
                            ,/* dereference domains; perhaps get extra data */
 
  adns_r_unknown=     0x40000,
@@ -534,6 +578,15 @@ int adns_init_logfn(adns_state *newstate_r, adns_initflags flags,
  *   Changes the consistency checking frequency; this overrides the
  *   setting of adns_if_check_entex, adns_if_check_freq, or neither,
  *   in the flags passed to adns_init.
+ *
+ *  adns_af:{ipv4,ipv6},...  adns_af:any
+ *   Determines which address families ADNS looks up (either as an
+ *   adns_r_addr query, or when dereferencing an answer yielding hostnames
+ *   (e.g., adns_r_mx).  The argument is a comma-separated list: only the
+ *   address families listed will be looked up.  The default is `any'.
+ *   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).
  * 
  * There are a number of environment variables which can modify the
  * behaviour of adns.  They take effect only if adns_init is used, and
index e07978b..4144ec1 100644 (file)
@@ -42,6 +42,7 @@ typedef unsigned char byte;
 
 #include <sys/time.h>
 
+#define ADNS_FEATURE_MANYAF
 #include "adns.h"
 #include "dlist.h"
 
index e853ab7..a082870 100644 (file)
@@ -264,7 +264,7 @@ static void ccf_options(adns_state ads, const char *fn,
   const char *word;
   char *ep;
   unsigned long v;
-  int l;
+  int i,l;
 
   if (!buf) return;
 
@@ -298,6 +298,26 @@ static void ccf_options(adns_state ads, const char *fn,
       }
       continue;
     }
+    if (l>=8 && !memcmp(word,"adns_af:",8)) {
+      word += 8;
+      ads->iflags &= ~adns_if_afmask;
+      if (strcmp(word,"any")) for (;;) {
+       i= strcspn(word,",");
+       if (i>=4 && !memcmp(word,"ipv4",4))
+         ads->iflags |= adns_if_permit_ipv4;
+       else if (i>=4 && !memcmp(word,"ipv6",4))
+         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);
+         break;
+       }
+       if (!word[i]) break;
+       word= word + i + 1;
+      }
+      continue;
+    }
     adns__diag(ads,-1,0,"%s:%d: unknown option `%.*s'", fn,lno, l,word);
   }
 }
index c1d235e..d53fe3e 100644 (file)
@@ -519,7 +519,26 @@ static unsigned addr_rrtypes(adns_state ads, adns_rrtype type,
   /* Return a mask of addr_rf_... flags indicating which address families are
    * wanted, given a query type and flags.
    */
-  return addr_rf_a;
+
+  adns_queryflags permitaf= 0;
+  unsigned want= 0;
+
+  if (!(type & adns__qtf_bigaddr))
+    qf= (qf & ~adns_qf_want_allaf) | adns_qf_want_ipv4;
+  else {
+    if (!(qf & adns_qf_want_allaf)) {
+      qf |= (type & adns__qtf_manyaf) ?
+       adns_qf_want_allaf : adns_qf_want_ipv4;
+    }
+    if (ads->iflags & adns_if_permit_ipv4) permitaf |= adns_qf_want_ipv4;
+    if (ads->iflags & adns_if_permit_ipv6) permitaf |= adns_qf_want_ipv6;
+    if (qf & permitaf) qf &= permitaf | ~adns_qf_want_allaf;
+  }
+
+  if (qf & adns_qf_want_ipv4) want |= addr_rf_a;
+  if (qf & adns_qf_want_ipv6) want |= addr_rf_aaaa;
+
+  return want;
 }
 
 static void icb_addr(adns_query parent, adns_query child);
@@ -927,7 +946,8 @@ static adns_status pap_hostaddr(const parseinfo *pai, int *cbyte_io,
   ctx.callback= icb_hostaddr;
   ctx.pinfo.hostaddr= rrp;
   
-  nflags= adns_qf_quoteok_query | (pai->qu->flags & adns_qf_ipv6_mapv4);
+  nflags= adns_qf_quoteok_query | (pai->qu->flags & (adns_qf_want_allaf |
+                                                    adns_qf_ipv6_mapv4));
   if (!(pai->qu->flags & adns_qf_cname_loose)) nflags |= adns_qf_cname_forbid;
   
   st= addr_submit(pai->qu, &nqu, &pai->qu->vb, id, want,