From: Jason Ish Date: Fri, 2 May 2025 22:16:24 +0000 (-0600) Subject: rust/modbus: replace rs_ naming with SC X-Git-Tag: suricata-8.0.0-rc1~365 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=af15986d4134a00d169ac385ebc74caaf364de1d;p=thirdparty%2Fsuricata.git rust/modbus: replace rs_ naming with SC --- diff --git a/rust/src/modbus/detect.rs b/rust/src/modbus/detect.rs index 4dc14d0378..e3815138e0 100644 --- a/rust/src/modbus/detect.rs +++ b/rust/src/modbus/detect.rs @@ -135,7 +135,7 @@ fn parse_range(min_str: &str, max_str: &str) -> Result, ()> { /// Intermediary function between the C code and the parsing functions. #[no_mangle] -pub unsafe extern "C" fn rs_modbus_parse(c_arg: *const c_char) -> *mut c_void { +pub unsafe extern "C" fn SCModbusParse(c_arg: *const c_char) -> *mut c_void { if c_arg.is_null() { return std::ptr::null_mut(); } @@ -152,7 +152,7 @@ pub unsafe extern "C" fn rs_modbus_parse(c_arg: *const c_char) -> *mut c_void { } #[no_mangle] -pub unsafe extern "C" fn rs_modbus_free(ptr: *mut c_void) { +pub unsafe extern "C" fn SCModbusFree(ptr: *mut c_void) { if !ptr.is_null() { let _ = Box::from_raw(ptr as *mut DetectModbusRust); } @@ -161,7 +161,7 @@ pub unsafe extern "C" fn rs_modbus_free(ptr: *mut c_void) { /// Compares a transaction to a signature to determine whether the transaction /// matches the signature. If it does, 1 is returned; otherwise 0 is returned. #[no_mangle] -pub extern "C" fn rs_modbus_inspect(tx: &ModbusTransaction, modbus: &DetectModbusRust) -> u8 { +pub extern "C" fn SCModbusInspect(tx: &ModbusTransaction, modbus: &DetectModbusRust) -> u8 { // All necessary information can be found in the request (value inspection currently // only supports write functions, which hold the value in the request). // Only inspect the response in the case where there is no request. @@ -633,7 +633,7 @@ mod test { assert_eq!(modbus.transactions.len(), 1); // function 23 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { function: Some(FunctionCode::RdWrMultRegs), @@ -644,7 +644,7 @@ mod test { ); // access write holding, address 15, value <4660 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -657,7 +657,7 @@ mod test { ); // access write holding, address 15, value 4661 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -670,7 +670,7 @@ mod test { ); // access write holding, address 16, value 20000<>22136 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -683,7 +683,7 @@ mod test { ); // access write holding, address 16, value 22136<>30000 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -696,7 +696,7 @@ mod test { ); // access write holding, address 15, value >4660 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -709,7 +709,7 @@ mod test { ); // access write holding, address 16, value <22137 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -722,7 +722,7 @@ mod test { ); // access write holding, address 16, value <22137 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -735,7 +735,7 @@ mod test { ); // access write holding, address 17, value 39612 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -748,7 +748,7 @@ mod test { ); // access write holding, address 17, value 30000<>39613 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -761,7 +761,7 @@ mod test { ); // access write holding, address 15, value 4659<>5000 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -774,7 +774,7 @@ mod test { ); // access write holding, address 17, value >39611 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { access_type: Some(AccessType::WRITE | AccessType::HOLDING), @@ -787,7 +787,7 @@ mod test { ); // unit 12 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(12..12), @@ -798,7 +798,7 @@ mod test { ); // unit 5<>9 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(5..9), @@ -809,7 +809,7 @@ mod test { ); // unit 11<>15 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(11..15), @@ -820,7 +820,7 @@ mod test { ); // unit >11 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(11..u16::MAX), @@ -831,7 +831,7 @@ mod test { ); // unit <9 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(u16::MIN..9), @@ -842,7 +842,7 @@ mod test { ); // unit 10 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(10..10), @@ -853,7 +853,7 @@ mod test { ); // unit 5<>15 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(5..15), @@ -864,7 +864,7 @@ mod test { ); // unit >9 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(9..u16::MAX), @@ -875,7 +875,7 @@ mod test { ); // unit <11 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { unit_id: Some(u16::MIN..11), @@ -886,7 +886,7 @@ mod test { ); // unit 10, function 20 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { function: Some(FunctionCode::RdFileRec), @@ -898,7 +898,7 @@ mod test { ); // unit 11, function 20 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { function: Some(FunctionCode::RdFileRec), @@ -910,7 +910,7 @@ mod test { ); // unit 11, function 23 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { function: Some(FunctionCode::RdWrMultRegs), @@ -922,7 +922,7 @@ mod test { ); // unit 11, function public assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { category: Some(CodeCategory::PUBLIC_ASSIGNED | CodeCategory::PUBLIC_UNASSIGNED), @@ -934,7 +934,7 @@ mod test { ); // unit 10, function user assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { category: Some(Flags::from(CodeCategory::USER_DEFINED)), @@ -946,7 +946,7 @@ mod test { ); // unit 10, function 23 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { function: Some(FunctionCode::RdWrMultRegs), @@ -958,7 +958,7 @@ mod test { ); // unit 10, function public assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { category: Some(CodeCategory::PUBLIC_ASSIGNED | CodeCategory::PUBLIC_UNASSIGNED), @@ -970,7 +970,7 @@ mod test { ); // unit 10, function !user assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[0], &DetectModbusRust { category: Some(!CodeCategory::USER_DEFINED), @@ -1000,7 +1000,7 @@ mod test { assert_eq!(modbus.transactions.len(), 2); // function 8, subfunction 4 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[1], &DetectModbusRust { function: Some(FunctionCode::Diagnostic), @@ -1030,7 +1030,7 @@ mod test { assert_eq!(modbus.transactions.len(), 3); // function reserved assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[2], &DetectModbusRust { category: Some(Flags::from(CodeCategory::RESERVED)), @@ -1057,7 +1057,7 @@ mod test { assert_eq!(modbus.transactions.len(), 4); // function !assigned assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[3], &DetectModbusRust { category: Some(!CodeCategory::PUBLIC_ASSIGNED), @@ -1086,7 +1086,7 @@ mod test { assert_eq!(modbus.transactions.len(), 5); // access read assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1097,7 +1097,7 @@ mod test { ); // access read, address 30870 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1109,7 +1109,7 @@ mod test { ); // unit 10, access read, address 30863 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1122,7 +1122,7 @@ mod test { ); // unit 11, access read, address 30870 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1135,7 +1135,7 @@ mod test { ); // unit 11, access read, address 30863 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1148,7 +1148,7 @@ mod test { ); // unit 10, access write assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::WRITE)), @@ -1160,7 +1160,7 @@ mod test { ); // unit 10, access read, address 30870 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[4], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1191,7 +1191,7 @@ mod test { assert_eq!(modbus.transactions.len(), 6); // access read input assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1202,7 +1202,7 @@ mod test { ); // access read input, address <9 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1214,7 +1214,7 @@ mod test { ); // access read input, address 5<>9 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1226,7 +1226,7 @@ mod test { ); // access read input, address >104 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1238,7 +1238,7 @@ mod test { ); // access read input, address 104<>110 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1250,7 +1250,7 @@ mod test { ); // access read input, address 9 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1262,7 +1262,7 @@ mod test { ); // access read input, address <10 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1274,7 +1274,7 @@ mod test { ); // access read input, address 5<>10 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1286,7 +1286,7 @@ mod test { ); // access read input, address >103 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1298,7 +1298,7 @@ mod test { ); // access read input, address 103<>110 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1310,7 +1310,7 @@ mod test { ); // access read input, address 104 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[5], &DetectModbusRust { access_type: Some(AccessType::READ | AccessType::INPUT), @@ -1341,7 +1341,7 @@ mod test { assert_eq!(modbus.transactions.len(), 7); // function 1 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[6], &DetectModbusRust { function: Some(FunctionCode::RdCoils), @@ -1354,7 +1354,7 @@ mod test { // Fails because there was no request, and the address is not retrievable // from the response. assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[6], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), @@ -1385,7 +1385,7 @@ mod test { assert_eq!(modbus.transactions.len(), 8); // function 6 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[7], &DetectModbusRust { function: Some(FunctionCode::WrSingleReg), @@ -1396,7 +1396,7 @@ mod test { ); // access write, address 10 assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[7], &DetectModbusRust { access_type: Some(Flags::from(AccessType::WRITE)), @@ -1427,7 +1427,7 @@ mod test { assert_eq!(modbus.transactions.len(), 9); // function 8 assert_eq!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[8], &DetectModbusRust { function: Some(FunctionCode::Diagnostic), @@ -1438,7 +1438,7 @@ mod test { ); // access read assert_ne!( - rs_modbus_inspect( + SCModbusInspect( &modbus.transactions[8], &DetectModbusRust { access_type: Some(Flags::from(AccessType::READ)), diff --git a/rust/src/modbus/modbus.rs b/rust/src/modbus/modbus.rs index 5e5bc92939..081f1dd81d 100644 --- a/rust/src/modbus/modbus.rs +++ b/rust/src/modbus/modbus.rs @@ -280,8 +280,7 @@ impl ModbusState { } /// Probe input to see if it looks like Modbus. -#[no_mangle] -pub extern "C" fn rs_modbus_probe( +extern "C" fn modbus_probe( _flow: *const Flow, _direction: u8, input: *const u8, len: u32, _rdir: *mut u8, ) -> AppProto { if input.is_null() { @@ -295,26 +294,22 @@ pub extern "C" fn rs_modbus_probe( } } -#[no_mangle] -pub extern "C" fn rs_modbus_state_new( +extern "C" fn modbus_state_new( _orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto, ) -> *mut std::os::raw::c_void { Box::into_raw(Box::new(ModbusState::new())) as *mut std::os::raw::c_void } -#[no_mangle] -pub extern "C" fn rs_modbus_state_free(state: *mut std::os::raw::c_void) { +extern "C" fn modbus_state_free(state: *mut std::os::raw::c_void) { let _state: Box = unsafe { Box::from_raw(state as *mut ModbusState) }; } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_state_tx_free(state: *mut std::os::raw::c_void, tx_id: u64) { +unsafe extern "C" fn modbus_state_tx_free(state: *mut std::os::raw::c_void, tx_id: u64) { let state = cast_pointer!(state, ModbusState); state.free_tx(tx_id); } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_parse_request( +unsafe extern "C" fn modbus_parse_request( _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, @@ -332,8 +327,7 @@ pub unsafe extern "C" fn rs_modbus_parse_request( state.parse(buf, Direction::ToServer) } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_parse_response( +unsafe extern "C" fn modbus_parse_response( _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, @@ -352,13 +346,12 @@ pub unsafe extern "C" fn rs_modbus_parse_response( } #[no_mangle] -pub unsafe extern "C" fn rs_modbus_state_get_tx_count(state: *mut std::os::raw::c_void) -> u64 { +pub unsafe extern "C" fn SCModbusStateGetTxCount(state: *mut std::os::raw::c_void) -> u64 { let state = cast_pointer!(state, ModbusState); state.tx_id } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_state_get_tx( +unsafe extern "C" fn modbus_state_get_tx( state: *mut std::os::raw::c_void, tx_id: u64, ) -> *mut std::os::raw::c_void { let state = cast_pointer!(state, ModbusState); @@ -368,53 +361,51 @@ pub unsafe extern "C" fn rs_modbus_state_get_tx( } } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_tx_get_alstate_progress( +unsafe extern "C" fn modbus_tx_get_alstate_progress( tx: *mut std::os::raw::c_void, _direction: u8, ) -> std::os::raw::c_int { let tx = cast_pointer!(tx, ModbusTransaction); tx.response.is_some() as std::os::raw::c_int } -#[no_mangle] -pub unsafe extern "C" fn rs_modbus_state_get_tx_data( +unsafe extern "C" fn modbus_state_get_tx_data( tx: *mut std::os::raw::c_void, ) -> *mut AppLayerTxData { let tx = cast_pointer!(tx, ModbusTransaction); &mut tx.tx_data } -export_state_data_get!(rs_modbus_get_state_data, ModbusState); +export_state_data_get!(modbus_get_state_data, ModbusState); #[no_mangle] -pub unsafe extern "C" fn rs_modbus_register_parser() { +pub unsafe extern "C" fn SCRegisterModbusParser() { let default_port = std::ffi::CString::new("[502]").unwrap(); let parser = RustParser { name: b"modbus\0".as_ptr() as *const std::os::raw::c_char, default_port: default_port.as_ptr(), ipproto: IPPROTO_TCP, - probe_ts: Some(rs_modbus_probe), - probe_tc: Some(rs_modbus_probe), + probe_ts: Some(modbus_probe), + probe_tc: Some(modbus_probe), min_depth: 0, max_depth: 16, - state_new: rs_modbus_state_new, - state_free: rs_modbus_state_free, - tx_free: rs_modbus_state_tx_free, - parse_ts: rs_modbus_parse_request, - parse_tc: rs_modbus_parse_response, - get_tx_count: rs_modbus_state_get_tx_count, - get_tx: rs_modbus_state_get_tx, + state_new: modbus_state_new, + state_free: modbus_state_free, + tx_free: modbus_state_tx_free, + parse_ts: modbus_parse_request, + parse_tc: modbus_parse_response, + get_tx_count: SCModbusStateGetTxCount, + get_tx: modbus_state_get_tx, tx_comp_st_ts: 1, tx_comp_st_tc: 1, - tx_get_progress: rs_modbus_tx_get_alstate_progress, + tx_get_progress: modbus_tx_get_alstate_progress, get_eventinfo: Some(ModbusEvent::get_event_info), get_eventinfo_byid: Some(ModbusEvent::get_event_info_by_id), localstorage_new: None, localstorage_free: None, get_tx_files: None, get_tx_iterator: Some(applayer::state_get_tx_iterator::), - get_tx_data: rs_modbus_state_get_tx_data, - get_state_data: rs_modbus_get_state_data, + get_tx_data: modbus_state_get_tx_data, + get_state_data: modbus_get_state_data, apply_tx_config: None, flags: 0, get_frame_id_by_name: None, @@ -443,14 +434,14 @@ pub mod test { pub struct ModbusMessage(*const c_void); #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_function(msg: *const ModbusMessage) -> u8 { + pub unsafe extern "C" fn SCModbusMessageGetFunction(msg: *const ModbusMessage) -> u8 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); msg.function.raw } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_subfunction(msg: *const ModbusMessage) -> u16 { + pub unsafe extern "C" fn SCModbusMessageGetSubfunction(msg: *const ModbusMessage) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); if let Data::Diagnostic { func, data: _ } = &msg.data { @@ -461,7 +452,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_read_request_address( + pub unsafe extern "C" fn SCModbusMessageGetReadRequestAddress( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -478,7 +469,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_read_request_quantity( + pub unsafe extern "C" fn SCModbusMessageGetReadRequestQuantity( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -495,7 +486,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_rw_multreq_read_address( + pub unsafe extern "C" fn SCModbusMessageGetRwMultreqReadAddress( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -516,7 +507,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_rw_multreq_read_quantity( + pub unsafe extern "C" fn SCModbusMessageGetRwMultreqReadQuantity( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -537,7 +528,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_rw_multreq_write_address( + pub unsafe extern "C" fn SCModbusMessageGetRwMultreqWriteAddress( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -559,7 +550,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_rw_multreq_write_quantity( + pub unsafe extern "C" fn SCModbusMessageGetRwMultreqWriteQuantity( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -581,7 +572,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_rw_multreq_write_data( + pub unsafe extern "C" fn SCModbusMessageGetRwMultreqWriteData( msg: *const ModbusMessage, data_len: *mut usize, ) -> *const u8 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -604,7 +595,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_write_multreq_address( + pub unsafe extern "C" fn SCModbusMessageGetWriteMultreqAddress( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -622,7 +613,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_write_multreq_quantity( + pub unsafe extern "C" fn SCModbusMessageGetWriteMultreqQuantity( msg: *const ModbusMessage, ) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -640,7 +631,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_write_multreq_data( + pub unsafe extern "C" fn SCModbusMessageGetWriteMultreqData( msg: *const ModbusMessage, data_len: *mut usize, ) -> *const u8 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -659,7 +650,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_and_mask(msg: *const ModbusMessage) -> u16 { + pub unsafe extern "C" fn SCModbusMessageGetAndMask(msg: *const ModbusMessage) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); if let Data::Write(Write::Mask { @@ -675,7 +666,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_or_mask(msg: *const ModbusMessage) -> u16 { + pub unsafe extern "C" fn SCModbusMessageGetOrMask(msg: *const ModbusMessage) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); if let Data::Write(Write::Mask { @@ -691,7 +682,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_write_address(msg: *const ModbusMessage) -> u16 { + pub unsafe extern "C" fn SCModbusMessageGetWriteAddress(msg: *const ModbusMessage) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); if let Data::Write(Write::Other { address, data: _ }) = &msg.data { @@ -702,7 +693,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_write_data(msg: *const ModbusMessage) -> u16 { + pub unsafe extern "C" fn SCModbusMessageGetWriteData(msg: *const ModbusMessage) -> u16 { let msg = msg.as_ref().unwrap().0 as *const Message; let msg = msg.as_ref().unwrap(); if let Data::Write(Write::Other { address: _, data }) = &msg.data { @@ -713,7 +704,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_message_get_bytevec_data( + pub unsafe extern "C" fn SCModbusMessageGetBytevecData( msg: *const ModbusMessage, data_len: *mut usize, ) -> *const u8 { let msg = msg.as_ref().unwrap().0 as *const Message; @@ -727,7 +718,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_state_get_tx_request( + pub unsafe extern "C" fn SCModbusStateGetTxRequest( state: *mut std::os::raw::c_void, tx_id: u64, ) -> ModbusMessage { let state = cast_pointer!(state, ModbusState); @@ -743,7 +734,7 @@ pub mod test { } #[no_mangle] - pub unsafe extern "C" fn rs_modbus_state_get_tx_response( + pub unsafe extern "C" fn SCModbusStateGetTxResponse( state: *mut std::os::raw::c_void, tx_id: u64, ) -> ModbusMessage { let state = cast_pointer!(state, ModbusState); diff --git a/src/app-layer-modbus.c b/src/app-layer-modbus.c index c1edbf2d36..5640953a53 100644 --- a/src/app-layer-modbus.c +++ b/src/app-layer-modbus.c @@ -48,7 +48,7 @@ void ModbusParserRegisterTests(void); */ void RegisterModbusParsers(void) { - rs_modbus_register_parser(); + SCRegisterModbusParser(); #ifdef UNITTESTS AppLayerParserRegisterProtocolUnittests(IPPROTO_TCP, ALPROTO_MODBUS, ModbusParserRegisterTests); #endif @@ -292,18 +292,18 @@ static int ModbusParserTest01(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 1); - FAIL_IF_NOT(rs_modbus_message_get_read_request_address(&request) == 0x7890); - FAIL_IF_NOT(rs_modbus_message_get_read_request_quantity(&request) == 19); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 1); + FAIL_IF_NOT(SCModbusMessageGetReadRequestAddress(&request) == 0x7890); + FAIL_IF_NOT(SCModbusMessageGetReadRequestQuantity(&request) == 19); r = AppLayerParserParse(NULL, alp_tctx, &f, ALPROTO_MODBUS, STREAM_TOCLIENT, readCoilsRsp, sizeof(readCoilsRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -337,14 +337,14 @@ static int ModbusParserTest02(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 16); - FAIL_IF_NOT(rs_modbus_message_get_write_multreq_address(&request) == 0x01); - FAIL_IF_NOT(rs_modbus_message_get_write_multreq_quantity(&request) == 2); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 16); + FAIL_IF_NOT(SCModbusMessageGetWriteMultreqAddress(&request) == 0x01); + FAIL_IF_NOT(SCModbusMessageGetWriteMultreqQuantity(&request) == 2); size_t data_len; - const uint8_t *data = rs_modbus_message_get_write_multreq_data(&request, &data_len); + const uint8_t *data = SCModbusMessageGetWriteMultreqData(&request, &data_len); FAIL_IF_NOT(data_len == 4); FAIL_IF_NOT(data[0] == 0x00); FAIL_IF_NOT(data[1] == 0x0A); @@ -356,7 +356,7 @@ static int ModbusParserTest02(void) { sizeof(writeMultipleRegistersRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -418,17 +418,17 @@ static int ModbusParserTest03(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 23); - FAIL_IF_NOT(rs_modbus_message_get_rw_multreq_read_address(&request) == 0x03); - FAIL_IF_NOT(rs_modbus_message_get_rw_multreq_read_quantity(&request) == 6); - FAIL_IF_NOT(rs_modbus_message_get_rw_multreq_write_address(&request) == 0x0E); - FAIL_IF_NOT(rs_modbus_message_get_rw_multreq_write_quantity(&request) == 3); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 23); + FAIL_IF_NOT(SCModbusMessageGetRwMultreqReadAddress(&request) == 0x03); + FAIL_IF_NOT(SCModbusMessageGetRwMultreqReadQuantity(&request) == 6); + FAIL_IF_NOT(SCModbusMessageGetRwMultreqWriteAddress(&request) == 0x0E); + FAIL_IF_NOT(SCModbusMessageGetRwMultreqWriteQuantity(&request) == 3); size_t data_len; - uint8_t const *data = rs_modbus_message_get_rw_multreq_write_data(&request, &data_len); + uint8_t const *data = SCModbusMessageGetRwMultreqWriteData(&request, &data_len); FAIL_IF_NOT(data_len == 6); FAIL_IF_NOT(data[0] == 0x12); FAIL_IF_NOT(data[1] == 0x34); @@ -442,7 +442,7 @@ static int ModbusParserTest03(void) { sizeof(readWriteMultipleRegistersRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); @@ -488,11 +488,11 @@ static int ModbusParserTest04(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 8); - FAIL_IF_NOT(rs_modbus_message_get_subfunction(&request) == 4); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 8); + FAIL_IF_NOT(SCModbusMessageGetSubfunction(&request) == 4); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -767,19 +767,19 @@ static int ModbusParserTest08(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 1); - FAIL_IF_NOT(rs_modbus_message_get_read_request_address(&request) == 0x7890); - FAIL_IF_NOT(rs_modbus_message_get_read_request_quantity(&request) == 19); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 1); + FAIL_IF_NOT(SCModbusMessageGetReadRequestAddress(&request) == 0x7890); + FAIL_IF_NOT(SCModbusMessageGetReadRequestQuantity(&request) == 19); r = AppLayerParserParse(NULL, alp_tctx, &f, ALPROTO_MODBUS, STREAM_TOCLIENT, readCoilsErrorRsp, sizeof(readCoilsErrorRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); @@ -831,12 +831,12 @@ static int ModbusParserTest09(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 1); - FAIL_IF_NOT(rs_modbus_message_get_read_request_address(&request) == 0x7890); - FAIL_IF_NOT(rs_modbus_message_get_read_request_quantity(&request) == 19); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 1); + FAIL_IF_NOT(SCModbusMessageGetReadRequestAddress(&request) == 0x7890); + FAIL_IF_NOT(SCModbusMessageGetReadRequestQuantity(&request) == 19); input_len = sizeof(readCoilsRsp); part2_len = 10; @@ -850,7 +850,7 @@ static int ModbusParserTest09(void) { STREAM_TOCLIENT, input, input_len); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -892,17 +892,17 @@ static int ModbusParserTest10(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 2); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 2); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 1); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 1); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 16); - FAIL_IF_NOT(rs_modbus_message_get_write_multreq_address(&request) == 0x01); - FAIL_IF_NOT(rs_modbus_message_get_write_multreq_quantity(&request) == 2); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 16); + FAIL_IF_NOT(SCModbusMessageGetWriteMultreqAddress(&request) == 0x01); + FAIL_IF_NOT(SCModbusMessageGetWriteMultreqQuantity(&request) == 2); size_t data_len; - uint8_t const *data = rs_modbus_message_get_write_multreq_data(&request, &data_len); + uint8_t const *data = SCModbusMessageGetWriteMultreqData(&request, &data_len); FAIL_IF_NOT(data_len == 4); FAIL_IF_NOT(data[0] == 0x00); FAIL_IF_NOT(data[1] == 0x0A); @@ -1104,19 +1104,19 @@ static int ModbusParserTest13(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 22); - FAIL_IF_NOT(rs_modbus_message_get_and_mask(&request) == 0x00F2); - FAIL_IF_NOT(rs_modbus_message_get_or_mask(&request) == 0x0025); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 22); + FAIL_IF_NOT(SCModbusMessageGetAndMask(&request) == 0x00F2); + FAIL_IF_NOT(SCModbusMessageGetOrMask(&request) == 0x0025); r = AppLayerParserParse(NULL, alp_tctx, &f, ALPROTO_MODBUS, STREAM_TOCLIENT, maskWriteRegisterRsp, sizeof(maskWriteRegisterRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -1150,19 +1150,19 @@ static int ModbusParserTest14(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 6); - FAIL_IF_NOT(rs_modbus_message_get_write_address(&request) == 0x0001); - FAIL_IF_NOT(rs_modbus_message_get_write_data(&request) == 0x0003); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 6); + FAIL_IF_NOT(SCModbusMessageGetWriteAddress(&request) == 0x0001); + FAIL_IF_NOT(SCModbusMessageGetWriteData(&request) == 0x0003); r = AppLayerParserParse(NULL, alp_tctx, &f, ALPROTO_MODBUS, STREAM_TOCLIENT, writeSingleRegisterRsp, sizeof(writeSingleRegisterRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); AppLayerParserThreadCtxFree(alp_tctx); StreamTcpFreeConfig(true); @@ -1223,10 +1223,10 @@ static int ModbusParserTest15(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 22); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 22); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); @@ -1238,11 +1238,11 @@ static int ModbusParserTest15(void) { sizeof(maskWriteRegisterRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); - ModbusMessage response = rs_modbus_state_get_tx_response(modbus_state, 0); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); + ModbusMessage response = SCModbusStateGetTxResponse(modbus_state, 0); FAIL_IF_NULL(response._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&response) == 22); + FAIL_IF_NOT(SCModbusMessageGetFunction(&response) == 22); SigGroupCleanup(de_ctx); SigCleanSignatures(de_ctx); @@ -1311,12 +1311,12 @@ static int ModbusParserTest16(void) { ModbusState *modbus_state = f.alstate; FAIL_IF_NULL(modbus_state); - ModbusMessage request = rs_modbus_state_get_tx_request(modbus_state, 0); + ModbusMessage request = SCModbusStateGetTxRequest(modbus_state, 0); FAIL_IF_NULL(request._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&request) == 6); + FAIL_IF_NOT(SCModbusMessageGetFunction(&request) == 6); size_t data_len; - const uint8_t *data = rs_modbus_message_get_bytevec_data(&request, &data_len); + const uint8_t *data = SCModbusMessageGetBytevecData(&request, &data_len); FAIL_IF_NOT(data_len == 2); FAIL_IF_NOT(data[0] == 0x00); FAIL_IF_NOT(data[1] == 0x01); @@ -1331,12 +1331,12 @@ static int ModbusParserTest16(void) { sizeof(writeSingleRegisterRsp)); FAIL_IF_NOT(r == 0); - FAIL_IF_NOT(rs_modbus_state_get_tx_count(modbus_state) == 1); - ModbusMessage response = rs_modbus_state_get_tx_response(modbus_state, 0); + FAIL_IF_NOT(SCModbusStateGetTxCount(modbus_state) == 1); + ModbusMessage response = SCModbusStateGetTxResponse(modbus_state, 0); FAIL_IF_NULL(response._0); - FAIL_IF_NOT(rs_modbus_message_get_function(&response) == 6); - FAIL_IF_NOT(rs_modbus_message_get_write_address(&response) == 0x0001); + FAIL_IF_NOT(SCModbusMessageGetFunction(&response) == 6); + FAIL_IF_NOT(SCModbusMessageGetWriteAddress(&response) == 0x0001); SigGroupCleanup(de_ctx); SigCleanSignatures(de_ctx); diff --git a/src/detect-modbus.c b/src/detect-modbus.c index 206667a90d..ee77ab0c07 100644 --- a/src/detect-modbus.c +++ b/src/detect-modbus.c @@ -66,7 +66,7 @@ static int g_modbus_buffer_id = 0; static void DetectModbusFree(DetectEngineCtx *de_ctx, void *ptr) { SCEnter(); if (ptr != NULL) { - rs_modbus_free(ptr); + SCModbusFree(ptr); } SCReturn; } @@ -89,7 +89,7 @@ static int DetectModbusSetup(DetectEngineCtx *de_ctx, Signature *s, const char * if (DetectSignatureSetAppProto(s, ALPROTO_MODBUS) != 0) return -1; - if ((modbus = rs_modbus_parse(str)) == NULL) { + if ((modbus = SCModbusParse(str)) == NULL) { SCLogError("invalid modbus option"); goto error; } @@ -111,7 +111,7 @@ error: static int DetectModbusMatch(DetectEngineThreadCtx *det_ctx, Flow *f, uint8_t flags, void *state, void *txv, const Signature *s, const SigMatchCtx *ctx) { - return rs_modbus_inspect(txv, (void *)ctx); + return SCModbusInspect(txv, (void *)ctx); } /**