From: Remi Gacogne Date: Wed, 13 Nov 2019 15:32:50 +0000 (+0100) Subject: dnsdist: Add the number of received bytes to StatNode entries X-Git-Tag: auth-4.3.0-alpha1~33^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=923755643ac40e0669d11f1667eca03ce50e639b;p=thirdparty%2Fpdns.git dnsdist: Add the number of received bytes to StatNode entries --- diff --git a/pdns/dnsdist-dynblocks.hh b/pdns/dnsdist-dynblocks.hh index dd834a1655..3dc8b5e3e0 100644 --- a/pdns/dnsdist-dynblocks.hh +++ b/pdns/dnsdist-dynblocks.hh @@ -576,7 +576,7 @@ private: } if (suffixMatchRuleMatches) { - root.submit(c.name, ((c.dh.rcode == 0 && c.usec == std::numeric_limits::max()) ? -1 : c.dh.rcode), boost::none); + root.submit(c.name, ((c.dh.rcode == 0 && c.usec == std::numeric_limits::max()) ? -1 : c.dh.rcode), c.size, boost::none); } } } diff --git a/pdns/dnsdist-lua-inspection.cc b/pdns/dnsdist-lua-inspection.cc index 80bceee030..c1f0a1cb80 100644 --- a/pdns/dnsdist-lua-inspection.cc +++ b/pdns/dnsdist-lua-inspection.cc @@ -117,7 +117,7 @@ static void statNodeRespRing(statvisitor_t visitor, unsigned int seconds) if (seconds && c.when < cutoff) continue; - root.submit(c.name, ((c.dh.rcode == 0 && c.usec == std::numeric_limits::max()) ? -1 : c.dh.rcode), boost::none); + root.submit(c.name, ((c.dh.rcode == 0 && c.usec == std::numeric_limits::max()) ? -1 : c.dh.rcode), c.size, boost::none); } } @@ -708,6 +708,7 @@ void setupLuaInspection() g_lua.registerMember("queries", &StatNode::Stat::queries); g_lua.registerMember("noerrors", &StatNode::Stat::noerrors); g_lua.registerMember("drops", &StatNode::Stat::drops); + g_lua.registerMember("bytes", &StatNode::Stat::bytes); g_lua.writeFunction("statNodeRespRing", [](statvisitor_t visitor, boost::optional seconds) { statNodeRespRing(visitor, seconds ? *seconds : 0); diff --git a/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc b/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc index d05882a19b..e4ebea66c4 100644 --- a/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc +++ b/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc @@ -48,6 +48,11 @@ uint64_t dnsdist_ffi_stat_node_get_drops_count(const dnsdist_ffi_stat_node_t* no return node->self.drops; } +uint64_t dnsdist_ffi_stat_node_get_bytes(const dnsdist_ffi_stat_node_t* node) +{ + return node->self.bytes; +} + unsigned int dnsdist_ffi_stat_node_get_labels_count(const dnsdist_ffi_stat_node_t* node) { return node->node.labelsCount; @@ -89,3 +94,8 @@ uint64_t dnsdist_ffi_stat_node_get_children_drops_count(const dnsdist_ffi_stat_n { return node->children.drops; } + +uint64_t dnsdist_ffi_stat_node_get_children_bytes_count(const dnsdist_ffi_stat_node_t* node) +{ + return node->children.bytes; +} diff --git a/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.hh b/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.hh index c4329a25b2..2b81c60b20 100644 --- a/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.hh +++ b/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.hh @@ -28,6 +28,7 @@ extern "C" { uint64_t dnsdist_ffi_stat_node_get_nxdomains_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); uint64_t dnsdist_ffi_stat_node_get_servfails_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); uint64_t dnsdist_ffi_stat_node_get_drops_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); + uint64_t dnsdist_ffi_stat_node_get_bytes(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); unsigned int dnsdist_ffi_stat_node_get_labels_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); void dnsdist_ffi_stat_node_get_full_name_raw(const dnsdist_ffi_stat_node_t* node, const char** name, size_t* nameSize) __attribute__ ((visibility ("default"))); @@ -38,4 +39,5 @@ extern "C" { uint64_t dnsdist_ffi_stat_node_get_children_nxdomains_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); uint64_t dnsdist_ffi_stat_node_get_children_servfails_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); uint64_t dnsdist_ffi_stat_node_get_children_drops_count(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); + uint64_t dnsdist_ffi_stat_node_get_children_bytes(const dnsdist_ffi_stat_node_t* node) __attribute__ ((visibility ("default"))); } diff --git a/pdns/dnsscope.cc b/pdns/dnsscope.cc index ce399f663a..d30c08efa1 100644 --- a/pdns/dnsscope.cc +++ b/pdns/dnsscope.cc @@ -359,7 +359,7 @@ try rem.sin4.sin_port=0; if(doServFailTree) - root.submit(qname, header.rcode, rem); + root.submit(qname, header.rcode, pr.d_len, rem); } if(!qd.d_qcount || qd.d_qcount == qd.d_answercount) { diff --git a/pdns/statnode.cc b/pdns/statnode.cc index 1557bbbd60..00dad2afbd 100644 --- a/pdns/statnode.cc +++ b/pdns/statnode.cc @@ -12,6 +12,8 @@ StatNode::Stat StatNode::print(unsigned int depth, Stat newstat, bool silent) co childstat.nxdomains += s.nxdomains; childstat.servfails += s.servfails; childstat.drops += s.drops; + childstat.bytes += s.bytes; + if(children.size()>1024 && !silent) { cout< remote) +void StatNode::submit(const DNSName& domain, int rcode, unsigned int bytes, boost::optional remote) { // cerr<<"FIRST submit called on '"< tmp = domain.getRawLabels(); @@ -61,7 +65,7 @@ void StatNode::submit(const DNSName& domain, int rcode, boost::optional @@ -71,7 +75,7 @@ void StatNode::submit(const DNSName& domain, int rcode, boost::optional::const_iterator end, std::vector::const_iterator begin, const std::string& domain, int rcode, boost::optional remote, unsigned int count) +void StatNode::submit(std::vector::const_iterator end, std::vector::const_iterator begin, const std::string& domain, int rcode, unsigned int bytes, boost::optional remote, unsigned int count) { // cerr<<"Submit called for domain='"<::const_iterator end, std::vector::const_iterator end, std::vector remote); + void submit(const DNSName& domain, int rcode, unsigned int bytes, boost::optional remote); Stat print(unsigned int depth=0, Stat newstat=Stat(), bool silent=false) const; typedef boost::function visitor_t; @@ -68,5 +71,5 @@ public: children_t children; private: - void submit(std::vector::const_iterator end, std::vector::const_iterator begin, const std::string& domain, int rcode, boost::optional remote, unsigned int count); + void submit(std::vector::const_iterator end, std::vector::const_iterator begin, const std::string& domain, int rcode, unsigned int bytes, boost::optional remote, unsigned int count); };