From: Remi Gacogne Date: Fri, 27 Jan 2023 16:30:32 +0000 (+0100) Subject: dnsdist: Properly update rcode-related metrics on RCodeAction hits X-Git-Tag: dnsdist-1.8.0-rc1~70^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6e959bfcca7b0675afddf9fed2b3fce6cac03419;p=thirdparty%2Fpdns.git dnsdist: Properly update rcode-related metrics on RCodeAction hits --- diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 64ab5fafdf..bd3cec2a54 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -861,20 +861,17 @@ bool processRulesResult(const DNSAction::Action& action, DNSQuestion& dq, std::s break; case DNSAction::Action::Nxdomain: dq.getHeader()->rcode = RCode::NXDomain; - dq.getHeader()->qr=true; - ++g_stats.ruleNXDomain; + dq.getHeader()->qr = true; return true; break; case DNSAction::Action::Refused: dq.getHeader()->rcode = RCode::Refused; - dq.getHeader()->qr=true; - ++g_stats.ruleRefused; + dq.getHeader()->qr = true; return true; break; case DNSAction::Action::ServFail: dq.getHeader()->rcode = RCode::ServFail; - dq.getHeader()->qr=true; - ++g_stats.ruleServFail; + dq.getHeader()->qr = true; return true; break; case DNSAction::Action::Spoof: @@ -1033,14 +1030,14 @@ static bool applyRulesToQuery(LocalHolders& holders, DNSQuestion& dq, const stru updateBlockStats(); dq.getHeader()->rcode = RCode::NXDomain; - dq.getHeader()->qr=true; + dq.getHeader()->qr = true; return true; case DNSAction::Action::Refused: vinfolog("Query from %s for %s refused because of dynamic block", dq.ids.origRemote.toStringWithPort(), dq.ids.qname.toLogString()); updateBlockStats(); dq.getHeader()->rcode = RCode::Refused; - dq.getHeader()->qr=true; + dq.getHeader()->qr = true; return true; case DNSAction::Action::Truncate: if (!dq.overTCP()) { @@ -1072,13 +1069,13 @@ static bool applyRulesToQuery(LocalHolders& holders, DNSQuestion& dq, const stru } #endif /* DISABLE_DYNBLOCKS */ - DNSAction::Action action=DNSAction::Action::None; + DNSAction::Action action = DNSAction::Action::None; string ruleresult; bool drop = false; - for(const auto& lr : *holders.ruleactions) { - if(lr.d_rule->matches(&dq)) { + for (const auto& lr : *holders.ruleactions) { + if (lr.d_rule->matches(&dq)) { lr.d_rule->d_matches++; - action=(*lr.d_action)(&dq, &ruleresult); + action = (*lr.d_action)(&dq, &ruleresult); if (processRulesResult(action, dq, ruleresult, drop)) { break; } @@ -1283,6 +1280,17 @@ ProcessQueryResult processQueryAfterRules(DNSQuestion& dq, LocalHolders& holders return ProcessQueryResult::Drop; } + const auto rcode = dq.getHeader()->rcode; + if (rcode == RCode::NXDomain) { + ++g_stats.ruleNXDomain; + } + else if (rcode == RCode::Refused) { + ++g_stats.ruleRefused; + } + else if (rcode == RCode::ServFail) { + ++g_stats.ruleServFail; + } + ++g_stats.selfAnswered; ++dq.ids.cs->responses; return ProcessQueryResult::SendAnswer;