rust/applayer: clean visibility of export macros

Both the macros export_tx_data_get and export_state_data_get can
generate non-pub functions as the function they generate is only used
as a pointer during registration.

Remove "pub" and "no_mangle" from the generated functions and update
the names of the generated functions to follow Rust rules as they are
no longer exported into the global C namespace.

Ticket: 7498
pull/12445/head
Jason Ish 2 years ago committed by Victor Julien
parent c93bba8e2c
commit c86b2608aa

@ -245,8 +245,7 @@ pub unsafe extern "C" fn SCTxDataUpdateFileFlags(txd: &mut AppLayerTxData, state
#[macro_export]
macro_rules!export_tx_data_get {
($name:ident, $type:ty) => {
#[no_mangle]
pub unsafe extern "C" fn $name(tx: *mut std::os::raw::c_void)
unsafe extern "C" fn $name(tx: *mut std::os::raw::c_void)
-> *mut $crate::applayer::AppLayerTxData
{
let tx = &mut *(tx as *mut $type);
@ -272,8 +271,7 @@ impl AppLayerStateData {
#[macro_export]
macro_rules!export_state_data_get {
($name:ident, $type:ty) => {
#[no_mangle]
pub unsafe extern "C" fn $name(state: *mut std::os::raw::c_void)
unsafe extern "C" fn $name(state: *mut std::os::raw::c_void)
-> *mut $crate::applayer::AppLayerStateData
{
let state = &mut *(state as *mut $type);

@ -349,8 +349,8 @@ unsafe extern "C" fn rs_template_tx_get_alstate_progress(tx: *mut c_void, _direc
return 0;
}
export_tx_data_get!(rs_template_get_tx_data, TemplateTransaction);
export_state_data_get!(rs_template_get_state_data, TemplateState);
export_tx_data_get!(template_get_tx_data, TemplateTransaction);
export_state_data_get!(template_get_state_data, TemplateState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"template\0";
@ -390,8 +390,8 @@ pub unsafe extern "C" fn rs_template_register_parser() {
get_tx_iterator: Some(
applayer::state_get_tx_iterator::<TemplateState, TemplateTransaction>,
),
get_tx_data: rs_template_get_tx_data,
get_state_data: rs_template_get_state_data,
get_tx_data: template_get_tx_data,
get_state_data: template_get_state_data,
apply_tx_config: None,
flags: APP_LAYER_PARSER_OPT_ACCEPT_GAPS,
get_frame_id_by_name: None,

@ -140,8 +140,8 @@ impl BitTorrentDHTState {
// C exports.
export_tx_data_get!(rs_bittorrent_dht_get_tx_data, BitTorrentDHTTransaction);
export_state_data_get!(rs_bittorrent_dht_get_state_data, BitTorrentDHTState);
export_tx_data_get!(bittorrent_dht_get_tx_data, BitTorrentDHTTransaction);
export_state_data_get!(bittorrent_dht_get_state_data, BitTorrentDHTState);
#[no_mangle]
pub extern "C" fn rs_bittorrent_dht_state_new(
@ -280,8 +280,8 @@ pub unsafe extern "C" fn rs_bittorrent_dht_udp_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(rs_bittorrent_dht_state_get_tx_iterator),
get_tx_data: rs_bittorrent_dht_get_tx_data,
get_state_data: rs_bittorrent_dht_get_state_data,
get_tx_data: bittorrent_dht_get_tx_data,
get_state_data: bittorrent_dht_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: None,

@ -261,8 +261,8 @@ pub unsafe extern "C" fn rs_dhcp_state_free(state: *mut std::os::raw::c_void) {
std::mem::drop(Box::from_raw(state as *mut DHCPState));
}
export_tx_data_get!(rs_dhcp_get_tx_data, DHCPTransaction);
export_state_data_get!(rs_dhcp_get_state_data, DHCPState);
export_tx_data_get!(dhcp_get_tx_data, DHCPTransaction);
export_state_data_get!(dhcp_get_state_data, DHCPState);
const PARSER_NAME: &[u8] = b"dhcp\0";
@ -294,8 +294,8 @@ pub unsafe extern "C" fn rs_dhcp_register_parser() {
localstorage_free : None,
get_tx_files : None,
get_tx_iterator : Some(applayer::state_get_tx_iterator::<DHCPState, DHCPTransaction>),
get_tx_data : rs_dhcp_get_tx_data,
get_state_data : rs_dhcp_get_state_data,
get_tx_data : dhcp_get_tx_data,
get_state_data : dhcp_get_state_data,
apply_tx_config : None,
flags : 0,
get_frame_id_by_name: None,

@ -580,8 +580,8 @@ pub enum EnipFrameType {
EnipItem,
}
export_tx_data_get!(rs_enip_get_tx_data, EnipTransaction);
export_state_data_get!(SCEnipTxGetState_data, EnipState);
export_tx_data_get!(enip_get_tx_data, EnipTransaction);
export_state_data_get!(enip_tx_get_state_data, EnipState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"enip\0";
@ -613,8 +613,8 @@ pub unsafe extern "C" fn SCEnipRegisterParsers() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<EnipState, EnipTransaction>),
get_tx_data: rs_enip_get_tx_data,
get_state_data: SCEnipTxGetState_data,
get_tx_data: enip_get_tx_data,
get_state_data: enip_tx_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(EnipFrameType::ffi_id_from_name),

@ -1389,8 +1389,8 @@ pub unsafe extern "C" fn SCDoH2GetDnsTx(
std::ptr::null_mut()
}
export_tx_data_get!(rs_http2_get_tx_data, HTTP2Transaction);
export_state_data_get!(rs_http2_get_state_data, HTTP2State);
export_tx_data_get!(http2_get_tx_data, HTTP2Transaction);
export_state_data_get!(http2_get_state_data, HTTP2State);
/// C entry point for a probing parser.
#[no_mangle]
@ -1564,8 +1564,8 @@ pub unsafe extern "C" fn rs_http2_register_parser() {
localstorage_free: None,
get_tx_files: Some(rs_http2_getfiles),
get_tx_iterator: Some(applayer::state_get_tx_iterator::<HTTP2State, HTTP2Transaction>),
get_tx_data: rs_http2_get_tx_data,
get_state_data: rs_http2_get_state_data,
get_tx_data: http2_get_tx_data,
get_state_data: http2_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(Http2FrameType::ffi_id_from_name),

@ -392,8 +392,8 @@ static mut ALPROTO_IKE: AppProto = ALPROTO_UNKNOWN;
const PARSER_NAME: &[u8] = b"ike\0";
const PARSER_ALIAS: &[u8] = b"ikev2\0";
export_tx_data_get!(rs_ike_get_tx_data, IKETransaction);
export_state_data_get!(rs_ike_get_state_data, IKEState);
export_tx_data_get!(ike_get_tx_data, IKETransaction);
export_state_data_get!(ike_get_state_data, IKEState);
#[no_mangle]
pub unsafe extern "C" fn rs_ike_register_parser() {
@ -422,8 +422,8 @@ pub unsafe extern "C" fn rs_ike_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<IKEState, IKETransaction>),
get_tx_data: rs_ike_get_tx_data,
get_state_data: rs_ike_get_state_data,
get_tx_data: ike_get_tx_data,
get_state_data: ike_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: None,

@ -575,8 +575,8 @@ pub unsafe extern "C" fn rs_krb5_parse_response_tcp(_flow: *const Flow,
AppLayerResult::ok()
}
export_tx_data_get!(rs_krb5_get_tx_data, KRB5Transaction);
export_state_data_get!(rs_krb5_get_state_data, KRB5State);
export_tx_data_get!(krb5_get_tx_data, KRB5Transaction);
export_state_data_get!(krb5_get_state_data, KRB5State);
const PARSER_NAME : &[u8] = b"krb5\0";
@ -607,8 +607,8 @@ pub unsafe extern "C" fn rs_register_krb5_parser() {
localstorage_free : None,
get_tx_files : None,
get_tx_iterator : Some(applayer::state_get_tx_iterator::<KRB5State, KRB5Transaction>),
get_tx_data : rs_krb5_get_tx_data,
get_state_data : rs_krb5_get_state_data,
get_tx_data : krb5_get_tx_data,
get_state_data : krb5_get_state_data,
apply_tx_config : None,
flags : 0,
get_frame_id_by_name: None,

@ -640,8 +640,8 @@ unsafe extern "C" fn ldap_tx_get_alstate_progress(tx: *mut c_void, _direction: u
return 0;
}
export_tx_data_get!(SCLdapGetTxData, LdapTransaction);
export_state_data_get!(SCLdapGetStateData, LdapState);
export_tx_data_get!(ldap_get_tx_data, LdapTransaction);
export_state_data_get!(ldap_get_state_data, LdapState);
const PARSER_NAME: &[u8] = b"ldap\0";
@ -672,8 +672,8 @@ pub unsafe extern "C" fn SCRegisterLdapTcpParser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<LdapState, LdapTransaction>),
get_tx_data: SCLdapGetTxData,
get_state_data: SCLdapGetStateData,
get_tx_data: ldap_get_tx_data,
get_state_data: ldap_get_state_data,
apply_tx_config: None,
flags: APP_LAYER_PARSER_OPT_ACCEPT_GAPS,
get_frame_id_by_name: Some(LdapFrameType::ffi_id_from_name),
@ -729,8 +729,8 @@ pub unsafe extern "C" fn SCRegisterLdapUdpParser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<LdapState, LdapTransaction>),
get_tx_data: SCLdapGetTxData,
get_state_data: SCLdapGetStateData,
get_tx_data: ldap_get_tx_data,
get_state_data: ldap_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(LdapFrameType::ffi_id_from_name),

@ -761,8 +761,8 @@ pub unsafe extern "C" fn rs_mqtt_tx_set_logged(
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"mqtt\0";
export_tx_data_get!(rs_mqtt_get_tx_data, MQTTTransaction);
export_state_data_get!(rs_mqtt_get_state_data, MQTTState);
export_tx_data_get!(mqtt_get_tx_data, MQTTTransaction);
export_state_data_get!(mqtt_get_state_data, MQTTState);
#[no_mangle]
pub unsafe extern "C" fn SCMqttRegisterParser() {
@ -791,8 +791,8 @@ pub unsafe extern "C" fn SCMqttRegisterParser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(crate::applayer::state_get_tx_iterator::<MQTTState, MQTTTransaction>),
get_tx_data: rs_mqtt_get_tx_data,
get_state_data: rs_mqtt_get_state_data,
get_tx_data: mqtt_get_tx_data,
get_state_data: mqtt_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(MQTTFrameType::ffi_id_from_name),

@ -266,8 +266,8 @@ pub extern "C" fn ntp_probing_parser(_flow: *const Flow,
}
}
export_tx_data_get!(rs_ntp_get_tx_data, NTPTransaction);
export_state_data_get!(rs_ntp_get_state_data, NTPState);
export_tx_data_get!(ntp_get_tx_data, NTPTransaction);
export_state_data_get!(ntp_get_state_data, NTPState);
const PARSER_NAME : &[u8] = b"ntp\0";
@ -298,8 +298,8 @@ pub unsafe extern "C" fn rs_register_ntp_parser() {
localstorage_free : None,
get_tx_files : None,
get_tx_iterator : Some(applayer::state_get_tx_iterator::<NTPState, NTPTransaction>),
get_tx_data : rs_ntp_get_tx_data,
get_state_data : rs_ntp_get_state_data,
get_tx_data : ntp_get_tx_data,
get_state_data : ntp_get_state_data,
apply_tx_config : None,
flags : 0,
get_frame_id_by_name: None,

@ -785,8 +785,8 @@ pub unsafe extern "C" fn SCPgsqlTxGetALStateProgress(
pgsql_tx_get_res_state(tx) as i32
}
export_tx_data_get!(rs_pgsql_get_tx_data, PgsqlTransaction);
export_state_data_get!(rs_pgsql_get_state_data, PgsqlState);
export_tx_data_get!(pgsql_get_tx_data, PgsqlTransaction);
export_state_data_get!(pgsql_get_state_data, PgsqlState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"pgsql\0";
@ -821,8 +821,8 @@ pub unsafe extern "C" fn SCRegisterPgsqlParser() {
get_tx_iterator: Some(
crate::applayer::state_get_tx_iterator::<PgsqlState, PgsqlTransaction>,
),
get_tx_data: rs_pgsql_get_tx_data,
get_state_data: rs_pgsql_get_state_data,
get_tx_data: pgsql_get_tx_data,
get_state_data: pgsql_get_state_data,
apply_tx_config: None,
flags: APP_LAYER_PARSER_OPT_ACCEPT_GAPS,
get_frame_id_by_name: None,

@ -471,8 +471,8 @@ pub unsafe extern "C" fn rs_quic_state_get_tx_iterator(
}
}
export_tx_data_get!(rs_quic_get_tx_data, QuicTransaction);
export_state_data_get!(rs_quic_get_state_data, QuicState);
export_tx_data_get!(quic_get_tx_data, QuicTransaction);
export_state_data_get!(quic_get_state_data, QuicState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"quic\0";
@ -504,8 +504,8 @@ pub unsafe extern "C" fn rs_quic_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(rs_quic_state_get_tx_iterator),
get_tx_data: rs_quic_get_tx_data,
get_state_data: rs_quic_get_state_data,
get_tx_data: quic_get_tx_data,
get_state_data: quic_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: None,

@ -454,8 +454,8 @@ pub unsafe extern "C" fn rs_rdp_parse_tc(
return state.parse_tc(buf);
}
export_tx_data_get!(rs_rdp_get_tx_data, RdpTransaction);
export_state_data_get!(rs_rdp_get_state_data, RdpState);
export_tx_data_get!(rdp_get_tx_data, RdpTransaction);
export_state_data_get!(rdp_get_state_data, RdpState);
//
// registration
@ -490,8 +490,8 @@ pub unsafe extern "C" fn rs_rdp_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<RdpState, RdpTransaction>),
get_tx_data: rs_rdp_get_tx_data,
get_state_data: rs_rdp_get_state_data,
get_tx_data: rdp_get_tx_data,
get_state_data: rdp_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: None,

@ -836,8 +836,8 @@ pub unsafe extern "C" fn rs_rfb_tx_get_alstate_progress(
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"rfb\0";
export_tx_data_get!(rs_rfb_get_tx_data, RFBTransaction);
export_state_data_get!(rs_rfb_get_state_data, RFBState);
export_tx_data_get!(rfb_get_tx_data, RFBTransaction);
export_state_data_get!(rfb_get_state_data, RFBState);
#[no_mangle]
pub unsafe extern "C" fn SCRfbRegisterParser() {
@ -865,8 +865,8 @@ pub unsafe extern "C" fn SCRfbRegisterParser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<RFBState, RFBTransaction>),
get_tx_data: rs_rfb_get_tx_data,
get_state_data: rs_rfb_get_state_data,
get_tx_data: rfb_get_tx_data,
get_state_data: rfb_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(RFBFrameType::ffi_id_from_name),

@ -546,8 +546,8 @@ fn register_pattern_probe(proto: u8) -> i8 {
}
}
export_tx_data_get!(rs_sip_get_tx_data, SIPTransaction);
export_state_data_get!(rs_sip_get_state_data, SIPState);
export_tx_data_get!(sip_get_tx_data, SIPTransaction);
export_state_data_get!(sip_get_state_data, SIPState);
const PARSER_NAME: &[u8] = b"sip\0";
@ -577,8 +577,8 @@ pub unsafe extern "C" fn rs_sip_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<SIPState, SIPTransaction>),
get_tx_data: rs_sip_get_tx_data,
get_state_data: rs_sip_get_state_data,
get_tx_data: sip_get_tx_data,
get_state_data: sip_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(SIPFrameType::ffi_id_from_name),

@ -372,8 +372,8 @@ pub unsafe extern "C" fn rs_snmp_probing_parser(_flow: *const Flow,
}
}
export_tx_data_get!(rs_snmp_get_tx_data, SNMPTransaction);
export_state_data_get!(rs_snmp_get_state_data, SNMPState);
export_tx_data_get!(snmp_get_tx_data, SNMPTransaction);
export_state_data_get!(snmp_get_state_data, SNMPState);
const PARSER_NAME : &[u8] = b"snmp\0";
@ -404,8 +404,8 @@ pub unsafe extern "C" fn rs_register_snmp_parser() {
localstorage_free : None,
get_tx_files : None,
get_tx_iterator : Some(applayer::state_get_tx_iterator::<SNMPState, SNMPTransaction>),
get_tx_data : rs_snmp_get_tx_data,
get_state_data : rs_snmp_get_state_data,
get_tx_data : snmp_get_tx_data,
get_state_data : snmp_get_state_data,
apply_tx_config : None,
flags : 0,
get_frame_id_by_name: None,

@ -388,8 +388,8 @@ impl SSHState {
// C exports.
export_tx_data_get!(rs_ssh_get_tx_data, SSHTransaction);
export_state_data_get!(rs_ssh_get_state_data, SSHState);
export_tx_data_get!(ssh_get_tx_data, SSHTransaction);
export_state_data_get!(ssh_get_state_data, SSHState);
#[no_mangle]
pub extern "C" fn rs_ssh_state_new(_orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto) -> *mut std::os::raw::c_void {
@ -520,8 +520,8 @@ pub unsafe extern "C" fn rs_ssh_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: None,
get_tx_data: rs_ssh_get_tx_data,
get_state_data: rs_ssh_get_state_data,
get_tx_data: ssh_get_tx_data,
get_state_data: ssh_get_state_data,
apply_tx_config: None,
flags: 0,
get_frame_id_by_name: Some(SshFrameType::ffi_id_from_name),

@ -501,8 +501,8 @@ pub unsafe extern "C" fn rs_telnet_tx_get_alstate_progress(
return 0;
}
export_tx_data_get!(rs_telnet_get_tx_data, TelnetTransaction);
export_state_data_get!(rs_telnet_get_state_data, TelnetState);
export_tx_data_get!(telnet_get_tx_data, TelnetTransaction);
export_state_data_get!(telnet_get_state_data, TelnetState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"telnet\0";
@ -534,8 +534,8 @@ pub unsafe extern "C" fn rs_telnet_register_parser() {
localstorage_free: None,
get_tx_files: None,
get_tx_iterator: Some(applayer::state_get_tx_iterator::<TelnetState, TelnetTransaction>),
get_tx_data: rs_telnet_get_tx_data,
get_state_data: rs_telnet_get_state_data,
get_tx_data: telnet_get_tx_data,
get_state_data: telnet_get_state_data,
apply_tx_config: None,
flags: APP_LAYER_PARSER_OPT_ACCEPT_GAPS,
get_frame_id_by_name: Some(TelnetFrameType::ffi_id_from_name),

@ -329,8 +329,8 @@ unsafe extern "C" fn rs_websocket_tx_get_alstate_progress(
return 1;
}
export_tx_data_get!(rs_websocket_get_tx_data, WebSocketTransaction);
export_state_data_get!(rs_websocket_get_state_data, WebSocketState);
export_tx_data_get!(websocket_get_tx_data, WebSocketTransaction);
export_state_data_get!(websocket_get_state_data, WebSocketState);
// Parser name as a C style string.
const PARSER_NAME: &[u8] = b"websocket\0";
@ -363,8 +363,8 @@ pub unsafe extern "C" fn rs_websocket_register_parser() {
get_tx_iterator: Some(
applayer::state_get_tx_iterator::<WebSocketState, WebSocketTransaction>,
),
get_tx_data: rs_websocket_get_tx_data,
get_state_data: rs_websocket_get_state_data,
get_tx_data: websocket_get_tx_data,
get_state_data: websocket_get_state_data,
apply_tx_config: None,
flags: 0, // do not accept gaps as there is no good way to resync
get_frame_id_by_name: Some(WebSocketFrameType::ffi_id_from_name),

Loading…
Cancel
Save