|
suricata
|
#include "suricata-common.h"#include "util-mpm.h"#include "util-debug.h"#include "util-mpm-ac.h"#include "util-mpm-ac-ks.h"#include "util-mpm-hs.h"#include "util-hashlist.h"#include "detect-engine.h"#include "util-misc.h"#include "conf.h"#include "conf-yaml-loader.h"#include "queue.h"#include "util-unittest.h"#include "util-memcpy.h"
Go to the source code of this file.
Macros | |
| #define | DEFAULT_MPM MPM_AC |
Functions | |
| int32_t | MpmFactoryRegisterMpmCtxProfile (DetectEngineCtx *de_ctx, const char *name, const int sm_list, const AppProto alproto) |
| Register a new Mpm Context. More... | |
| int32_t | MpmFactoryIsMpmCtxAvailable (const DetectEngineCtx *de_ctx, const MpmCtx *mpm_ctx) |
| MpmCtx * | MpmFactoryGetMpmCtxForProfile (const DetectEngineCtx *de_ctx, int32_t id, int direction) |
| void | MpmFactoryReClaimMpmCtx (const DetectEngineCtx *de_ctx, MpmCtx *mpm_ctx) |
| void | MpmFactoryDeRegisterAllMpmCtxProfiles (DetectEngineCtx *de_ctx) |
| void | MpmInitThreadCtx (MpmThreadCtx *mpm_thread_ctx, uint16_t matcher) |
| void | MpmDestroyThreadCtx (MpmThreadCtx *mpm_thread_ctx, const uint16_t matcher) |
| void | MpmInitCtx (MpmCtx *mpm_ctx, uint8_t matcher) |
| void | MpmTableSetup (void) |
| int | MpmAddPatternCS (struct MpmCtx_ *mpm_ctx, uint8_t *pat, uint16_t patlen, uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags) |
| int | SCMpmAddPatternCI (MpmCtx *mpm_ctx, const uint8_t *pat, uint16_t patlen, uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags) |
| void | MpmFreePattern (MpmCtx *mpm_ctx, MpmPattern *p) |
| int | MpmAddPattern (MpmCtx *mpm_ctx, const uint8_t *pat, uint16_t patlen, uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags) |
| void | MpmRegisterTests (void) |
Variables | |
| MpmTableElmt | mpm_table [MPM_TABLE_SIZE] |
| uint8_t | mpm_default_matcher |
Pattern matcher utility Functions
Definition in file util-mpm.c.
| #define DEFAULT_MPM MPM_AC |
Definition at line 222 of file util-mpm.c.
| int MpmAddPattern | ( | MpmCtx * | mpm_ctx, |
| const uint8_t * | pat, | ||
| uint16_t | patlen, | ||
| uint16_t | offset, | ||
| uint16_t | depth, | ||
| uint32_t | pid, | ||
| SigIntId | sid, | ||
| uint8_t | flags | ||
| ) |
Definition at line 435 of file util-mpm.c.
References flags, MPM_PATTERN_CTX_OWNS_ID, SCLogDebug, and SCLogWarning.
Referenced by SCACAddPatternCI(), SCACAddPatternCS(), SCACTileAddPatternCI(), and SCACTileAddPatternCS().

| int MpmAddPatternCS | ( | struct MpmCtx_ * | mpm_ctx, |
| uint8_t * | pat, | ||
| uint16_t | patlen, | ||
| uint16_t | offset, | ||
| uint16_t | depth, | ||
| uint32_t | pid, | ||
| SigIntId | sid, | ||
| uint8_t | flags | ||
| ) |
Definition at line 249 of file util-mpm.c.
References MpmTableElmt_::AddPattern, flags, mpm_table, MpmCtx_::mpm_type, and offset.
| void MpmDestroyThreadCtx | ( | MpmThreadCtx * | mpm_thread_ctx, |
| const uint16_t | matcher | ||
| ) |
Definition at line 202 of file util-mpm.c.
References MpmTableElmt_::DestroyThreadCtx, and mpm_table.
Referenced by PatternMatchThreadDestroy().

| void MpmFactoryDeRegisterAllMpmCtxProfiles | ( | DetectEngineCtx * | de_ctx | ) |
Definition at line 168 of file util-mpm.c.
References de_ctx, MpmTableElmt_::DestroyCtx, MpmCtxFactoryContainer_::items, DetectEngineCtx_::mpm_ctx_factory_container, MpmCtxFactoryItem::mpm_ctx_tc, MpmCtxFactoryItem::mpm_ctx_ts, MPM_NOTSET, mpm_table, MpmCtx_::mpm_type, next, MpmCtxFactoryItem::next, and SCFree.
Referenced by DetectEngineCtxFree().

| MpmCtx* MpmFactoryGetMpmCtxForProfile | ( | const DetectEngineCtx * | de_ctx, |
| int32_t | id, | ||
| int | direction | ||
| ) |
Definition at line 131 of file util-mpm.c.
References de_ctx, FatalError, MpmCtxFactoryContainer_::items, MpmCtxFactoryContainer_::max_id, DetectEngineCtx_::mpm_ctx_factory_container, MPM_CTX_FACTORY_UNIQUE_CONTEXT, MpmCtxFactoryItem::next, SCCalloc, SCLogError, and unlikely.
Referenced by DetectMpmPrepareAppMpms(), DetectMpmPrepareBuiltinMpms(), DetectMpmPrepareFrameMpms(), and DetectMpmPreparePktMpms().

| int32_t MpmFactoryIsMpmCtxAvailable | ( | const DetectEngineCtx * | de_ctx, |
| const MpmCtx * | mpm_ctx | ||
| ) |
Definition at line 114 of file util-mpm.c.
References de_ctx, MpmCtxFactoryContainer_::items, DetectEngineCtx_::mpm_ctx_factory_container, and MpmCtxFactoryItem::next.
Referenced by MpmFactoryReClaimMpmCtx().

| void MpmFactoryReClaimMpmCtx | ( | const DetectEngineCtx * | de_ctx, |
| MpmCtx * | mpm_ctx | ||
| ) |
Definition at line 156 of file util-mpm.c.
References de_ctx, MpmTableElmt_::DestroyCtx, MPM_NOTSET, mpm_table, MpmCtx_::mpm_type, MpmFactoryIsMpmCtxAvailable(), and SCFree.

| int32_t MpmFactoryRegisterMpmCtxProfile | ( | DetectEngineCtx * | de_ctx, |
| const char * | name, | ||
| const int | sm_list, | ||
| const AppProto | alproto | ||
| ) |
Register a new Mpm Context.
| name | A new profile to be registered to store this MpmCtx. |
| sm_list | sm_list for this name (might be variable with xforms) |
| alproto | app proto or ALPROTO_UNKNOWN if not for app-layer |
| id | Return the id created for the new MpmCtx profile. |
Definition at line 59 of file util-mpm.c.
References MpmCtxFactoryItem::alproto, de_ctx, ENGINE_SGH_MPM_FACTORY_CONTEXT_START_ID_RANGE, FatalError, MpmCtx_::flags, MpmCtxFactoryItem::id, MpmCtxFactoryContainer_::items, MpmCtxFactoryContainer_::max_id, DetectEngineCtx_::mpm_ctx_factory_container, MpmCtxFactoryItem::mpm_ctx_tc, MpmCtxFactoryItem::mpm_ctx_ts, MPMCTX_FLAGS_GLOBAL, MpmCtxFactoryItem::name, name, MpmCtxFactoryItem::next, SCCalloc, MpmCtxFactoryItem::sm_list, and unlikely.
Referenced by DetectAppLayerMpmRegisterByParentId(), and DetectEngineFrameMpmRegister().

| void MpmFreePattern | ( | MpmCtx * | mpm_ctx, |
| MpmPattern * | p | ||
| ) |
Definition at line 353 of file util-mpm.c.
References MpmPattern_::ci, MpmPattern_::cs, MpmPattern_::len, MpmCtx_::memory_cnt, MpmCtx_::memory_size, MpmPattern_::original_pat, SCFree, and MpmPattern_::sids.
Referenced by SCACDestroyCtx().

| void MpmInitCtx | ( | MpmCtx * | mpm_ctx, |
| uint8_t | matcher | ||
| ) |
Definition at line 209 of file util-mpm.c.
References MpmTableElmt_::InitCtx, mpm_table, and MpmCtx_::mpm_type.
| void MpmInitThreadCtx | ( | MpmThreadCtx * | mpm_thread_ctx, |
| uint16_t | matcher | ||
| ) |
Definition at line 195 of file util-mpm.c.
References MpmTableElmt_::InitThreadCtx, and mpm_table.
Referenced by PatternMatchThreadPrepare().

| void MpmRegisterTests | ( | void | ) |
Definition at line 570 of file util-mpm.c.
References g_ut_modules, MPM_NOTSET, mpm_table, and MPM_TABLE_SIZE.
| void MpmTableSetup | ( | void | ) |
Definition at line 224 of file util-mpm.c.
References DEFAULT_MPM, mpm_default_matcher, mpm_table, MpmACRegister(), MpmACTileRegister(), MpmHSRegister(), and SCLogInfo.
Referenced by ListAppLayerHooks(), ListAppLayerProtocols(), ListKeywords(), LLVMFuzzerTestOneInput(), PostConfLoadedSetup(), and RunUnittests().


| int SCMpmAddPatternCI | ( | MpmCtx * | mpm_ctx, |
| const uint8_t * | pat, | ||
| uint16_t | patlen, | ||
| uint16_t | offset, | ||
| uint16_t | depth, | ||
| uint32_t | pid, | ||
| SigIntId | sid, | ||
| uint8_t | flags | ||
| ) |
Definition at line 258 of file util-mpm.c.
References MpmTableElmt_::AddPatternNocase, flags, mpm_table, MpmCtx_::mpm_type, and offset.
| uint8_t mpm_default_matcher |
Definition at line 48 of file util-mpm.c.
Referenced by MpmTableSetup(), and PatternMatchDefaultMatcher().
| MpmTableElmt mpm_table[MPM_TABLE_SIZE] |
Definition at line 47 of file util-mpm.c.
Referenced by DetectEngineCtxFree(), DetectMpmPrepareAppMpms(), DetectMpmPrepareBuiltinMpms(), DetectMpmPrepareFrameMpms(), DetectMpmPreparePktMpms(), MpmACRegister(), MpmACTileRegister(), MpmAddPatternCS(), MpmDestroyThreadCtx(), MpmFactoryDeRegisterAllMpmCtxProfiles(), MpmFactoryReClaimMpmCtx(), MpmInitCtx(), MpmInitThreadCtx(), MpmRegisterTests(), MpmTableSetup(), PatternMatchDefaultMatcher(), PatternMatchDestroy(), and SCMpmAddPatternCI().