From: Remi Gacogne Date: Sat, 2 Jul 2022 10:42:29 +0000 (+0200) Subject: dnsdist: Add DNSQuestion:setEDNSOption() Lua binding X-Git-Tag: dnsdist-1.8.0-rc1~290^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=21ebaa6e1c9fa87cf5f7a8ceffe7cc840cdec60b;p=thirdparty%2Fpdns.git dnsdist: Add DNSQuestion:setEDNSOption() Lua binding --- diff --git a/pdns/dnsdist-lua-bindings-dnsquestion.cc b/pdns/dnsdist-lua-bindings-dnsquestion.cc index a6b80078cd..18cb03d4eb 100644 --- a/pdns/dnsdist-lua-bindings-dnsquestion.cc +++ b/pdns/dnsdist-lua-bindings-dnsquestion.cc @@ -180,6 +180,12 @@ void setupLuaBindingsDNSQuestion(LuaContext& luaCtx) } }); + luaCtx.registerFunction("setEDNSOption", [](DNSQuestion& dq, uint16_t code, const std::string& data) { + std::string result; + SetEDNSOptionAction seoa(code, data); + seoa(&dq, &result); + }); + /* LuaWrapper doesn't support inheritance */ luaCtx.registerMember("localaddr", [](const DNSResponse& dq) -> const ComboAddress { return *dq.local; }, [](DNSResponse& dq, const ComboAddress newLocal) { (void) newLocal; }); luaCtx.registerMember("qname", [](const DNSResponse& dq) -> const DNSName { return *dq.qname; }, [](DNSResponse& dq, const DNSName newName) { (void) newName; }); diff --git a/pdns/dnsdistdist/docs/reference/dq.rst b/pdns/dnsdistdist/docs/reference/dq.rst index d80a5bb927..6e262b5314 100644 --- a/pdns/dnsdistdist/docs/reference/dq.rst +++ b/pdns/dnsdistdist/docs/reference/dq.rst @@ -206,6 +206,15 @@ This state can be modified from the various hooks. :param string reason: An optional string describing the reason why this trap was sent + .. method:: DNSQuestion:setEDNSOption(code, data) + + .. versionadded:: 1.8.0 + + Add arbitrary EDNS option and data to the query. Any existing EDNS content with the same option code will be overwritten. + + :param int code: The EDNS option code + :param string data: The EDNS option raw data + .. method:: DNSQuestion:setHTTPResponse(status, body, contentType="") .. versionadded:: 1.4.0