From: Victor Julien Date: Sun, 17 Dec 2023 09:24:56 +0000 (+0100) Subject: detect: implement --qa-skip-prefilter X-Git-Tag: suricata-8.0.0-beta1~1875 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd66504a436ef87d88260badb9efdd24b8169327;p=thirdparty%2Fsuricata.git detect: implement --qa-skip-prefilter Option meant for testing performance of rule engine w/o prefilter optimizations. --- diff --git a/src/detect-engine-build.c b/src/detect-engine-build.c index 70611df46f..b9d0c9a438 100644 --- a/src/detect-engine-build.c +++ b/src/detect-engine-build.c @@ -1371,6 +1371,7 @@ void SignatureSetType(DetectEngineCtx *de_ctx, Signature *s) } } +extern int g_skip_prefilter; /** * \brief Preprocess signature, classify ip-only, etc, build sig array * @@ -1459,9 +1460,8 @@ int SigPrepareStage1(DetectEngineCtx *de_ctx) RuleSetWhitelist(s); /* if keyword engines are enabled in the config, handle them here */ - if (de_ctx->prefilter_setting == DETECT_PREFILTER_AUTO && - !(s->flags & SIG_FLAG_PREFILTER)) - { + if (!g_skip_prefilter && de_ctx->prefilter_setting == DETECT_PREFILTER_AUTO && + !(s->flags & SIG_FLAG_PREFILTER)) { int prefilter_list = DETECT_TBLSIZE; // TODO buffers? diff --git a/src/detect-engine-mpm.c b/src/detect-engine-mpm.c index 6a637ffc64..84f9a6c8fe 100644 --- a/src/detect-engine-mpm.c +++ b/src/detect-engine-mpm.c @@ -1066,8 +1066,13 @@ static SigMatch *GetMpmForList(const Signature *s, SigMatch *list, SigMatch *mpm return mpm_sm; } +int g_skip_prefilter = 0; + void RetrieveFPForSig(const DetectEngineCtx *de_ctx, Signature *s) { + if (g_skip_prefilter) + return; + if (s->init_data->mpm_sm != NULL) return; diff --git a/src/suricata.c b/src/suricata.c index ffa970ae72..257cb7bc1d 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -1302,6 +1302,8 @@ static bool IsLogDirectoryWritable(const char* str) return false; } +extern int g_skip_prefilter; + static TmEcode ParseCommandLine(int argc, char** argv, SCInstance *suri) { int opt; @@ -1396,6 +1398,9 @@ static TmEcode ParseCommandLine(int argc, char** argv, SCInstance *suri) {"simulate-packet-tcp-ssn-memcap", required_argument, 0, 0}, {"simulate-packet-defrag-memcap", required_argument, 0, 0}, {"simulate-alert-queue-realloc-failure", 0, 0, 0}, + + {"qa-skip-prefilter", 0, &g_skip_prefilter, 1 }, + {"include", required_argument, 0, 0}, {NULL, 0, NULL, 0}