]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust/context: add AppLayerParserTriggerRawStreamReassembly
authorShivani Bhardwaj <shivanib134@gmail.com>
Tue, 23 Feb 2021 08:23:06 +0000 (13:53 +0530)
committerVictor Julien <victor@inliniac.net>
Tue, 23 Feb 2021 17:08:46 +0000 (18:08 +0100)
rust/src/core.rs
src/rust-context.h
src/suricata.c

index 69ed658a234752c692d10dcf99ea0f748ca54eeb..cf88b1127fe3ec12c7c937565aa169d277f1e480 100644 (file)
@@ -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)
index f0005314f7cfa3fe156c57ad0cb87f6b95486174..e9ebad210f05fda3dcab0221fc2cf6d7008c093f 100644 (file)
@@ -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,
index f386dc4159c884332691eaef904046785cb81d68..7b3491fe2e854c1e31a353c0cac7495ec49b8a19 100644 (file)
@@ -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;