return NULL;
}
+typedef struct CaptureStats_ {
+ uint16_t counter_ips_accepted;
+ uint16_t counter_ips_blocked;
+ uint16_t counter_ips_rejected;
+ uint16_t counter_ips_replaced;
+} CaptureStats;
+
+thread_local CaptureStats t_capture_stats;
+
/* TODO drop reason stats! */
-void CaptureStatsUpdate(ThreadVars *tv, CaptureStats *s, const Packet *p)
+void CaptureStatsUpdate(ThreadVars *tv, const Packet *p)
{
+ CaptureStats *s = &t_capture_stats;
if (unlikely(PacketCheckAction(p, ACTION_REJECT_ANY))) {
StatsIncr(tv, s->counter_ips_rejected);
} else if (unlikely(PacketCheckAction(p, ACTION_DROP))) {
}
}
-void CaptureStatsSetup(ThreadVars *tv, CaptureStats *s)
+void CaptureStatsSetup(ThreadVars *tv)
{
+ CaptureStats *s = &t_capture_stats;
s->counter_ips_accepted = StatsRegisterCounter("ips.accepted", tv);
s->counter_ips_blocked = StatsRegisterCounter("ips.blocked", tv);
s->counter_ips_rejected = StatsRegisterCounter("ips.rejected", tv);
} DecodeThreadVars;
-typedef struct CaptureStats_ {
-
- uint16_t counter_ips_accepted;
- uint16_t counter_ips_blocked;
- uint16_t counter_ips_rejected;
- uint16_t counter_ips_replaced;
-
-} CaptureStats;
-
-void CaptureStatsUpdate(ThreadVars *tv, CaptureStats *s, const Packet *p);
-void CaptureStatsSetup(ThreadVars *tv, CaptureStats *s);
+void CaptureStatsUpdate(ThreadVars *tv, const Packet *p);
+void CaptureStatsSetup(ThreadVars *tv);
#define PACKET_CLEAR_L4VARS(p) do { \
memset(&(p)->l4vars, 0x00, sizeof((p)->l4vars)); \
char *data; /** Per function and thread data */
int datalen; /** Length of per function and thread data */
-
- CaptureStats stats;
} NFQThreadVars;
/* shared vars for all for nfq queues and threads */
static NFQGlobalVars nfq_g;
{
NFQThreadVars *ntv = (NFQThreadVars *) initdata;
- CaptureStatsSetup(tv, &ntv->stats);
+ CaptureStatsSetup(tv);
*data = (void *)ntv;
return TM_ECODE_OK;
*/
TmEcode VerdictNFQ(ThreadVars *tv, Packet *p, void *data)
{
- NFQThreadVars *ntv = (NFQThreadVars *)data;
/* update counters */
- CaptureStatsUpdate(tv, &ntv->stats, p);
+ CaptureStatsUpdate(tv, p);
/* if this is a tunnel packet we check if we are ready to verdict
* already. */
WinDivertHandle filter_handle;
int thread_num;
- CaptureStats stats;
int64_t qpc_start_time;
int64_t qpc_start_count;
int64_t qpc_freq_usec;
WinDivertThreadVars *wd_tv = WinDivertGetThread(p->windivert_v.thread_num);
/* update counters */
- CaptureStatsUpdate(tv, &wd_tv->stats, p);
+ CaptureStatsUpdate(tv, p);
#ifdef COUNTERS
WinDivertQueueVars *wd_qv = WinDivertGetQueue(wd_tv->thread_num);
WinDivertThreadVars *wd_tv = (WinDivertThreadVars *)initdata;
- CaptureStatsSetup(tv, &wd_tv->stats);
+ CaptureStatsSetup(tv);
*data = wd_tv;