]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
use right remote in accounting
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Mon, 30 Aug 2021 10:06:46 +0000 (12:06 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 16 Sep 2021 07:34:32 +0000 (09:34 +0200)
pdns/packethandler.cc
pdns/responsestats-auth.cc

index 72b83250c2cc67e42aeb503dffeb45f00877b577..6b39f11bc88e8a07be5a501ca0dfef53e260c8ee 100644 (file)
@@ -1278,7 +1278,7 @@ std::unique_ptr<DNSPacket> PacketHandler::doQuestion(DNSPacket& p)
     if(d_logDNSDetails)
       g_log<<Logger::Error<<"Received an answer (non-query) packet from "<<p.getRemoteString()<<", dropping"<<endl;
     S.inc("corrupt-packets");
-    S.ringAccount("remotes-corrupt", p.d_remote);
+    S.ringAccount("remotes-corrupt", p.getInnerRemote());
     return nullptr;
   }
 
@@ -1286,7 +1286,7 @@ std::unique_ptr<DNSPacket> PacketHandler::doQuestion(DNSPacket& p)
     if(d_logDNSDetails)
       g_log<<Logger::Error<<"Received truncated query packet from "<<p.getRemoteString()<<", dropping"<<endl;
     S.inc("corrupt-packets");
-    S.ringAccount("remotes-corrupt", p.d_remote);
+    S.ringAccount("remotes-corrupt", p.getInnerRemote());
     return nullptr;
   }
 
@@ -1334,7 +1334,7 @@ std::unique_ptr<DNSPacket> PacketHandler::doQuestion(DNSPacket& p)
       if(d_logDNSDetails)
         g_log<<Logger::Error<<"Received a malformed qdomain from "<<p.getRemoteString()<<", '"<<p.qdomain<<"': sending servfail"<<endl;
       S.inc("corrupt-packets");
-      S.ringAccount("remotes-corrupt", p.d_remote);
+      S.ringAccount("remotes-corrupt", p.getInnerRemote());
       S.inc("servfail-packets");
       r->setRcode(RCode::ServFail);
       return r;
index 833cd025a3cab4394f7c4c454adff2b547fd9351..ec954e2bd77b6a4b02a7758ea342ab7cd9d507bf 100644 (file)
@@ -22,6 +22,9 @@ void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP, bool last) const
   static AtomicCounter &tcpbytesanswered4=*S.getPointer("tcp4-answers-bytes");
   static AtomicCounter &tcpbytesanswered6=*S.getPointer("tcp6-answers-bytes");
 
+  ComboAddress& accountremote = p.d_remote;
+  if (p.d_inner_remote) accountremote = *p.d_inner_remote;
+
   if(p.d.aa) {
     if (p.d.rcode==RCode::NXDomain) {
       S.inc("nxdomain-packets");
@@ -30,13 +33,13 @@ void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP, bool last) const
   } else if (p.d.rcode == RCode::Refused) {
     S.inc("unauth-packets");
     S.ringAccount("unauth-queries", p.qdomain, p.qtype);
-    S.ringAccount("remotes-unauth",p.d_remote);
+    S.ringAccount("remotes-unauth", accountremote);
   }
 
   if (udpOrTCP) { // udp
     udpnumanswered++;
     udpbytesanswered+=buf.length();
-    if(p.d_remote.sin4.sin_family==AF_INET) {
+    if(accountremote.sin4.sin_family==AF_INET) {
       udpnumanswered4++;
       udpbytesanswered4+=buf.length();
     } else {
@@ -45,14 +48,14 @@ void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP, bool last) const
     }
   } else { //tcp
     tcpbytesanswered+=buf.length();
-    if(p.d_remote.sin4.sin_family==AF_INET) {
+    if(accountremote.sin4.sin_family==AF_INET) {
       tcpbytesanswered4+=buf.length();
     } else {
       tcpbytesanswered6+=buf.length();
     }
     if(last) {
      tcpnumanswered++;
-     if(p.d_remote.sin4.sin_family==AF_INET) {
+     if(accountremote.sin4.sin_family==AF_INET) {
       tcpnumanswered4++;
      } else {
       tcpnumanswered6++;