From 7a4d09c5268092ba0743cf0c70a0f732733b66b0 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 12 Dec 2023 14:54:07 +0100 Subject: [PATCH] dnsdist: Clarify the Lua FFI DNS header set/get regression tests --- regression-tests.dnsdist/test_LuaFFI.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/regression-tests.dnsdist/test_LuaFFI.py b/regression-tests.dnsdist/test_LuaFFI.py index 0b8c42a300..517db15c32 100644 --- a/regression-tests.dnsdist/test_LuaFFI.py +++ b/regression-tests.dnsdist/test_LuaFFI.py @@ -322,24 +322,33 @@ class TestLuaFFIHeader(DNSDistTest): local bit = require("bit") local ffi = require("ffi") - function setAAResponseAction(dr) + -- check that the AA bit is clear, set the rcode to REFUSED otherwise + function checkAAResponseAction(dr) local header_void = ffi.C.dnsdist_ffi_dnsquestion_get_header(dr) local header = ffi.cast("unsigned char *", header_void) -- get AA local aa = bit.band(header[2], bit.lshift(1, 2)) ~= 0 if aa then ffi.C.dnsdist_ffi_dnsquestion_set_rcode(dr, DNSRCode.REFUSED) + -- prevent subsequent rules from being applied return DNSResponseAction.HeaderModify end + return DNSResponseAction.None + end + + -- set the AA bit to 1 + function setAAResponseAction(dr) + local header_void = ffi.C.dnsdist_ffi_dnsquestion_get_header(dr) + local header = ffi.cast("unsigned char *", header_void) -- set AA=1 header[2] = bit.bor(header[2], bit.lshift(1, 2)) return DNSResponseAction.None end + addResponseAction(AllRule(), LuaFFIResponseAction(checkAAResponseAction)) addResponseAction(AllRule(), LuaFFIResponseAction(setAAResponseAction)) newServer{address="127.0.0.1:%d"} """ - _verboseMode = True def testLuaFFISetAAHeader(self): """ @@ -371,9 +380,9 @@ class TestLuaFFIHeader(DNSDistTest): self.assertEqual(query, receivedQuery) self.assertEqual(expectedResponse, receivedResponse) - def testLuaFFIgetAAHeader(self): + def testLuaFFIGetAAHeader(self): """ - Lua FFI: check AA=0 + Lua FFI: check AA=0, return REFUSED otherwise """ name = 'dnsheader-get-aa.luaffi.tests.powerdns.com.' query = dns.message.make_query(name, 'A', 'IN') -- 2.47.2