rust: bindgen SCDetectHelperMultiBufferProgressMpmRegister

Ticket: 7667
pull/13230/head
Philippe Antoine 3 months ago committed by Victor Julien
parent 7805103f68
commit dfa4df9f54

@ -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)]

@ -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
);
}

@ -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,

@ -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)

@ -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);

Loading…
Cancel
Save