From 129a3cce992b887563f57279f3ada33c90df940a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Je=C5=BEek?= <lukas.jezek@nic.cz>
Date: Thu, 26 Mar 2020 09:05:46 +0100
Subject: [PATCH] modules/policy: Add ANSWER action

---
 modules/policy/policy.lua | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/modules/policy/policy.lua b/modules/policy/policy.lua
index 23cba3dfc..c04d4f788 100644
--- a/modules/policy/policy.lua
+++ b/modules/policy/policy.lua
@@ -209,6 +209,22 @@ function policy.FLAGS(opts_set, opts_clear)
 	end
 end
 
+-- Create answer with passed arguments
+function policy.ANSWER(rtype, rdata, ttl)
+	return function(_, req)
+		local qry = req:current()
+		local answer = req.answer
+		ffi.C.kr_pkt_make_auth_header(answer)
+
+		if (rtype == qry.stype) then
+			answer:rcode(kres.rcode.NOERROR)
+			answer:begin(kres.section.ANSWER)
+			answer:put(qry.sname, ttl, qry.sclass, rtype, rdata)
+			return kres.DONE
+		end
+	end
+end
+
 local function mkauth_soa(answer, dname, mname)
 	if mname == nil then
 		mname = dname
-- 
GitLab