1; config options
2server:
3	target-fetch-policy: "0 0 0 0 0"
4	qname-minimisation: no
5	minimal-responses: no
6	;serve-expired: yes
7	module-config: "cachedb iterator"
8
9cachedb:
10	backend: "testframe"
11	secret-seed: "testvalue"
12
13stub-zone:
14	name: "."
15	stub-addr: 193.0.14.129
16CONFIG_END
17
18SCENARIO_BEGIN Test cachedb store and servfail reply from cname.
19; the servfail reply should not overwrite the cache contents.
20
21; K.ROOT-SERVERS.NET.
22RANGE_BEGIN 0 100
23	ADDRESS 193.0.14.129
24ENTRY_BEGIN
25MATCH opcode qtype qname
26ADJUST copy_id
27REPLY QR NOERROR
28SECTION QUESTION
29. IN NS
30SECTION ANSWER
31. IN NS K.ROOT-SERVERS.NET.
32SECTION ADDITIONAL
33K.ROOT-SERVERS.NET.     IN      A       193.0.14.129
34ENTRY_END
35
36ENTRY_BEGIN
37MATCH opcode subdomain
38ADJUST copy_id copy_query
39REPLY QR NOERROR
40SECTION QUESTION
41com. IN NS
42SECTION AUTHORITY
43com. IN NS a.gtld-servers.net.
44SECTION ADDITIONAL
45a.gtld-servers.net.	IN	A	192.5.6.30
46ENTRY_END
47RANGE_END
48
49; a.gtld-servers.net.
50RANGE_BEGIN 0 100
51	ADDRESS 192.5.6.30
52ENTRY_BEGIN
53MATCH opcode subdomain
54ADJUST copy_id copy_query
55REPLY QR NOERROR
56SECTION QUESTION
57example.com. IN NS
58SECTION AUTHORITY
59example.com. IN NS ns2.example.com.
60SECTION ADDITIONAL
61ns2.example.com.	IN	A	1.2.3.5
62ENTRY_END
63
64ENTRY_BEGIN
65MATCH opcode subdomain
66ADJUST copy_id copy_query
67REPLY QR NOERROR
68SECTION QUESTION
69foo.com. IN NS
70SECTION AUTHORITY
71foo.com. IN NS ns.example.com.
72ENTRY_END
73RANGE_END
74
75; ns2.example.com.
76RANGE_BEGIN 0 20
77	ADDRESS 1.2.3.5
78ENTRY_BEGIN
79MATCH opcode qname qtype
80REPLY QR AA NOERROR
81SECTION QUESTION
82www.example.com. IN A
83SECTION ANSWER
84www.example.com. 10 IN A 1.2.3.4
85ENTRY_END
86RANGE_END
87
88; ns2.example.com., now failing
89RANGE_BEGIN 20 100
90	ADDRESS 1.2.3.5
91ENTRY_BEGIN
92MATCH opcode qname qtype
93REPLY QR AA NOERROR
94SECTION QUESTION
95www.example.com. IN A
96SECTION ANSWER
97www.example.com. 10 IN CNAME foo.example.com.
98ENTRY_END
99
100ENTRY_BEGIN
101MATCH opcode qname qtype
102REPLY QR AA SERVFAIL
103SECTION QUESTION
104foo.example.com. IN A
105ENTRY_END
106
107ENTRY_BEGIN
108MATCH opcode qname qtype
109REPLY QR AA SERVFAIL
110SECTION QUESTION
111ns2.example.com. IN A
112SECTION ANSWER
113ENTRY_END
114
115ENTRY_BEGIN
116MATCH opcode qname qtype
117REPLY QR AA SERVFAIL
118SECTION QUESTION
119ns2.example.com. IN AAAA
120SECTION ANSWER
121ENTRY_END
122RANGE_END
123
124; get and entry in cache, to make it expired.
125STEP 1 QUERY
126ENTRY_BEGIN
127REPLY RD
128SECTION QUESTION
129www.example.com. IN A
130ENTRY_END
131
132; get the answer for it
133STEP 10 CHECK_ANSWER
134ENTRY_BEGIN
135MATCH all
136REPLY QR RD RA NOERROR
137SECTION QUESTION
138www.example.com. IN A
139SECTION ANSWER
140www.example.com. 10 IN A 1.2.3.4
141ENTRY_END
142
143; it is now expired
144STEP 20 TIME_PASSES ELAPSE 20
145
146; get a servfail in cache for the destination
147STEP 30 QUERY
148ENTRY_BEGIN
149REPLY RD
150SECTION QUESTION
151foo.example.com. IN A
152ENTRY_END
153
154STEP 40 CHECK_ANSWER
155ENTRY_BEGIN
156MATCH all
157REPLY QR RD RA SERVFAIL
158SECTION QUESTION
159foo.example.com. IN A
160ENTRY_END
161
162; the query is now a CNAME to servfail.
163; there is a valid, but expired, entry in cache.
164STEP 50 QUERY
165ENTRY_BEGIN
166REPLY RD
167SECTION QUESTION
168www.example.com. IN A
169ENTRY_END
170
171STEP 60 CHECK_ANSWER
172ENTRY_BEGIN
173MATCH all
174REPLY QR RD RA SERVFAIL
175SECTION QUESTION
176www.example.com. IN A
177SECTION ANSWER
178www.example.com. 10 IN CNAME foo.example.com.
179ENTRY_END
180
181SCENARIO_END
182