/* run tx/state inspection */
if (pflow && pflow->alstate) {
+ PACKET_PROFILING_DETECT_START(p, PROF_DETECT_TX);
DetectRunTx(th_v, de_ctx, det_ctx, p, pflow, &scratch);
+ PACKET_PROFILING_DETECT_END(p, PROF_DETECT_TX);
}
end:
}
PACKET_PROFILING_DETECT_END(p, PROF_DETECT_NONMPMLIST);
- PACKET_PROFILING_DETECT_START(p, PROF_DETECT_PREFILTER);
/* run the prefilter engines */
Prefilter(det_ctx, scratch->sgh, p, scratch->flow_flags);
PACKET_PROFILING_DETECT_START(p, PROF_DETECT_PF_SORT2);
DetectPrefilterMergeSort(de_ctx, det_ctx);
PACKET_PROFILING_DETECT_END(p, PROF_DETECT_PF_SORT2);
- PACKET_PROFILING_DETECT_END(p, PROF_DETECT_PREFILTER);
#ifdef PROFILING
if (tv) {
uint8_t flow_flags = 0; /* flow/state flags */
bool app_decoder_events = false;
+ PACKET_PROFILING_DETECT_START(p, PROF_DETECT_SETUP);
+
#ifdef UNITTESTS
p->alerts.cnt = 0;
#endif
}
DetectRunScratchpad pad = { alproto, flow_flags, app_decoder_events, NULL, 0 };
+ PACKET_PROFILING_DETECT_END(p, PROF_DETECT_SETUP);
return pad;
}
{
/* see if we need to increment the inspect_id and reset the de_state */
if (pflow && pflow->alstate && AppLayerParserProtocolSupportsTxs(p->proto, scratch->alproto)) {
- PACKET_PROFILING_DETECT_START(p, PROF_DETECT_STATEFUL_UPDATE);
+ PACKET_PROFILING_DETECT_START(p, PROF_DETECT_TX_UPDATE);
DeStateUpdateInspectTransactionId(pflow, scratch->flow_flags, (scratch->sgh == NULL));
- PACKET_PROFILING_DETECT_END(p, PROF_DETECT_STATEFUL_UPDATE);
+ PACKET_PROFILING_DETECT_END(p, PROF_DETECT_TX_UPDATE);
}
/* so now let's iterate the alerts and remove the ones after a pass rule
/* run prefilter engines and merge results into a candidates array */
if (sgh->tx_engines) {
+ PACKET_PROFILING_DETECT_START(p, PROF_DETECT_PF_TX);
DetectRunPrefilterTx(det_ctx, sgh, p, ipproto, flow_flags, alproto,
alstate, &tx);
+ PACKET_PROFILING_DETECT_END(p, PROF_DETECT_PF_TX);
SCLogDebug("%p/%"PRIu64" rules added from prefilter: %u candidates",
tx.tx_ptr, tx_id, det_ctx->pmq.rule_id_array_cnt);
}
/* call individual rule inspection */
+ RULE_PROFILING_START(p);
const int r = DetectRunTxInspectRule(tv, de_ctx, det_ctx, p, f, flow_flags,
alstate, &tx, s, inspect_flags, can, scratch);
if (r == 1) {
}
}
DetectVarProcessList(det_ctx, p->flow, p);
+ RULE_PROFILING_END(det_ctx, s, r, p);
}
det_ctx->tx_id = 0;
const char * PacketProfileDetectIdToString(PacketProfileDetectId id)
{
switch (id) {
+ CASE_CODE (PROF_DETECT_SETUP);
+ CASE_CODE (PROF_DETECT_GETSGH);
CASE_CODE (PROF_DETECT_IPONLY);
CASE_CODE (PROF_DETECT_RULES);
- CASE_CODE (PROF_DETECT_PREFILTER);
CASE_CODE (PROF_DETECT_PF_PKT);
CASE_CODE (PROF_DETECT_PF_PAYLOAD);
CASE_CODE (PROF_DETECT_PF_TX);
CASE_CODE (PROF_DETECT_PF_SORT1);
CASE_CODE (PROF_DETECT_PF_SORT2);
- CASE_CODE (PROF_DETECT_STATEFUL_START);
- CASE_CODE (PROF_DETECT_STATEFUL_CONT);
- CASE_CODE (PROF_DETECT_STATEFUL_UPDATE);
+ CASE_CODE (PROF_DETECT_NONMPMLIST);
+ CASE_CODE (PROF_DETECT_TX);
CASE_CODE (PROF_DETECT_ALERT);
+ CASE_CODE (PROF_DETECT_TX_UPDATE);
CASE_CODE (PROF_DETECT_CLEANUP);
- CASE_CODE (PROF_DETECT_GETSGH);
- CASE_CODE (PROF_DETECT_NONMPMLIST);
default:
return "UNKNOWN";
}