1; Check if the prefetch option works properly when serve-expired is combined
2; with client-subnet-always-forward for non-ECS clients. The prefetch query
3; needs to result in an outgoing query without ECS.
4
5server:
6	trust-anchor-signaling: no
7	target-fetch-policy: "0 0 0 0 0"
8	serve-expired: yes
9	client-subnet-always-forward: yes
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
16stub-zone:
17	name: "."
18	stub-addr: 193.0.14.129 	# K.ROOT-SERVERS.NET.
19CONFIG_END
20
21SCENARIO_BEGIN Test serve-expired and client-subnet-always-forward without ECS in the request
22
23; K.ROOT-SERVERS.NET.
24RANGE_BEGIN 0 100
25	ADDRESS 193.0.14.129
26	ENTRY_BEGIN
27		MATCH opcode qtype qname ednsdata
28		ADJUST copy_id
29		REPLY QR NOERROR
30		SECTION QUESTION
31			. IN NS
32		SECTION ANSWER
33			. IN NS	K.ROOT-SERVERS.NET.
34		SECTION ADDITIONAL
35			K.ROOT-SERVERS.NET.	IN	A	193.0.14.129
36	ENTRY_END
37
38	ENTRY_BEGIN
39		MATCH opcode qtype qname
40		ADJUST copy_id
41		REPLY QR NOERROR
42		SECTION QUESTION
43			www.example.com. IN A
44		SECTION AUTHORITY
45			com.	IN NS	a.gtld-servers.net.
46		SECTION ADDITIONAL
47			a.gtld-servers.net.	IN 	A	192.5.6.30
48	ENTRY_END
49RANGE_END
50
51; a.gtld-servers.net.
52RANGE_BEGIN 0 100
53	ADDRESS 192.5.6.30
54	ENTRY_BEGIN
55		MATCH opcode qtype qname ednsdata
56		ADJUST copy_id
57		REPLY QR NOERROR
58		SECTION QUESTION
59			com. IN NS
60		SECTION ANSWER
61			com.    IN NS   a.gtld-servers.net.
62		SECTION ADDITIONAL
63			a.gtld-servers.net.     IN      A       192.5.6.30
64	ENTRY_END
65
66	ENTRY_BEGIN
67		MATCH opcode qtype qname
68		ADJUST copy_id
69		REPLY QR NOERROR
70		SECTION QUESTION
71			www.example.com. IN A
72		SECTION AUTHORITY
73			example.com.	IN NS	ns.example.com.
74		SECTION ADDITIONAL
75			ns.example.com.		IN 	A	1.2.3.4
76	ENTRY_END
77RANGE_END
78
79; ns.example.com.
80RANGE_BEGIN 0 100
81	ADDRESS 1.2.3.4
82	ENTRY_BEGIN
83		MATCH opcode qtype qname
84		ADJUST copy_id
85		REPLY QR NOERROR
86		SECTION QUESTION
87			example.com. IN NS
88		SECTION ANSWER
89			example.com.    IN NS   ns.example.com.
90		SECTION ADDITIONAL
91			ns.example.com.         IN      A       1.2.3.4
92	ENTRY_END
93
94	; response to query of interest
95	ENTRY_BEGIN
96		MATCH opcode qtype qname
97		ADJUST copy_id
98		REPLY QR NOERROR
99		SECTION QUESTION
100			www.example.com. IN A
101		SECTION ANSWER
102			www.example.com. 10 IN A	10.20.30.40
103		SECTION AUTHORITY
104			example.com.	IN NS	ns.example.com.
105		SECTION ADDITIONAL
106			ns.example.com.		IN 	A	1.2.3.4
107	ENTRY_END
108RANGE_END
109
110STEP 1 QUERY
111ENTRY_BEGIN
112REPLY RD
113SECTION QUESTION
114www.example.com. IN A
115ENTRY_END
116
117; This answer should be in the global cache
118STEP 2 CHECK_ANSWER
119ENTRY_BEGIN
120MATCH all
121REPLY QR RD RA NOERROR
122SECTION QUESTION
123www.example.com.	IN A
124SECTION ANSWER
125www.example.com.	IN A	10.20.30.40
126SECTION AUTHORITY
127example.com.		IN NS	ns.example.com.
128SECTION ADDITIONAL
129ns.example.com.		IN A	1.2.3.4
130ENTRY_END
131
132; Wait for the TTL to expire
133STEP 3 TIME_PASSES ELAPSE 20
134
135STEP 11 QUERY
136ENTRY_BEGIN
137REPLY RD
138SECTION QUESTION
139www.example.com. IN A
140ENTRY_END
141
142; This record came from the global cache and a prefetch was triggered
143STEP 12 CHECK_ANSWER
144ENTRY_BEGIN
145MATCH all ttl
146REPLY QR RD RA NOERROR
147SECTION QUESTION
148www.example.com.		IN A
149SECTION ANSWER
150www.example.com.	30	IN A	10.20.30.40
151SECTION AUTHORITY
152example.com.		3580	IN NS	ns.example.com.
153SECTION ADDITIONAL
154ns.example.com.		3580	IN A	1.2.3.4
155ENTRY_END
156
157STEP 13 CHECK_OUT_QUERY
158ENTRY_BEGIN
159        MATCH all
160	REPLY NOERROR DO
161        SECTION QUESTION
162                www.example.com. IN A
163ENTRY_END
164
165STEP 14 TRAFFIC
166
167SCENARIO_END
168