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:
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()) {
}
#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;
}
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;