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! */ /* TODO drop reason stats! */
void CaptureStatsUpdate(ThreadVars *tv, const Packet *p) void CaptureStatsUpdate(ThreadVars *tv, const Packet *p)
{ {
if (!EngineModeIsIPS() || PKT_IS_PSEUDOPKT(p))
return;
CaptureStats *s = &t_capture_stats; CaptureStats *s = &t_capture_stats;
if (unlikely(PacketCheckAction(p, ACTION_REJECT_ANY))) { if (unlikely(PacketCheckAction(p, ACTION_REJECT_ANY))) {
StatsIncr(tv, s->counter_ips_rejected); StatsIncr(tv, s->counter_ips_rejected);
@ -848,12 +851,14 @@ void CaptureStatsUpdate(ThreadVars *tv, const Packet *p)
void CaptureStatsSetup(ThreadVars *tv) void CaptureStatsSetup(ThreadVars *tv)
{ {
if (EngineModeIsIPS()) {
CaptureStats *s = &t_capture_stats; CaptureStats *s = &t_capture_stats;
s->counter_ips_accepted = StatsRegisterCounter("ips.accepted", tv); s->counter_ips_accepted = StatsRegisterCounter("ips.accepted", tv);
s->counter_ips_blocked = StatsRegisterCounter("ips.blocked", tv); s->counter_ips_blocked = StatsRegisterCounter("ips.blocked", tv);
s->counter_ips_rejected = StatsRegisterCounter("ips.rejected", tv); s->counter_ips_rejected = StatsRegisterCounter("ips.rejected", tv);
s->counter_ips_replaced = StatsRegisterCounter("ips.replaced", tv); s->counter_ips_replaced = StatsRegisterCounter("ips.replaced", tv);
} }
}
void DecodeGlobalConfig(void) void DecodeGlobalConfig(void)
{ {

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

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

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

Loading…
Cancel
Save