From: bert hubert Date: Tue, 26 Jan 2016 08:25:07 +0000 (+0100) Subject: hook up edns options to prototypes X-Git-Tag: dnsdist-1.0.0-alpha2~29^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c7e3b9b9dc197f27c72fdabaf66bf5361c07e63;p=thirdparty%2Fpdns.git hook up edns options to prototypes --- diff --git a/pdns/lua-recursor4.cc b/pdns/lua-recursor4.cc index 2e1102e822..a0c999b56d 100644 --- a/pdns/lua-recursor4.cc +++ b/pdns/lua-recursor4.cc @@ -29,7 +29,7 @@ bool RecursorLua4::postresolve(const ComboAddress& remote,const ComboAddress& lo } -bool RecursorLua4::preresolve(const ComboAddress& remote, const ComboAddress& local, const DNSName& query, const QType& qtype, vector& ret, int& res, bool* variable) +bool RecursorLua4::preresolve(const ComboAddress& remote, const ComboAddress& local, const DNSName& query, const QType& qtype, vector& ret, const vector >* ednsOpts, int& res, bool* variable) { return false; } @@ -255,6 +255,7 @@ RecursorLua4::RecursorLua4(const std::string& fname) d_lw->registerMember("name", &DNSRecord::d_name); d_lw->registerMember("type", &DNSRecord::d_type); d_lw->registerMember("ttl", &DNSRecord::d_ttl); + d_lw->registerMember("ednsOptions", &DNSQuestion::ednsOptions); d_lw->registerFunction("getContent", [](const DNSRecord& dr) { return dr.d_content->getZoneRepresentation(); }); @@ -334,29 +335,29 @@ RecursorLua4::RecursorLua4(const std::string& fname) d_gettag = d_lw->readVariable>("gettag").get_value_or(0); } -bool RecursorLua4::preresolve(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable) +bool RecursorLua4::preresolve(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, const vector >* ednsOpts, int& ret, bool* variable) { - return genhook(d_preresolve, remote, local, query, qtype, res, ret, variable); + return genhook(d_preresolve, remote, local, query, qtype, res, 0, ret, variable); } bool RecursorLua4::nxdomain(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable) { - return genhook(d_nxdomain, remote, local, query, qtype, res, ret, variable); + return genhook(d_nxdomain, remote, local, query, qtype, res, 0, ret, variable); } bool RecursorLua4::nodata(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable) { - return genhook(d_nodata, remote, local, query, qtype, res, ret, variable); + return genhook(d_nodata, remote, local, query, qtype, res, 0, ret, variable); } bool RecursorLua4::postresolve(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable) { - return genhook(d_postresolve, remote, local, query, qtype, res, ret, variable); + return genhook(d_postresolve, remote, local, query, qtype, res, 0, ret, variable); } bool RecursorLua4::preoutquery(const ComboAddress& ns, const ComboAddress& requestor, const DNSName& query, const QType& qtype, vector& res, int& ret) { - return genhook(d_preoutquery, ns, requestor, query, qtype, res, ret, 0); + return genhook(d_preoutquery, ns, requestor, query, qtype, res, 0, ret, 0); } bool RecursorLua4::ipfilter(const ComboAddress& remote, const ComboAddress& local, const struct dnsheader& dh) @@ -373,7 +374,7 @@ int RecursorLua4::gettag(const ComboAddress& remote, const ComboAddress& local, return 0; } -bool RecursorLua4::genhook(luacall_t& func, const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable) +bool RecursorLua4::genhook(luacall_t& func, const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, const vector >* ednsOpts, int& ret, bool* variable) { if(!func) return false; diff --git a/pdns/lua-recursor4.hh b/pdns/lua-recursor4.hh index 5988039ace..67ccafeade 100644 --- a/pdns/lua-recursor4.hh +++ b/pdns/lua-recursor4.hh @@ -12,7 +12,7 @@ class RecursorLua4 : public boost::noncopyable public: explicit RecursorLua4(const std::string& fname); - bool preresolve(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable); + bool preresolve(const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, const vector >* ednsOpts, int& ret, bool* variable); bool nxdomain(const ComboAddress& remote, const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable); bool nodata(const ComboAddress& remote, const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable); bool postresolve(const ComboAddress& remote, const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable); @@ -49,14 +49,14 @@ private: string udpCallback; std::unordered_map data; - + std::vector>* ednsOptions; DNSName followupName; }; LuaContext* d_lw; typedef std::function)> luacall_t; luacall_t d_preresolve, d_nxdomain, d_nodata, d_postresolve, d_preoutquery, d_postoutquery; - bool genhook(luacall_t& func, const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, int& ret, bool* variable); + bool genhook(luacall_t& func, const ComboAddress& remote,const ComboAddress& local, const DNSName& query, const QType& qtype, vector& res, const vector >* ednsOpts, int& ret, bool* variable); typedef std::function ipfilter_t; ipfilter_t d_ipfilter; };