]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: implement --qa-skip-prefilter
authorVictor Julien <vjulien@oisf.net>
Sun, 17 Dec 2023 09:24:56 +0000 (10:24 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 8 Jan 2024 19:23:28 +0000 (20:23 +0100)
Option meant for testing performance of rule engine w/o prefilter
optimizations.

src/detect-engine-build.c
src/detect-engine-mpm.c
src/suricata.c

index 70611df46f5c67159e544db124e872ede180557f..b9d0c9a4380bf868b346c6d34df36b8c00160d95 100644 (file)
@@ -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?
index 6a637ffc6431c6e0cd25f8ea1ffc10702d779893..84f9a6c8feabc5068e22cd8505a569ed0cd10573 100644 (file)
@@ -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;
 
index ffa970ae7297a49c9e2ee1c468d9c0fdcc26a914..257cb7bc1df630380e856f935eed82e1726928b0 100644 (file)
@@ -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}