From: Eric Leblond Date: Thu, 15 Nov 2012 08:56:17 +0000 (+0100) Subject: Add atomic counter for iface drop. X-Git-Tag: suricata-1.4rc1~39 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d0260b27e642c0377b6d95e3411d53cc311ded9;p=thirdparty%2Fsuricata.git Add atomic counter for iface drop. --- diff --git a/src/source-af-packet.c b/src/source-af-packet.c index 6848a333e9..9305e7d364 100644 --- a/src/source-af-packet.c +++ b/src/source-af-packet.c @@ -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 } diff --git a/src/source-pcap.c b/src/source-pcap.c index 2dff9c1d25..6d05f1939b 100644 --- a/src/source-pcap.c +++ b/src/source-pcap.c @@ -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); } } diff --git a/src/source-pfring.c b/src/source-pfring.c index ddf3b07451..16b89a037e 100644 --- a/src/source-pfring.c +++ b/src/source-pfring.c @@ -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); } } diff --git a/src/util-device.c b/src/util-device.c index b7993768b3..0c1068fdd2 100644 --- a/src/util-device.c +++ b/src/util-device.c @@ -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); diff --git a/src/util-device.h b/src/util-device.h index 5c73e1c9b3..262ba0691b 100644 --- a/src/util-device.h +++ b/src/util-device.h @@ -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;