]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust: bindgen SCDetectHelperMultiBufferProgressMpmRegister
authorPhilippe Antoine <pantoine@oisf.net>
Sun, 11 May 2025 20:42:00 +0000 (22:42 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 13 May 2025 18:24:05 +0000 (20:24 +0200)
Ticket: 7667

rust/src/detect/mod.rs
rust/src/dns/detect.rs
rust/sys/src/sys.rs
src/detect-engine-helper.c
src/detect-engine-helper.h

index fd289dbc01c60e1e72daacd625e0fc8d5a44efce..fefc59a8dbabdc6669d796bf22093d4522375623 100644 (file)
@@ -190,18 +190,6 @@ extern "C" {
             *mut u32,
         ) -> bool,
     ) -> c_int;
-    pub fn DetectHelperMultiBufferProgressMpmRegister(
-        name: *const libc::c_char, desc: *const libc::c_char, alproto: AppProto, dir: u8,
-        get_multi_data: unsafe extern "C" fn(
-            *mut DetectEngineThreadCtx,
-            *const c_void,
-            u8,
-            u32,
-            *mut *const u8,
-            *mut u32,
-        ) -> bool,
-        progress: c_int,
-    ) -> c_int;
 }
 #[repr(u8)]
 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
index 5d58c84d181c4745495d85562784ab3c436b3292..6396fad0c4a308ce6cb3eec49ea4f1e17bb2a2be 100644 (file)
@@ -23,14 +23,16 @@ use crate::detect::uint::{
 };
 use crate::detect::{
     helper_keyword_register_sticky_buffer, DetectHelperBufferRegister,
-    DetectHelperKeywordAliasRegister, DetectHelperKeywordRegister,
-    DetectHelperMultiBufferProgressMpmRegister, DetectSignatureSetAppProto, SCSigTableAppLiteElmt,
-    SigMatchAppendSMToList, SigTableElmtStickyBuffer,
+    DetectHelperKeywordAliasRegister, DetectHelperKeywordRegister, DetectSignatureSetAppProto,
+    SCSigTableAppLiteElmt, SigMatchAppendSMToList, SigTableElmtStickyBuffer,
 };
 use crate::direction::Direction;
 use std::ffi::CStr;
 use std::os::raw::{c_int, c_void};
-use suricata_sys::sys::{DetectEngineCtx, SCDetectBufferSetActiveList, Signature};
+use suricata_sys::sys::{
+    DetectEngineCtx, SCDetectBufferSetActiveList, SCDetectHelperMultiBufferProgressMpmRegister,
+    Signature,
+};
 
 /// Perform the DNS opcode match.
 ///
@@ -330,14 +332,14 @@ pub unsafe extern "C" fn SCDetectDNSRegister() {
         setup: dns_detect_answer_name_setup,
     };
     let _g_dns_answer_name_kw_id = helper_keyword_register_sticky_buffer(&kw);
-    G_DNS_ANSWER_NAME_BUFFER_ID = DetectHelperMultiBufferProgressMpmRegister(
+    G_DNS_ANSWER_NAME_BUFFER_ID = SCDetectHelperMultiBufferProgressMpmRegister(
         b"dns.answer.name\0".as_ptr() as *const libc::c_char,
         b"dns answer name\0".as_ptr() as *const libc::c_char,
         ALPROTO_DNS,
         STREAM_TOSERVER | STREAM_TOCLIENT,
         /* Register also in the TO_SERVER direction, even though this is not
         normal, it could be provided as part of a request. */
-        dns_tx_get_answer_name,
+        Some(dns_tx_get_answer_name),
         1, // response complete
     );
     let kw = SCSigTableAppLiteElmt {
@@ -362,14 +364,14 @@ pub unsafe extern "C" fn SCDetectDNSRegister() {
         setup: dns_detect_query_name_setup,
     };
     let _g_dns_query_name_kw_id = helper_keyword_register_sticky_buffer(&kw);
-    G_DNS_QUERY_NAME_BUFFER_ID = DetectHelperMultiBufferProgressMpmRegister(
+    G_DNS_QUERY_NAME_BUFFER_ID = SCDetectHelperMultiBufferProgressMpmRegister(
         b"dns.query.name\0".as_ptr() as *const libc::c_char,
         b"dns query name\0".as_ptr() as *const libc::c_char,
         ALPROTO_DNS,
         STREAM_TOSERVER | STREAM_TOCLIENT,
         /* Register in both directions as the query is usually echoed back
         in the response. */
-        dns_tx_get_query_name,
+        Some(dns_tx_get_query_name),
         1, // request or response complete
     );
     let kw = SCSigTableAppLiteElmt {
@@ -413,13 +415,13 @@ pub unsafe extern "C" fn SCDetectDNSRegister() {
         g_dns_query_name_kw_id,
         b"dns_query\0".as_ptr() as *const libc::c_char,
     );
-    G_DNS_QUERY_BUFFER_ID = DetectHelperMultiBufferProgressMpmRegister(
+    G_DNS_QUERY_BUFFER_ID = SCDetectHelperMultiBufferProgressMpmRegister(
         b"dns_query\0".as_ptr() as *const libc::c_char,
         b"dns request query\0".as_ptr() as *const libc::c_char,
         ALPROTO_DNS,
         STREAM_TOSERVER,
-        dns_tx_get_query, // reuse, will be called only toserver
-        1,                // request complete
+        Some(dns_tx_get_query), // reuse, will be called only toserver
+        1,                      // request complete
     );
 }
 
index 9a2d9bb60f3ec47bba41c3b5bc28aa0d43fd627a..c82e7e85374a14b0f9fbe18a830c21199f8a8de3 100644 (file)
@@ -244,6 +244,16 @@ pub struct SigMatchCtx_ {
     _unused: [u8; 0],
 }
 pub type SigMatchCtx = SigMatchCtx_;
+pub type InspectionMultiBufferGetDataPtr = ::std::option::Option<
+    unsafe extern "C" fn(
+        det_ctx: *mut DetectEngineThreadCtx_,
+        txv: *const ::std::os::raw::c_void,
+        flow_flags: u8,
+        local_id: u32,
+        buf: *mut *const u8,
+        buf_len: *mut u32,
+    ) -> bool,
+>;
 #[doc = " App-layer light version of SigTableElmt"]
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -316,6 +326,13 @@ pub struct SCTransformTableElmt {
 extern "C" {
     pub fn SCDetectHelperNewKeywordId() -> ::std::os::raw::c_int;
 }
+extern "C" {
+    pub fn SCDetectHelperMultiBufferProgressMpmRegister(
+        name: *const ::std::os::raw::c_char, desc: *const ::std::os::raw::c_char,
+        alproto: AppProto, direction: u8, GetData: InspectionMultiBufferGetDataPtr,
+        progress: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
 extern "C" {
     pub fn SCDetectHelperTransformRegister(
         kw: *const SCTransformTableElmt,
index ce0d20d8fdcaed667b7cbb7a4da790c2be70c698..9daaa9bd47f4a2e52f1845bc772d34720ac190e1 100644 (file)
@@ -81,7 +81,7 @@ int DetectHelperBufferMpmRegister(const char *name, const char *desc, AppProto a
     return DetectBufferTypeGetByName(name);
 }
 
-int DetectHelperMultiBufferProgressMpmRegister(const char *name, const char *desc, AppProto alproto,
+int SCDetectHelperMultiBufferProgressMpmRegister(const char *name, const char *desc, AppProto alproto,
         uint8_t direction, InspectionMultiBufferGetDataPtr GetData, int progress)
 {
     if (direction & STREAM_TOSERVER) {
@@ -98,7 +98,7 @@ int DetectHelperMultiBufferProgressMpmRegister(const char *name, const char *des
 int DetectHelperMultiBufferMpmRegister(const char *name, const char *desc, AppProto alproto,
         uint8_t direction, InspectionMultiBufferGetDataPtr GetData)
 {
-    return DetectHelperMultiBufferProgressMpmRegister(name, desc, alproto, direction, GetData, 0);
+    return SCDetectHelperMultiBufferProgressMpmRegister(name, desc, alproto, direction, GetData, 0);
 }
 
 int SCDetectHelperNewKeywordId(void)
index ca75ee1168a36417cdecaade2f927ef4c716d29b..b2b0e5cd6bae3f2e52297f719391cee2e131d7bc 100644 (file)
@@ -88,7 +88,7 @@ int DetectHelperBufferMpmRegister(const char *name, const char *desc, AppProto a
         uint8_t direction, InspectionBufferGetDataPtr GetData);
 int DetectHelperMultiBufferMpmRegister(const char *name, const char *desc, AppProto alproto,
         uint8_t direction, InspectionMultiBufferGetDataPtr GetData);
-int DetectHelperMultiBufferProgressMpmRegister(const char *name, const char *desc, AppProto alproto,
+int SCDetectHelperMultiBufferProgressMpmRegister(const char *name, const char *desc, AppProto alproto,
         uint8_t direction, InspectionMultiBufferGetDataPtr GetData, int progress);
 
 int SCDetectHelperTransformRegister(const SCTransformTableElmt *kw);