detect-engine: make mpm & spm part of MT stub ctx

As a intermediary step for Hyperscan (MPM) caching,
the MPM config initialization should be part of the default
detect engine context for later dynamic retrieval.

Ticket: 7893
(cherry picked from commit 08f5abe5e9)
pull/15003/head
Lukas Sismis 4 months ago committed by Victor Julien
parent 4261f5e4e7
commit 4604266685

@ -2503,6 +2503,20 @@ static DetectEngineCtx *DetectEngineCtxInitReal(
de_ctx->filemagic_thread_ctx_id = -1;
de_ctx->tenant_id = tenant_id;
de_ctx->mpm_matcher = PatternMatchDefaultMatcher();
de_ctx->spm_matcher = SinglePatternMatchDefaultMatcher();
if (mpm_table[de_ctx->mpm_matcher].ConfigInit) {
de_ctx->mpm_cfg = mpm_table[de_ctx->mpm_matcher].ConfigInit();
if (de_ctx->mpm_cfg == NULL) {
goto error;
}
}
if (DetectEngineMpmCachingEnabled() && mpm_table[de_ctx->mpm_matcher].ConfigCacheDirSet) {
mpm_table[de_ctx->mpm_matcher].ConfigCacheDirSet(
de_ctx->mpm_cfg, DetectEngineMpmCachingGetPath());
}
if (type == DETECT_ENGINE_TYPE_DD_STUB || type == DETECT_ENGINE_TYPE_MT_STUB) {
de_ctx->version = DetectEngineGetVersion();
SCLogDebug("stub %u with version %u", type, de_ctx->version);
@ -2519,23 +2533,8 @@ static DetectEngineCtx *DetectEngineCtxInitReal(
}
de_ctx->failure_fatal = (failure_fatal == 1);
de_ctx->mpm_matcher = PatternMatchDefaultMatcher();
de_ctx->spm_matcher = SinglePatternMatchDefaultMatcher();
SCLogConfig("pattern matchers: MPM: %s, SPM: %s",
mpm_table[de_ctx->mpm_matcher].name,
spm_table[de_ctx->spm_matcher].name);
if (mpm_table[de_ctx->mpm_matcher].ConfigInit) {
de_ctx->mpm_cfg = mpm_table[de_ctx->mpm_matcher].ConfigInit();
if (de_ctx->mpm_cfg == NULL) {
goto error;
}
}
if (DetectEngineMpmCachingEnabled() && mpm_table[de_ctx->mpm_matcher].ConfigCacheDirSet) {
mpm_table[de_ctx->mpm_matcher].ConfigCacheDirSet(
de_ctx->mpm_cfg, DetectEngineMpmCachingGetPath());
}
SCLogConfig("pattern matchers: MPM: %s, SPM: %s", mpm_table[de_ctx->mpm_matcher].name,
spm_table[de_ctx->spm_matcher].name);
de_ctx->spm_global_thread_ctx = SpmInitGlobalThreadCtx(de_ctx->spm_matcher);
if (de_ctx->spm_global_thread_ctx == NULL) {
SCLogDebug("Unable to alloc SpmGlobalThreadCtx.");

Loading…
Cancel
Save