From: Shivani Bhardwaj Date: Tue, 23 Feb 2021 08:23:06 +0000 (+0530) Subject: rust/context: add AppLayerParserTriggerRawStreamReassembly X-Git-Tag: suricata-6.0.2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=772b8f61e7fa7205c849dec8c0269a3ca0328f28;p=thirdparty%2Fsuricata.git rust/context: add AppLayerParserTriggerRawStreamReassembly (cherry picked from commit c77c8e70050b865401b3cfd3d5396bec90ac2498) --- diff --git a/rust/src/core.rs b/rust/src/core.rs index 07e49be071..727d4605cb 100644 --- a/rust/src/core.rs +++ b/rust/src/core.rs @@ -77,6 +77,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); @@ -129,6 +131,7 @@ pub struct SuricataContext { DetectEngineStateFree: DetectEngineStateFreeFunc, AppLayerDecoderEventsSetEventRaw: AppLayerDecoderEventsSetEventRawFunc, AppLayerDecoderEventsFreeEvents: AppLayerDecoderEventsFreeEventsFunc, + pub AppLayerParserTriggerRawStreamReassembly: AppLayerParserTriggerRawStreamReassemblyFunc, pub FileOpenFile: SCFileOpenFileWithId, pub FileCloseFile: SCFileCloseFileById, @@ -176,6 +179,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 8efd2678a3..46223f6b06 100644 --- a/src/rust-context.h +++ b/src/rust-context.h @@ -32,6 +32,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 15a84e2f9f..5728da5025 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -2678,6 +2678,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;