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