xref: /freebsd/contrib/unbound/testdata/subnet_noecs_mult.crpl (revision b2efd602aea8b3cbc3fb215b9611946d04fceb10)
1*b2efd602SCy Schubert# config
2*b2efd602SCy Schubertserver:
3*b2efd602SCy Schubert	send-client-subnet: 1.2.3.4
4*b2efd602SCy Schubert	max-client-subnet-ipv4: 17
5*b2efd602SCy Schubert	module-config: "subnetcache iterator"
6*b2efd602SCy Schubert	qname-minimisation: no
7*b2efd602SCy Schubert	minimal-responses: yes
8*b2efd602SCy Schubert	target-fetch-policy: "0 0 0 0 0"
9*b2efd602SCy Schubert
10*b2efd602SCy Schubertstub-zone:
11*b2efd602SCy Schubert	name: "."
12*b2efd602SCy Schubert	stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
13*b2efd602SCy SchubertCONFIG_END
14*b2efd602SCy Schubert
15*b2efd602SCy SchubertSCENARIO_BEGIN Test subnet with no edns subnet from server multiple times
16*b2efd602SCy Schubert; Multiple queries are sent to a server that does not reply with the
17*b2efd602SCy Schubert; edns-subnet option.
18*b2efd602SCy Schubert
19*b2efd602SCy Schubert; K.ROOT-SERVERS.NET.
20*b2efd602SCy SchubertRANGE_BEGIN 0 100
21*b2efd602SCy Schubert	ADDRESS 193.0.14.129
22*b2efd602SCy SchubertENTRY_BEGIN
23*b2efd602SCy SchubertMATCH opcode qtype qname
24*b2efd602SCy SchubertADJUST copy_id
25*b2efd602SCy SchubertREPLY QR NOERROR
26*b2efd602SCy SchubertSECTION QUESTION
27*b2efd602SCy Schubert. IN NS
28*b2efd602SCy SchubertSECTION ANSWER
29*b2efd602SCy Schubert. IN NS K.ROOT-SERVERS.NET.
30*b2efd602SCy SchubertSECTION ADDITIONAL
31*b2efd602SCy SchubertK.ROOT-SERVERS.NET. IN A 193.0.14.129
32*b2efd602SCy SchubertENTRY_END
33*b2efd602SCy Schubert
34*b2efd602SCy SchubertENTRY_BEGIN
35*b2efd602SCy SchubertMATCH opcode subdomain
36*b2efd602SCy SchubertADJUST copy_id copy_query
37*b2efd602SCy SchubertREPLY QR NOERROR
38*b2efd602SCy SchubertSECTION QUESTION
39*b2efd602SCy Schubertcom. IN NS
40*b2efd602SCy SchubertSECTION AUTHORITY
41*b2efd602SCy Schubertcom. IN NS a.gtld-servers.net.
42*b2efd602SCy SchubertSECTION ADDITIONAL
43*b2efd602SCy Schuberta.gtld-servers.net. IN A 192.5.6.30
44*b2efd602SCy SchubertENTRY_END
45*b2efd602SCy SchubertRANGE_END
46*b2efd602SCy Schubert
47*b2efd602SCy Schubert; a.gtld-servers.net.
48*b2efd602SCy SchubertRANGE_BEGIN 0 100
49*b2efd602SCy Schubert	ADDRESS 192.5.6.30
50*b2efd602SCy Schubert
51*b2efd602SCy SchubertENTRY_BEGIN
52*b2efd602SCy SchubertMATCH opcode subdomain
53*b2efd602SCy SchubertADJUST copy_id copy_query
54*b2efd602SCy SchubertREPLY QR NOERROR
55*b2efd602SCy SchubertSECTION QUESTION
56*b2efd602SCy Schubertexample.com. IN NS
57*b2efd602SCy SchubertSECTION AUTHORITY
58*b2efd602SCy Schubertexample.com. IN NS ns.example.com.
59*b2efd602SCy SchubertSECTION ADDITIONAL
60*b2efd602SCy Schubertns.example.com. IN A 1.2.3.4
61*b2efd602SCy SchubertENTRY_END
62*b2efd602SCy SchubertRANGE_END
63*b2efd602SCy Schubert
64*b2efd602SCy Schubert; ns.example.com.
65*b2efd602SCy SchubertRANGE_BEGIN 50 52
66*b2efd602SCy Schubert	ADDRESS 1.2.3.4
67*b2efd602SCy Schubert
68*b2efd602SCy SchubertENTRY_BEGIN
69*b2efd602SCy SchubertMATCH opcode qtype qname
70*b2efd602SCy SchubertADJUST copy_id
71*b2efd602SCy SchubertREPLY QR AA NOERROR
72*b2efd602SCy SchubertSECTION QUESTION
73*b2efd602SCy Schubertexample.com. IN NS
74*b2efd602SCy SchubertSECTION ANSWER
75*b2efd602SCy Schubertexample.com. IN NS ns.example.com.
76*b2efd602SCy SchubertENTRY_END
77*b2efd602SCy Schubert
78*b2efd602SCy SchubertENTRY_BEGIN
79*b2efd602SCy SchubertMATCH opcode qtype qname
80*b2efd602SCy SchubertADJUST copy_id
81*b2efd602SCy SchubertREPLY QR AA NOERROR
82*b2efd602SCy SchubertSECTION QUESTION
83*b2efd602SCy Schubertns.example.com. IN A
84*b2efd602SCy SchubertSECTION ANSWER
85*b2efd602SCy Schubertns.example.com. IN A 1.2.3.4
86*b2efd602SCy SchubertENTRY_END
87*b2efd602SCy Schubert
88*b2efd602SCy SchubertENTRY_BEGIN
89*b2efd602SCy SchubertMATCH opcode qtype qname
90*b2efd602SCy SchubertADJUST copy_id
91*b2efd602SCy SchubertREPLY QR AA NOERROR
92*b2efd602SCy SchubertSECTION QUESTION
93*b2efd602SCy Schubertns.example.com. IN AAAA
94*b2efd602SCy SchubertSECTION ANSWER
95*b2efd602SCy SchubertSECTION AUTHORITY
96*b2efd602SCy Schubertexample.com. IN SOA ns.example.com. host.example.com. 4 86400 3600 86400 3600
97*b2efd602SCy SchubertENTRY_END
98*b2efd602SCy Schubert
99*b2efd602SCy SchubertENTRY_BEGIN
100*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata
101*b2efd602SCy SchubertADJUST copy_id
102*b2efd602SCy SchubertREPLY QR AA NOERROR
103*b2efd602SCy SchubertSECTION QUESTION
104*b2efd602SCy Schubertwww.example.com. IN A
105*b2efd602SCy SchubertSECTION ANSWER
106*b2efd602SCy SchubertSECTION ADDITIONAL
107*b2efd602SCy Schubert	; Match this subnet option
108*b2efd602SCy Schubert	HEX_EDNSDATA_BEGIN
109*b2efd602SCy Schubert				; client is 127.0.0.1
110*b2efd602SCy Schubert		00 08		; OPC
111*b2efd602SCy Schubert		00 07		; option length
112*b2efd602SCy Schubert		00 01		; Family
113*b2efd602SCy Schubert		11 00		; source mask, scopemask
114*b2efd602SCy Schubert		7f 00 00	; address
115*b2efd602SCy Schubert	HEX_EDNSDATA_END
116*b2efd602SCy Schubert	; This is the response, without the subnet option
117*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
118*b2efd602SCy Schubert		00 00 84 00 00 01 00 01	 ; ID 0 QR AA NOERROR
119*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A (DO)
120*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
121*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
122*b2efd602SCy Schubert		01
123*b2efd602SCy Schubert		C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600
124*b2efd602SCy Schubert		00 04 0A 14 1E 2C	 ; rdata 10.20.30.44
125*b2efd602SCy Schubert		00 00 29 10 00 00 00
126*b2efd602SCy Schubert		80 00 00 00
127*b2efd602SCy Schubert	HEX_ANSWER_END
128*b2efd602SCy SchubertENTRY_END
129*b2efd602SCy Schubert
130*b2efd602SCy SchubertENTRY_BEGIN
131*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata
132*b2efd602SCy SchubertADJUST copy_id
133*b2efd602SCy SchubertREPLY QR AA NOERROR
134*b2efd602SCy SchubertSECTION QUESTION
135*b2efd602SCy Schubertwww.example.com. IN A
136*b2efd602SCy SchubertSECTION ANSWER
137*b2efd602SCy SchubertSECTION ADDITIONAL
138*b2efd602SCy Schubert	; Match this subnet option
139*b2efd602SCy Schubert	HEX_EDNSDATA_BEGIN
140*b2efd602SCy Schubert				; client is 127.2.0.1
141*b2efd602SCy Schubert		00 08		; OPC
142*b2efd602SCy Schubert		00 07		; option length
143*b2efd602SCy Schubert		00 01		; Family
144*b2efd602SCy Schubert		11 00		; source mask, scopemask
145*b2efd602SCy Schubert		7f 02 00	; address
146*b2efd602SCy Schubert	HEX_EDNSDATA_END
147*b2efd602SCy Schubert	; This is the response, without the subnet option
148*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
149*b2efd602SCy Schubert		00 00 84 00 00 01 00 01	 ; ID 0 QR AA NOERROR
150*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A (DO)
151*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
152*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
153*b2efd602SCy Schubert		01
154*b2efd602SCy Schubert		C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600
155*b2efd602SCy Schubert		00 04 0A 14 1E 2C	 ; rdata 10.20.30.44
156*b2efd602SCy Schubert		00 00 29 10 00 00 00
157*b2efd602SCy Schubert		80 00 00 00
158*b2efd602SCy Schubert	HEX_ANSWER_END
159*b2efd602SCy SchubertENTRY_END
160*b2efd602SCy Schubert
161*b2efd602SCy SchubertENTRY_BEGIN
162*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata
163*b2efd602SCy SchubertADJUST copy_id
164*b2efd602SCy SchubertREPLY QR AA NOERROR
165*b2efd602SCy SchubertSECTION QUESTION
166*b2efd602SCy Schubertwww.example.com. IN A
167*b2efd602SCy SchubertSECTION ANSWER
168*b2efd602SCy SchubertSECTION ADDITIONAL
169*b2efd602SCy Schubert	; Match this subnet option
170*b2efd602SCy Schubert	HEX_EDNSDATA_BEGIN
171*b2efd602SCy Schubert				; client is 127.3.0.1
172*b2efd602SCy Schubert		00 08		; OPC
173*b2efd602SCy Schubert		00 07		; option length
174*b2efd602SCy Schubert		00 01		; Family
175*b2efd602SCy Schubert		11 00		; source mask, scopemask
176*b2efd602SCy Schubert		7f 03 00	; address
177*b2efd602SCy Schubert	HEX_EDNSDATA_END
178*b2efd602SCy Schubert	; This is the response, without the subnet option
179*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
180*b2efd602SCy Schubert		00 00 84 00 00 01 00 01	 ; ID 0 QR AA NOERROR
181*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A (DO)
182*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
183*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
184*b2efd602SCy Schubert		01
185*b2efd602SCy Schubert		C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600
186*b2efd602SCy Schubert		00 04 0A 14 1E 2C	 ; rdata 10.20.30.44
187*b2efd602SCy Schubert		00 00 29 10 00 00 00
188*b2efd602SCy Schubert		80 00 00 00
189*b2efd602SCy Schubert	HEX_ANSWER_END
190*b2efd602SCy SchubertENTRY_END
191*b2efd602SCy Schubert
192*b2efd602SCy Schubert; The answer for a query without subnet
193*b2efd602SCy Schubert;ENTRY_BEGIN
194*b2efd602SCy Schubert;MATCH opcode qtype qname
195*b2efd602SCy Schubert;ADJUST copy_id
196*b2efd602SCy Schubert;REPLY QR AA NOERROR
197*b2efd602SCy Schubert;SECTION QUESTION
198*b2efd602SCy Schubert;www.example.com. IN A
199*b2efd602SCy Schubert;SECTION ANSWER
200*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.40
201*b2efd602SCy Schubert;ENTRY_END
202*b2efd602SCy SchubertRANGE_END
203*b2efd602SCy Schubert
204*b2efd602SCy Schubert; ns.example.com.
205*b2efd602SCy SchubertRANGE_BEGIN 53 57
206*b2efd602SCy Schubert	ADDRESS 1.2.3.4
207*b2efd602SCy Schubert; The answer for a query without subnet
208*b2efd602SCy SchubertENTRY_BEGIN
209*b2efd602SCy SchubertMATCH opcode qtype qname
210*b2efd602SCy SchubertADJUST copy_id
211*b2efd602SCy SchubertREPLY QR AA NOERROR
212*b2efd602SCy SchubertSECTION QUESTION
213*b2efd602SCy Schubertwww.example.com. IN A
214*b2efd602SCy SchubertSECTION ANSWER
215*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40
216*b2efd602SCy SchubertENTRY_END
217*b2efd602SCy SchubertRANGE_END
218*b2efd602SCy Schubert
219*b2efd602SCy SchubertSTEP 10 QUERY
220*b2efd602SCy SchubertENTRY_BEGIN
221*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
222*b2efd602SCy Schubert		00 00 01 00 00 01 00 00	 ; ID 0
223*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A? (DO)
224*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
225*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
226*b2efd602SCy Schubert		01 00 00 29 10 00 00 00
227*b2efd602SCy Schubert		80 00 00 0b
228*b2efd602SCy Schubert
229*b2efd602SCy Schubert		00 08 00 07		; OPC, optlen
230*b2efd602SCy Schubert		00 01 11 00		; ip4, scope 17, source 0
231*b2efd602SCy Schubert		7f 00 00		; 127.0.0.0/17
232*b2efd602SCy Schubert	HEX_ANSWER_END
233*b2efd602SCy SchubertENTRY_END
234*b2efd602SCy Schubert
235*b2efd602SCy SchubertSTEP 20 QUERY
236*b2efd602SCy SchubertENTRY_BEGIN
237*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
238*b2efd602SCy Schubert		00 00 01 00 00 01 00 00	 ; ID 0
239*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A? (DO)
240*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
241*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
242*b2efd602SCy Schubert		01 00 00 29 10 00 00 00
243*b2efd602SCy Schubert		80 00 00 0b
244*b2efd602SCy Schubert
245*b2efd602SCy Schubert		00 08 00 07		; OPC, optlen
246*b2efd602SCy Schubert		00 01 11 00		; ip4, scope 17, source 0
247*b2efd602SCy Schubert		7f 02 00		; 127.2.0.0/17
248*b2efd602SCy Schubert	HEX_ANSWER_END
249*b2efd602SCy SchubertENTRY_END
250*b2efd602SCy Schubert
251*b2efd602SCy SchubertSTEP 30 QUERY
252*b2efd602SCy SchubertENTRY_BEGIN
253*b2efd602SCy Schubert	HEX_ANSWER_BEGIN;
254*b2efd602SCy Schubert		00 00 01 00 00 01 00 00	 ; ID 0
255*b2efd602SCy Schubert		00 00 00 01 03 77 77 77	 ; www.example.com A? (DO)
256*b2efd602SCy Schubert		07 65 78 61 6d 70 6c 65
257*b2efd602SCy Schubert		03 63 6f 6d 00 00 01 00
258*b2efd602SCy Schubert		01 00 00 29 10 00 00 00
259*b2efd602SCy Schubert		80 00 00 0b
260*b2efd602SCy Schubert
261*b2efd602SCy Schubert		00 08 00 07		; OPC, optlen
262*b2efd602SCy Schubert		00 01 11 00		; ip4, scope 17, source 0
263*b2efd602SCy Schubert		7f 03 00		; 127.3.0.0/17
264*b2efd602SCy Schubert	HEX_ANSWER_END
265*b2efd602SCy SchubertENTRY_END
266*b2efd602SCy Schubert
267*b2efd602SCy Schubert; recursion happens here.
268*b2efd602SCy Schubert; The upstream server RANGE starts responding at STEP 50.
269*b2efd602SCy SchubertSTEP 50 TRAFFIC
270*b2efd602SCy Schubert
271*b2efd602SCy Schubert; The upstream server now responds for the nonsubnet response.
272*b2efd602SCy SchubertSTEP 55 TRAFFIC
273*b2efd602SCy Schubert
274*b2efd602SCy SchubertSTEP 60 CHECK_ANSWER
275*b2efd602SCy SchubertENTRY_BEGIN
276*b2efd602SCy SchubertMATCH all ednsdata
277*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR
278*b2efd602SCy SchubertSECTION QUESTION
279*b2efd602SCy Schubertwww.example.com. IN A
280*b2efd602SCy SchubertSECTION ANSWER
281*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40
282*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44
283*b2efd602SCy SchubertSECTION ADDITIONAL
284*b2efd602SCy Schubert;	HEX_EDNSDATA_BEGIN
285*b2efd602SCy Schubert;				; client is 127.3.0.1
286*b2efd602SCy Schubert;		00 08		; OPC
287*b2efd602SCy Schubert;		00 07		; option length
288*b2efd602SCy Schubert;		00 01		; Family
289*b2efd602SCy Schubert;		11 00		; source mask, scopemask
290*b2efd602SCy Schubert;		7f 03 00	; address
291*b2efd602SCy Schubert;	HEX_EDNSDATA_END
292*b2efd602SCy SchubertENTRY_END
293*b2efd602SCy Schubert
294*b2efd602SCy SchubertSTEP 70 CHECK_ANSWER
295*b2efd602SCy SchubertENTRY_BEGIN
296*b2efd602SCy SchubertMATCH all ednsdata
297*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR
298*b2efd602SCy SchubertSECTION QUESTION
299*b2efd602SCy Schubertwww.example.com. IN A
300*b2efd602SCy SchubertSECTION ANSWER
301*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40
302*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44
303*b2efd602SCy SchubertSECTION ADDITIONAL
304*b2efd602SCy Schubert;	HEX_EDNSDATA_BEGIN
305*b2efd602SCy Schubert;				; client is 127.2.0.1
306*b2efd602SCy Schubert;		00 08		; OPC
307*b2efd602SCy Schubert;		00 07		; option length
308*b2efd602SCy Schubert;		00 01		; Family
309*b2efd602SCy Schubert;		11 00		; source mask, scopemask
310*b2efd602SCy Schubert;		7f 02 00	; address
311*b2efd602SCy Schubert;	HEX_EDNSDATA_END
312*b2efd602SCy SchubertENTRY_END
313*b2efd602SCy Schubert
314*b2efd602SCy SchubertSTEP 80 CHECK_ANSWER
315*b2efd602SCy SchubertENTRY_BEGIN
316*b2efd602SCy SchubertMATCH all ednsdata
317*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR
318*b2efd602SCy SchubertSECTION QUESTION
319*b2efd602SCy Schubertwww.example.com. IN A
320*b2efd602SCy SchubertSECTION ANSWER
321*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40
322*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44
323*b2efd602SCy SchubertSECTION ADDITIONAL
324*b2efd602SCy Schubert;	HEX_EDNSDATA_BEGIN
325*b2efd602SCy Schubert;				; client is 127.0.0.1
326*b2efd602SCy Schubert;		00 08		; OPC
327*b2efd602SCy Schubert;		00 07		; option length
328*b2efd602SCy Schubert;		00 01		; Family
329*b2efd602SCy Schubert;		11 00		; source mask, scopemask
330*b2efd602SCy Schubert;		7f 00 00	; address
331*b2efd602SCy Schubert;	HEX_EDNSDATA_END
332*b2efd602SCy SchubertENTRY_END
333*b2efd602SCy Schubert
334*b2efd602SCy SchubertSCENARIO_END
335