xref: /netbsd-src/external/bsd/unbound/dist/testdata/subnet_prefetch.crpl (revision 4b004442778f1201b2161e87fd65ba87aae6601a)
1; Check if the prefetch option works properly for messages stored in the global
2; cache for non-ECS clients. The prefetch query needs to result in an ECS
3; outgoing query based on the client's IP.
4
5server:
6	trust-anchor-signaling: no
7	target-fetch-policy: "0 0 0 0 0"
8	send-client-subnet: 1.2.3.4
9	max-client-subnet-ipv4: 21
10	module-config: "subnetcache iterator"
11	verbosity: 3
12	access-control: 127.0.0.1 allow_snoop
13	qname-minimisation: no
14	minimal-responses: no
15	prefetch: yes
16
17stub-zone:
18	name: "."
19	stub-addr: 193.0.14.129 	# K.ROOT-SERVERS.NET.
20CONFIG_END
21
22SCENARIO_BEGIN Test prefetch option for global cache with ECS enabled
23
24; K.ROOT-SERVERS.NET.
25RANGE_BEGIN 0 100
26	ADDRESS 193.0.14.129
27	ENTRY_BEGIN
28		MATCH opcode qtype qname ednsdata
29		ADJUST copy_id
30		REPLY QR NOERROR
31		SECTION QUESTION
32			. IN NS
33		SECTION ANSWER
34			. IN NS	K.ROOT-SERVERS.NET.
35		SECTION ADDITIONAL
36			K.ROOT-SERVERS.NET.	IN	A	193.0.14.129
37	ENTRY_END
38
39	ENTRY_BEGIN
40		MATCH opcode qtype qname
41		ADJUST copy_id
42		REPLY QR NOERROR
43		SECTION QUESTION
44			www.example.com. IN A
45		SECTION AUTHORITY
46			com.	IN NS	a.gtld-servers.net.
47		SECTION ADDITIONAL
48			a.gtld-servers.net.	IN 	A	192.5.6.30
49	ENTRY_END
50RANGE_END
51
52; a.gtld-servers.net.
53RANGE_BEGIN 0 100
54	ADDRESS 192.5.6.30
55	ENTRY_BEGIN
56		MATCH opcode qtype qname ednsdata
57		ADJUST copy_id
58		REPLY QR NOERROR
59		SECTION QUESTION
60			com. IN NS
61		SECTION ANSWER
62			com.    IN NS   a.gtld-servers.net.
63		SECTION ADDITIONAL
64			a.gtld-servers.net.     IN      A       192.5.6.30
65	ENTRY_END
66
67	ENTRY_BEGIN
68		MATCH opcode qtype qname
69		ADJUST copy_id
70		REPLY QR NOERROR
71		SECTION QUESTION
72			www.example.com. IN A
73		SECTION AUTHORITY
74			example.com.	IN NS	ns.example.com.
75		SECTION ADDITIONAL
76			ns.example.com.		IN 	A	1.2.3.4
77	ENTRY_END
78RANGE_END
79
80; ns.example.com.
81RANGE_BEGIN 0 10
82	ADDRESS 1.2.3.4
83	ENTRY_BEGIN
84		MATCH opcode qtype qname
85		ADJUST copy_id
86		REPLY QR NOERROR
87		SECTION QUESTION
88			example.com. IN NS
89		SECTION ANSWER
90			example.com.    IN NS   ns.example.com.
91		SECTION ADDITIONAL
92			ns.example.com.         IN      A       1.2.3.4
93	ENTRY_END
94
95	; response to query of interest
96	ENTRY_BEGIN
97		MATCH opcode qtype qname
98		ADJUST copy_id
99		REPLY QR NOERROR
100		SECTION QUESTION
101			www.example.com. IN A
102		SECTION ANSWER
103			www.example.com. 10 IN A	10.20.30.40
104		SECTION AUTHORITY
105			example.com.	IN NS	ns.example.com.
106		SECTION ADDITIONAL
107			ns.example.com.		IN 	A	1.2.3.4
108	ENTRY_END
109RANGE_END
110
111; ns.example.com.
112RANGE_BEGIN 11 100
113	ADDRESS 1.2.3.4
114	ENTRY_BEGIN
115		MATCH opcode qtype qname
116		ADJUST copy_id
117		REPLY QR NOERROR
118		SECTION QUESTION
119			example.com. IN NS
120		SECTION ANSWER
121			example.com.    IN NS   ns.example.com.
122		SECTION ADDITIONAL
123			ns.example.com.         IN      A       1.2.3.4
124	ENTRY_END
125
126	; response to query of interest
127	ENTRY_BEGIN
128		MATCH opcode qtype qname ednsdata
129		ADJUST copy_id copy_ednsdata_assume_clientsubnet
130		REPLY QR NOERROR
131		SECTION QUESTION
132			www.example.com. IN A
133		SECTION ANSWER
134			www.example.com. 10 IN A	10.20.30.40
135		SECTION AUTHORITY
136			example.com.	IN NS	ns.example.com.
137		SECTION ADDITIONAL
138			HEX_EDNSDATA_BEGIN
139						; client is 127.0.0.1
140				00 08 		; OPC
141				00 07 		; option length
142				00 01 		; Family
143				15 00 		; source mask, scopemask
144				7f 00 00 	; address
145			HEX_EDNSDATA_END
146			ns.example.com.		IN 	A	1.2.3.4
147	ENTRY_END
148RANGE_END
149
150STEP 1 QUERY
151ENTRY_BEGIN
152REPLY RD
153SECTION QUESTION
154www.example.com. IN A
155ENTRY_END
156
157; This answer should be in the global cache (because no ECS from upstream)
158STEP 2 CHECK_ANSWER
159ENTRY_BEGIN
160MATCH all
161REPLY QR RD RA NOERROR
162SECTION QUESTION
163www.example.com.	IN A
164SECTION ANSWER
165www.example.com.	IN A	10.20.30.40
166SECTION AUTHORITY
167example.com.		IN NS	ns.example.com.
168SECTION ADDITIONAL
169ns.example.com.		IN A	1.2.3.4
170ENTRY_END
171
172; Try to trigger a prefetch
173STEP 3 TIME_PASSES ELAPSE 9
174
175STEP 11 QUERY
176ENTRY_BEGIN
177REPLY RD
178SECTION QUESTION
179www.example.com. IN A
180ENTRY_END
181
182; This record came from the global cache and a prefetch was triggered
183STEP 12 CHECK_ANSWER
184ENTRY_BEGIN
185MATCH all ttl
186REPLY QR RD RA NOERROR
187SECTION QUESTION
188www.example.com.		IN A
189SECTION ANSWER
190www.example.com.	1	IN A	10.20.30.40
191SECTION AUTHORITY
192example.com.		3591	IN NS	ns.example.com.
193SECTION ADDITIONAL
194ns.example.com.		3591	IN A	1.2.3.4
195ENTRY_END
196
197; Allow time to pass so that the global cache record is expired
198STEP 13 TIME_PASSES ELAPSE 2
199
200; Query again to verify that the record was prefetched and stored in the ECS
201; cache (because the server replied with ECS this time)
202STEP 14 QUERY
203ENTRY_BEGIN
204REPLY RD
205SECTION QUESTION
206www.example.com. IN A
207ENTRY_END
208
209; This record came from the ECS cache
210STEP 15 CHECK_ANSWER
211ENTRY_BEGIN
212MATCH all ttl
213REPLY QR RD RA NOERROR
214SECTION QUESTION
215www.example.com.		IN A
216SECTION ANSWER
217www.example.com.	8	IN A	10.20.30.40
218SECTION AUTHORITY
219example.com.		3598	IN NS	ns.example.com.
220SECTION ADDITIONAL
221ns.example.com.		3598	IN A	1.2.3.4
222ENTRY_END
223
224SCENARIO_END
225