Skip to content

Commit a4258ff

Browse files
committed
rust/ffi: use ThreadVars wrapper in eve callback signature
1 parent c70e068 commit a4258ff

2 files changed

Lines changed: 14 additions & 11 deletions

File tree

examples/plugins/rust/src/mod.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ use suricata_ffi::eve::{self, SCJsonBuilder};
44
use suricata_ffi::flow::{self, Flow};
55
use suricata_ffi::jsonbuilder::JsonBuilder;
66
use suricata_ffi::packet::Packet;
7+
use suricata_ffi::threadvars::ThreadVars;
78
use suricata_ffi::{SCLogError, SCLogNotice};
89
use suricata_sys::sys::{
9-
Flow as RawFlow, Packet as RawPacket, SCEveRegisterCallback, SCPlugin, ThreadVars,
10+
Flow as RawFlow, Packet as RawPacket, SCEveRegisterCallback, SCPlugin,
11+
ThreadVars as RawThreadVars,
1012
};
1113

1214
unsafe extern "C" fn init() {
@@ -42,7 +44,7 @@ pub fn register_flow_callbacks() -> Result<(), &'static str> {
4244
}
4345

4446
unsafe extern "C" fn log_eve_raw(
45-
_tv: *mut ThreadVars,
47+
_tv: *mut RawThreadVars,
4648
_p: *const RawPacket,
4749
_f: *mut RawFlow,
4850
jb: *mut SCJsonBuilder,
@@ -55,7 +57,7 @@ unsafe extern "C" fn log_eve_raw(
5557
}
5658

5759
fn log_eve_wrapped(
58-
_tv: *mut ThreadVars,
60+
_tv: ThreadVars<'_>,
5961
p: Option<Packet<'_>>,
6062
f: Option<Flow<'_>>,
6163
jb: &mut JsonBuilder,
@@ -68,23 +70,23 @@ fn log_eve_wrapped(
6870
Ok(())
6971
}
7072

71-
fn log_flow_init(_tv: *mut ThreadVars, f: Flow<'_>, p: Option<Packet<'_>>) {
73+
fn log_flow_init(_tv: *mut RawThreadVars, f: Flow<'_>, p: Option<Packet<'_>>) {
7274
SCLogNotice!(
7375
"rust example flow init callback: flow={:p}, has_packet={}",
7476
f.as_ptr(),
7577
p.is_some()
7678
);
7779
}
7880

79-
fn log_flow_update(_tv: *mut ThreadVars, f: Flow<'_>, p: Option<Packet<'_>>) {
81+
fn log_flow_update(_tv: *mut RawThreadVars, f: Flow<'_>, p: Option<Packet<'_>>) {
8082
SCLogNotice!(
8183
"rust example flow update callback: flow={:p}, has_packet={}",
8284
f.as_ptr(),
8385
p.is_some()
8486
);
8587
}
8688

87-
fn log_flow_finish(_tv: *mut ThreadVars, f: Flow<'_>) {
89+
fn log_flow_finish(_tv: *mut RawThreadVars, f: Flow<'_>) {
8890
SCLogNotice!("rust example flow finish callback: flow={:p}", f.as_ptr());
8991
}
9092

rust/ffi/src/eve.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ use std::ffi::CString;
1919
use std::os::raw::c_void;
2020

2121
pub use suricata_sys::sys::{
22-
Flow as RawFlow, Packet as RawPacket, SCEveUserCallbackFn, SCJsonBuilder, ThreadVars,
22+
Flow as RawFlow, Packet as RawPacket, SCEveUserCallbackFn, SCJsonBuilder,
23+
ThreadVars as RawThreadVars,
2324
};
2425
use suricata_sys::sys::{
2526
SCEveFileType, SCEveFileTypeDeinitFunc, SCEveFileTypeInitFunc, SCEveFileTypeThreadDeinitFunc,
@@ -113,7 +114,7 @@ impl EveFileType {
113114
pub fn register_callback<F>(callback: F) -> Result<(), &'static str>
114115
where
115116
F: for<'a> Fn(
116-
*mut ThreadVars,
117+
crate::threadvars::ThreadVars<'a>,
117118
Option<crate::packet::Packet<'a>>,
118119
Option<crate::flow::Flow<'a>>,
119120
&mut crate::jsonbuilder::JsonBuilder,
@@ -136,11 +137,11 @@ where
136137
/// Internal wrapper used to adapt the C EVE callback to a Rust
137138
/// closure callback.
138139
unsafe extern "C" fn callback_wrapper<F>(
139-
tv: *mut ThreadVars, p: *const RawPacket, f: *mut RawFlow, jb: *mut SCJsonBuilder,
140+
tv: *mut RawThreadVars, p: *const RawPacket, f: *mut RawFlow, jb: *mut SCJsonBuilder,
140141
user: *mut c_void,
141142
) where
142143
F: for<'a> Fn(
143-
*mut ThreadVars,
144+
crate::threadvars::ThreadVars<'a>,
144145
Option<crate::packet::Packet<'a>>,
145146
Option<crate::flow::Flow<'a>>,
146147
&mut crate::jsonbuilder::JsonBuilder,
@@ -162,7 +163,7 @@ unsafe extern "C" fn callback_wrapper<F>(
162163
} else {
163164
Some(crate::flow::Flow::from_ptr(f))
164165
};
165-
if callback(tv, packet, flow, &mut jb).is_err() {
166+
if callback(crate::threadvars::ThreadVars::from_ptr(tv), packet, flow, &mut jb).is_err() {
166167
let _ = jb.restore_mark(&mark);
167168
}
168169
}

0 commit comments

Comments
 (0)