1818use std:: ffi:: CString ;
1919use std:: os:: raw:: c_void;
2020
21- pub use suricata_sys:: sys:: { Flow , Packet , SCEveUserCallbackFn , SCJsonBuilder , ThreadVars } ;
2221use suricata_sys:: sys:: {
23- SCEveFileType , SCEveFileTypeDeinitFunc , SCEveFileTypeInitFunc , SCEveFileTypeThreadDeinitFunc ,
24- SCEveFileTypeThreadInitFunc , SCEveFileTypeWriteFunc , SCEveRegisterCallback ,
25- SCRegisterEveFileType ,
22+ self , SCEveFileType , SCEveFileTypeDeinitFunc , SCEveFileTypeInitFunc ,
23+ SCEveFileTypeThreadDeinitFunc , SCEveFileTypeThreadInitFunc , SCEveFileTypeWriteFunc ,
24+ SCEveRegisterCallback , SCRegisterEveFileType ,
2625} ;
26+ pub use suricata_sys:: sys:: { Flow , Packet , SCEveUserCallbackFn , SCJsonBuilder } ;
27+
28+ use crate :: thread:: ThreadVars ;
2729
2830pub struct EveFileType {
2931 pub name : & ' static str ,
@@ -111,7 +113,7 @@ impl EveFileType {
111113pub fn register_callback < F > ( callback : F ) -> Result < ( ) , & ' static str >
112114where
113115 F : Fn (
114- * mut ThreadVars ,
116+ & mut ThreadVars ,
115117 * const Packet ,
116118 * mut Flow ,
117119 & mut crate :: jsonbuilder:: JsonBuilder ,
@@ -134,10 +136,11 @@ where
134136/// Internal wrapper used to adapt the C EVE callback to a Rust
135137/// closure callback.
136138unsafe extern "C" fn callback_wrapper < F > (
137- tv : * mut ThreadVars , p : * const Packet , f : * mut Flow , jb : * mut SCJsonBuilder , user : * mut c_void ,
139+ tv : * mut sys:: ThreadVars , p : * const Packet , f : * mut Flow , jb : * mut SCJsonBuilder ,
140+ user : * mut c_void ,
138141) where
139142 F : Fn (
140- * mut ThreadVars ,
143+ & mut ThreadVars ,
141144 * const Packet ,
142145 * mut Flow ,
143146 & mut crate :: jsonbuilder:: JsonBuilder ,
@@ -147,9 +150,10 @@ unsafe extern "C" fn callback_wrapper<F>(
147150 + ' static ,
148151{
149152 let callback = & * ( user as * const F ) ;
153+ let mut tv = ThreadVars :: from_ptr ( tv) ;
150154 let mut jb = crate :: jsonbuilder:: JsonBuilder :: from_raw ( jb) ;
151155 let mark = jb. get_mark ( ) ;
152- if callback ( tv, p, f, & mut jb) . is_err ( ) {
156+ if callback ( & mut tv, p, f, & mut jb) . is_err ( ) {
153157 let _ = jb. restore_mark ( & mark) ;
154158 }
155159}
0 commit comments