Records below delegation are not ignored (kzonecheck also does not raise any issue)
Hi,
When a zone file has resource records below a child NS record (delegation), they must be either ignored or signaled as an error.
For example, consider the following zone file:
| campus.edu. | 500 SOA | ns1.campus.edu. root.campus.edu. 3 86400 7200 604800 300 |
| campus.edu. | 500 NS | ns1.outside.edu. |
| bar.campus.edu. | 500 NS | ns2.outside.edu. |
| foo.bar.campus.edu. | 500 CNAME | test.com. |
For the query <foo.bar.campus.edu, NS>, the response returned by Knot was:
"opcode QUERY",
"rcode NOERROR",
"flags QR AA",
";QUESTION",
"foo.bar.campus.edu. IN NS",
";ANSWER",
"foo.bar.campus.edu. 500 IN CNAME test.com.",
";AUTHORITY",
";ADDITIONAL"
The response should have been actually the <bar.campus.edu., NS> record (delegation). BIND and PowerDNS respond with the delegation record and ignore the record below the NS record.
To be sure, I have checked the zone file using kzonecheck -o campus.edu file.txt, and there are no errors or warnings raised.
The interesting part is that the behavior is fine (returns the NS record) if the record was something like A record instead of the CNAME record.