stats: register ips capture stats for each packet thread

ReleasePacket based verdicts can happen in several threads,
depending on the runmode details.

Only register and update if in IPS mode.
pull/9288/head
Victor Julien 2 years ago
parent 735c37c668
commit 6a1138e2b1

@ -834,6 +834,9 @@ thread_local CaptureStats t_capture_stats;
/* TODO drop reason stats! */
void CaptureStatsUpdate(ThreadVars *tv, const Packet *p)
{
if (!EngineModeIsIPS() || PKT_IS_PSEUDOPKT(p))
return;
CaptureStats *s = &t_capture_stats;
if (unlikely(PacketCheckAction(p, ACTION_REJECT_ANY))) {
StatsIncr(tv, s->counter_ips_rejected);
@ -848,11 +851,13 @@ void CaptureStatsUpdate(ThreadVars *tv, const Packet *p)
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);
s->counter_ips_replaced = StatsRegisterCounter("ips.replaced", tv);
if (EngineModeIsIPS()) {
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);
s->counter_ips_replaced = StatsRegisterCounter("ips.replaced", tv);
}
}
void DecodeGlobalConfig(void)

@ -775,10 +775,7 @@ TmEcode ReceiveNFQThreadDeinit(ThreadVars *t, void *data)
TmEcode VerdictNFQThreadInit(ThreadVars *tv, const void *initdata, void **data)
{
NFQThreadVars *ntv = (NFQThreadVars *) initdata;
CaptureStatsSetup(tv);
NFQThreadVars *ntv = (NFQThreadVars *)initdata;
*data = (void *)ntv;
return TM_ECODE_OK;
}

@ -821,9 +821,6 @@ TmEcode VerdictWinDivertThreadInit(ThreadVars *tv, const void *initdata,
SCEnter();
WinDivertThreadVars *wd_tv = (WinDivertThreadVars *)initdata;
CaptureStatsSetup(tv);
*data = wd_tv;
SCReturnInt(TM_ECODE_OK);

@ -242,7 +242,7 @@ static void *TmThreadsSlotPktAcqLoop(void *td)
/* Drop the capabilities for this thread */
SCDropCaps(tv);
CaptureStatsSetup(tv);
PacketPoolInit();
/* check if we are setup properly */
@ -372,6 +372,7 @@ static void *TmThreadsSlotVar(void *td)
char run = 1;
TmEcode r = TM_ECODE_OK;
CaptureStatsSetup(tv);
PacketPoolInit();//Empty();
SCSetThreadName(tv->name);

Loading…
Cancel
Save