Go to the documentation of this file.
33 static int detect_buffer_id = 0;
70 int list_id,
bool get_rdata)
81 const uint8_t *data = NULL;
82 uint32_t data_len = 0;
88 if (!SCDnsTxGetAnswerRdata(txv, cbdata->
response_id, &data, &data_len)) {
94 if (!SCDnsTxGetAuthorityRdata(txv, cbdata->
response_id, &data, &data_len)) {
100 if (!SCDnsTxGetAdditionalRdata(txv, cbdata->
response_id, &data, &data_len)) {
113 if (!SCDnsTxGetQueryName(txv,
true, cbdata->
response_id, &data, &data_len)) {
119 if (!SCDnsTxGetAnswerName(txv,
true, cbdata->
response_id, &data, &data_len)) {
125 if (!SCDnsTxGetAuthorityName(txv, cbdata->
response_id, &data, &data_len)) {
131 if (!SCDnsTxGetAdditionalName(txv, cbdata->
response_id, &data, &data_len)) {
152 uint32_t response_id = 0;
160 GetBuffer(det_ctx,
flags, transforms, txv, &cbdata, engine->
sm_list,
false);
161 if (buffer == NULL || buffer->
inspect == NULL) {
180 buffer = GetBuffer(det_ctx,
flags, transforms, txv, &cbdata, engine->
sm_list,
true);
181 if (buffer == NULL || buffer->
inspect == NULL) {
202 const int list_id =
ctx->list_id;
210 GetBuffer(det_ctx,
flags,
ctx->transforms, txv, &cbdata, list_id,
false);
211 if (buffer == NULL) {
231 buffer = GetBuffer(det_ctx,
flags,
ctx->transforms, txv, &cbdata, list_id,
true);
232 if (buffer == NULL) {
250 uint8_t
flags,
void *alstate,
void *txv, uint64_t tx_id)
266 ret_match = CheckSectionRecords(
283 CheckSectionRecordsPrefilter(det_ctx, pectx, txv,
flags, &
local_id, section);
287 static void DetectDnsResponsePrefilterMpmFree(
void *ptr)
304 mpm_reg->
app_v2.alproto, mpm_reg->
app_v2.tx_min_progress, pectx,
305 DetectDnsResponsePrefilterMpmFree, mpm_reg->
pname);
310 static const char *keyword =
"dns.response.rrname";
int DetectSignatureSetAppProto(Signature *s, AppProto alproto)
enum DnsResponseSection response_section
#define SIGMATCH_INFO_STICKY_BUFFER
SigTableElmt * sigmatch_table
Container for matching data for a signature group.
int DetectBufferSetActiveList(DetectEngineCtx *de_ctx, Signature *s, const int list)
main detection engine ctx
void DetectBufferTypeSupportsMultiInstance(const char *name)
one time registration of keywords at start up
#define SIG_FLAG_TOCLIENT
int(* Setup)(DetectEngineCtx *, Signature *, const char *)
DetectEngineTransforms transforms
int DetectBufferTypeGetByName(const char *name)
void InspectionBufferSetupMultiEmpty(InspectionBuffer *buffer)
setup the buffer empty
#define DETECT_ENGINE_INSPECT_SIG_MATCH
@ DETECT_ENGINE_CONTENT_INSPECTION_MODE_STATE
void DetectAppLayerMpmRegister(const char *name, int direction, int priority, PrefilterRegisterFunc PrefilterRegister, InspectionBufferGetDataPtr GetData, AppProto alproto, int tx_min_progress)
register an app layer keyword for mpm
struct DetectBufferMpmRegistry_::@82::@84 app_v2
uint32_t(* Search)(const struct MpmCtx_ *, struct MpmThreadCtx_ *, PrefilterRuleStore *, const uint8_t *, uint32_t)
const DetectEngineTransforms * transforms
struct AppLayerTxData AppLayerTxData
#define PREFILTER_PROFILING_ADD_BYTES(det_ctx, bytes)
#define DETECT_CI_FLAGS_SINGLE
void InspectionBufferSetupMulti(InspectionBuffer *buffer, const DetectEngineTransforms *transforms, const uint8_t *data, const uint32_t data_len)
setup the buffer with our initial data
int PrefilterAppendTxEngine(DetectEngineCtx *de_ctx, SigGroupHead *sgh, PrefilterTxFn PrefilterTxFunc, AppProto alproto, int tx_min_progress, void *pectx, void(*FreeFunc)(void *pectx), const char *name)
#define DETECT_ENGINE_INSPECT_SIG_NO_MATCH
const DetectEngineTransforms * transforms
MpmTableElmt mpm_table[MPM_TABLE_SIZE]
InspectionBuffer * InspectionBufferMultipleForListGet(DetectEngineThreadCtx *det_ctx, const int list_id, const uint32_t local_id)
for a InspectionBufferMultipleForList get a InspectionBuffer
void DetectAppLayerInspectEngineRegister(const char *name, AppProto alproto, uint32_t dir, int progress, InspectEngineFuncPtr Callback, InspectionBufferGetDataPtr GetData)
Registers an app inspection engine.
bool DetectEngineContentInspectionBuffer(DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx, const Signature *s, const SigMatchData *smd, Packet *p, Flow *f, const InspectionBuffer *b, const enum DetectContentInspectionType inspection_mode)
wrapper around DetectEngineContentInspectionInternal to return true/false only
struct PrefilterMpm PrefilterMpm
void DetectDnsResponseRegister(void)
void DetectBufferTypeSetDescriptionByName(const char *name, const char *desc)
struct DetectEngineAppInspectionEngine_::@77 v2
@ DNS_RESPONSE_ADDITIONAL