do-ip6: no ; config options ; SPDX-License-Identifier: GPL-3.0-or-later stub-addr: 193.0.14.129 # k.root-servers.net. CONFIG_END SCENARIO_BEGIN Test restriction on CNAME chain length. ; k.root-servers.net. RANGE_BEGIN 0 100 ADDRESS 193.0.14.129 ENTRY_BEGIN MATCH opcode qname ADJUST copy_id copy_query REPLY QR NOERROR SECTION QUESTION n1.tld. IN NS SECTION ANSWER n1.tld. IN CNAME n2.tld. n2.tld. IN CNAME n3.tld. n3.tld. IN CNAME n4.tld. n4.tld. IN CNAME n5.tld. n5.tld. IN CNAME n6.tld. n6.tld. IN CNAME n7.sub. SECTION AUTHORITY sub. IN NS ns.sub. SECTION ADDITIONAL ns.sub. IN A 194.0.14.1 ENTRY_END ENTRY_BEGIN MATCH opcode qname ADJUST copy_id copy_query REPLY QR NOERROR SECTION QUESTION n2.tld. IN NS SECTION ANSWER n2.tld. IN CNAME n3.tld. n3.tld. IN CNAME n4.tld. n4.tld. IN CNAME n5.tld. n5.tld. IN CNAME n6.tld. n6.tld. IN CNAME n7.sub. SECTION AUTHORITY sub. IN NS ns.sub. SECTION ADDITIONAL ns.sub. IN A 194.0.14.1 ENTRY_END ; empty non-terminal for query name minimization ENTRY_BEGIN MATCH opcode subdomain ADJUST copy_id copy_query REPLY QR AA NOERROR SECTION QUESTION tld. IN NS SECTION ANSWER ENTRY_END ; sub. subdomains ENTRY_BEGIN MATCH opcode subdomain ADJUST copy_id copy_query REPLY QR NOERROR SECTION QUESTION sub. IN NS SECTION AUTHORITY sub. IN NS ns.sub. SECTION ADDITIONAL ns.sub. IN A 194.0.14.1 ENTRY_END RANGE_END ; ns.sub. RANGE_BEGIN 0 100 ADDRESS 194.0.14.1 ENTRY_BEGIN MATCH opcode qname qtype ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION ns.sub. IN A SECTION ANSWER ns.sub. IN A 194.0.14.1 ENTRY_END ENTRY_BEGIN MATCH opcode qname qtype ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION ns.sub. IN AAAA SECTION ANSWER ENTRY_END ENTRY_BEGIN MATCH opcode qname qtype ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION n7.sub. IN A SECTION ANSWER n7.sub. IN CNAME n8.sub. n8.sub. IN CNAME n9.sub. n9.sub. IN CNAME n10.sub. n10.sub. IN CNAME n11.sub. n11.sub. IN CNAME n12.sub. n12.sub. IN CNAME n13.sub. n13.sub. IN CNAME n14.sub. n14.sub. IN A 198.18.0.1 ENTRY_END ENTRY_BEGIN MATCH opcode qname qtype ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION loop7.sub. IN A SECTION ANSWER loop7.sub. IN CNAME loop8.sub. loop8.sub. IN CNAME loop9.sub. loop9.sub. IN CNAME loop10.sub. loop10.sub. IN CNAME loop11.sub. ; loop11 -> loop7 -> ... -> loop11 loop11.sub. IN CNAME loop7.sub. loop12.sub. IN CNAME loop13.sub. loop13.sub. IN CNAME loop14.sub. loop14.sub. IN A 198.18.0.1 ENTRY_END RANGE_END ; maximum allowed chain length STEP 10 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION n2.tld. IN A ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all REPLY QR RD RA NOERROR SECTION QUESTION n2.tld. IN A SECTION ANSWER n2.tld. IN CNAME n3.tld. n3.tld. IN CNAME n4.tld. n4.tld. IN CNAME n5.tld. n5.tld. IN CNAME n6.tld. n6.tld. IN CNAME n7.sub. n7.sub. IN CNAME n8.sub. n8.sub. IN CNAME n9.sub. n9.sub. IN CNAME n10.sub. n10.sub. IN CNAME n11.sub. n11.sub. IN CNAME n12.sub. n12.sub. IN CNAME n13.sub. n13.sub. IN CNAME n14.sub. n14.sub. IN A 198.18.0.1 ENTRY_END ; too long CNAME chain across two zones STEP 20 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION n1.tld. IN A ENTRY_END STEP 21 CHECK_ANSWER ENTRY_BEGIN MATCH all REPLY QR RD RA SERVFAIL SECTION QUESTION n1.tld. IN A SECTION ANSWER n1.tld. IN CNAME n2.tld. n2.tld. IN CNAME n3.tld. n3.tld. IN CNAME n4.tld. n4.tld. IN CNAME n5.tld. n5.tld. IN CNAME n6.tld. n6.tld. IN CNAME n7.sub. n7.sub. IN CNAME n8.sub. n8.sub. IN CNAME n9.sub. n9.sub. IN CNAME n10.sub. n10.sub. IN CNAME n11.sub. n11.sub. IN CNAME n12.sub. n12.sub. IN CNAME n13.sub. n13.sub. IN CNAME n14.sub. ; This chain is too long (> 13): ; n14.sub. IN A 198.18.0.1 ENTRY_END ; CNAME loop detection STEP 30 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION loop7.sub. IN A ENTRY_END STEP 31 CHECK_ANSWER ENTRY_BEGIN MATCH all REPLY QR RD RA SERVFAIL SECTION QUESTION loop7.sub. IN A SECTION ANSWER loop7.sub. IN CNAME loop8.sub. loop8.sub. IN CNAME loop9.sub. loop9.sub. IN CNAME loop10.sub. loop10.sub. IN CNAME loop11.sub. loop11.sub. IN CNAME loop7.sub. ENTRY_END SCENARIO_END