]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dhcp: support AppLayerTxData
authorVictor Julien <victor@inliniac.net>
Sun, 7 Jun 2020 17:48:47 +0000 (19:48 +0200)
committerVictor Julien <victor@inliniac.net>
Sat, 11 Jul 2020 06:37:40 +0000 (08:37 +0200)
rust/src/dhcp/dhcp.rs

index 094565eebf1f3f7c6194b50cb4726f772d57cff3..77c747f892c9ab808c9c1fc8c3d4bdef960d1304 100644 (file)
@@ -91,9 +91,9 @@ impl DHCPEvent {
 pub struct DHCPTransaction {
     tx_id: u64,
     pub message: DHCPMessage,
-    logged: applayer::LoggerFlags,
     de_state: Option<*mut core::DetectEngineState>,
     events: *mut core::AppLayerDecoderEvents,
+    tx_data: applayer::AppLayerTxData,
 }
 
 impl DHCPTransaction {
@@ -101,9 +101,9 @@ impl DHCPTransaction {
         DHCPTransaction {
             tx_id: id,
             message: message,
-            logged: applayer::LoggerFlags::new(),
             de_state: None,
             events: std::ptr::null_mut(),
+            tx_data: applayer::AppLayerTxData::new(),
         }
     }
 
@@ -321,20 +321,6 @@ pub extern "C" fn rs_dhcp_state_free(state: *mut std::os::raw::c_void) {
     let _drop: Box<DHCPState> = unsafe { transmute(state) };
 }
 
-#[no_mangle]
-pub extern "C" fn rs_dhcp_tx_get_logged(_state: *mut std::os::raw::c_void, tx: *mut std::os::raw::c_void) -> u32 {
-    let tx = cast_pointer!(tx, DHCPTransaction);
-    return tx.logged.get();
-}
-
-#[no_mangle]
-pub extern "C" fn rs_dhcp_tx_set_logged(_state: *mut std::os::raw::c_void,
-                                        tx: *mut std::os::raw::c_void,
-                                        logged: u32) {
-    let tx = cast_pointer!(tx, DHCPTransaction);
-    tx.logged.set(logged);
-}
-
 #[no_mangle]
 pub extern "C" fn rs_dhcp_state_get_event_info_by_id(event_id: std::os::raw::c_int,
                                                      event_name: *mut *const std::os::raw::c_char,
@@ -415,6 +401,8 @@ pub extern "C" fn rs_dhcp_state_get_tx_iterator(
     }
 }
 
+export_tx_data_get!(rs_dhcp_get_tx_data, DHCPTransaction);
+
 const PARSER_NAME: &'static [u8] = b"dhcp\0";
 
 #[no_mangle]
@@ -438,8 +426,8 @@ pub unsafe extern "C" fn rs_dhcp_register_parser() {
         get_tx             : rs_dhcp_state_get_tx,
         tx_get_comp_st     : rs_dhcp_state_progress_completion_status,
         tx_get_progress    : rs_dhcp_tx_get_alstate_progress,
-        get_tx_logged      : Some(rs_dhcp_tx_get_logged),
-        set_tx_logged      : Some(rs_dhcp_tx_set_logged),
+        get_tx_logged      : None,
+        set_tx_logged      : None,
         get_de_state       : rs_dhcp_tx_get_detect_state,
         set_de_state       : rs_dhcp_tx_set_detect_state,
         get_events         : Some(rs_dhcp_state_get_events),
@@ -451,7 +439,7 @@ pub unsafe extern "C" fn rs_dhcp_register_parser() {
         get_tx_iterator    : Some(rs_dhcp_state_get_tx_iterator),
         set_tx_detect_flags: None,
         get_tx_detect_flags: None,
-        get_tx_data        : None,
+        get_tx_data        : Some(rs_dhcp_get_tx_data),
         apply_tx_config    : None,
     };