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 | MpmAddPatternCI (struct MpmCtx_ *mpm_ctx, 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, 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 223 of file util-mpm.c.
int MpmAddPattern | ( | 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 439 of file util-mpm.c.
References flags, MPM_PATTERN_CTX_OWNS_ID, SCLogDebug, and SCLogWarning.
Referenced by SCACAddPatternCI(), SCACAddPatternCS(), SCACTileAddPatternCI(), and SCACTileAddPatternCS().
int MpmAddPatternCI | ( | 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 259 of file util-mpm.c.
References MpmTableElmt_::AddPatternNocase, flags, mpm_table, MpmCtx_::mpm_type, and offset.
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 250 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 203 of file util-mpm.c.
References MpmTableElmt_::DestroyThreadCtx, and mpm_table.
Referenced by PatternMatchThreadDestroy().
void MpmFactoryDeRegisterAllMpmCtxProfiles | ( | DetectEngineCtx * | de_ctx | ) |
Definition at line 169 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 132 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 115 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 157 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, MpmCtxFactoryItem::next, MpmCtxFactoryContainer_::no_of_items, SCCalloc, MpmCtxFactoryItem::sm_list, and unlikely.
Referenced by DetectAppLayerMpmRegisterByParentId(), and DetectEngineFrameMpmRegister().
void MpmFreePattern | ( | MpmCtx * | mpm_ctx, |
MpmPattern * | p | ||
) |
Definition at line 357 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 210 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 196 of file util-mpm.c.
References MpmTableElmt_::InitThreadCtx, and mpm_table.
Referenced by PatternMatchThreadPrepare().
void MpmRegisterTests | ( | void | ) |
Definition at line 575 of file util-mpm.c.
References g_ut_modules, MPM_NOTSET, mpm_table, and MPM_TABLE_SIZE.
void MpmTableSetup | ( | void | ) |
Definition at line 225 of file util-mpm.c.
References DEFAULT_MPM, mpm_default_matcher, mpm_table, MpmACRegister(), MpmACTileRegister(), MpmHSRegister(), and SCLogInfo.
Referenced by ListAppLayerProtocols(), ListKeywords(), LLVMFuzzerTestOneInput(), PostConfLoadedSetup(), and RunUnittests().
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 DetectMpmPrepareAppMpms(), DetectMpmPrepareBuiltinMpms(), DetectMpmPrepareFrameMpms(), DetectMpmPreparePktMpms(), MpmACRegister(), MpmACTileRegister(), MpmAddPatternCI(), MpmAddPatternCS(), MpmDestroyThreadCtx(), MpmFactoryDeRegisterAllMpmCtxProfiles(), MpmFactoryReClaimMpmCtx(), MpmInitCtx(), MpmInitThreadCtx(), MpmRegisterTests(), MpmTableSetup(), PatternMatchDefaultMatcher(), and PatternMatchDestroy().