/** is the stats counter enabled? */
static char stats_enabled = TRUE;
+/**< add decoder events as stats? enabled by default */
+bool stats_decoder_events = true;
+/**< add stream events as stats? disabled by default */
+bool stats_stream_events = false;
+
static int StatsOutput(ThreadVars *tv);
static int StatsThreadRegister(const char *thread_name, StatsPublicThreadContext *);
void StatsReleaseCounters(StatsCounter *head);
const char *interval = ConfNodeLookupChildValue(stats, "interval");
if (interval != NULL)
stats_tts = (uint32_t) atoi(interval);
+
+ int b;
+ int ret = ConfGetChildValueBool(stats, "decoder-events", &b);
+ if (ret) {
+ stats_decoder_events = (b == 1);
+ }
+ ret = ConfGetChildValueBool(stats, "stream-events", &b);
+ if (ret) {
+ stats_stream_events = (b == 1);
+ }
}
if (!OutputStatsLoggersRegistered()) {
/* Cisco Fabric Path/DCE events. */
DCE_PKT_TOO_SMALL,
+ /* END OF DECODE EVENTS ON SINGLE PACKET */
+ DECODE_EVENT_PACKET_MAX = DCE_PKT_TOO_SMALL,
+
/* STREAM EVENTS */
STREAM_3WHS_ACK_IN_WRONG_DIR,
STREAM_3WHS_ASYNC_WRONG_SEQ,
#include "output.h"
#include "output-flow.h"
+extern bool stats_decoder_events;
+extern bool stats_stream_events;
+
int DecodeTunnel(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p,
uint8_t *pkt, uint32_t len, PacketQueue *pq, enum DecodeTunnelProto proto)
{
DecodeThreadVars *dtv, Packet *p)
{
for (uint8_t i = 0; i < p->events.cnt; i++) {
- StatsIncr(tv, dtv->counter_engine_events[p->events.events[i]]);
+ const uint8_t e = p->events.events[i];
+
+ if (e <= DECODE_EVENT_PACKET_MAX && !stats_decoder_events)
+ continue;
+ if (e > DECODE_EVENT_PACKET_MAX && !stats_stream_events)
+ continue;
+ StatsIncr(tv, dtv->counter_engine_events[e]);
}
}
for (int i = 0; i < DECODE_EVENT_MAX; i++) {
BUG_ON(i != (int)DEvents[i].code);
+
+ if (i <= DECODE_EVENT_PACKET_MAX && !stats_decoder_events)
+ continue;
+ if (i > DECODE_EVENT_PACKET_MAX && !stats_stream_events)
+ continue;
+
dtv->counter_engine_events[i] = StatsRegisterCounter(
DEvents[i].event_name, tv);
}
# The interval field (in seconds) controls at what interval
# the loggers are invoked.
interval: 8
+ # Add decode events as stats.
+ #decoder-events: true
+ # Add stream events as stats.
+ #stream-events: false
# Configure the type of alert (and other) logging you would like.
outputs: