* **servfail-packets**: Amount of packets that could not be answered due to database problems
* **tcp-answers**: Number of answers sent out over TCP
* **tcp-questions**: Number of questions received over TCP
+* **tcp4-answers**: Number of answers sent out over IPv4 TCP
+* **tcp4-questions**: Number of questions received over IPv4 TCP
+* **tcp6-answers**: Number of answers sent out over IPv6 TCP
+* **tcp6-questions**: Number of questions received over IPv6 TCP
* **timedout-questions**: Amount of packets that were dropped because they had to wait too long internally
* **udp-answers**: Number of answers sent out over UDP
* **udp-queries**: Number of questions received over UDP
S.declare("signatures", "Number of DNSSEC signatures made");
S.declare("tcp-queries","Number of TCP queries received");
S.declare("tcp-answers","Number of answers sent out over TCP");
+ S.declare("tcp4-queries","Number of IPv4 TCP queries received");
+ S.declare("tcp4-answers","Number of IPv4 answers sent out over TCP");
+
+ S.declare("tcp6-queries","Number of IPv6 TCP queries received");
+ S.declare("tcp6-answers","Number of IPv6 answers sent out over TCP");
+
S.declare("qsize-q","Number of questions waiting for database attention", getQCount);
return;
}
+
+static void incTCPAnswerCount(const ComboAddress& remote)
+{
+ S.inc("tcp-answers");
+ if(remote.sin4.sin_family == AF_INET6)
+ S.inc("tcp6-answers");
+ else
+ S.inc("tcp4-answers");
+}
void *TCPNameserver::doConnection(void *data)
{
shared_ptr<DNSPacket> packet;
getQuestion(fd, mesg.get(), pktlen, remote);
S.inc("tcp-queries");
+ if(remote.sin4.sin_family == AF_INET6)
+ S.inc("tcp6-queries");
+ else
+ S.inc("tcp4-queries");
packet=shared_ptr<DNSPacket>(new DNSPacket);
packet->setRemote(&remote);
if(packet->qtype.getCode()==QType::AXFR) {
if(doAXFR(packet->qdomain, packet, fd))
- S.inc("tcp-answers");
+ incTCPAnswerCount(remote);
continue;
}
if(packet->qtype.getCode()==QType::IXFR) {
if(doIXFR(packet, fd))
- S.inc("tcp-answers");
+ incTCPAnswerCount(remote);
continue;
}
if(LPE) LPE->police(&(*packet), &(*cached), true);
sendPacket(cached, fd); // presigned, don't do it again
- S.inc("tcp-answers");
+ incTCPAnswerCount(remote);
continue;
}
if(!reply) // unable to write an answer?
break;
- S.inc("tcp-answers");
+ incTCPAnswerCount(remote);
sendPacket(reply, fd);
}
}