Split the defrag counters into ipv4 and ipv6.

remotes/origin/master-1.0.x
Jason Ish 15 years ago committed by Victor Julien
parent 2cb2989ad8
commit e87d4f8a28

@ -87,13 +87,24 @@ void DecodeRegisterPerfCounters(DecodeThreadVars *dtv, ThreadVars *tv)
dtv->counter_max_pkt_size = SCPerfTVRegisterMaxCounter("decoder.max_pkt_size", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_fragments = SCPerfTVRegisterCounter("defrag.fragments",
tv, SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_reassembled =
SCPerfTVRegisterCounter("defrag.reassembled", tv, SC_PERF_TYPE_UINT64,
"NULL");
dtv->counter_defrag_timeouts = SCPerfTVRegisterCounter("defrag.timeouts",
tv, SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv4_fragments =
SCPerfTVRegisterCounter("defrag.ipv4.fragments", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv4_reassembled =
SCPerfTVRegisterCounter("defrag.ipv4.reassembled", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv4_timeouts =
SCPerfTVRegisterCounter("defrag.ipv4.timeouts", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv6_fragments =
SCPerfTVRegisterCounter("defrag.ipv6.fragments", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv6_reassembled =
SCPerfTVRegisterCounter("defrag.ipv6.reassembled", tv,
SC_PERF_TYPE_UINT64, "NULL");
dtv->counter_defrag_ipv6_timeouts =
SCPerfTVRegisterCounter("defrag.ipv6.timeouts", tv,
SC_PERF_TYPE_UINT64, "NULL");
tv->sc_perf_pca = SCPerfGetAllCountersArray(&tv->sc_perf_pctx);
SCPerfAddToClubbedTMTable(tv->name, &tv->sc_perf_pctx);

@ -353,9 +353,12 @@ typedef struct DecodeThreadVars_
uint16_t counter_max_pkt_size;
/** frag stats - defrag runs in the context of the decoder. */
uint16_t counter_defrag_fragments;
uint16_t counter_defrag_reassembled;
uint16_t counter_defrag_timeouts;
uint16_t counter_defrag_ipv4_fragments;
uint16_t counter_defrag_ipv4_reassembled;
uint16_t counter_defrag_ipv4_timeouts;
uint16_t counter_defrag_ipv6_fragments;
uint16_t counter_defrag_ipv6_reassembled;
uint16_t counter_defrag_ipv6_timeouts;
} DecodeThreadVars;
/* clear key vars so we don't need to call the expensive

@ -921,13 +921,20 @@ insert:
}
if (tracker->seen_last) {
if (tracker->af == AF_INET)
if (tracker->af == AF_INET) {
r = Defrag4Reassemble(tv, dc, tracker, p);
else if (tracker->af == AF_INET6)
if (r != NULL && tv != NULL && dtv != NULL) {
SCPerfCounterIncr(dtv->counter_defrag_ipv4_reassembled,
tv->sc_perf_pca);
}
}
else if (tracker->af == AF_INET6) {
r = Defrag6Reassemble(tv, dc, tracker, p);
}
if (r != NULL && tv != NULL && dtv != NULL) {
SCPerfCounterIncr(dtv->counter_defrag_reassembled, tv->sc_perf_pca);
if (r != NULL && tv != NULL && dtv != NULL) {
SCPerfCounterIncr(dtv->counter_defrag_ipv6_reassembled,
tv->sc_perf_pca);
}
}
}
done:
@ -964,8 +971,14 @@ DefragTimeoutTracker(ThreadVars *tv, DecodeThreadVars *dtv, DefragContext *dc,
DefragTrackerReset(tracker);
PoolReturn(dc->tracker_pool, tracker);
if (tv != NULL && dtv != NULL) {
SCPerfCounterIncr(dtv->counter_defrag_timeouts,
tv->sc_perf_pca);
if (tracker->af == AF_INET) {
SCPerfCounterIncr(dtv->counter_defrag_ipv4_timeouts,
tv->sc_perf_pca);
}
else if (tracker->af == AF_INET6) {
SCPerfCounterIncr(dtv->counter_defrag_ipv6_timeouts,
tv->sc_perf_pca);
}
}
return;
}
@ -1068,7 +1081,14 @@ Defrag(ThreadVars *tv, DecodeThreadVars *dtv, DefragContext *dc, Packet *p)
}
if (tv != NULL && dtv != NULL) {
SCPerfCounterIncr(dtv->counter_defrag_fragments, tv->sc_perf_pca);
if (af == AF_INET) {
SCPerfCounterIncr(dtv->counter_defrag_ipv4_fragments,
tv->sc_perf_pca);
}
else if (af == AF_INET6) {
SCPerfCounterIncr(dtv->counter_defrag_ipv6_fragments,
tv->sc_perf_pca);
}
}
/* Create a lookup key. */

Loading…
Cancel
Save