stats<<"# TYPE "<<prefix<<"notimp counter"<<std::endl;
}
- for (auto const &d : notimpStats) {
- stats<<prefix<<"notimp{opcode=\""<<d.first<<"\"} "<<d.second<<std::endl;
+ for (std::size_t i = 0; i < notimpStats.size() ; i++) {
+ auto val = notimpStats.at(i).load();
+
+ if (val > 0) {
+ stats<<prefix<<"notimp{opcode=\""<<Opcode::to_s(i)<<"\"} "<<val<<std::endl;
+ }
}
stats<<"# HELP "<<prefix<<"unknown_domain_inqueries_total Number of queries received for domains unknown to us"<<std::endl;
progStats.unknownDomainInQueries += 1;
}
- void incrementNotImplemented(const string& opcode)
+ void incrementNotImplemented(uint8_t opcode)
{
- notimpStats[opcode] ++;
+ notimpStats.at(opcode) ++;
}
private:
};
std::map<DNSName, perDomainStat> domainStats;
- std::map<string, std::atomic<uint64_t>> notimpStats;
+ std::array<std::atomic<uint64_t>, 16> notimpStats;
programStats progStats;
std::map<DNSName, perDomainStat>::iterator getRegisteredDomain(const DNSName& d) {
g_stats.incrementUnknownDomainInQueries(mdp.d_qname);
makeRefusedPacket(mdp, packet);
} else if (respt == ResponseType::RefusedOpcode) {
- g_stats.incrementNotImplemented(Opcode::to_s(mdp.d_header.opcode));
+ g_stats.incrementNotImplemented(mdp.d_header.opcode);
makeNotimpPacket(mdp, packet);
}
"ixfrdist_unknown_domain_inqueries_total",
"ixfrdist_sys_msec", "ixfrdist_user_msec",
"ixfrdist_real_memory_usage",
- "ixfrdist_fd_usage"]
+ "ixfrdist_fd_usage",
+ "ixfrdist_notimp"]
metric_domain_stats = ["ixfrdist_soa_serial", "ixfrdist_soa_checks_total",
"ixfrdist_soa_checks_failed_total",
"ixfrdist_soa_inqueries_total",