detect: SetupCallback uses DetectBufferType argument

Will allow for generic callbacks, that can be used from rust
pull/14712/head
Philippe Antoine 6 months ago committed by Victor Julien
parent 83360cfce0
commit 24e33944aa

@ -1461,7 +1461,7 @@ bool DetectEngineBufferTypeSupportsFramesGetById(const DetectEngineCtx *de_ctx,
}
void DetectBufferTypeRegisterSetupCallback(const char *name,
void (*SetupCallback)(const DetectEngineCtx *, Signature *))
void (*SetupCallback)(const DetectEngineCtx *, Signature *, const DetectBufferType *))
{
BUG_ON(g_buffer_type_reg_closed);
DetectBufferTypeRegister(name);
@ -1474,7 +1474,7 @@ void DetectEngineBufferRunSetupCallback(const DetectEngineCtx *de_ctx, const int
{
const DetectBufferType *map = DetectEngineBufferTypeGetById(de_ctx, id);
if (map && map->SetupCallback) {
map->SetupCallback(de_ctx, s);
map->SetupCallback(de_ctx, s, map);
}
}

@ -42,7 +42,7 @@ int DetectBufferTypeMaxId(void);
void DetectBufferTypeCloseRegistration(void);
void DetectBufferTypeSetDescriptionByName(const char *name, const char *desc);
void DetectBufferTypeRegisterSetupCallback(const char *name,
void (*Callback)(const DetectEngineCtx *, Signature *));
void (*Callback)(const DetectEngineCtx *, Signature *, const DetectBufferType *));
void DetectBufferTypeRegisterValidateCallback(
const char *name, bool (*ValidateCallback)(const Signature *, const char **sigerror,
const DetectBufferType *));

@ -58,8 +58,8 @@ static int DetectFiledataSetup (DetectEngineCtx *, Signature *, const char *);
#ifdef UNITTESTS
static void DetectFiledataRegisterTests(void);
#endif
static void DetectFiledataSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s);
static void DetectFiledataSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static int g_file_data_buffer_id = 0;
/* file API */
@ -240,8 +240,8 @@ static int DetectFiledataSetup (DetectEngineCtx *de_ctx, Signature *s, const cha
return 0;
}
static void DetectFiledataSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectFiledataSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
if (s->alproto == ALPROTO_HTTP1 || s->alproto == ALPROTO_UNKNOWN ||
s->alproto == ALPROTO_HTTP) {

@ -68,8 +68,8 @@ static int DetectHttpClientBodySetupSticky(DetectEngineCtx *de_ctx, Signature *s
#ifdef UNITTESTS
static void DetectHttpClientBodyRegisterTests(void);
#endif
static void DetectHttpClientBodySetupCallback(const DetectEngineCtx *de_ctx,
Signature *s);
static void DetectHttpClientBodySetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static int g_http_client_body_buffer_id = 0;
static uint8_t DetectEngineInspectBufferHttpBody(DetectEngineCtx *de_ctx,
@ -125,8 +125,8 @@ void DetectHttpClientBodyRegister(void)
g_http_client_body_buffer_id = DetectBufferTypeGetByName("http_client_body");
}
static void DetectHttpClientBodySetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectHttpClientBodySetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
SCLogDebug("callback invoked by %u", s->id);
AppLayerHtpEnableRequestBodyCallback();

@ -60,7 +60,8 @@
#ifdef UNITTESTS
static void DetectHttpUriRegisterTests(void);
#endif
static void DetectHttpUriSetupCallback(const DetectEngineCtx *de_ctx, Signature *s);
static void DetectHttpUriSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *_f, const uint8_t _flow_flags,
@ -70,7 +71,8 @@ static InspectionBuffer *GetData2(DetectEngineThreadCtx *det_ctx,
const int list_id);
static int DetectHttpUriSetupSticky(DetectEngineCtx *de_ctx, Signature *s, const char *str);
static int DetectHttpRawUriSetup(DetectEngineCtx *, Signature *, const char *);
static void DetectHttpRawUriSetupCallback(const DetectEngineCtx *de_ctx, Signature *s);
static void DetectHttpRawUriSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static InspectionBuffer *GetRawData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *_f, const uint8_t _flow_flags,
@ -183,8 +185,8 @@ int DetectHttpUriSetup(DetectEngineCtx *de_ctx, Signature *s, const char *str)
de_ctx, s, str, DETECT_HTTP_URI_CM, g_http_uri_buffer_id, ALPROTO_HTTP1);
}
static void DetectHttpUriSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectHttpUriSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
SCLogDebug("callback invoked by %u", s->id);
DetectUrilenApplyToContent(s, g_http_uri_buffer_id);
@ -269,8 +271,8 @@ static int DetectHttpRawUriSetup(DetectEngineCtx *de_ctx, Signature *s, const ch
de_ctx, s, arg, DETECT_HTTP_RAW_URI, g_http_raw_uri_buffer_id, ALPROTO_HTTP1);
}
static void DetectHttpRawUriSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectHttpRawUriSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
SCLogDebug("callback invoked by %u", s->id);
DetectUrilenApplyToContent(s, g_http_raw_uri_buffer_id);

@ -60,8 +60,8 @@
#define BUFFER_DESC "sip request uri"
static int g_buffer_id = 0;
static void DetectSipUriSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectSipUriSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
SCLogDebug("callback invoked by %u", s->id);
DetectUrilenApplyToContent(s, g_buffer_id);

@ -119,7 +119,8 @@ static int DetectSshHasshServerSetup(DetectEngineCtx *de_ctx, Signature *s, cons
}
static void DetectSshHasshServerHashSetupCallback(const DetectEngineCtx *de_ctx, Signature *s)
static void DetectSshHasshServerHashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_ssh_hassh_buffer_id)

@ -118,8 +118,8 @@ static int DetectSshHasshSetup(DetectEngineCtx *de_ctx, Signature *s, const char
}
static void DetectSshHasshHashSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectSshHasshHashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_ssh_hassh_buffer_id)

@ -61,8 +61,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *f, const uint8_t flow_flags,
void *txv, const int list_id);
static void DetectTlsFingerprintSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s);
static void DetectTlsFingerprintSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static bool DetectTlsFingerprintValidateCallback(
const Signature *s, const char **sigerror, const DetectBufferType *dbt);
static int g_tls_cert_fingerprint_buffer_id = 0;
@ -208,8 +208,8 @@ static bool DetectTlsFingerprintValidateCallback(
return true;
}
static void DetectTlsFingerprintSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectTlsFingerprintSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_tls_cert_fingerprint_buffer_id)

@ -61,8 +61,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *f, const uint8_t flow_flags,
void *txv, const int list_id);
static void DetectTlsSerialSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s);
static void DetectTlsSerialSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static bool DetectTlsSerialValidateCallback(
const Signature *s, const char **sigerror, const DetectBufferType *dbt);
static int g_tls_cert_serial_buffer_id = 0;
@ -198,8 +198,8 @@ static bool DetectTlsSerialValidateCallback(
return true;
}
static void DetectTlsSerialSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectTlsSerialSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_tls_cert_serial_buffer_id)

@ -71,7 +71,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *f, const uint8_t flow_flags,
void *txv, const int list_id);
static void DetectTlsJa3HashSetupCallback(const DetectEngineCtx *de_ctx, Signature *s);
static void DetectTlsJa3HashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static int g_tls_ja3_hash_buffer_id = 0;
#endif
@ -175,8 +176,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
return buffer;
}
static void DetectTlsJa3HashSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectTlsJa3HashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_tls_ja3_hash_buffer_id)

@ -71,7 +71,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
const DetectEngineTransforms *transforms,
Flow *f, const uint8_t flow_flags,
void *txv, const int list_id);
static void DetectTlsJa3SHashSetupCallback(const DetectEngineCtx *de_ctx, Signature *s);
static void DetectTlsJa3SHashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map);
static int g_tls_ja3s_hash_buffer_id = 0;
#endif
@ -173,8 +174,8 @@ static InspectionBuffer *GetData(DetectEngineThreadCtx *det_ctx,
return buffer;
}
static void DetectTlsJa3SHashSetupCallback(const DetectEngineCtx *de_ctx,
Signature *s)
static void DetectTlsJa3SHashSetupCallback(
const DetectEngineCtx *de_ctx, Signature *s, const DetectBufferType *map)
{
for (uint32_t x = 0; x < s->init_data->buffer_index; x++) {
if (s->init_data->buffers[x].id != (uint32_t)g_tls_ja3s_hash_buffer_id)

@ -455,7 +455,8 @@ typedef struct DetectBufferType_ {
bool frame; /**< is about Frame inspection */
bool supports_transforms;
bool multi_instance; /**< buffer supports multiple buffer instances per tx */
void (*SetupCallback)(const struct DetectEngineCtx_ *, struct Signature_ *);
void (*SetupCallback)(
const struct DetectEngineCtx_ *, struct Signature_ *, const struct DetectBufferType_ *);
bool (*ValidateCallback)(
const struct Signature_ *, const char **sigerror, const struct DetectBufferType_ *);
DetectEngineTransforms transforms;

Loading…
Cancel
Save