Turns out recursor can be kept rather busy dealing with packets that will not show up anywhere.
* `edns-ping-matches`: number of servers that sent a valid EDNS PING response
* `edns-ping-mismatches`: number of servers that sent an invalid EDNS PING response
* `failed-host-entries`: number of servers that failed to resolve
+* `ignored-packets`: counts the number of non-query packets received on server sockets that should only get query packets
* `ipv6-outqueries`: number of outgoing queries over IPv6
* `ipv6-questions`: counts all end-user initiated queries with the RD bit set, received over IPv6 UDP
* `malloc-bytes`: returns the number of bytes allocated by the process (broken, always returns 0)
dc->setRemote(&conn->d_remote);
if(dc->d_mdp.d_header.qr) {
delete dc;
+ g_stats.ignoredCount++;
L<<Logger::Error<<"Ignoring answer from TCP client "<< conn->d_remote.toString() <<" on server socket!"<<endl;
return;
}
if(dc->d_mdp.d_header.opcode) {
delete dc;
+ g_stats.ignoredCount++;
L<<Logger::Error<<"Ignoring non-query opcode from TCP client "<< conn->d_remote.toString() <<" on server socket!"<<endl;
return;
}
dnsheader* dh=(dnsheader*)data;
if(dh->qr) {
+ g_stats.ignoredCount++;
if(g_logCommonErrors)
L<<Logger::Error<<"Ignoring answer from "<<fromaddr.toString()<<" on server socket!"<<endl;
}
else if(dh->opcode) {
+ g_stats.ignoredCount++;
if(g_logCommonErrors)
L<<Logger::Error<<"Ignoring non-query opcode "<<dh->opcode<<" from "<<fromaddr.toString()<<" on server socket!"<<endl;
}
addGetStat("policy-drops", &g_stats.policyDrops);
addGetStat("no-packet-error", &g_stats.noPacketError);
addGetStat("dlg-only-drops", &SyncRes::s_nodelegated);
+ addGetStat("ignored-packets", &g_stats.ignoredCount);
addGetStat("max-mthread-stack", &g_stats.maxMThreadStackUsage);
addGetStat("negcache-entries", boost::bind(getNegCacheSize));
uint64_t noPingOutQueries, noEdnsOutQueries;
uint64_t packetCacheHits;
uint64_t noPacketError;
+ uint64_t ignoredCount;
time_t startupTime;
unsigned int maxMThreadStackUsage;
};