]> git.ipfire.org Git - people/ms/suricata.git/blobdiff - rust/src/ike/ike.rs
app-layer: include decoder events in app-layer tx data
[people/ms/suricata.git] / rust / src / ike / ike.rs
index e29edf1d0fbf04631bd11e7ea54aea6a76b44321..89cb3a08862c18a71e6679d12fbc8455f6dac732 100644 (file)
@@ -105,7 +105,6 @@ pub struct IKETransaction {
     pub errors: u32,
 
     logged: LoggerFlags,
-    events: *mut core::AppLayerDecoderEvents,
     tx_data: applayer::AppLayerTxData,
 }
 
@@ -124,28 +123,14 @@ impl IKETransaction {
             payload_types: Default::default(),
             notify_types: vec![],
             logged: LoggerFlags::new(),
-            events: std::ptr::null_mut(),
             tx_data: applayer::AppLayerTxData::new(),
             errors: 0,
         }
     }
 
-    pub fn free(&mut self) {
-        if !self.events.is_null() {
-            core::sc_app_layer_decoder_events_free_events(&mut self.events);
-        }
-    }
-
     /// Set an event.
     pub fn set_event(&mut self, event: IkeEvent) {
-        let ev = event as u8;
-        core::sc_app_layer_decoder_events_set_event_raw(&mut self.events, ev);
-    }
-}
-
-impl Drop for IKETransaction {
-    fn drop(&mut self) {
-        self.free();
+        self.tx_data.set_event(event as u8);
     }
 }
 
@@ -196,8 +181,7 @@ impl IKEState {
     /// Set an event. The event is set on the most recent transaction.
     pub fn set_event(&mut self, event: IkeEvent) {
         if let Some(tx) = self.transactions.last_mut() {
-            let ev = event as u8;
-            core::sc_app_layer_decoder_events_set_event_raw(&mut tx.events, ev);
+            tx.set_event(event);
         } else {
             SCLogDebug!(
                 "IKE: trying to set event {} on non-existing transaction",
@@ -400,14 +384,6 @@ pub unsafe extern "C" fn rs_ike_tx_set_logged(
     tx.logged.set(logged);
 }
 
-#[no_mangle]
-pub unsafe extern "C" fn rs_ike_state_get_events(
-    tx: *mut std::os::raw::c_void,
-) -> *mut core::AppLayerDecoderEvents {
-    let tx = cast_pointer!(tx, IKETransaction);
-    return tx.events;
-}
-
 static mut ALPROTO_IKE : AppProto = ALPROTO_UNKNOWN;
 
 // Parser name as a C style string.
@@ -437,7 +413,6 @@ pub unsafe extern "C" fn rs_ike_register_parser() {
         tx_comp_st_ts      : 1,
         tx_comp_st_tc      : 1,
         tx_get_progress    : rs_ike_tx_get_alstate_progress,
-        get_events         : Some(rs_ike_state_get_events),
         get_eventinfo      : Some(IkeEvent::get_event_info),
         get_eventinfo_byid : Some(IkeEvent::get_event_info_by_id),
         localstorage_new   : None,