pgsql: use new API style for extern C functions

pull/11804/head
Juliana Fajardini 4 weeks ago committed by Victor Julien
parent 3ba179422d
commit 2c7824a41f

@ -288,7 +288,7 @@ fn log_pgsql_param(param: &PgsqlParameter) -> Result<JsonBuilder, JsonError> {
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_logger( pub unsafe extern "C" fn SCPgsqlLogger(
tx: *mut std::os::raw::c_void, flags: u32, js: &mut JsonBuilder, tx: *mut std::os::raw::c_void, flags: u32, js: &mut JsonBuilder,
) -> bool { ) -> bool {
let tx_pgsql = cast_pointer!(tx, PgsqlTransaction); let tx_pgsql = cast_pointer!(tx, PgsqlTransaction);

@ -561,7 +561,7 @@ fn probe_tc(input: &[u8]) -> bool {
/// C entry point for a probing parser. /// C entry point for a probing parser.
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_probing_parser_ts( pub unsafe extern "C" fn SCPgsqlProbingParserTS(
_flow: *const Flow, _direction: u8, input: *const u8, input_len: u32, _rdir: *mut u8, _flow: *const Flow, _direction: u8, input: *const u8, input_len: u32, _rdir: *mut u8,
) -> AppProto { ) -> AppProto {
if input_len >= 1 && !input.is_null() { if input_len >= 1 && !input.is_null() {
@ -587,7 +587,7 @@ pub unsafe extern "C" fn rs_pgsql_probing_parser_ts(
/// C entry point for a probing parser. /// C entry point for a probing parser.
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_probing_parser_tc( pub unsafe extern "C" fn SCPgsqlProbingParserTC(
_flow: *const Flow, _direction: u8, input: *const u8, input_len: u32, _rdir: *mut u8, _flow: *const Flow, _direction: u8, input: *const u8, input_len: u32, _rdir: *mut u8,
) -> AppProto { ) -> AppProto {
if input_len >= 1 && !input.is_null() { if input_len >= 1 && !input.is_null() {
@ -616,7 +616,7 @@ pub unsafe extern "C" fn rs_pgsql_probing_parser_tc(
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn rs_pgsql_state_new( pub extern "C" fn SCPgsqlStateNew(
_orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto, _orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto,
) -> *mut std::os::raw::c_void { ) -> *mut std::os::raw::c_void {
let state = PgsqlState::new(); let state = PgsqlState::new();
@ -625,13 +625,13 @@ pub extern "C" fn rs_pgsql_state_new(
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn rs_pgsql_state_free(state: *mut std::os::raw::c_void) { pub extern "C" fn SCPgsqlStateFree(state: *mut std::os::raw::c_void) {
// Just unbox... // Just unbox...
std::mem::drop(unsafe { Box::from_raw(state as *mut PgsqlState) }); std::mem::drop(unsafe { Box::from_raw(state as *mut PgsqlState) });
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn rs_pgsql_state_tx_free(state: *mut std::os::raw::c_void, tx_id: u64) { pub extern "C" fn SCPgsqlStateTxFree(state: *mut std::os::raw::c_void, tx_id: u64) {
let state_safe: &mut PgsqlState; let state_safe: &mut PgsqlState;
unsafe { unsafe {
state_safe = cast_pointer!(state, PgsqlState); state_safe = cast_pointer!(state, PgsqlState);
@ -640,7 +640,7 @@ pub extern "C" fn rs_pgsql_state_tx_free(state: *mut std::os::raw::c_void, tx_id
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_parse_request( pub unsafe extern "C" fn SCPgsqlParseRequest(
flow: *const Flow, state: *mut std::os::raw::c_void, pstate: *mut std::os::raw::c_void, flow: *const Flow, state: *mut std::os::raw::c_void, pstate: *mut std::os::raw::c_void,
stream_slice: StreamSlice, _data: *const std::os::raw::c_void, stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
) -> AppLayerResult { ) -> AppLayerResult {
@ -664,7 +664,7 @@ pub unsafe extern "C" fn rs_pgsql_parse_request(
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_parse_response( pub unsafe extern "C" fn SCPgsqlParseResponse(
flow: *const Flow, state: *mut std::os::raw::c_void, pstate: *mut std::os::raw::c_void, flow: *const Flow, state: *mut std::os::raw::c_void, pstate: *mut std::os::raw::c_void,
stream_slice: StreamSlice, _data: *const std::os::raw::c_void, stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
) -> AppLayerResult { ) -> AppLayerResult {
@ -687,7 +687,7 @@ pub unsafe extern "C" fn rs_pgsql_parse_response(
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_state_get_tx( pub unsafe extern "C" fn SCPgsqlStateGetTx(
state: *mut std::os::raw::c_void, tx_id: u64, state: *mut std::os::raw::c_void, tx_id: u64,
) -> *mut std::os::raw::c_void { ) -> *mut std::os::raw::c_void {
let state_safe: &mut PgsqlState = cast_pointer!(state, PgsqlState); let state_safe: &mut PgsqlState = cast_pointer!(state, PgsqlState);
@ -702,7 +702,7 @@ pub unsafe extern "C" fn rs_pgsql_state_get_tx(
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn rs_pgsql_state_get_tx_count(state: *mut std::os::raw::c_void) -> u64 { pub extern "C" fn SCPgsqlStateGetTxCount(state: *mut std::os::raw::c_void) -> u64 {
let state_safe: &mut PgsqlState; let state_safe: &mut PgsqlState;
unsafe { unsafe {
state_safe = cast_pointer!(state, PgsqlState); state_safe = cast_pointer!(state, PgsqlState);
@ -710,7 +710,8 @@ pub extern "C" fn rs_pgsql_state_get_tx_count(state: *mut std::os::raw::c_void)
return state_safe.tx_id; return state_safe.tx_id;
} }
unsafe extern "C" fn rs_pgsql_tx_get_alstate_progress( #[no_mangle]
pub unsafe extern "C" fn SCPgsqlTxGetALStateProgress(
tx: *mut std::os::raw::c_void, _direction: u8, tx: *mut std::os::raw::c_void, _direction: u8,
) -> std::os::raw::c_int { ) -> std::os::raw::c_int {
let tx = cast_pointer!(tx, PgsqlTransaction); let tx = cast_pointer!(tx, PgsqlTransaction);
@ -724,27 +725,27 @@ export_state_data_get!(rs_pgsql_get_state_data, PgsqlState);
const PARSER_NAME: &[u8] = b"pgsql\0"; const PARSER_NAME: &[u8] = b"pgsql\0";
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn rs_pgsql_register_parser() { pub unsafe extern "C" fn SCRegisterPgsqlParser() {
let default_port = CString::new("[5432]").unwrap(); let default_port = CString::new("[5432]").unwrap();
let mut stream_depth = PGSQL_CONFIG_DEFAULT_STREAM_DEPTH; let mut stream_depth = PGSQL_CONFIG_DEFAULT_STREAM_DEPTH;
let parser = RustParser { let parser = RustParser {
name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char, name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
default_port: default_port.as_ptr(), default_port: default_port.as_ptr(),
ipproto: IPPROTO_TCP, ipproto: IPPROTO_TCP,
probe_ts: Some(rs_pgsql_probing_parser_ts), probe_ts: Some(SCPgsqlProbingParserTS),
probe_tc: Some(rs_pgsql_probing_parser_tc), probe_tc: Some(SCPgsqlProbingParserTC),
min_depth: 0, min_depth: 0,
max_depth: 16, max_depth: 16,
state_new: rs_pgsql_state_new, state_new: SCPgsqlStateNew,
state_free: rs_pgsql_state_free, state_free: SCPgsqlStateFree,
tx_free: rs_pgsql_state_tx_free, tx_free: SCPgsqlStateTxFree,
parse_ts: rs_pgsql_parse_request, parse_ts: SCPgsqlParseRequest,
parse_tc: rs_pgsql_parse_response, parse_tc: SCPgsqlParseResponse,
get_tx_count: rs_pgsql_state_get_tx_count, get_tx_count: SCPgsqlStateGetTxCount,
get_tx: rs_pgsql_state_get_tx, get_tx: SCPgsqlStateGetTx,
tx_comp_st_ts: PgsqlTransactionState::RequestReceived as i32, tx_comp_st_ts: PgsqlTransactionState::RequestReceived as i32,
tx_comp_st_tc: PgsqlTransactionState::ResponseDone as i32, tx_comp_st_tc: PgsqlTransactionState::ResponseDone as i32,
tx_get_progress: rs_pgsql_tx_get_alstate_progress, tx_get_progress: SCPgsqlTxGetALStateProgress,
get_eventinfo: None, get_eventinfo: None,
get_eventinfo_byid: None, get_eventinfo_byid: None,
localstorage_new: None, localstorage_new: None,

@ -1727,7 +1727,7 @@ void AppLayerParserRegisterProtocolParsers(void)
rs_template_register_parser(); rs_template_register_parser();
SCRfbRegisterParser(); SCRfbRegisterParser();
SCMqttRegisterParser(); SCMqttRegisterParser();
rs_pgsql_register_parser(); SCRegisterPgsqlParser();
rs_rdp_register_parser(); rs_rdp_register_parser();
RegisterHTTP2Parsers(); RegisterHTTP2Parsers();
rs_telnet_register_parser(); rs_telnet_register_parser();

@ -61,7 +61,7 @@ typedef struct LogPgsqlLogThread_ {
bool JsonPgsqlAddMetadata(void *vtx, JsonBuilder *jb) bool JsonPgsqlAddMetadata(void *vtx, JsonBuilder *jb)
{ {
return rs_pgsql_logger(vtx, PGSQL_DEFAULTS, jb); return SCPgsqlLogger(vtx, PGSQL_DEFAULTS, jb);
} }
static int JsonPgsqlLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flow *f, void *state, static int JsonPgsqlLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flow *f, void *state,
@ -76,7 +76,7 @@ static int JsonPgsqlLogger(ThreadVars *tv, void *thread_data, const Packet *p, F
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
if (!rs_pgsql_logger(txptr, thread->pgsqllog_ctx->flags, jb)) { if (!SCPgsqlLogger(txptr, thread->pgsqllog_ctx->flags, jb)) {
goto error; goto error;
} }

Loading…
Cancel
Save