]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Add atomic counter for iface drop.
authorEric Leblond <eric@regit.org>
Thu, 15 Nov 2012 08:56:17 +0000 (09:56 +0100)
committerEric Leblond <eric@regit.org>
Mon, 19 Nov 2012 22:54:27 +0000 (23:54 +0100)
src/source-af-packet.c
src/source-pcap.c
src/source-pfring.c
src/util-device.c
src/util-device.h

index 6848a333e9eeef4ab97513d77a1e9ac3b632e18b..9305e7d364b463947bb41f25f5925842c2192233 100644 (file)
@@ -480,6 +480,7 @@ static inline void AFPDumpCounters(AFPThreadVars *ptv)
                 kstats.tp_packets, kstats.tp_drops);
         SCPerfCounterAddUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, kstats.tp_packets);
         SCPerfCounterAddUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, kstats.tp_drops);
+        (void) SC_ATOMIC_ADD(ptv->livedev->drop, kstats.tp_drops);
     }
 #endif
 }
index 2dff9c1d25440048b57385ffeff755ce77ca467c..6d05f1939bc9ba08e2b661cb11fee64096ae5fa2 100644 (file)
@@ -140,6 +140,7 @@ static inline void PcapDumpCounters(PcapThreadVars *ptv)
     if (likely((pcap_stats(ptv->pcap_handle, &pcap_s) >= 0))) {
         SCPerfCounterSetUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, pcap_s.ps_recv);
         SCPerfCounterSetUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, pcap_s.ps_drop);
+        (void) SC_ATOMIC_SET(ptv->livedev->drop, pcap_s.ps_drop);
         SCPerfCounterSetUI64(ptv->capture_kernel_ifdrops, ptv->tv->sc_perf_pca, pcap_s.ps_ifdrop);
     }
 }
index ddf3b074517ef7a64d3d9458033c4a9d550dbffd..16b89a037e20565a64456adbacc3abc23f41057b 100644 (file)
@@ -180,6 +180,7 @@ static inline void PfringDumpCounters(PfringThreadVars *ptv)
     if (likely((pfring_stats(ptv->pd, &pfring_s) >= 0))) {
         SCPerfCounterSetUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, pfring_s.recv);
         SCPerfCounterSetUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, pfring_s.drop);
+        SC_ATOMIC_SET(ptv->livedev->drop, kstats.tp_drops);
     }
 }
 
index b7993768b322032f595ead85b36310201d95cdb0..0c1068fdd24923103239d3e3472979018c202f9b 100644 (file)
@@ -49,6 +49,7 @@ int LiveRegisterDevice(char *dev)
 
     pd->dev = SCStrdup(dev);
     SC_ATOMIC_INIT(pd->pkts);
+    SC_ATOMIC_INIT(pd->drop);
     SC_ATOMIC_INIT(pd->invalid_checksums);
     pd->ignore_checksum = 0;
     TAILQ_INSERT_TAIL(&live_devices, pd, next);
index 5c73e1c9b38b3f0d42c50c43b4eb8244f663349c..262ba0691ba06ad69a192afa356d0b01b9bd93ca 100644 (file)
@@ -26,6 +26,7 @@ typedef struct LiveDevice_ {
     char *dev;  /**< the device (e.g. "eth0") */
     int ignore_checksum;
     SC_ATOMIC_DECLARE(unsigned int, pkts);
+    SC_ATOMIC_DECLARE(unsigned int, drop);
     SC_ATOMIC_DECLARE(unsigned int, invalid_checksums);
     TAILQ_ENTRY(LiveDevice_) next;
 } LiveDevice;