From: Shivani Bhardwaj Date: Tue, 23 Feb 2021 08:23:06 +0000 (+0530) Subject: rust/context: add AppLayerParserTriggerRawStreamReassembly X-Git-Tag: suricata-7.0.0-beta1~1769 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c77c8e70050b865401b3cfd3d5396bec90ac2498;p=thirdparty%2Fsuricata.git rust/context: add AppLayerParserTriggerRawStreamReassembly --- diff --git a/rust/src/core.rs b/rust/src/core.rs index 69ed658a23..cf88b1127f 100644 --- a/rust/src/core.rs +++ b/rust/src/core.rs @@ -81,6 +81,8 @@ pub type SCLogMessageFunc = pub type DetectEngineStateFreeFunc = extern "C" fn(state: *mut DetectEngineState); +pub type AppLayerParserTriggerRawStreamReassemblyFunc = + extern "C" fn (flow: *const Flow, direction: i32); pub type AppLayerDecoderEventsSetEventRawFunc = extern "C" fn (events: *mut *mut AppLayerDecoderEvents, event: u8); @@ -133,6 +135,7 @@ pub struct SuricataContext { DetectEngineStateFree: DetectEngineStateFreeFunc, AppLayerDecoderEventsSetEventRaw: AppLayerDecoderEventsSetEventRawFunc, AppLayerDecoderEventsFreeEvents: AppLayerDecoderEventsFreeEventsFunc, + pub AppLayerParserTriggerRawStreamReassembly: AppLayerParserTriggerRawStreamReassemblyFunc, pub FileOpenFile: SCFileOpenFileWithId, pub FileCloseFile: SCFileCloseFileById, @@ -182,6 +185,15 @@ pub fn sc_detect_engine_state_free(state: *mut DetectEngineState) } } +/// AppLayerParserTriggerRawStreamReassembly wrapper +pub fn sc_app_layer_parser_trigger_raw_stream_reassembly(flow: *const Flow, direction: i32) { + unsafe { + if let Some(c) = SC { + (c.AppLayerParserTriggerRawStreamReassembly)(flow, direction); + } + } +} + /// AppLayerDecoderEventsSetEventRaw wrapper. pub fn sc_app_layer_decoder_events_set_event_raw( events: *mut *mut AppLayerDecoderEvents, event: u8) diff --git a/src/rust-context.h b/src/rust-context.h index f0005314f7..e9ebad210f 100644 --- a/src/rust-context.h +++ b/src/rust-context.h @@ -34,6 +34,7 @@ typedef struct SuricataContext_ { void (*AppLayerDecoderEventsSetEventRaw)(AppLayerDecoderEvents **, uint8_t); void (*AppLayerDecoderEventsFreeEvents)(AppLayerDecoderEvents **); + void (*AppLayerParserTriggerRawStreamReassembly)(Flow *, int direction); int (*FileOpenFileWithId)(FileContainer *, const StreamingBufferConfig *, uint32_t track_id, const uint8_t *name, uint16_t name_len, diff --git a/src/suricata.c b/src/suricata.c index f386dc4159..7b3491fe2e 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -2653,6 +2653,8 @@ int InitGlobal(void) { suricata_context.DetectEngineStateFree = DetectEngineStateFree; suricata_context.AppLayerDecoderEventsSetEventRaw = AppLayerDecoderEventsSetEventRaw; suricata_context.AppLayerDecoderEventsFreeEvents = AppLayerDecoderEventsFreeEvents; + suricata_context.AppLayerParserTriggerRawStreamReassembly = + AppLayerParserTriggerRawStreamReassembly; suricata_context.FileOpenFileWithId = FileOpenFileWithId; suricata_context.FileCloseFileById = FileCloseFileById;