From 687a99a82e4c8b7a3b06545980f9a105054062a0 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 22 May 2007 13:40:49 +0000 Subject: [PATCH] EDNS test. git-svn-id: file:///svn/unbound/trunk@329 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 1 + services/outside_network.c | 4 +--- testcode/ldns-testpkts.c | 7 +++++++ testcode/ldns-testpkts.h | 5 ++++- testdata/fwd_no_edns.tpkg | Bin 0 -> 1634 bytes 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 testdata/fwd_no_edns.tpkg diff --git a/doc/Changelog b/doc/Changelog index 3ba2be7de..d9c37c8b3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ outbound entry to the module. - testbound support for new serviced queries. - test for retry to TCP cannot use testbound any longer. + - testns test for EDNS fallback, test for TCP fallback already exists. 21 May 2007: Wouter - small comment on hash table locking. diff --git a/services/outside_network.c b/services/outside_network.c index b515af281..0fcb7a4a1 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -287,7 +287,6 @@ outnet_udp_cb(struct comm_point* c, void* arg, int error, memcpy(&key.addr, &reply_info->addr, reply_info->addrlen); key.addrlen = reply_info->addrlen; verbose(VERB_ALGO, "Incoming reply id=%4.4x addr=", key.id); - log_addr(&key.addr, key.addrlen); /* find it, see if this thing is a valid query response */ verbose(VERB_ALGO, "lookup size is %d entries", (int)outnet->pending->count); @@ -660,8 +659,7 @@ new_pending(struct outside_network* outnet, ldns_buffer* packet, return NULL; } } - verbose(VERB_ALGO, "inserted new pending reply id=%4.4x addr=", pend->id); - log_addr(&pend->addr, pend->addrlen); + verbose(VERB_ALGO, "inserted new pending reply id=%4.4x", pend->id); return pend; } diff --git a/testcode/ldns-testpkts.c b/testcode/ldns-testpkts.c index 059d6e9d2..d090a7222 100644 --- a/testcode/ldns-testpkts.c +++ b/testcode/ldns-testpkts.c @@ -108,6 +108,8 @@ static void matchline(const char* line, struct entry* e) e->match_all = true; } else if(str_keyword(&parse, "ttl")) { e->match_ttl = true; + } else if(str_keyword(&parse, "DO")) { + e->match_do = true; } else if(str_keyword(&parse, "UDP")) { e->match_transport = transport_udp; } else if(str_keyword(&parse, "TCP")) { @@ -220,6 +222,7 @@ static struct entry* new_entry() e->match_qname = false; e->match_all = false; e->match_ttl = false; + e->match_do = false; e->match_serial = false; e->ixfr_soa_serial = 0; e->match_transport = transport_any; @@ -663,6 +666,10 @@ find_match(struct entry* entries, ldns_pkt* query_pkt, verbose(3, "bad serial\n"); continue; } + if(p->match_do && !ldns_pkt_edns_do(query_pkt)) { + verbose(3, "no DO bit set\n"); + continue; + } if(p->match_transport != transport_any && p->match_transport != transport) { verbose(3, "bad transport\n"); continue; diff --git a/testcode/ldns-testpkts.h b/testcode/ldns-testpkts.h index 95b2ca332..670ee62f5 100644 --- a/testcode/ldns-testpkts.h +++ b/testcode/ldns-testpkts.h @@ -45,8 +45,9 @@ ; 'serial=1023' makes the query match if ixfr serial is 1023. ; 'all' has to match header byte for byte and all rrs in packet. ; 'ttl' used with all, rrs in packet must also have matching TTLs. + ; 'DO' will match only queries with DO bit set. MATCH [opcode] [qtype] [qname] [serial=] [all] [ttl] - MATCH [UDP|TCP] + MATCH [UDP|TCP] DO MATCH ... ; Then the REPLY header is specified. REPLY opcode, rcode or flags. @@ -160,6 +161,8 @@ struct entry { bool match_all; /** match ttls in the packet */ bool match_ttl; + /** match DO bit */ + bool match_do; /** match query serial with this value. */ uint32_t ixfr_soa_serial; /** match on UDP/TCP */ diff --git a/testdata/fwd_no_edns.tpkg b/testdata/fwd_no_edns.tpkg new file mode 100644 index 0000000000000000000000000000000000000000..9415f01907db6cb77dd2c4e35028660712810d4a GIT binary patch literal 1634 zc-jGC2A%mIiwFQG@lr+r1MOLDbJ|7__E+v#Y-Gkx#zjcNzzjBw3E;+U32&2grUO+eX{W`qQqYjE7K&x{0E%B@GV2t0zU~4Xge>r>dw;)O^8YA}*5beN z>=}<@g9o^@7WZ`gPm6^({-v@~RxtjhVzGPx%A;7{LEm`%U+W%i>oZz`ROHD|)b%W8 zS3s2&(xjf@T8=Lmm&^@y*94dP?i@nPpMcGv)ok}k!=*a!)YN@cHwY+P>vPaFP>U6{ zTsbX5qtzdPhQTM-x@G(LN8JjTt_<(xhFr%l>koUZqkfMxP|KLP^9qm#n>oy;wqGHQ znc1WcwM`HC%hnq@bt!7EL+`NXs6_rd9{6SXmJf((SdX5;rYNXw76|Jwil{2?MDHrZt8z z3}yORpE*-18*GMsIrn1941GFb+$9cVZ`!XrH|^%I+vyE9M!;XFl>+V)?xBTpL-%3I z#+>I#gg>FTW#oW(2<%%H*n+VfGNHyD=(ZP9S0dI3#x8Y0QWaTKN0a9^^MUg+^t0uIN=6nTqNya=>>>Q~MEMwdY#07Z+8+PUMVt6{*c0PF zWhDXpLpHt`_=geN=O{$QSX8jk2B8QAch+>umyI(J&72C^%lC-vt0qck`W*!iPyI-k zNT8NC>8HFMAWy3usS8Chh?lAsiDIj|lypPo6UYBS{JZo~Z0x{)0k3=O_%A8y9{*24 zTk!AF|I_K;i;wGS_T@{+_Ui3s=Ne9+SSX&tt5+m_qF1v?XCeR}k6LhXn2JL>H-m*N z>36~f(V4rdG5sV#t+qbDXw1@F(%ROS#{@U4a1g(Qq5rUZt5=<3+;Y4NUfr--5I%Xq z{UrS!PAp?05?HJEyOdN5(Xjl4&1gQ_*!f$_&ZqTYsSu44g-pqA7#Jb%Fv ziIZhD`y#zM&WIcLtW9J|gV`gjyF>+r*DuIXIQH@v-1e^*`QsIT9_Nn}`Jl7tkxVru z#fUA$N%Xk*d}TS@G}Iut6|IG{NGBtqdNGK&xSq-zd;jYJXDQYBvE zqtpqo^wSD6^{~}nyms95VW?XXemv@aLj3s*#tZ`IJAofKj|)*7Z~Qel_k0&2#XE(% zZ%k@r6xas8!V5jaNXIa6UcQ1qN#?r#^YErS9P~a^RZSt8_w}p6aPX$r>Q@W+$gLv8 ze0N?|;EaF6c@?tDQ4#ax1Yw6wlaWj&*{rx#vnmJiD5`X`Sl}XKc{U~+Hxn1OCbO~9 zwuO}}en?z&>r(yh3|qK&m%6zaH^RsCRMyq?BX41d(W+^gU}NDd9QQ(K=FZNlqQ5Al z?=do_kX?FZX~dgST$LIR;&Uf|uS9DBXdVl^OHi~dHlT>l@mmX%rOlhTWQV!_F`p{N zQYNc`T3jupjUm#C!DOdyHP;vWo{hvNvJ85!we-f8ytPqi@VO7SJ?*52>OY>n9>d12 z`=6$4)PLndVPF3}1w~-4kPLp_GSBko70^iL5bR)<^Cy^5`3qJ|T|9?WKpeyuB!kWv zGfWn_m>r+67vdP;sVwKS3P`F}mKFR_rL-U!6dl?Z`#kZCwCnw^?frWjJKz7PrPTlb zIR488P1)oBDd-G%Etph`;`YT$?`)@c_5D>F((gA(b})Dgg_5EW(rRNBHGJK|KIFPS zXuJXD7|f*b(Vsi`$(6!QvkT1*>9x9VKft>l)a!8B>0P&aJyLJ}aMK@P?cvOamPz`p z#^9>chIcouK5vjP3^P~lOno7#xBKr~y#+tBd>5+3lWDb^Up}vuNwqsTrOqQyY70}{ g#?;c&f9~C|r#