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