suricata
detect-engine.h File Reference
#include "detect.h"
#include "suricata.h"
Include dependency graph for detect-engine.h:

Go to the source code of this file.

Macros

#define DetectEngineGetMaxSigId(de_ctx)   ((de_ctx)->signum)
 

Functions

const char * DetectTableToString (enum DetectTable table)
 
int DetectBufferTypeRegister (const char *name)
 
int DetectBufferTypeGetByName (const char *name)
 
void DetectBufferTypeSupportsMpm (const char *name)
 
void DetectBufferTypeSupportsPacket (const char *name)
 
void DetectBufferTypeSupportsFrames (const char *name)
 
void DetectBufferTypeSupportsTransformations (const char *name)
 
void DetectBufferTypeSupportsMultiInstance (const char *name)
 
int DetectBufferTypeMaxId (void)
 
void DetectBufferTypeCloseRegistration (void)
 
void DetectBufferTypeSetDescriptionByName (const char *name, const char *desc)
 
void DetectBufferTypeRegisterSetupCallback (const char *name, void(*Callback)(const DetectEngineCtx *, Signature *, const DetectBufferType *))
 
void DetectBufferTypeRegisterValidateCallback (const char *name, bool(*ValidateCallback)(const Signature *, const char **sigerror, const DetectBufferType *))
 
int DetectEngineBufferTypeRegisterWithFrameEngines (DetectEngineCtx *de_ctx, const char *name, const int direction, const AppProto alproto, const uint8_t frame_type)
 
int DetectEngineBufferTypeRegister (DetectEngineCtx *de_ctx, const char *name)
 
const char * DetectEngineBufferTypeGetNameById (const DetectEngineCtx *de_ctx, const int id)
 
const DetectBufferType * DetectEngineBufferTypeGetById (const DetectEngineCtx *de_ctx, const int id)
 
bool DetectEngineBufferTypeSupportsMpmGetById (const DetectEngineCtx *de_ctx, const int id)
 
bool DetectEngineBufferTypeSupportsPacketGetById (const DetectEngineCtx *de_ctx, const int id)
 
bool DetectEngineBufferTypeSupportsMultiInstanceGetById (const DetectEngineCtx *de_ctx, const int id)
 
bool DetectEngineBufferTypeSupportsFramesGetById (const DetectEngineCtx *de_ctx, const int id)
 
const char * DetectEngineBufferTypeGetDescriptionById (const DetectEngineCtx *de_ctx, const int id)
 
int DetectEngineBufferTypeGetByIdTransforms (DetectEngineCtx *de_ctx, const int id, TransformData *transforms, uint8_t transform_cnt)
 
void DetectEngineBufferRunSetupCallback (const DetectEngineCtx *de_ctx, const int id, Signature *s)
 
bool DetectEngineBufferRunValidateCallback (const DetectEngineCtx *de_ctx, const int id, const Signature *s, const char **sigerror)
 
bool DetectEngineBufferTypeValidateTransform (DetectEngineCtx *de_ctx, int sm_list, const uint8_t *content, uint16_t content_len, const char **namestr)
 Check content byte array compatibility with transforms. More...
 
void DetectEngineBufferTypeSupportsFrames (DetectEngineCtx *de_ctx, const char *name)
 
void DetectEngineBufferTypeSupportsPacket (DetectEngineCtx *de_ctx, const char *name)
 
void DetectEngineBufferTypeSupportsMpm (DetectEngineCtx *de_ctx, const char *name)
 
void DetectEngineBufferTypeSupportsTransformations (DetectEngineCtx *de_ctx, const char *name)
 
DetectEngineCtx * DetectEngineCtxInitWithPrefix (const char *prefix, uint32_t tenant_id)
 
DetectEngineCtx * DetectEngineCtxInit (void)
 
DetectEngineCtx * DetectEngineCtxInitStubForDD (void)
 
DetectEngineCtx * DetectEngineCtxInitStubForMT (void)
 
void DetectEngineCtxFree (DetectEngineCtx *)
 Free a DetectEngineCtx:: More...
 
int DetectEngineThreadCtxGetJsonContext (DetectEngineThreadCtx *det_ctx)
 
TmEcode DetectEngineThreadCtxInit (ThreadVars *, void *, void **)
 initialize thread specific detection engine context More...
 
TmEcode DetectEngineThreadCtxDeinit (ThreadVars *, void *)
 
bool DetectEngineMpmCachingEnabled (void)
 
const char * DetectEngineMpmCachingGetPath (void)
 
void DetectEngineMpmCacheService (uint32_t op_flags)
 
void DetectEngineResetMaxSigId (DetectEngineCtx *)
 
void DetectEngineRegisterTests (void)
 
const char * DetectSigmatchListEnumToString (enum DetectSigmatchListEnum type)
 
uint32_t DetectEngineGetVersion (void)
 
void DetectEngineBumpVersion (void)
 
int DetectEngineAddToMaster (DetectEngineCtx *de_ctx)
 
DetectEngineCtx * DetectEngineGetCurrent (void)
 
DetectEngineCtx * DetectEngineGetByTenantId (uint32_t tenant_id)
 
void DetectEnginePruneFreeList (void)
 
int DetectEngineMoveToFreeList (DetectEngineCtx *de_ctx)
 
void DetectEngineClearMaster (void)
 
DetectEngineCtx * DetectEngineReference (DetectEngineCtx *)
 
void DetectEngineDeReference (DetectEngineCtx **de_ctx)
 
int DetectEngineReload (const SCInstance *suri)
 Reload the detection engine. More...
 
int DetectEngineEnabled (void)
 Check if detection is enabled. More...
 
int DetectEngineMTApply (void)
 
bool DetectEngineMultiTenantEnabled (void)
 
int DetectEngineMultiTenantSetup (const bool unix_socket)
 setup multi-detect / multi-tenancy More...
 
int DetectEngineReloadStart (void)
 
int DetectEngineReloadIsStart (void)
 
void DetectEngineReloadSetIdle (void)
 
int DetectEngineReloadIsIdle (void)
 
int DetectEngineLoadTenantBlocking (uint32_t tenant_id, const char *yaml)
 Load a tenant and wait for loading to complete. More...
 
int DetectEngineReloadTenantBlocking (uint32_t tenant_id, const char *yaml, int reload_cnt)
 Reload a tenant and wait for loading to complete. More...
 
int DetectEngineReloadTenantsBlocking (const int reload_cnt)
 Reload all tenants and wait for loading to complete. More...
 
int DetectEngineTenantRegisterLivedev (uint32_t tenant_id, int device_id)
 
int DetectEngineTenantRegisterVlanId (uint32_t tenant_id, uint16_t vlan_id)
 
int DetectEngineTenantUnregisterVlanId (uint32_t tenant_id, uint16_t vlan_id)
 
int DetectEngineTenantRegisterPcapFile (uint32_t tenant_id)
 
int DetectEngineTenantUnregisterPcapFile (uint32_t tenant_id)
 
uint8_t DetectEngineInspectGenericList (DetectEngineCtx *, DetectEngineThreadCtx *, const struct DetectEngineAppInspectionEngine_ *, const Signature *, Flow *, uint8_t, void *, void *, uint64_t)
 Do the content inspection & validation for a signature. More...
 
uint8_t DetectEngineInspectBufferGeneric (DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, const DetectEngineAppInspectionEngine *engine, const Signature *s, Flow *f, uint8_t flags, void *alstate, void *txv, uint64_t tx_id)
 Do the content inspection & validation for a signature. More...
 
uint8_t DetectEngineInspectBufferSingle (DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, const DetectEngineAppInspectionEngine *engine, const Signature *s, Flow *f, uint8_t flags, void *alstate, void *txv, uint64_t tx_id)
 Do the content inspection & validation for a signature. More...
 
InspectionBuffer * DetectGetSingleData (struct DetectEngineThreadCtx_ *det_ctx, const DetectEngineTransforms *transforms, Flow *f, const uint8_t flow_flags, void *txv, const int list_id, InspectionSingleBufferGetDataPtr GetBuf)
 
InspectionBuffer * DetectGetMultiData (struct DetectEngineThreadCtx_ *det_ctx, const DetectEngineTransforms *transforms, Flow *f, const uint8_t flow_flags, void *txv, const int list_id, uint32_t index, InspectionMultiBufferGetDataPtr GetBuf)
 
uint8_t DetectEngineInspectMultiBufferGeneric (DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, const DetectEngineAppInspectionEngine *engine, const Signature *s, Flow *f, uint8_t flags, void *alstate, void *txv, uint64_t tx_id)
 
int DetectEngineInspectPktBufferGeneric (DetectEngineThreadCtx *det_ctx, const DetectEnginePktInspectionEngine *engine, const Signature *s, Packet *p, uint8_t *alert_flags)
 Do the content inspection & validation for a signature. More...
 
void DetectAppLayerInspectEngineRegister (const char *name, AppProto alproto, uint32_t dir, uint8_t progress, InspectEngineFuncPtr Callback2, InspectionBufferGetDataPtr GetData)
 Registers an app inspection engine. More...
 
void DetectAppLayerInspectEngineRegisterSubState (const char *name, AppProto alproto, uint32_t dir, uint8_t type, uint8_t progress, InspectEngineFuncPtr Callback2, InspectionBufferGetDataPtr GetData)
 register an app inspection engine for a tx type More...
 
void DetectAppLayerInspectEngineRegisterSingle (const char *name, AppProto alproto, uint32_t dir, uint8_t progress, InspectEngineFuncPtr Callback2, InspectionSingleBufferGetDataPtr GetData)
 
void DetectAppLayerMultiRegisterSubState (const char *name, AppProto alproto, uint32_t dir, uint8_t sub_state, uint8_t progress, InspectionMultiBufferGetDataPtr GetData, int priority)
 
void DetectAppLayerMultiRegister (const char *name, AppProto alproto, uint32_t dir, uint8_t progress, InspectionMultiBufferGetDataPtr GetData, int priority)
 
void DetectPktInspectEngineRegister (const char *name, InspectionBufferGetPktDataPtr GetPktData, InspectionBufferPktInspectFunc Callback)
 register inspect engine at start up time More...
 
void DetectEngineFrameInspectEngineRegister (DetectEngineCtx *de_ctx, const char *name, int dir, InspectionBufferFrameInspectFunc Callback, AppProto alproto, uint8_t type)
 register inspect engine at start up time More...
 
int DetectEngineAppInspectionEngine2Signature (DetectEngineCtx *de_ctx, Signature *s)
 
void DetectEngineAppInspectionEngineSignatureFree (DetectEngineCtx *, Signature *s)
 free app inspect engines for a signature More...
 
bool DetectEnginePktInspectionRun (ThreadVars *tv, DetectEngineThreadCtx *det_ctx, const Signature *s, Flow *f, Packet *p, uint8_t *alert_flags)
 
int DetectEnginePktInspectionSetup (Signature *s)
 
void DetectEngineSetParseMetadata (void)
 
void DetectEngineUnsetParseMetadata (void)
 
int DetectEngineMustParseMetadata (void)
 
bool DetectBufferIsPresent (const Signature *s, const uint32_t buf_id)
 
DetectEngineThreadCtx * DetectEngineThreadCtxInitForReload (ThreadVars *tv, DetectEngineCtx *new_de_ctx, int mt)
 
void DetectRunStoreStateTx (const SigGroupHead *sgh, Flow *f, void *tx, uint64_t tx_id, const Signature *s, uint32_t inspect_flags, uint8_t flow_flags, const uint16_t file_no_match)
 
void DetectEngineStateResetTxs (Flow *f)
 Reset de state for active tx' To be used on detect engine reload. More...
 
bool DetectMd5ValidateCallback (const Signature *s, const char **sigerror, const DetectBufferType *map)
 
void DetectLowerSetupCallback (const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
 
void DeStateRegisterTests (void)
 
const char * DetectEngineAppHookToName (const AppProto p, const uint8_t sub_state, const uint8_t state, const uint8_t direction)
 
int DetectEngineAppHookToSmlist (const AppProto p, const uint8_t sub_state, const uint8_t state, const uint8_t direction)
 get the sm_list for a app hook More...
 

Detailed Description

Macro Definition Documentation

◆ DetectEngineGetMaxSigId

#define DetectEngineGetMaxSigId (   de_ctx)    ((de_ctx)->signum)

Definition at line 90 of file detect-engine.h.

Function Documentation

◆ DetectAppLayerInspectEngineRegister()

void DetectAppLayerInspectEngineRegister ( const char *  name,
AppProto  alproto,
uint32_t  dir,
uint8_t  progress,
InspectEngineFuncPtr  Callback2,
InspectionBufferGetDataPtr  GetData 
)

Registers an app inspection engine.

Parameters
nameName of the detection list
alprotoApp layer protocol for which we will register the engine.
directionThe direction for the engine: SIG_FLAG_TOSERVER or SIG_FLAG_TOCLIENT
progressMinimal progress value for inspect engine to run
CallbackThe engine callback.

Definition at line 276 of file detect-engine.c.

Referenced by SCDetectHelperBufferProgressRegister().

Here is the caller graph for this function:

◆ DetectAppLayerInspectEngineRegisterSingle()

void DetectAppLayerInspectEngineRegisterSingle ( const char *  name,
AppProto  alproto,
uint32_t  dir,
uint8_t  progress,
InspectEngineFuncPtr  Callback2,
InspectionSingleBufferGetDataPtr  GetData 
)

Definition at line 322 of file detect-engine.c.

◆ DetectAppLayerInspectEngineRegisterSubState()

void DetectAppLayerInspectEngineRegisterSubState ( const char *  name,
AppProto  alproto,
uint32_t  dir,
uint8_t  type,
uint8_t  progress,
InspectEngineFuncPtr  Callback2,
InspectionBufferGetDataPtr  GetData 
)

register an app inspection engine for a tx type

Parameters
typethe tx type

Definition at line 299 of file detect-engine.c.

Referenced by DetectFileRegisterFileProtocols(), DetectRegisterAppLayerHookLists(), and SCDetectHelperBufferProgressRegisterSubState().

Here is the caller graph for this function:

◆ DetectAppLayerMultiRegister()

void DetectAppLayerMultiRegister ( const char *  name,
AppProto  alproto,
uint32_t  dir,
uint8_t  progress,
InspectionMultiBufferGetDataPtr  GetData,
int  priority 
)

Definition at line 2295 of file detect-engine.c.

◆ DetectAppLayerMultiRegisterSubState()

void DetectAppLayerMultiRegisterSubState ( const char *  name,
AppProto  alproto,
uint32_t  dir,
uint8_t  sub_state,
uint8_t  progress,
InspectionMultiBufferGetDataPtr  GetData,
int  priority 
)

Definition at line 2283 of file detect-engine.c.

◆ DetectBufferIsPresent()

bool DetectBufferIsPresent ( const Signature *  s,
const uint32_t  buf_id 
)

◆ DetectBufferTypeCloseRegistration()

void DetectBufferTypeCloseRegistration ( void  )

Definition at line 1822 of file detect-engine.c.

References BUG_ON.

◆ DetectBufferTypeGetByName()

int DetectBufferTypeGetByName ( const char *  name)

Definition at line 1453 of file detect-engine.c.

Referenced by DetectEngineAppInspectionEngine2Signature(), DetectFrameMpmRegister(), and DetectPktInspectEngineRegister().

Here is the caller graph for this function:

◆ DetectBufferTypeMaxId()

int DetectBufferTypeMaxId ( void  )

Definition at line 1210 of file detect-engine.c.

◆ DetectBufferTypeRegister()

int DetectBufferTypeRegister ( const char *  name)

Definition at line 1389 of file detect-engine.c.

References BUG_ON.

Referenced by DetectPktInspectEngineRegister(), SCDetectHelperBufferProgressRegister(), and SCDetectHelperBufferProgressRegisterSubState().

Here is the caller graph for this function:

◆ DetectBufferTypeRegisterSetupCallback()

void DetectBufferTypeRegisterSetupCallback ( const char *  name,
void(*)(const DetectEngineCtx *, Signature *, const DetectBufferType *)  Callback 
)

Definition at line 1638 of file detect-engine.c.

References BUG_ON.

Referenced by SCDetectRegisterBufferLowerMd5Callbacks().

Here is the caller graph for this function:

◆ DetectBufferTypeRegisterValidateCallback()

void DetectBufferTypeRegisterValidateCallback ( const char *  name,
bool(*)(const Signature *, const char **sigerror, const DetectBufferType *)  ValidateCallback 
)

Definition at line 1656 of file detect-engine.c.

References BUG_ON.

Referenced by SCDetectRegisterBufferLowerMd5Callbacks().

Here is the caller graph for this function:

◆ DetectBufferTypeSetDescriptionByName()

void DetectBufferTypeSetDescriptionByName ( const char *  name,
const char *  desc 
)

Definition at line 1550 of file detect-engine.c.

References BUG_ON.

◆ DetectBufferTypeSupportsFrames()

void DetectBufferTypeSupportsFrames ( const char *  name)

Definition at line 1413 of file detect-engine.c.

References BUG_ON.

Referenced by DetectFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectBufferTypeSupportsMpm()

void DetectBufferTypeSupportsMpm ( const char *  name)

Definition at line 1433 of file detect-engine.c.

References BUG_ON.

Referenced by DetectFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectBufferTypeSupportsMultiInstance()

void DetectBufferTypeSupportsMultiInstance ( const char *  name)

Definition at line 1403 of file detect-engine.c.

References BUG_ON.

◆ DetectBufferTypeSupportsPacket()

void DetectBufferTypeSupportsPacket ( const char *  name)

Definition at line 1423 of file detect-engine.c.

References BUG_ON.

◆ DetectBufferTypeSupportsTransformations()

void DetectBufferTypeSupportsTransformations ( const char *  name)

Definition at line 1443 of file detect-engine.c.

References BUG_ON.

Referenced by DetectFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectEngineAddToMaster()

int DetectEngineAddToMaster ( DetectEngineCtx *  de_ctx)

Definition at line 4933 of file detect-engine.c.

References de_ctx, and SCLogDebug.

◆ DetectEngineAppHookToName()

const char* DetectEngineAppHookToName ( const AppProto  p,
const uint8_t  sub_state,
const uint8_t  state,
const uint8_t  direction 
)
Parameters
directionSTREAM_TOSERVER or STREAM_TOCLIENT

Definition at line 846 of file detect-engine.c.

References AppLayerParserGetStateNameById(), AppLayerParserGetStateProgressCompletionStatus(), AppLayerParserGetSubStateProgressName(), AppLayerParserSupportsSubStates(), BUG_ON, name, and p.

Referenced by DetectEngineAppHookToSmlist().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineAppHookToSmlist()

int DetectEngineAppHookToSmlist ( const AppProto  p,
const uint8_t  sub_state,
const uint8_t  state,
const uint8_t  direction 
)

get the sm_list for a app hook

Parameters
sub_statesub_state to use or 0 if not in use

Definition at line 885 of file detect-engine.c.

References AppProtoToStringRaw(), DetectEngineAppHookToName(), name, p, and SCLogError.

Referenced by DetectEngineAppInspectionEngine2Signature().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineAppInspectionEngine2Signature()

◆ DetectEngineAppInspectionEngineSignatureFree()

void DetectEngineAppInspectionEngineSignatureFree ( DetectEngineCtx *  de_ctx,
Signature *  s 
)

free app inspect engines for a signature

For lists that are registered multiple times, like http_header and http_cookie, making the engines owner of the lists is complicated. Multiple engines in a sig may be pointing to the same list. To address this the 'free' code needs to be extra careful about not double freeing, so it takes an approach to first fill an array of the to-free pointers before freeing them.

Definition at line 1104 of file detect-engine.c.

References Signature_::app_inspect, BUG_ON, SigMatchData_::ctx, de_ctx, Signature_::frame_inspect, SigTableElmt_::Free, SigMatchData_::is_last, next, DetectEngineAppInspectionEngine_::next, DetectEnginePktInspectionEngine::next, DetectEngineFrameInspectionEngine::next, Signature_::pkt_inspect, SCFree, sigmatch_table, DetectEngineAppInspectionEngine_::smd, DetectEnginePktInspectionEngine::smd, DetectEngineFrameInspectionEngine::smd, and SigMatchData_::type.

◆ DetectEngineBufferRunSetupCallback()

void DetectEngineBufferRunSetupCallback ( const DetectEngineCtx *  de_ctx,
const int  id,
Signature *  s 
)

Definition at line 1648 of file detect-engine.c.

References de_ctx, DetectEngineBufferTypeGetById(), and DetectBufferType_::SetupCallback.

Here is the call graph for this function:

◆ DetectEngineBufferRunValidateCallback()

bool DetectEngineBufferRunValidateCallback ( const DetectEngineCtx *  de_ctx,
const int  id,
const Signature *  s,
const char **  sigerror 
)

Definition at line 1667 of file detect-engine.c.

References DetectEngineTransforms::cnt, de_ctx, DetectEngineBufferTypeGetById(), DetectBufferType_::transforms, and DetectBufferType_::ValidateCallback.

Here is the call graph for this function:

◆ DetectEngineBufferTypeGetById()

◆ DetectEngineBufferTypeGetByIdTransforms()

int DetectEngineBufferTypeGetByIdTransforms ( DetectEngineCtx *  de_ctx,
const int  id,
TransformData *  transforms,
uint8_t  transform_cnt 
)

◆ DetectEngineBufferTypeGetDescriptionById()

const char* DetectEngineBufferTypeGetDescriptionById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1561 of file detect-engine.c.

References de_ctx, DetectBufferType_::description, and DetectEngineBufferTypeGetById().

Referenced by EngineAnalysisFP().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineBufferTypeGetNameById()

const char* DetectEngineBufferTypeGetNameById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1483 of file detect-engine.c.

References de_ctx, DetectEngineBufferTypeGetById(), and DetectBufferType_::name.

Referenced by DumpPatterns(), EngineAnalysisFP(), and EngineAnalysisRules2().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineBufferTypeRegister()

int DetectEngineBufferTypeRegister ( DetectEngineCtx *  de_ctx,
const char *  name 
)

Definition at line 1540 of file detect-engine.c.

Referenced by DetectEngineFrameInspectEngineRegister(), and DetectEngineFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectEngineBufferTypeRegisterWithFrameEngines()

int DetectEngineBufferTypeRegisterWithFrameEngines ( DetectEngineCtx *  de_ctx,
const char *  name,
const int  direction,
const AppProto  alproto,
const uint8_t  frame_type 
)

Definition at line 1506 of file detect-engine.c.

◆ DetectEngineBufferTypeSupportsFrames()

void DetectEngineBufferTypeSupportsFrames ( DetectEngineCtx *  de_ctx,
const char *  name 
)

Definition at line 1570 of file detect-engine.c.

Referenced by DetectEngineFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectEngineBufferTypeSupportsFramesGetById()

bool DetectEngineBufferTypeSupportsFramesGetById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1629 of file detect-engine.c.

References de_ctx, DetectEngineBufferTypeGetById(), DetectBufferType_::frame, and SCLogDebug.

Here is the call graph for this function:

◆ DetectEngineBufferTypeSupportsMpm()

void DetectEngineBufferTypeSupportsMpm ( DetectEngineCtx *  de_ctx,
const char *  name 
)

Definition at line 1586 of file detect-engine.c.

Referenced by DetectEngineFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectEngineBufferTypeSupportsMpmGetById()

bool DetectEngineBufferTypeSupportsMpmGetById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1620 of file detect-engine.c.

References de_ctx, DetectEngineBufferTypeGetById(), DetectBufferType_::mpm, and SCLogDebug.

Referenced by DetectGetLastSMFromMpmLists(), and FastPatternSupportEnabledForSigMatchList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineBufferTypeSupportsMultiInstanceGetById()

bool DetectEngineBufferTypeSupportsMultiInstanceGetById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1602 of file detect-engine.c.

References BOOL2STR, de_ctx, DetectEngineBufferTypeGetById(), DetectBufferType_::multi_instance, and SCLogDebug.

Referenced by DetectBufferGetActiveList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineBufferTypeSupportsPacket()

void DetectEngineBufferTypeSupportsPacket ( DetectEngineCtx *  de_ctx,
const char *  name 
)

Definition at line 1578 of file detect-engine.c.

◆ DetectEngineBufferTypeSupportsPacketGetById()

bool DetectEngineBufferTypeSupportsPacketGetById ( const DetectEngineCtx *  de_ctx,
const int  id 
)

Definition at line 1611 of file detect-engine.c.

References de_ctx, DetectEngineBufferTypeGetById(), DetectBufferType_::packet, and SCLogDebug.

Here is the call graph for this function:

◆ DetectEngineBufferTypeSupportsTransformations()

void DetectEngineBufferTypeSupportsTransformations ( DetectEngineCtx *  de_ctx,
const char *  name 
)

Definition at line 1594 of file detect-engine.c.

Referenced by DetectEngineFrameMpmRegister().

Here is the caller graph for this function:

◆ DetectEngineBufferTypeValidateTransform()

bool DetectEngineBufferTypeValidateTransform ( DetectEngineCtx *  de_ctx,
int  sm_list,
const uint8_t *  content,
uint16_t  content_len,
const char **  namestr 
)

Check content byte array compatibility with transforms.

The "content" array is presented to the transforms so that each transform may validate that it's compatible with the transform.

When a transform indicates the byte array is incompatible, none of the subsequent transforms, if any, are invoked. This means the first validation failure terminates the loop.

Parameters
de_ctxDetection engine context.
sm_listThe SM list id.
contentThe byte array being validated
namestrreturns the name of the transform that is incompatible with content.
Return values
true(false) If any of the transforms indicate the byte array is (is not) compatible.

Definition at line 1706 of file detect-engine.c.

References BUG_ON, DetectEngineTransforms::cnt, de_ctx, DetectEngineBufferTypeGetById(), SigTableElmt_::name, TransformData_::options, sigmatch_table, TransformData_::transform, DetectEngineTransforms::transforms, DetectBufferType_::transforms, and SigTableElmt_::TransformValidate.

Referenced by DetectContentSetup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineBumpVersion()

void DetectEngineBumpVersion ( void  )

Definition at line 4099 of file detect-engine.c.

◆ DetectEngineClearMaster()

void DetectEngineClearMaster ( void  )

Definition at line 5033 of file detect-engine.c.

Referenced by GlobalsDestroy().

Here is the caller graph for this function:

◆ DetectEngineCtxFree()

◆ DetectEngineCtxInit()

DetectEngineCtx* DetectEngineCtxInit ( void  )

Definition at line 2839 of file detect-engine.c.

Referenced by DetectEngineCtxInitWithPrefix().

Here is the caller graph for this function:

◆ DetectEngineCtxInitStubForDD()

DetectEngineCtx* DetectEngineCtxInitStubForDD ( void  )

Definition at line 2834 of file detect-engine.c.

◆ DetectEngineCtxInitStubForMT()

DetectEngineCtx* DetectEngineCtxInitStubForMT ( void  )

Definition at line 2829 of file detect-engine.c.

◆ DetectEngineCtxInitWithPrefix()

DetectEngineCtx* DetectEngineCtxInitWithPrefix ( const char *  prefix,
uint32_t  tenant_id 
)

Definition at line 2844 of file detect-engine.c.

References DetectEngineCtxInit().

Here is the call graph for this function:

◆ DetectEngineDeReference()

void DetectEngineDeReference ( DetectEngineCtx **  de_ctx)

Definition at line 4909 of file detect-engine.c.

References de_ctx, and DEBUG_VALIDATE_BUG_ON.

Referenced by DetectEngineMpmCacheService(), GlobalsDestroy(), and SCDetectEngineRegisterRateFilterCallback().

Here is the caller graph for this function:

◆ DetectEngineEnabled()

int DetectEngineEnabled ( void  )

Check if detection is enabled.

Return values
booltrue or false

Definition at line 4075 of file detect-engine.c.

◆ DetectEngineFrameInspectEngineRegister()

◆ DetectEngineGetByTenantId()

DetectEngineCtx* DetectEngineGetByTenantId ( uint32_t  tenant_id)

Definition at line 4883 of file detect-engine.c.

◆ DetectEngineGetCurrent()

DetectEngineCtx* DetectEngineGetCurrent ( void  )

Definition at line 4108 of file detect-engine.c.

Referenced by DetectEngineMpmCacheService(), DetectEngineThreadCtxInit(), GlobalsDestroy(), and SCDetectEngineRegisterRateFilterCallback().

Here is the caller graph for this function:

◆ DetectEngineGetVersion()

uint32_t DetectEngineGetVersion ( void  )

Definition at line 4089 of file detect-engine.c.

References version.

◆ DetectEngineInspectBufferGeneric()

uint8_t DetectEngineInspectBufferGeneric ( DetectEngineCtx *  de_ctx,
DetectEngineThreadCtx *  det_ctx,
const DetectEngineAppInspectionEngine *  engine,
const Signature *  s,
Flow *  f,
uint8_t  flags,
void *  alstate,
void *  txv,
uint64_t  tx_id 
)

Do the content inspection & validation for a signature.

Parameters
de_ctxDetection engine context
det_ctxDetection engine thread context
sSignature to inspect
fFlow
flagsapp layer flags
stateApp layer state
Return values
0no match.
1match.
2Sig can't match.

Definition at line 2233 of file detect-engine.c.

References SCLogDebug, and DetectEngineAppInspectionEngine_::sm_list.

◆ DetectEngineInspectBufferSingle()

uint8_t DetectEngineInspectBufferSingle ( DetectEngineCtx *  de_ctx,
DetectEngineThreadCtx *  det_ctx,
const DetectEngineAppInspectionEngine *  engine,
const Signature *  s,
Flow *  f,
uint8_t  flags,
void *  alstate,
void *  txv,
uint64_t  tx_id 
)

Do the content inspection & validation for a signature.

Parameters
de_ctxDetection engine context
det_ctxDetection engine thread context
sSignature to inspect
fFlow
flagsapp layer flags
stateApp layer state
Return values
0no match.
1match.
2Sig can't match.

Definition at line 2173 of file detect-engine.c.

References SCLogDebug, and DetectEngineAppInspectionEngine_::sm_list.

◆ DetectEngineInspectGenericList()

uint8_t DetectEngineInspectGenericList ( DetectEngineCtx *  de_ctx,
DetectEngineThreadCtx *  det_ctx,
const struct DetectEngineAppInspectionEngine_ *  engine,
const Signature *  s,
Flow *  f,
uint8_t  flags,
void *  alstate,
void *  txv,
uint64_t  tx_id 
)

Do the content inspection & validation for a signature.

Parameters
de_ctxDetection engine context
det_ctxDetection engine thread context
sSignature to inspect
smSigMatch to inspect
fFlow
flagsapp layer flags
stateApp layer state
Return values
0no match
1match

Definition at line 2121 of file detect-engine.c.

References SigMatchData_::ctx, DETECT_ENGINE_INSPECT_SIG_CANT_MATCH, DETECT_ENGINE_INSPECT_SIG_MATCH, DETECT_ENGINE_INSPECT_SIG_NO_MATCH, f, flags, SigMatchData_::is_last, KEYWORD_PROFILING_END, KEYWORD_PROFILING_START, SCLogDebug, sigmatch_table, DetectEngineAppInspectionEngine_::smd, and SigMatchData_::type.

Referenced by DetectRegisterAppLayerHookLists(), SCDetectHelperBufferProgressRegister(), and SCDetectHelperBufferProgressRegisterSubState().

Here is the caller graph for this function:

◆ DetectEngineInspectMultiBufferGeneric()

◆ DetectEngineInspectPktBufferGeneric()

int DetectEngineInspectPktBufferGeneric ( DetectEngineThreadCtx *  det_ctx,
const DetectEnginePktInspectionEngine *  engine,
const Signature *  s,
Packet *  p,
uint8_t *  _alert_flags 
)

◆ DetectEngineLoadTenantBlocking()

int DetectEngineLoadTenantBlocking ( uint32_t  tenant_id,
const char *  yaml 
)

Load a tenant and wait for loading to complete.

Definition at line 4404 of file detect-engine.c.

◆ DetectEngineMoveToFreeList()

int DetectEngineMoveToFreeList ( DetectEngineCtx *  de_ctx)

Definition at line 4993 of file detect-engine.c.

Referenced by GlobalsDestroy().

Here is the caller graph for this function:

◆ DetectEngineMpmCacheService()

◆ DetectEngineMpmCachingEnabled()

bool DetectEngineMpmCachingEnabled ( void  )

Definition at line 2649 of file detect-engine.c.

References SCConfGetBool().

Referenced by DetectEngineMpmCachingGetPath().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineMpmCachingGetPath()

const char* DetectEngineMpmCachingGetPath ( void  )

Definition at line 2658 of file detect-engine.c.

References DetectEngineMpmCachingEnabled(), SCConfGet(), and SCLogInfo.

Here is the call graph for this function:

◆ DetectEngineMTApply()

int DetectEngineMTApply ( void  )

Definition at line 5192 of file detect-engine.c.

◆ DetectEngineMultiTenantEnabled()

bool DetectEngineMultiTenantEnabled ( void  )

Definition at line 4145 of file detect-engine.c.

◆ DetectEngineMultiTenantSetup()

int DetectEngineMultiTenantSetup ( const bool  unix_socket)

setup multi-detect / multi-tenancy

See if MT is enabled. If so, setup the selector, tenants and mappings. Tenants and mappings are optional, and can also dynamically be added and removed from the unix socket.

Definition at line 4567 of file detect-engine.c.

References TENANT_SELECTOR_UNKNOWN.

◆ DetectEngineMustParseMetadata()

int DetectEngineMustParseMetadata ( void  )

Definition at line 5259 of file detect-engine.c.

Referenced by DetectMetadataHashInit().

Here is the caller graph for this function:

◆ DetectEnginePktInspectionRun()

bool DetectEnginePktInspectionRun ( ThreadVars *  tv,
DetectEngineThreadCtx *  det_ctx,
const Signature *  s,
Flow *  f,
Packet *  p,
uint8_t *  alert_flags 
)

◆ DetectEnginePktInspectionSetup()

int DetectEnginePktInspectionSetup ( Signature *  s)

◆ DetectEnginePruneFreeList()

void DetectEnginePruneFreeList ( void  )

Definition at line 5003 of file detect-engine.c.

◆ DetectEngineReference()

DetectEngineCtx* DetectEngineReference ( DetectEngineCtx *  )

Definition at line 4131 of file detect-engine.c.

References de_ctx, and DetectEngineCtx_::ref_cnt.

Referenced by DetectEngineThreadCtxInitForReload().

Here is the caller graph for this function:

◆ DetectEngineRegisterTests()

void DetectEngineRegisterTests ( void  )

Definition at line 5656 of file detect-engine.c.

References UtRegisterTest().

Here is the call graph for this function:

◆ DetectEngineReload()

int DetectEngineReload ( const SCInstance *  suri)

Reload the detection engine.

Parameters
filenameYAML file to load for the detect config
Return values
-1error
0ok

Definition at line 5060 of file detect-engine.c.

References SCInstance_::conf_filename, and SCLogNotice.

Referenced by SuricataMainLoop().

Here is the caller graph for this function:

◆ DetectEngineReloadIsIdle()

int DetectEngineReloadIsIdle ( void  )

Definition at line 2097 of file detect-engine.c.

References SCMutexLock.

◆ DetectEngineReloadIsStart()

int DetectEngineReloadIsStart ( void  )

Definition at line 2077 of file detect-engine.c.

References SCMutexLock.

Referenced by SuricataMainLoop().

Here is the caller graph for this function:

◆ DetectEngineReloadSetIdle()

void DetectEngineReloadSetIdle ( void  )

Definition at line 2089 of file detect-engine.c.

References SCMutexLock.

Referenced by SuricataMainLoop().

Here is the caller graph for this function:

◆ DetectEngineReloadStart()

int DetectEngineReloadStart ( void  )

Definition at line 2063 of file detect-engine.c.

References SCMutexLock.

Referenced by SuricataMainLoop().

Here is the caller graph for this function:

◆ DetectEngineReloadTenantBlocking()

int DetectEngineReloadTenantBlocking ( uint32_t  tenant_id,
const char *  yaml,
int  reload_cnt 
)

Reload a tenant and wait for loading to complete.

Definition at line 4418 of file detect-engine.c.

◆ DetectEngineReloadTenantsBlocking()

int DetectEngineReloadTenantsBlocking ( const int  reload_cnt)

Reload all tenants and wait for loading to complete.

Definition at line 4432 of file detect-engine.c.

◆ DetectEngineResetMaxSigId()

void DetectEngineResetMaxSigId ( DetectEngineCtx *  )

Definition at line 3302 of file detect-engine.c.

References de_ctx, and DetectEngineCtx_::signum.

Referenced by SigCleanSignatures().

Here is the caller graph for this function:

◆ DetectEngineSetParseMetadata()

void DetectEngineSetParseMetadata ( void  )

Definition at line 5249 of file detect-engine.c.

◆ DetectEngineTenantRegisterLivedev()

int DetectEngineTenantRegisterLivedev ( uint32_t  tenant_id,
int  device_id 
)

Definition at line 4850 of file detect-engine.c.

◆ DetectEngineTenantRegisterPcapFile()

int DetectEngineTenantRegisterPcapFile ( uint32_t  tenant_id)

Definition at line 4866 of file detect-engine.c.

References SCLogInfo, and TENANT_SELECTOR_DIRECT.

◆ DetectEngineTenantRegisterVlanId()

int DetectEngineTenantRegisterVlanId ( uint32_t  tenant_id,
uint16_t  vlan_id 
)

Definition at line 4856 of file detect-engine.c.

◆ DetectEngineTenantUnregisterPcapFile()

int DetectEngineTenantUnregisterPcapFile ( uint32_t  tenant_id)

Definition at line 4872 of file detect-engine.c.

References SCLogInfo, and TENANT_SELECTOR_DIRECT.

◆ DetectEngineTenantUnregisterVlanId()

int DetectEngineTenantUnregisterVlanId ( uint32_t  tenant_id,
uint16_t  vlan_id 
)

Definition at line 4861 of file detect-engine.c.

◆ DetectEngineThreadCtxDeinit()

TmEcode DetectEngineThreadCtxDeinit ( ThreadVars *  ,
void *   
)

Definition at line 3871 of file detect-engine.c.

References HashTableFree(), DetectEngineThreadCtx_::mt_det_ctxs_hash, SCLogWarning, and TM_ECODE_OK.

Referenced by DetectEngineThreadCtxInit(), UTHMatchPackets(), UTHMatchPacketsWithResults(), UTHPacketMatchSig(), and UTHPacketMatchSigMpm().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineThreadCtxGetJsonContext()

◆ DetectEngineThreadCtxInit()

TmEcode DetectEngineThreadCtxInit ( ThreadVars *  tv,
void *  initdata,
void **  data 
)

initialize thread specific detection engine context

Note
there is a special case when using delayed detect. In this case the function is called twice per thread. The first time the rules are not yet loaded. de_ctx->delayed_detect_initialized will be 0. The 2nd time they will be loaded. de_ctx->delayed_detect_initialized will be 1. This is needed to do the per thread counter registration before the packet runtime starts. In delayed detect mode, the first call will return a NULL ptr through the data ptr.
Parameters
tvThreadVars for this thread
initdatapointer to de_ctx
data[out]pointer to store our thread detection ctx
Return values
TM_ECODE_OKif all went well
TM_ECODE_FAILEDon serious errors

alert counter setup

Definition at line 3626 of file detect-engine.c.

References DetectEngineThreadCtx_::de_ctx, DETECT_ENGINE_TYPE_NORMAL, DETECT_ENGINE_TYPE_TENANT, DetectEngineGetCurrent(), DetectEngineThreadCtxDeinit(), RunmodeIsUnittests(), SCCalloc, TM_ECODE_FAILED, tv, DetectEngineThreadCtx_::tv, DetectEngineCtx_::type, and unlikely.

Referenced by UTHMatchPackets(), UTHMatchPacketsWithResults(), UTHPacketMatchSig(), and UTHPacketMatchSigMpm().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectEngineThreadCtxInitForReload()

DetectEngineThreadCtx* DetectEngineThreadCtxInitForReload ( ThreadVars *  tv,
DetectEngineCtx *  new_de_ctx,
int  mt 
)

◆ DetectEngineUnsetParseMetadata()

void DetectEngineUnsetParseMetadata ( void  )

Definition at line 5254 of file detect-engine.c.

◆ DetectGetMultiData()

InspectionBuffer* DetectGetMultiData ( struct DetectEngineThreadCtx_ *  det_ctx,
const DetectEngineTransforms *  transforms,
Flow *  f,
const uint8_t  flow_flags,
void *  txv,
const int  list_id,
uint32_t  index,
InspectionMultiBufferGetDataPtr  GetBuf 
)

Definition at line 2322 of file detect-engine.c.

References DETECT_CI_FLAGS_SINGLE, InspectionBuffer::flags, InspectionBuffer::initialized, InspectionBufferMultipleForListGet(), InspectionBufferSetupMulti(), and InspectionBufferSetupMultiEmpty().

Referenced by DetectEngineInspectMultiBufferGeneric().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DetectGetSingleData()

InspectionBuffer* DetectGetSingleData ( struct DetectEngineThreadCtx_ *  det_ctx,
const DetectEngineTransforms *  transforms,
Flow *  f,
const uint8_t  flow_flags,
void *  txv,
const int  list_id,
InspectionSingleBufferGetDataPtr  GetBuf 
)

Definition at line 2305 of file detect-engine.c.

References InspectionBuffer::inspect, SCInspectionBufferGet(), and SCInspectionBufferSetupAndApplyTransforms().

Here is the call graph for this function:

◆ DetectLowerSetupCallback()

◆ DetectMd5ValidateCallback()

◆ DetectPktInspectEngineRegister()

void DetectPktInspectEngineRegister ( const char *  name,
InspectionBufferGetPktDataPtr  GetPktData,
InspectionBufferPktInspectFunc  Callback 
)

◆ DetectSigmatchListEnumToString()

◆ DetectTableToString()