Go to the documentation of this file.
24 #ifndef SURICATA_DETECT_H
25 #define SURICATA_DETECT_H
45 #define DETECT_MAX_RULE_SIZE 8192
47 #define DETECT_TRANSFORMS_MAX 16
51 #define DETECT_DEFAULT_PRIO 3
54 #define PACKET_ALERT_NOTX UINT64_MAX
141 #define DETECT_SM_LIST_NOTSET INT_MAX
159 #define ADDRESS_FLAG_NOT 0x01
212 #define PORT_FLAG_ANY 0x01
213 #define PORT_FLAG_NOT 0x02
214 #define PORT_SIGGROUPHEAD_COPY 0x04
238 #define SIG_FLAG_SRC_ANY BIT_U32(0)
239 #define SIG_FLAG_DST_ANY BIT_U32(1)
240 #define SIG_FLAG_SP_ANY BIT_U32(2)
241 #define SIG_FLAG_DP_ANY BIT_U32(3)
245 #define SIG_FLAG_DSIZE BIT_U32(5)
246 #define SIG_FLAG_APPLAYER BIT_U32(6)
250 #define SIG_FLAG_REQUIRE_PACKET BIT_U32(9)
251 #define SIG_FLAG_REQUIRE_STREAM BIT_U32(10)
253 #define SIG_FLAG_MPM_NEG BIT_U32(11)
255 #define SIG_FLAG_FLUSH BIT_U32(12)
257 #define SIG_FLAG_REQUIRE_STREAM_ONLY \
263 #define SIG_FLAG_REQUIRE_FLOWVAR BIT_U32(17)
265 #define SIG_FLAG_FILESTORE BIT_U32(18)
267 #define SIG_FLAG_TOSERVER BIT_U32(19)
268 #define SIG_FLAG_TOCLIENT BIT_U32(20)
270 #define SIG_FLAG_TLSSTORE BIT_U32(21)
272 #define SIG_FLAG_BYPASS BIT_U32(22)
274 #define SIG_FLAG_PREFILTER BIT_U32(23)
279 #define SIG_FLAG_SRC_IS_TARGET BIT_U32(25)
281 #define SIG_FLAG_DEST_IS_TARGET BIT_U32(26)
283 #define SIG_FLAG_HAS_TARGET (SIG_FLAG_DEST_IS_TARGET|SIG_FLAG_SRC_IS_TARGET)
287 #define SIG_FLAG_INIT_PACKET BIT_U32(1)
288 #define SIG_FLAG_INIT_FLOW BIT_U32(2)
289 #define SIG_FLAG_INIT_BIDIREC BIT_U32(3)
290 #define SIG_FLAG_INIT_FIRST_IPPROTO_SEEN \
292 #define SIG_FLAG_INIT_STATE_MATCH BIT_U32(6)
293 #define SIG_FLAG_INIT_NEED_FLUSH BIT_U32(7)
294 #define SIG_FLAG_INIT_PRIO_EXPLICIT \
296 #define SIG_FLAG_INIT_FILEDATA BIT_U32(9)
297 #define SIG_FLAG_INIT_JA BIT_U32(10)
301 #define SIG_MASK_REQUIRE_PAYLOAD BIT_U8(0)
302 #define SIG_MASK_REQUIRE_FLOW BIT_U8(1)
303 #define SIG_MASK_REQUIRE_FLAGS_INITDEINIT BIT_U8(2)
304 #define SIG_MASK_REQUIRE_FLAGS_UNUSUAL BIT_U8(3)
305 #define SIG_MASK_REQUIRE_NO_PAYLOAD BIT_U8(4)
306 #define SIG_MASK_REQUIRE_REAL_PKT BIT_U8(5)
308 #define SIG_MASK_REQUIRE_ENGINE_EVENT BIT_U8(7)
311 #define SignatureMask uint8_t
313 #define FILE_SIG_NEED_FILE 0x01
314 #define FILE_SIG_NEED_FILENAME 0x02
315 #define FILE_SIG_NEED_MAGIC 0x04
316 #define FILE_SIG_NEED_FILECONTENT 0x08
317 #define FILE_SIG_NEED_MD5 0x10
318 #define FILE_SIG_NEED_SHA1 0x20
319 #define FILE_SIG_NEED_SHA256 0x40
320 #define FILE_SIG_NEED_SIZE 0x80
323 #define DE_QUIET 0x01
379 #ifdef DEBUG_VALIDATION
417 Flow *f,
const uint8_t flow_flags,
418 void *txv,
const int list_id);
421 const int list_id,
const uint32_t local_id);
427 uint8_t
flags,
void *alstate,
void *txv, uint64_t tx_id);
480 Packet *p, uint8_t *alert_flags);
647 uint16_t profiling_id;
746 #define DETECT_VAR_TYPE_FLOW_POSTMATCH 1
747 #define DETECT_VAR_TYPE_PKT_POSTMATCH 2
809 void *(*InitFunc)(
void *);
835 #define FLOW_STATES 2
956 struct SCProfileDetectCtx_ *profile_ctx;
1069 #define ENGINE_SGH_MPM_FACTORY_CONTEXT_START_ID_RANGE (ENGINE_SGH_MPM_FACTORY_CONTEXT_AUTO + 1)
1072 #define DETECT_FILESTORE_MAX 15
1244 uint64_t pkt_stream_add_cnt;
1245 uint64_t payload_mpm_cnt;
1246 uint64_t payload_mpm_size;
1247 uint64_t stream_mpm_cnt;
1248 uint64_t stream_mpm_size;
1249 uint64_t payload_persig_cnt;
1250 uint64_t payload_persig_size;
1251 uint64_t stream_persig_cnt;
1252 uint64_t stream_persig_size;
1254 #ifdef PROFILE_RULES
1255 struct SCProfileData_ *rule_perf_data;
1256 int rule_perf_data_size;
1257 uint32_t rule_perf_last_sync;
1281 uint8_t
flags,
void *alstate,
void *txv,
1335 #define SIG_GROUP_HEAD_HAVERAWSTREAM BIT_U16(0)
1337 #define SIG_GROUP_HEAD_HAVEFILEMAGIC BIT_U16(1)
1339 #define SIG_GROUP_HEAD_HAVEFILEMD5 BIT_U16(2)
1340 #define SIG_GROUP_HEAD_HAVEFILESIZE BIT_U16(3)
1341 #define SIG_GROUP_HEAD_HAVEFILESHA1 BIT_U16(4)
1342 #define SIG_GROUP_HEAD_HAVEFILESHA256 BIT_U16(5)
1370 const struct Frames *frames,
const struct Frame *frame);
1493 #define SIGMATCH_NOOPT BIT_U16(0)
1495 #define SIGMATCH_IPONLY_COMPAT BIT_U16(1)
1497 #define SIGMATCH_DEONLY_COMPAT BIT_U16(2)
1499 #define SIGMATCH_NOT_BUILT BIT_U16(3)
1502 #define SIGMATCH_OPTIONAL_OPT BIT_U16(4)
1505 #define SIGMATCH_QUOTES_OPTIONAL BIT_U16(5)
1509 #define SIGMATCH_QUOTES_MANDATORY BIT_U16(6)
1513 #define SIGMATCH_HANDLE_NEGATION BIT_U16(7)
1515 #define SIGMATCH_INFO_CONTENT_MODIFIER BIT_U16(8)
1517 #define SIGMATCH_INFO_STICKY_BUFFER BIT_U16(9)
1519 #define SIGMATCH_INFO_DEPRECATED BIT_U16(10)
1521 #define SIGMATCH_STRICT_PARSING BIT_U16(11)
HashListTable * sgh_hash_table
uint32_t pkt_mpms_list_cnt
uint32_t frame_mpms_list_cnt
struct SCFPSupportSMList_ SCFPSupportSMList
uint32_t non_pf_syn_store_cnt
@ DETECT_EVENT_TOO_MANY_BUFFERS
SignatureNonPrefilterStore * non_pf_store_ptr
uint32_t max_content_list_id
const SigGroupHead * SigMatchSignaturesGetSgh(const DetectEngineCtx *de_ctx, const Packet *p)
Get the SigGroupHead for a packet.
struct SCProfileKeywordData_ ** keyword_perf_data_per_list
PrefilterEngine * tx_engines
SigMatch * SigMatchAlloc(void)
int SigLoadSignatures(DetectEngineCtx *, char *, bool)
Load signatures.
const struct DetectContentData_ * cd
uint16_t alert_queue_size
struct SignatureInitDataBuffer_ SignatureInitDataBuffer
void SigMatchFree(DetectEngineCtx *, SigMatch *sm)
free a SigMatch
HashTable * class_conf_ht
struct SigMatch_ * smlists[DETECT_SM_LIST_MAX]
struct SCProfileKeywordData_ * keyword_perf_data
DetectMatchAddressIPv6 * addr_src_match6
SC_ATOMIC_DECLARE(int, so_far_used_by_detect)
struct DetectEngineThreadKeywordCtxItem_ DetectEngineThreadKeywordCtxItem
int32_t sgh_mpm_context_proto_tcp_packet
SCRadix6Tree tree_ipv6dst
void(* Free)(DetectEngineCtx *, void *)
struct IPOnlyCIDRItem_ IPOnlyCIDRItem
struct SigGroupHead_ * decoder_event_sgh
DetectEngineLookupFlow flow_gh[FLOW_STATES]
struct SCFPSupportSMList_ * next
uint16_t counter_match_list
struct SigString_ SigString
DetectEngineTenantMapping * tenant_mapping_list
const struct DetectFilestoreData_ * filestore_ctx
struct DetectEngineAppInspectionEngine_ * next
struct DetectEngineThreadCtx_::@97 filestore[DETECT_FILESTORE_MAX]
int SignatureIsIPOnly(DetectEngineCtx *de_ctx, const Signature *s)
Test is a initialized signature is IP only.
struct SigMatch_ * smlists_tail[DETECT_SM_LIST_MAX]
struct DetectEngineCtx_ DetectEngineCtx
main detection engine ctx
enum DetectEngineType type
Container for matching data for a signature group.
HashListTable * pattern_hash_table
struct SCProfileSghData_ * sgh_perf_data
SCRadix4Tree tree_ipv4dst
address structure for use in the detection engine.
uint16_t max_uniq_toclient_groups
InspectionBufferMultipleForList * buffers
structure for storing potential rule matches
bool src_contains_negation
@ FILE_DECODER_EVENT_LZMA_UNKNOWN_ERROR
InspectEngineFuncPtr Callback
uint32_t non_pf_store_cnt_max
DetectFileDataCfg * filedata_config
struct HtpBodyChunk_ * next
@ DETECT_SM_LIST_DYNAMIC_START
AppLayerDecoderEvents * decoder_events
InspectionBuffer *(* InspectionMultiBufferGetDataPtr)(struct DetectEngineThreadCtx_ *det_ctx, const DetectEngineTransforms *transforms, Flow *f, const uint8_t flow_flags, void *txv, const int list_id, const uint32_t local_id)
InspectionBufferGetDataPtr GetData
DetectBufferMpmRegistry * pkt_mpms_list
@ DETECT_BUFFER_MPM_TYPE_FRAME
int(* FileMatch)(DetectEngineThreadCtx *, Flow *, uint8_t flags, File *, const Signature *, const SigMatchCtx *)
@ DETECT_SM_LIST_THRESHOLD
InspectionBuffer *(* InspectionBufferGetDataPtr)(struct DetectEngineThreadCtx_ *det_ctx, const DetectEngineTransforms *transforms, Flow *f, const uint8_t flow_flags, void *txv, const int list_id)
MpmStore mpm_store[MPMB_MAX]
struct DetectBufferMpmRegistry_::@84::@86 app_v2
Signature * SigFindSignatureBySidGid(DetectEngineCtx *, uint32_t, uint32_t)
Find a specific signature by sid and gid.
SCRadix4Tree tree_ipv4src
int inspection_recursion_limit
const DetectEngineTransforms * transforms
main detection engine ctx
@ FILE_DECODER_EVENT_LZMA_DECODER_ERROR
struct DetectPatternTracker DetectPatternTracker
uint16_t lua_blocked_function_errors
void SigMatchSignatures(ThreadVars *th_v, DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, Packet *p)
wrapper for old tests
void ** global_keyword_ctxs_array
pcre2_match_data * reference_conf_regex_match
void RuleMatchCandidateTxArrayFree(DetectEngineThreadCtx *det_ctx)
struct DetectEngineAppInspectionEngine_::@79 v2
int(* AppLayerTxMatch)(DetectEngineThreadCtx *, Flow *, uint8_t flags, void *alstate, void *txv, const Signature *, const SigMatchCtx *)
InspectionBuffer *(* InspectionBufferGetPktDataPtr)(struct DetectEngineThreadCtx_ *det_ctx, const DetectEngineTransforms *transforms, Packet *p, const int list_id)
TmEcode Detect(ThreadVars *tv, Packet *p, void *data)
Detection engine thread wrapper.
@ FILE_DECODER_EVENT_Z_UNKNOWN_ERROR
struct DetectBufferMpmRegistry_ * next
struct DetectEngineTenantMapping_ * next
struct SCProfileSghDetectCtx_ * profile_sgh_ctx
one time registration of keywords at start up
@ ENGINE_SGH_MPM_FACTORY_CONTEXT_AUTO
struct DetectPort_ * next
DetectPort * tcp_priorityports
const struct DetectContentData_ * cd
SpmThreadCtx * spm_thread_ctx
struct DetectAddressHead_ DetectAddressHead
HashListTable * dport_hash_table
SigMatchData * sm_arrays[DETECT_SM_LIST_MAX]
PrefilterEngine * payload_engines
MpmCtxFactoryContainer * mpm_ctx_factory_container
enum DetectEnginePrefilterSetting prefilter_setting
pcre2_code * reference_conf_regex
struct SigGroupHead_ * sh
DetectPort * udp_priorityports
void DetectEngineSetEvent(DetectEngineThreadCtx *det_ctx, uint8_t e)
TAILQ_HEAD(, SigString_) failed_sigs
@ FILE_DECODER_EVENT_LZMA_XZ_ERROR
pcre2_code * class_conf_regex
void(* Free)(void *pectx)
uint16_t lua_instruction_limit_errors
void RuleMatchCandidateTxArrayInit(DetectEngineThreadCtx *det_ctx, uint32_t size)
element in sigmatch type table.
struct SCDetectRequiresStatus SCDetectRequiresStatus
int(* Setup)(DetectEngineCtx *, Signature *, const char *)
int32_t sgh_mpm_context_proto_udp_packet
struct DetectPort_ DetectPort
Port structure for detection engine.
HashTable * reference_conf_ht
DetectEngineTransforms transforms
uint16_t counter_fnonmpm_list
#define DETECT_TRANSFORMS_MAX
uint16_t counter_nonmpm_list
Data structure to store app layer decoder events.
struct SigGroupHead_ SigGroupHead
Container for matching data for a signature group.
struct DetectMatchAddressIPv6_ DetectMatchAddressIPv6
int DetectUnregisterThreadCtxFuncs(DetectEngineCtx *, void *data, const char *name)
Remove Thread keyword context registration.
DetectEngineFrameInspectionEngine * frame_inspect
SCRadix6Tree tree_ipv6src
const DetectEngineTransforms * transforms
void SigRegisterTests(void)
void * DetectThreadCtxGetKeywordThreadCtx(DetectEngineThreadCtx *, int)
Retrieve thread local keyword ctx by id.
InspectionBufferFrameInspectFunc Callback
HashTable * mt_det_ctxs_hash
struct DetectAddress_ * prev
union PrefilterEngine_::@99 cb
bool is_last_for_progress
Structure for the radix tree.
struct PrefilterEngineList_ * next
uint16_t counter_alerts_suppressed
int(* SetupPrefilter)(DetectEngineCtx *de_ctx, struct SigGroupHead_ *sgh)
int32_t sgh_mpm_context_proto_other_packet
struct DetectVarList_ DetectVarList
@ TENANT_SELECTOR_UNKNOWN
@ DETECT_SM_LIST_POSTMATCH
struct DetectEngineTenantMapping_ DetectEngineTenantMapping
HashListTable * prefilter_hash_table
struct DetectReplaceList_ DetectReplaceList
SignaturePropertyFlowAction
TAILQ_ENTRY(SigString_) next
DetectEngineTenantSelectors
InspectionBufferGetDataPtr GetData
uint32_t content_inspect_min_size
int(* InspectionBufferPktInspectFunc)(struct DetectEngineThreadCtx_ *, const struct DetectEnginePktInspectionEngine *engine, const struct Signature_ *s, Packet *p, uint8_t *alert_flags)
struct DetectBufferType_ DetectBufferType
pcre2_match_data * class_conf_regex_match
RuleMatchCandidateTx * tx_candidates
struct InspectionBuffer InspectionBuffer
SCDetectRequiresStatus * requirements
struct DetectEngineMasterCtx_ DetectEngineMasterCtx
DetectMatchAddressIPv4 * addr_src_match4
bool(* TransformValidate)(const uint8_t *content, uint16_t content_len, void *context)
uint16_t counter_alerts_overflow
#define DETECT_FILESTORE_MAX
struct SignatureInitData_ SignatureInitData
InspectionBufferGetPktDataPtr GetData
@ ENGINE_SGH_MPM_FACTORY_CONTEXT_SINGLE
PrefilterEngineList * tx_engines
SRepCIDRTree * srepCIDR_ctx
const DetectAddressHead * src
uint32_t tx_candidates_size
const struct SignatureProperties signature_properties[SIG_TYPE_MAX]
@ DETECT_SM_LIST_BASE64_DATA
InspectionBuffer * buffers
DetectEngineThreadKeywordCtxItem * keyword_list
PrefilterFrameFn PrefilterFrame
enum DetectEngineTenantSelectors tenant_selector
HashListTable * keyword_hash
IPOnlyCIDRItem * cidr_dst
struct timeval last_reload
DetectEnginePktInspectionEngine * pkt_inspect
InspectionMultiBufferGetDataPtr GetMultiData
struct DetectReplaceList_ * next
struct SigGroupHead_ * sgh[256]
DetectReference * references
PrefilterTxFn PrefilterTx
Per thread variable structure.
bool * sm_types_prefilter
union PrefilterEngine_::@98 ctx
struct SigTableElmt_ SigTableElmt
element in sigmatch type table.
struct SigMatch_ SigMatch
a single match condition for a signature
struct DetectBufferMpmRegistry_::@84::@87 pkt_v1
DetectEngineFrameInspectionEngine * frame_inspect_engines
struct PrefilterEngineList_ PrefilterEngineList
DetectEngineCtx * free_list
struct DetectEngineThreadKeywordCtxItem_ * next
void(* PrefilterFrameFn)(DetectEngineThreadCtx *det_ctx, const void *pectx, Packet *p, const struct Frames *frames, const struct Frame *frame)
Port structure for detection engine.
SigGroupHeadInitData * init
IPOnlyCIDRItem * cidr_src
DetectEngineAppInspectionEngine * app_inspect
Signature reference list.
bool(* ValidateCallback)(const struct Signature_ *, const char **sigerror)
char * DetectLoadCompleteSigPath(const DetectEngineCtx *, const char *sig_file)
Create the path if default-rule-path was specified.
struct DetectVarList_ * next
uint16_t lua_memory_limit_errors
uint64_t raw_stream_progress
struct IPOnlyCIDRItem_ * next
@ FILE_DECODER_EVENT_Z_STREAM_ERROR
int32_t sgh_mpm_context_stream
struct SignatureNonPrefilterStore_ SignatureNonPrefilterStore
struct DetectBufferMpmRegistry_ DetectBufferMpmRegistry
one time registration of keywords at start up
struct DetectPort_ * last
SigTableElmt * sigmatch_table
int(* InspectionBufferFrameInspectFunc)(struct DetectEngineThreadCtx_ *, const struct DetectEngineFrameInspectionEngine *engine, const struct Signature_ *s, Packet *p, const struct Frames *frames, const struct Frame *frame)
DetectBufferMpmRegistry * frame_mpms_list
@ FILE_DECODER_EVENT_INVALID_SWF_LENGTH
struct TransformData_ TransformData
Structure holding the signature ordering function used by the signature ordering module.
struct PrefilterEngine_ PrefilterEngine
int DetectRegisterThreadCtxFuncs(DetectEngineCtx *, const char *name, void *(*InitFunc)(void *), void *data, void(*FreeFunc)(void *), int)
Register Thread keyword context Funcs.
struct SigFileLoaderStat_ SigFileLoaderStat
Signature loader statistics.
uint16_t max_uniq_toserver_groups
@ DETECT_BUFFER_MPM_TYPE_PKT
@ FILE_DECODER_EVENT_LZMA_IO_ERROR
InspectionBufferPktInspectFunc Callback
PrefilterFrameFn PrefilterFrame
SignatureInitData * init_data
struct SCProfileKeywordDetectCtx_ * profile_keyword_ctx
uint16_t alert_queue_capacity
struct SigGroupHead_ ** sgh_array
int(* Match)(DetectEngineThreadCtx *, Packet *, const Signature *, const SigMatchCtx *)
struct MpmStore_ MpmStore
void(* PrefilterTxFn)(DetectEngineThreadCtx *det_ctx, const void *pectx, Packet *p, Flow *f, void *tx, const uint64_t tx_id, const AppLayerTxData *tx_data, const uint8_t flags)
int32_t byte_extract_max_local_id
bool dst_contains_negation
uint16_t addr_dst_match6_cnt
@ SIG_PROP_FLOW_ACTION_PACKET
struct DetectEngineThreadCtx_ DetectEngineThreadCtx
PrefilterEngine * frame_engines
struct DetectEngineTransforms DetectEngineTransforms
@ FILE_DECODER_EVENT_Z_BUF_ERROR
@ DETECT_ENGINE_TYPE_TENANT
HashListTable * dup_sig_hash_table
@ ENGINE_SGH_MPM_FACTORY_CONTEXT_FULL
Used to start a pointer to SigMatch context Should never be dereferenced without casting to something...
PrefilterEngineList * pkt_engines
InspectionMultiBufferGetDataPtr GetMultiData
InspectionBufferGetPktDataPtr GetData
@ DETECT_ENGINE_TYPE_NORMAL
DetectAddress * ipv6_head
void DetectMetadataHashFree(DetectEngineCtx *de_ctx)
struct AppLayerTxData AppLayerTxData
struct DetectEngineIPOnlyCtx_ DetectEngineIPOnlyCtx
IP only rules matching ctx.
struct DetectEngineThreadCtx_::@96 multi_inspect
SigFileLoaderStat sig_stat
HashListTable * address_table
uint32_t * to_clear_queue
struct SCProfilePrefilterDetectCtx_ * profile_prefilter_ctx
struct InspectionBufferMultipleForList InspectionBufferMultipleForList
uint8_t(* InspectEngineFuncPtr)(struct DetectEngineCtx_ *de_ctx, struct DetectEngineThreadCtx_ *det_ctx, const struct DetectEngineAppInspectionEngine_ *engine, const struct Signature_ *s, Flow *f, uint8_t flags, void *alstate, void *txv, uint64_t tx_id)
enum DetectBufferMpmType type
struct SigMatchCtx_ SigMatchCtx
Used to start a pointer to SigMatch context Should never be dereferenced without casting to something...
SignatureNonPrefilterStore * non_pf_other_store_array
DetectBufferMpmRegistry * app_mpms_list
@ SIG_PROP_FLOW_ACTION_FLOW_IF_STATEFUL
uint64_t prefilter_bytes_called
PrefilterEngineList * frame_engines
@ DETECT_BUFFER_MPM_TYPE_APP
PrefilterEngineList * payload_engines
HashListTable * buffer_type_hash_name
struct DetectEngineCtx_ * next
uint32_t non_pf_other_store_cnt
@ DETECT_ENGINE_TYPE_DD_STUB
struct DetectEngineFrameInspectionEngine * next
void(* Transform)(InspectionBuffer *, void *context)
SignatureInitDataBuffer * curbuf
struct SCProfilePrefilterData_ * prefilter_perf_data
DetectEnginePrefilterSetting
struct DetectPort_ * prev
struct DetectEnginePktInspectionEngine * next
uint64_t frame_inspect_progress
uint32_t profile_match_logging_threshold
struct DetectEngineFrameInspectionEngine::@83 v1
struct SCProfileKeywordDetectCtx_ ** profile_keyword_ctx_per_list
struct RuleMatchCandidateTx RuleMatchCandidateTx
void(* PrefilterPktFn)(DetectEngineThreadCtx *det_ctx, Packet *p, const void *pectx)
@ FILE_DECODER_EVENT_NO_MEM
DetectEnginePktInspectionEngine * pkt_inspect_engines
struct EngineAnalysisCtx_ * ea
uint32_t sig_mapping_size
bool * sm_types_silent_error
SigIntId * non_pf_id_array
struct SigGroupHeadInitData_ SigGroupHeadInitData
struct DetectAddress_ DetectAddress
address structure for use in the detection engine.
uint32_t app_mpms_list_cnt
uint16_t addr_src_match6_cnt
SignatureInitDataBuffer * buffers
DetectEngineAppInspectionEngine * app_inspect_engines
const DetectAddressHead * dst
int filemagic_thread_ctx_id
PacketAlert * alert_queue
uint32_t pcre_match_start_offset
int global_keyword_ctxs_size
HashListTable * mpm_hash_table
void DumpPatterns(DetectEngineCtx *de_ctx)
DetectMetadataHead * metadata
uint32_t non_pf_store_cnt
Structure for the radix tree.
void ** keyword_ctxs_array
@ FILE_DECODER_EVENT_Z_DATA_ERROR
bool(* SupportsPrefilter)(const Signature *s)
DetectMatchAddressIPv6 * addr_dst_match6
int(* PrefilterRegisterWithListId)(struct DetectEngineCtx_ *de_ctx, struct SigGroupHead_ *sgh, MpmCtx *mpm_ctx, const struct DetectBufferMpmRegistry_ *mpm_reg, int list_id)
uint8_t guess_applayer_log_limit
int base64_decoded_len_max
struct DetectEngineLookupFlow_ DetectEngineLookupFlow
void DisableDetectFlowFileFlags(Flow *f)
disable file features we don't need Called if we have no detection engine.
DetectEngineTransforms transforms
struct DetectEnginePktInspectionEngine::@82 v1
a single match condition for a signature
const DetectEngineTransforms * transforms
struct DetectAddress_ * next
struct DetectEnginePktInspectionEngine DetectEnginePktInspectionEngine
SignatureNonPrefilterStore * non_pf_syn_store_array
@ DETECT_BUFFER_MPM_TYPE_SIZE
@ DETECT_ENGINE_TYPE_MT_STUB
struct Signature_ Signature
Signature container.
IP only rules matching ctx.
@ FILE_DECODER_EVENT_INVALID_SWF_VERSION
void(* SetupCallback)(const struct DetectEngineCtx_ *, struct Signature_ *)
int DetectMetadataHashInit(DetectEngineCtx *de_ctx)
SpmGlobalThreadCtx * spm_global_thread_ctx
int DetectFlowbitsAnalyze(DetectEngineCtx *de_ctx)
PrefilterEngine * pkt_engines
@ SIG_PROP_FLOW_ACTION_FLOW
DetectReplaceList * replist
DetectEngineTransforms transforms
DetectEngineIPOnlyCtx io_ctx
PrefilterTxFn PrefilterTx
struct DetectMatchAddressIPv4_ DetectMatchAddressIPv4
DetectMatchAddressIPv4 * addr_dst_match4
struct DetectBufferMpmRegistry_::@84::@88 frame_v1
uint16_t addr_src_match4_cnt
void * DetectGetInnerTx(void *tx_ptr, AppProto alproto, AppProto engine_alproto, uint8_t flow_flags)
struct DetectEngineAppInspectionEngine_ DetectEngineAppInspectionEngine
@ TENANT_SELECTOR_LIVEDEV
uint16_t addr_dst_match4_cnt
HashTable * metadata_table
Signature loader statistics.
@ FILE_DECODER_EVENT_LZMA_HEADER_TOO_SHORT_ERROR
HashListTable * buffer_type_hash_id
uint32_t base64_decode_max_len
@ DETECT_SM_LIST_SUPPRESS
SCFPSupportSMList * fp_support_smlist_list
InspectionBuffer * inspection_buffers
DetectAddress * ipv4_head
enum SignaturePropertyFlowAction flow_action
uint16_t counter_mpm_list
@ FILE_DECODER_EVENT_LZMA_MEMLIMIT_ERROR
struct DetectEngineFrameInspectionEngine DetectEngineFrameInspectionEngine
struct SigMatchData_ SigMatchData
Data needed for Match()
enum MpmBuiltinBuffers buffer
uint32_t tenant_array_size
struct DetectEngineTenantMapping_ * tenant_array
struct SCSigOrderFunc_ * sc_sig_order_funcs
void(* RegisterTests)(void)
struct DetectEngineThreadCtx_ ** mt_det_ctxs
uint32_t(* TenantGetId)(const void *, const Packet *p)
struct DetectEngineThreadCtx_::@95 inspect