From 63ad9c90eb8f1842d2d79acefa803db9f820e33d Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Tue, 15 Feb 2022 14:09:36 +0100 Subject: [PATCH] Add test case for #11320: followCNAMERecords leads to a result that should be subject to dns64 processing --- regression-tests.recursor-dnssec/test_Lua.py | 39 +++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/regression-tests.recursor-dnssec/test_Lua.py b/regression-tests.recursor-dnssec/test_Lua.py index e5649533d7..9e04d0a9a9 100644 --- a/regression-tests.recursor-dnssec/test_Lua.py +++ b/regression-tests.recursor-dnssec/test_Lua.py @@ -704,7 +704,7 @@ dnssec=validate self.assertEqual(len(res.authority), 0) class PolicyEventFilterOnFollowUpTest(RecursorTest): - """Tests the interaction between RPZ and followup queries (dns64, folliwCNAME) + """Tests the interaction between RPZ and followup queries (dns64, followCNAME) """ _confdir = 'policyeventfilter-followup' @@ -754,6 +754,43 @@ secure.example.zone.rpz. 60 IN A 192.0.2.42 self.assertEqual(len(res.authority), 0) self.assertResponseMatches(query, expected, res) +class PolicyEventFilterOnFollowUpWithNativeDNS64Test(RecursorTest): + """Tests the interaction between followup queries and native dns64 + """ + + _confdir = 'policyeventfilter-followup-dns64' + _config_template = """ + dns64-prefix=1234::/96 + """ + _lua_config_file = """ + """ + _lua_dns_script_file = """ + function preresolve(dq) + dq:addAnswer(pdns.CNAME, "cname.secure.example.") + dq.followupFunction="followCNAMERecords" + dq.rcode = pdns.NOERROR + return true + end + + """ + + def testAAAA(self): + expected = [ + dns.rrset.from_text('mx1.secure.example.', 15, dns.rdataclass.IN, 'CNAME', 'cname.secure.example.'), + dns.rrset.from_text('cname.secure.example.', 15, dns.rdataclass.IN, 'CNAME', ' host1.secure.example.'), + dns.rrset.from_text('host1.secure.example.', 15, dns.rdataclass.IN, 'AAAA', '1234::c000:202') + ] + query = dns.message.make_query('mx1.secure.example', 'AAAA') + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + res = sender(query) + print(res) + self.assertRcodeEqual(res, dns.rcode.NOERROR) + self.assertEqual(len(res.answer), 3) + self.assertEqual(len(res.authority), 0) + self.assertResponseMatches(query, expected, res) + class LuaPostResolveFFITest(RecursorTest): """Tests postresolve_ffi interface""" -- 2.47.2