diff --git a/modules/policy/policy.lua b/modules/policy/policy.lua index 23cba3dfcfe7e8618dc790ba8b019e24d7b60d5e..c04d4f788c6e75224a54af0d02ca66efaf8329f0 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