From: Victor Julien Date: Fri, 13 Mar 2020 19:01:21 +0000 (+0100) Subject: rust: merge parser.rs into applayer.rs X-Git-Tag: suricata-6.0.0-beta1~638 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f5834cdfab8157a0f8700bd7ac56d9b271b6d6d;p=thirdparty%2Fsuricata.git rust: merge parser.rs into applayer.rs Both were serving the same purpose. --- diff --git a/rust/src/applayer.rs b/rust/src/applayer.rs index 8ca5838afa..6fca0f9ff0 100644 --- a/rust/src/applayer.rs +++ b/rust/src/applayer.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Open Information Security Foundation +/* Copyright (C) 2017-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -15,11 +15,229 @@ * 02110-1301, USA. */ +//! Parser registration functions and common interface + use std; use crate::core::{STREAM_TOSERVER}; +use crate::core::{DetectEngineState,Flow,AppLayerEventType,AppLayerDecoderEvents,AppProto}; +use crate::filecontainer::FileContainer; +use crate::applayer; +use std::os::raw::{c_void,c_char,c_int}; + +#[repr(C)] +pub struct AppLayerResult { + pub status: i32, + pub consumed: u32, + pub needed: u32, +} + +impl AppLayerResult { + /// parser has successfully processed in the input, and has consumed all of it + pub fn ok() -> AppLayerResult { + return AppLayerResult { + status: 0, + consumed: 0, + needed: 0, + }; + } + /// parser has hit an unrecoverable error. Returning this to the API + /// leads to no further calls to the parser. + pub fn err() -> AppLayerResult { + return AppLayerResult { + status: -1, + consumed: 0, + needed: 0, + }; + } + /// parser needs more data. Through 'consumed' it will indicate how many + /// of the input bytes it has consumed. Through 'needed' it will indicate + /// how many more bytes it needs before getting called again. + /// Note: consumed should never be more than the input len + /// needed + consumed should be more than the input len + pub fn incomplete(consumed: u32, needed: u32) -> AppLayerResult { + return AppLayerResult { + status: 1, + consumed: consumed, + needed: needed, + }; + } +} + +/// Rust parser declaration +#[repr(C)] +pub struct RustParser { + /// Parser name. + pub name: *const c_char, + /// Default port + pub default_port: *const c_char, + + /// IP Protocol (core::IPPROTO_UDP, core::IPPROTO_TCP, etc.) + pub ipproto: c_int, + + /// Probing function, for packets going to server + pub probe_ts: Option, + /// Probing function, for packets going to client + pub probe_tc: Option, + + /// Minimum frame depth for probing + pub min_depth: u16, + /// Maximum frame depth for probing + pub max_depth: u16, + + /// Allocation function for a new state + pub state_new: StateAllocFn, + /// Function called to free a state + pub state_free: StateFreeFn, + + /// Parsing function, for packets going to server + pub parse_ts: ParseFn, + /// Parsing function, for packets going to client + pub parse_tc: ParseFn, + + /// Get the current transaction count + pub get_tx_count: StateGetTxCntFn, + /// Get a transaction + pub get_tx: StateGetTxFn, + /// Function called to free a transaction + pub tx_free: StateTxFreeFn, + /// Function returning the current transaction completion status + pub tx_get_comp_st: StateGetTxCompletionStatusFn, + /// Function returning the current transaction progress + pub tx_get_progress: StateGetProgressFn, + + /// Logged transaction getter function + pub get_tx_logged: Option, + /// Logged transaction setter function + pub set_tx_logged: Option, + + /// Function called to get a detection state + pub get_de_state: GetDetectStateFn, + /// Function called to set a detection state + pub set_de_state: SetDetectStateFn, + + /// Function to get events + pub get_events: Option, + /// Function to get an event id from a description + pub get_eventinfo: Option, + /// Function to get an event description from an event id + pub get_eventinfo_byid: Option, + + /// Function to allocate local storage + pub localstorage_new: Option, + /// Function to free local storage + pub localstorage_free: Option, + + /// Function to get transaction MPM ID + pub get_tx_mpm_id: Option, + /// Function to set transaction MPM ID + pub set_tx_mpm_id: Option, + + /// Function to get files + pub get_files: Option, + + /// Function to get the TX iterator + pub get_tx_iterator: Option, + + // Function to set TX detect flags. + pub set_tx_detect_flags: Option, + + // Function to get TX detect flags. + pub get_tx_detect_flags: Option, +} + +/// Create a slice, given a buffer and a length +/// +/// UNSAFE ! +#[macro_export] +macro_rules! build_slice { + ($buf:ident, $len:expr) => ( unsafe{ std::slice::from_raw_parts($buf, $len) } ); +} + +/// Cast pointer to a variable, as a mutable reference to an object +/// +/// UNSAFE ! +#[macro_export] +macro_rules! cast_pointer { + ($ptr:ident, $ty:ty) => ( unsafe{ &mut *($ptr as *mut $ty) } ); +} + +pub type ParseFn = extern "C" fn (flow: *const Flow, + state: *mut c_void, + pstate: *mut c_void, + input: *const u8, + input_len: u32, + data: *const c_void, + flags: u8) -> AppLayerResult; +pub type ProbeFn = extern "C" fn (flow: *const Flow,direction: u8,input:*const u8, input_len: u32, rdir: *mut u8) -> AppProto; +pub type StateAllocFn = extern "C" fn () -> *mut c_void; +pub type StateFreeFn = extern "C" fn (*mut c_void); +pub type StateTxFreeFn = extern "C" fn (*mut c_void, u64); +pub type StateGetTxFn = extern "C" fn (*mut c_void, u64) -> *mut c_void; +pub type StateGetTxCntFn = extern "C" fn (*mut c_void) -> u64; +pub type StateGetTxCompletionStatusFn = extern "C" fn (u8) -> c_int; +pub type StateGetProgressFn = extern "C" fn (*mut c_void, u8) -> c_int; +pub type GetDetectStateFn = extern "C" fn (*mut c_void) -> *mut DetectEngineState; +pub type SetDetectStateFn = extern "C" fn (*mut c_void, &mut DetectEngineState) -> c_int; +pub type GetEventInfoFn = extern "C" fn (*const c_char, *mut c_int, *mut AppLayerEventType) -> c_int; +pub type GetEventInfoByIdFn = extern "C" fn (c_int, *mut *const c_char, *mut AppLayerEventType) -> i8; +pub type GetEventsFn = extern "C" fn (*mut c_void) -> *mut AppLayerDecoderEvents; +pub type GetTxLoggedFn = extern "C" fn (*mut c_void, *mut c_void) -> u32; +pub type SetTxLoggedFn = extern "C" fn (*mut c_void, *mut c_void, u32); +pub type LocalStorageNewFn = extern "C" fn () -> *mut c_void; +pub type LocalStorageFreeFn = extern "C" fn (*mut c_void); +pub type GetTxMpmIDFn = extern "C" fn (*mut c_void) -> u64; +pub type SetTxMpmIDFn = extern "C" fn (*mut c_void, u64) -> c_int; +pub type GetFilesFn = extern "C" fn (*mut c_void, u8) -> *mut FileContainer; +pub type GetTxIteratorFn = extern "C" fn (ipproto: u8, alproto: AppProto, + state: *mut c_void, + min_tx_id: u64, + max_tx_id: u64, + istate: &mut u64) + -> AppLayerGetTxIterTuple; +pub type GetTxDetectFlagsFn = unsafe extern "C" fn(*mut c_void, u8) -> u64; +pub type SetTxDetectFlagsFn = unsafe extern "C" fn(*mut c_void, u8, u64); + +// Defined in app-layer-register.h +extern { + pub fn AppLayerRegisterProtocolDetection(parser: *const RustParser, enable_default: c_int) -> AppProto; + pub fn AppLayerRegisterParser(parser: *const RustParser, alproto: AppProto) -> c_int; +} + +// Defined in app-layer-detect-proto.h +extern { + pub fn AppLayerProtoDetectConfProtoDetectionEnabled(ipproto: *const c_char, proto: *const c_char) -> c_int; +} + +// Defined in app-layer-parser.h +pub const APP_LAYER_PARSER_EOF : u8 = 0b0; +pub const APP_LAYER_PARSER_NO_INSPECTION : u8 = 0b1; +pub const APP_LAYER_PARSER_NO_REASSEMBLY : u8 = 0b10; +pub const APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD : u8 = 0b100; +pub const APP_LAYER_PARSER_BYPASS_READY : u8 = 0b1000; pub const APP_LAYER_PARSER_OPT_ACCEPT_GAPS: u32 = BIT_U32!(0); +pub type AppLayerGetTxIteratorFn = extern "C" fn (ipproto: u8, + alproto: AppProto, + alstate: *mut c_void, + min_tx_id: u64, + max_tx_id: u64, + istate: &mut u64) -> applayer::AppLayerGetTxIterTuple; + +extern { + pub fn AppLayerParserStateSetFlag(state: *mut c_void, flag: u8); + pub fn AppLayerParserStateIssetFlag(state: *mut c_void, flag: u8) -> c_int; + pub fn AppLayerParserConfParserEnabled(ipproto: *const c_char, proto: *const c_char) -> c_int; + pub fn AppLayerParserRegisterGetTxIterator(ipproto: u8, alproto: AppProto, fun: AppLayerGetTxIteratorFn); + pub fn AppLayerParserRegisterDetectFlagsFuncs( + ipproto: u8, + alproto: AppProto, + GetTxDetectFlats: GetTxDetectFlagsFn, + SetTxDetectFlags: SetTxDetectFlagsFn, + ); + pub fn AppLayerParserRegisterOptionFlags(ipproto: u8, alproto: AppProto, flags: u32); +} + #[repr(C)] pub struct AppLayerGetTxIterTuple { tx_ptr: *mut std::os::raw::c_void, diff --git a/rust/src/applayertemplate/template.rs b/rust/src/applayertemplate/template.rs index 385afd96e4..7b80fbba5b 100644 --- a/rust/src/applayertemplate/template.rs +++ b/rust/src/applayertemplate/template.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Open Information Security Foundation +/* Copyright (C) 2018-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -19,8 +19,7 @@ use std; use crate::core::{self, ALPROTO_UNKNOWN, AppProto, Flow, IPPROTO_TCP}; use crate::log::*; use std::mem::transmute; -use crate::applayer::{self, LoggerFlags}; -use crate::parser::*; +use crate::applayer::{self, *}; use std::ffi::CString; use nom; use super::parser; diff --git a/rust/src/dhcp/dhcp.rs b/rust/src/dhcp/dhcp.rs index 9ffefc19ec..77eff829fc 100644 --- a/rust/src/dhcp/dhcp.rs +++ b/rust/src/dhcp/dhcp.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Open Information Security Foundation +/* Copyright (C) 2018-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -15,13 +15,12 @@ * 02110-1301, USA. */ -use crate::applayer; +use crate::applayer::{self, *}; use crate::core; use crate::core::{ALPROTO_UNKNOWN, AppProto, Flow, IPPROTO_UDP}; use crate::core::{sc_detect_engine_state_free, sc_app_layer_decoder_events_free_events}; use crate::dhcp::parser::*; use crate::log::*; -use crate::parser::*; use std; use std::ffi::{CStr,CString}; use std::mem::transmute; diff --git a/rust/src/dns/dns.rs b/rust/src/dns/dns.rs index 69ebf0d5fd..fd0338dfee 100644 --- a/rust/src/dns/dns.rs +++ b/rust/src/dns/dns.rs @@ -22,10 +22,9 @@ use std::ffi::CString; use std::mem::transmute; use crate::log::*; -use crate::applayer::LoggerFlags; +use crate::applayer::*; use crate::core::{self, AppProto, ALPROTO_UNKNOWN, IPPROTO_UDP, IPPROTO_TCP}; use crate::dns::parser; -use crate::parser::*; use nom::IResult; use nom::number::streaming::be_u16; diff --git a/rust/src/ikev2/ikev2.rs b/rust/src/ikev2/ikev2.rs index eb3dfc8088..2e8864af67 100644 --- a/rust/src/ikev2/ikev2.rs +++ b/rust/src/ikev2/ikev2.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2018 Open Information Security Foundation +/* Copyright (C) 2017-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -21,8 +21,7 @@ use crate::ikev2::ipsec_parser::*; use crate::ikev2::state::IKEV2ConnectionState; use crate::core; use crate::core::{AppProto,Flow,ALPROTO_UNKNOWN,ALPROTO_FAILED,STREAM_TOSERVER,STREAM_TOCLIENT}; -use crate::applayer; -use crate::parser::*; +use crate::applayer::{self, *}; use std; use std::ffi::{CStr,CString}; diff --git a/rust/src/krb/krb5.rs b/rust/src/krb/krb5.rs index bd28d48060..8ed7c5ba3b 100644 --- a/rust/src/krb/krb5.rs +++ b/rust/src/krb/krb5.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2018 Open Information Security Foundation +/* Copyright (C) 2017-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -25,10 +25,9 @@ use nom::number::streaming::be_u32; use der_parser::der::der_read_element_header; use kerberos_parser::krb5_parser; use kerberos_parser::krb5::{EncryptionType,ErrorCode,MessageType,PrincipalName,Realm}; -use crate::applayer; +use crate::applayer::{self, *}; use crate::core; use crate::core::{AppProto,Flow,ALPROTO_FAILED,ALPROTO_UNKNOWN,STREAM_TOCLIENT,STREAM_TOSERVER,sc_detect_engine_state_free}; -use crate::parser::*; use crate::log::*; diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 81ada2101c..a9b6c756ce 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -48,8 +48,6 @@ pub mod json; pub mod applayer; pub mod filecontainer; pub mod filetracker; -#[macro_use] -pub mod parser; pub mod kerberos; #[cfg(feature = "lua")] diff --git a/rust/src/nfs/nfs.rs b/rust/src/nfs/nfs.rs index b9916c803a..0ac14a7246 100644 --- a/rust/src/nfs/nfs.rs +++ b/rust/src/nfs/nfs.rs @@ -27,8 +27,7 @@ use nom; use crate::log::*; use crate::applayer; -use crate::applayer::LoggerFlags; -use crate::parser::AppLayerResult; +use crate::applayer::{LoggerFlags, AppLayerResult}; use crate::core::*; use crate::filetracker::*; use crate::filecontainer::*; diff --git a/rust/src/ntp/ntp.rs b/rust/src/ntp/ntp.rs index 76118da32c..7811d78da5 100644 --- a/rust/src/ntp/ntp.rs +++ b/rust/src/ntp/ntp.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Open Information Security Foundation +/* Copyright (C) 2017-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -21,8 +21,7 @@ extern crate ntp_parser; use self::ntp_parser::*; use crate::core; use crate::core::{AppProto,Flow,ALPROTO_UNKNOWN,ALPROTO_FAILED}; -use crate::applayer; -use crate::parser::*; +use crate::applayer::{self, *}; use std; use std::ffi::{CStr,CString}; diff --git a/rust/src/parser.rs b/rust/src/parser.rs deleted file mode 100644 index 0970532475..0000000000 --- a/rust/src/parser.rs +++ /dev/null @@ -1,242 +0,0 @@ -/* Copyright (C) 2017-2020 Open Information Security Foundation - * - * You can copy, redistribute or modify this Program under the terms of - * the GNU General Public License version 2 as published by the Free - * Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * version 2 along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -// written by Pierre Chifflier - -//! Parser registration functions and common interface - -use crate::core::{DetectEngineState,Flow,AppLayerEventType,AppLayerDecoderEvents,AppProto}; -use crate::filecontainer::FileContainer; -use crate::applayer; - -use std::os::raw::{c_void,c_char,c_int}; -use crate::applayer::{AppLayerGetTxIterTuple}; - -#[repr(C)] -pub struct AppLayerResult { - pub status: i32, - pub consumed: u32, - pub needed: u32, -} - -impl AppLayerResult { - /// parser has successfully processed in the input, and has consumed all of it - pub fn ok() -> AppLayerResult { - return AppLayerResult { - status: 0, - consumed: 0, - needed: 0, - }; - } - /// parser has hit an unrecoverable error. Returning this to the API - /// leads to no further calls to the parser. - pub fn err() -> AppLayerResult { - return AppLayerResult { - status: -1, - consumed: 0, - needed: 0, - }; - } - /// parser needs more data. Through 'consumed' it will indicate how many - /// of the input bytes it has consumed. Through 'needed' it will indicate - /// how many more bytes it needs before getting called again. - /// Note: consumed should never be more than the input len - /// needed + consumed should be more than the input len - pub fn incomplete(consumed: u32, needed: u32) -> AppLayerResult { - return AppLayerResult { - status: 1, - consumed: consumed, - needed: needed, - }; - } -} - -/// Rust parser declaration -#[repr(C)] -pub struct RustParser { - /// Parser name. - pub name: *const c_char, - /// Default port - pub default_port: *const c_char, - - /// IP Protocol (core::IPPROTO_UDP, core::IPPROTO_TCP, etc.) - pub ipproto: c_int, - - /// Probing function, for packets going to server - pub probe_ts: Option, - /// Probing function, for packets going to client - pub probe_tc: Option, - - /// Minimum frame depth for probing - pub min_depth: u16, - /// Maximum frame depth for probing - pub max_depth: u16, - - /// Allocation function for a new state - pub state_new: StateAllocFn, - /// Function called to free a state - pub state_free: StateFreeFn, - - /// Parsing function, for packets going to server - pub parse_ts: ParseFn, - /// Parsing function, for packets going to client - pub parse_tc: ParseFn, - - /// Get the current transaction count - pub get_tx_count: StateGetTxCntFn, - /// Get a transaction - pub get_tx: StateGetTxFn, - /// Function called to free a transaction - pub tx_free: StateTxFreeFn, - /// Function returning the current transaction completion status - pub tx_get_comp_st: StateGetTxCompletionStatusFn, - /// Function returning the current transaction progress - pub tx_get_progress: StateGetProgressFn, - - /// Logged transaction getter function - pub get_tx_logged: Option, - /// Logged transaction setter function - pub set_tx_logged: Option, - - /// Function called to get a detection state - pub get_de_state: GetDetectStateFn, - /// Function called to set a detection state - pub set_de_state: SetDetectStateFn, - - /// Function to get events - pub get_events: Option, - /// Function to get an event id from a description - pub get_eventinfo: Option, - /// Function to get an event description from an event id - pub get_eventinfo_byid: Option, - - /// Function to allocate local storage - pub localstorage_new: Option, - /// Function to free local storage - pub localstorage_free: Option, - - /// Function to get transaction MPM ID - pub get_tx_mpm_id: Option, - /// Function to set transaction MPM ID - pub set_tx_mpm_id: Option, - - /// Function to get files - pub get_files: Option, - - /// Function to get the TX iterator - pub get_tx_iterator: Option, - - // Function to set TX detect flags. - pub set_tx_detect_flags: Option, - - // Function to get TX detect flags. - pub get_tx_detect_flags: Option, -} - - - - -/// Create a slice, given a buffer and a length -/// -/// UNSAFE ! -#[macro_export] -macro_rules! build_slice { - ($buf:ident, $len:expr) => ( unsafe{ std::slice::from_raw_parts($buf, $len) } ); -} - -/// Cast pointer to a variable, as a mutable reference to an object -/// -/// UNSAFE ! -#[macro_export] -macro_rules! cast_pointer { - ($ptr:ident, $ty:ty) => ( unsafe{ &mut *($ptr as *mut $ty) } ); -} - -pub type ParseFn = extern "C" fn (flow: *const Flow, - state: *mut c_void, - pstate: *mut c_void, - input: *const u8, - input_len: u32, - data: *const c_void, - flags: u8) -> AppLayerResult; -pub type ProbeFn = extern "C" fn (flow: *const Flow,direction: u8,input:*const u8, input_len: u32, rdir: *mut u8) -> AppProto; -pub type StateAllocFn = extern "C" fn () -> *mut c_void; -pub type StateFreeFn = extern "C" fn (*mut c_void); -pub type StateTxFreeFn = extern "C" fn (*mut c_void, u64); -pub type StateGetTxFn = extern "C" fn (*mut c_void, u64) -> *mut c_void; -pub type StateGetTxCntFn = extern "C" fn (*mut c_void) -> u64; -pub type StateGetTxCompletionStatusFn = extern "C" fn (u8) -> c_int; -pub type StateGetProgressFn = extern "C" fn (*mut c_void, u8) -> c_int; -pub type GetDetectStateFn = extern "C" fn (*mut c_void) -> *mut DetectEngineState; -pub type SetDetectStateFn = extern "C" fn (*mut c_void, &mut DetectEngineState) -> c_int; -pub type GetEventInfoFn = extern "C" fn (*const c_char, *mut c_int, *mut AppLayerEventType) -> c_int; -pub type GetEventInfoByIdFn = extern "C" fn (c_int, *mut *const c_char, *mut AppLayerEventType) -> i8; -pub type GetEventsFn = extern "C" fn (*mut c_void) -> *mut AppLayerDecoderEvents; -pub type GetTxLoggedFn = extern "C" fn (*mut c_void, *mut c_void) -> u32; -pub type SetTxLoggedFn = extern "C" fn (*mut c_void, *mut c_void, u32); -pub type LocalStorageNewFn = extern "C" fn () -> *mut c_void; -pub type LocalStorageFreeFn = extern "C" fn (*mut c_void); -pub type GetTxMpmIDFn = extern "C" fn (*mut c_void) -> u64; -pub type SetTxMpmIDFn = extern "C" fn (*mut c_void, u64) -> c_int; -pub type GetFilesFn = extern "C" fn (*mut c_void, u8) -> *mut FileContainer; -pub type GetTxIteratorFn = extern "C" fn (ipproto: u8, alproto: AppProto, - state: *mut c_void, - min_tx_id: u64, - max_tx_id: u64, - istate: &mut u64) - -> AppLayerGetTxIterTuple; -pub type GetTxDetectFlagsFn = unsafe extern "C" fn(*mut c_void, u8) -> u64; -pub type SetTxDetectFlagsFn = unsafe extern "C" fn(*mut c_void, u8, u64); - -// Defined in app-layer-register.h -extern { - pub fn AppLayerRegisterProtocolDetection(parser: *const RustParser, enable_default: c_int) -> AppProto; - pub fn AppLayerRegisterParser(parser: *const RustParser, alproto: AppProto) -> c_int; -} - -// Defined in app-layer-detect-proto.h -extern { - pub fn AppLayerProtoDetectConfProtoDetectionEnabled(ipproto: *const c_char, proto: *const c_char) -> c_int; -} - -// Defined in app-layer-parser.h -pub const APP_LAYER_PARSER_EOF : u8 = 0b0; -pub const APP_LAYER_PARSER_NO_INSPECTION : u8 = 0b1; -pub const APP_LAYER_PARSER_NO_REASSEMBLY : u8 = 0b10; -pub const APP_LAYER_PARSER_NO_INSPECTION_PAYLOAD : u8 = 0b100; -pub const APP_LAYER_PARSER_BYPASS_READY : u8 = 0b1000; - -pub type AppLayerGetTxIteratorFn = extern "C" fn (ipproto: u8, - alproto: AppProto, - alstate: *mut c_void, - min_tx_id: u64, - max_tx_id: u64, - istate: &mut u64) -> applayer::AppLayerGetTxIterTuple; - -extern { - pub fn AppLayerParserStateSetFlag(state: *mut c_void, flag: u8); - pub fn AppLayerParserStateIssetFlag(state: *mut c_void, flag: u8) -> c_int; - pub fn AppLayerParserConfParserEnabled(ipproto: *const c_char, proto: *const c_char) -> c_int; - pub fn AppLayerParserRegisterGetTxIterator(ipproto: u8, alproto: AppProto, fun: AppLayerGetTxIteratorFn); - pub fn AppLayerParserRegisterDetectFlagsFuncs( - ipproto: u8, - alproto: AppProto, - GetTxDetectFlats: GetTxDetectFlagsFn, - SetTxDetectFlags: SetTxDetectFlagsFn, - ); - pub fn AppLayerParserRegisterOptionFlags(ipproto: u8, alproto: AppProto, flags: u32); -} diff --git a/rust/src/rdp/rdp.rs b/rust/src/rdp/rdp.rs index 36533cb0c0..80c70ac343 100644 --- a/rust/src/rdp/rdp.rs +++ b/rust/src/rdp/rdp.rs @@ -24,7 +24,7 @@ use crate::core::{ }; use crate::conf; use nom; -use crate::parser::*; +use crate::applayer::*; use crate::rdp::parser::*; use std; use std::mem::transmute; diff --git a/rust/src/sip/sip.rs b/rust/src/sip/sip.rs index a8e4299f50..0733306b3e 100755 --- a/rust/src/sip/sip.rs +++ b/rust/src/sip/sip.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Open Information Security Foundation +/* Copyright (C) 2019-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -19,12 +19,11 @@ extern crate nom; -use crate::applayer; +use crate::applayer::{self, *}; use crate::conf; use crate::core; use crate::core::{sc_detect_engine_state_free, AppProto, Flow, ALPROTO_UNKNOWN}; use crate::log::*; -use crate::parser::*; use crate::sip::parser::*; use std; use std::ffi::{CStr, CString}; diff --git a/rust/src/smb/smb.rs b/rust/src/smb/smb.rs index c8fc4fcdee..45033c37ee 100644 --- a/rust/src/smb/smb.rs +++ b/rust/src/smb/smb.rs @@ -37,8 +37,7 @@ use nom; use crate::core::*; use crate::log::*; use crate::applayer; -use crate::applayer::LoggerFlags; -use crate::parser::AppLayerResult; +use crate::applayer::{LoggerFlags, AppLayerResult}; use crate::smb::nbss_records::*; use crate::smb::smb1_records::*; diff --git a/rust/src/snmp/snmp.rs b/rust/src/snmp/snmp.rs index b8b1d9be2d..b555f15baf 100644 --- a/rust/src/snmp/snmp.rs +++ b/rust/src/snmp/snmp.rs @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Open Information Security Foundation +/* Copyright (C) 2017-2020 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -20,8 +20,7 @@ use crate::snmp::snmp_parser::*; use crate::core; use crate::core::{AppProto,Flow,ALPROTO_UNKNOWN,ALPROTO_FAILED,STREAM_TOSERVER,STREAM_TOCLIENT}; -use crate::applayer; -use crate::parser::*; +use crate::applayer::{self, *}; use std; use std::ffi::{CStr,CString}; use std::mem::transmute;