]> 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>
Fri, 26 Feb 2021 09:42:50 +0000 (10:42 +0100)
(cherry picked from commit c77c8e70050b865401b3cfd3d5396bec90ac2498)

rust/src/core.rs
src/rust-context.h
src/suricata.c

index 07e49be071cf804563d5ddc52c8c9b5dfd8bcc24..727d4605cb79bd6e149ed3dd6856bf9c639335c0 100644 (file)
@@ -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)
index 8efd2678a3d44d6d73e4fa1134050520e4db7db4..46223f6b06d6c9cc2b8535cc242636abe76bb509 100644 (file)
@@ -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,
index 15a84e2f9f25df27ae9f76d209b8f7c2e3bfb463..5728da50251ae089eaf9e56ea59bd6da1113e874 100644 (file)
@@ -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;