};
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.
///
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 {
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 {
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
);
}
_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)]
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,
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) {
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)
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);