]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stats: update ips capture counters centrally
authorVictor Julien <vjulien@oisf.net>
Mon, 24 Jul 2023 20:13:52 +0000 (22:13 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 25 Jul 2023 13:09:45 +0000 (15:09 +0200)
This adds support to all capture methods for these counters.

The updates happen only on "real" packets, not on encapsulated
packets.

Ticket: #4756.

src/source-nfq.c
src/source-windivert.c
src/tmqh-packetpool.c

index cad4e2c7d7dbe03077ab0d766b69053644be6839..5293f2529a4cb5fd628bc72ffaf78aa0ca0952ee 100644 (file)
@@ -1186,9 +1186,6 @@ TmEcode NFQSetVerdict(Packet *p)
  */
 TmEcode VerdictNFQ(ThreadVars *tv, Packet *p, void *data)
 {
-    /* update counters */
-    CaptureStatsUpdate(tv, p);
-
     /* if this is a tunnel packet we check if we are ready to verdict
      * already. */
     if (IS_TUNNEL_PKT(p)) {
index 6a3d366015174d748a465f87bfa0b4aea7b56396..5625b7f0f56fbd084ef39546492debe4b7126d55 100644 (file)
@@ -748,9 +748,6 @@ static TmEcode WinDivertVerdictHelper(ThreadVars *tv, Packet *p)
     SCEnter();
     WinDivertThreadVars *wd_tv = WinDivertGetThread(p->windivert_v.thread_num);
 
-    /* update counters */
-    CaptureStatsUpdate(tv, p);
-
 #ifdef COUNTERS
     WinDivertQueueVars *wd_qv = WinDivertGetQueue(wd_tv->thread_num);
 #endif /* COUNTERS */
index 5d77e416243d254760527ea34309dffcef6fd10a..90d52bf787a43992de4c6b30493c039497393062 100644 (file)
@@ -370,6 +370,8 @@ void TmqhOutputPacketpool(ThreadVars *t, Packet *p)
 
         if (IS_TUNNEL_ROOT_PKT(p)) {
             SCLogDebug("IS_TUNNEL_ROOT_PKT == TRUE");
+            CaptureStatsUpdate(t, p);
+
             const uint16_t outstanding = TUNNEL_PKT_TPR(p) - TUNNEL_PKT_RTV(p);
             SCLogDebug("root pkt: outstanding %u", outstanding);
             if (outstanding == 0) {
@@ -429,6 +431,9 @@ void TmqhOutputPacketpool(ThreadVars *t, Packet *p)
         SCSpinUnlock(lock);
 
         SCLogDebug("tunnel stuff done, move on (proot %d)", proot);
+
+    } else {
+        CaptureStatsUpdate(t, p);
     }
 
     SCLogDebug("[packet %p][%s] %s", p,