do-ip6: no

; config options
	stub-addr: 193.0.14.129 	# K.ROOT-SERVERS.NET.
        features: dns64_prefix = fe80::21b:aabb:0:0
CONFIG_END

SCENARIO_BEGIN Test dns64 features

; K.ROOT-SERVERS.NET.
RANGE_BEGIN 0 100
	ADDRESS 193.0.14.129 
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR NOERROR
SECTION QUESTION
. IN NS
SECTION ANSWER
. IN NS	K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET.	IN	A	193.0.14.129
ENTRY_END

ENTRY_BEGIN
MATCH opcode subdomain
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
cz.	IN NS
SECTION AUTHORITY
cz.	IN NS	d.ns.nic.cz.
SECTION ADDITIONAL
d.ns.nic.cz.	IN 	A	193.29.206.1
;d.ns.nic.cz.	IN 	AAAA	2001:678:1::1
ENTRY_END
RANGE_END

RANGE_BEGIN 0 100
	ADDRESS 193.29.206.1
ENTRY_BEGIN
MATCH opcode subdomain
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
example.cz. IN NS
SECTION AUTHORITY
example.cz.		IN 	NS	ns.example.cz.
SECTION ADDITIONAL
ns.example.cz.		IN 	A	1.2.3.4
ENTRY_END
RANGE_END

RANGE_BEGIN 0 100
	ADDRESS 1.2.3.4
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR NOERROR
SECTION QUESTION
www.example.cz. IN A
SECTION ANSWER
www.example.cz. IN A	1.2.3.5
www.example.cz. IN A	1.2.3.6
SECTION AUTHORITY
example.cz.		IN 	NS	ns.example.cz.
SECTION ADDITIONAL
ns.example.cz.		IN 	A	1.2.3.4
ENTRY_END

ENTRY_BEGIN
MATCH opcode qname qtype
ADJUST copy_id
REPLY QR NOERROR
SECTION QUESTION
www.example.cz. IN AAAA
SECTION AUTHORITY
example.cz.	3600 IN SOA bla. bla. 1 2 3 4 5
SECTION ADDITIONAL
ENTRY_END

ENTRY_BEGIN
MATCH opcode qname qtype
ADJUST copy_id
REPLY QR NOERROR
SECTION QUESTION
www6.example.cz. IN AAAA
SECTION ANSWER
www6.example.cz. 3600 IN AAAA 2001:db8::1
SECTION ADDITIONAL
ENTRY_END

ENTRY_BEGIN
MATCH opcode qname
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
cname.example.cz. IN CNAME
SECTION ANSWER
cname.example.cz. IN CNAME www.example.cz.
ENTRY_END

ENTRY_BEGIN
MATCH opcode qname qtype
ADJUST copy_id
REPLY QR REFUSED
SECTION QUESTION
fail6.example.cz. IN AAAA
SECTION ANSWER
ENTRY_END
RANGE_END


STEP 10 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
www.example.cz. IN AAAA
ENTRY_END

STEP 11 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer
REPLY QR RD RA NOERROR
SECTION QUESTION
www.example.cz. IN AAAA
SECTION ANSWER
www.example.cz. IN AAAA	fe80::21b:aabb:102:305
www.example.cz. IN AAAA	fe80::21b:aabb:102:306
ENTRY_END

; Do not synthesize on +CD queries, sec. 5.5.3.
STEP 12 QUERY
ENTRY_BEGIN
REPLY RD DO CD
SECTION QUESTION
www.example.cz. IN AAAA
ENTRY_END

STEP 13 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer authority
REPLY QR RD RA DO CD NOERROR
SECTION QUESTION
www.example.cz. IN AAAA
SECTION ANSWER
SECTION AUTHORITY
example.cz.	3600 IN SOA bla. bla. 1 2 3 4 5
ENTRY_END

; Do not synthesize if AAAA exists.
STEP 14 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
www6.example.cz. IN AAAA
ENTRY_END

STEP 15 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer
REPLY QR RD RA NOERROR
SECTION QUESTION
www6.example.cz. IN AAAA
SECTION ANSWER
www6.example.cz. 3600 IN AAAA 2001:db8::1
ENTRY_END

; Generate from simple NODATA behind a CNAME.
STEP 16 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
cname.example.cz. IN AAAA
ENTRY_END

STEP 17 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer
REPLY QR RD RA NOERROR
SECTION QUESTION
cname.example.cz. IN AAAA
SECTION ANSWER
cname.example.cz. IN CNAME www.example.cz.
www.example.cz. IN AAAA	fe80::21b:aabb:102:305
www.example.cz. IN AAAA	fe80::21b:aabb:102:306
ENTRY_END

; Fail for AAAA won't cause query for A (answer not defined).
STEP 18 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
fail6.example.cz. IN AAAA
ENTRY_END

STEP 19 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer
REPLY QR RD RA SERVFAIL
SECTION QUESTION
fail6.example.cz. IN AAAA
SECTION ANSWER
ENTRY_END

SCENARIO_END
