From: Victor Julien Date: Tue, 19 Dec 2023 10:42:42 +0000 (+0100) Subject: mpm: register algo features X-Git-Tag: suricata-8.0.0-beta1~1647 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b499239ef571891b4a0ec7e5f98945d5e78296ef;p=thirdparty%2Fsuricata.git mpm: register algo features This is so patterns can reply on mpm match meaning a full match. Not yet used. --- diff --git a/src/util-mpm-ac-ks.c b/src/util-mpm-ac-ks.c index df36452be3..60bb1b7a9e 100644 --- a/src/util-mpm-ac-ks.c +++ b/src/util-mpm-ac-ks.c @@ -1408,6 +1408,7 @@ void MpmACTileRegister(void) #ifdef UNITTESTS mpm_table[MPM_AC_KS].RegisterUnittests = SCACTileRegisterTests; #endif + mpm_table[MPM_AC_KS].feature_flags = MPM_FEATURE_FLAG_DEPTH | MPM_FEATURE_FLAG_OFFSET; } diff --git a/src/util-mpm-ac.c b/src/util-mpm-ac.c index e7eb63cf4f..e85b6e5032 100644 --- a/src/util-mpm-ac.c +++ b/src/util-mpm-ac.c @@ -1127,6 +1127,7 @@ void MpmACRegister(void) #ifdef UNITTESTS mpm_table[MPM_AC].RegisterUnittests = SCACRegisterTests; #endif + mpm_table[MPM_AC].feature_flags = MPM_FEATURE_FLAG_DEPTH | MPM_FEATURE_FLAG_OFFSET; return; } diff --git a/src/util-mpm-hs.c b/src/util-mpm-hs.c index 5c24199184..b22b6f869d 100644 --- a/src/util-mpm-hs.c +++ b/src/util-mpm-hs.c @@ -1055,6 +1055,7 @@ void MpmHSRegister(void) #ifdef UNITTESTS mpm_table[MPM_HS].RegisterUnittests = SCHSRegisterTests; #endif + mpm_table[MPM_HS].feature_flags = MPM_FEATURE_FLAG_DEPTH | MPM_FEATURE_FLAG_OFFSET; /* Set Hyperscan memory allocators */ SCHSSetAllocators(); } diff --git a/src/util-mpm.h b/src/util-mpm.h index c3b12d8a1a..2df692040a 100644 --- a/src/util-mpm.h +++ b/src/util-mpm.h @@ -138,6 +138,9 @@ typedef struct MpmCtxFactoryContainer_ { * what is passed through the API */ #define MPM_PATTERN_CTX_OWNS_ID 0x20 +#define MPM_FEATURE_FLAG_DEPTH BIT_U8(0) +#define MPM_FEATURE_FLAG_OFFSET BIT_U8(1) + typedef struct MpmTableElmt_ { const char *name; void (*InitCtx)(struct MpmCtx_ *); @@ -166,6 +169,7 @@ typedef struct MpmTableElmt_ { #ifdef UNITTESTS void (*RegisterUnittests)(void); #endif + uint8_t feature_flags; } MpmTableElmt; extern MpmTableElmt mpm_table[MPM_TABLE_SIZE];