//! Parser registration functions and common interface module.
use std;
-use crate::core::{self,DetectEngineState,AppLayerEventType,AppProto};
+use crate::core::{self,DetectEngineState,AppLayerEventType};
use crate::direction::Direction;
use crate::filecontainer::FileContainer;
use crate::flow::Flow;
// Make the AppLayerEvent derive macro available to users importing
// AppLayerEvent from this module.
pub use suricata_derive::AppLayerEvent;
+use suricata_sys::sys::AppProto;
#[repr(C)]
pub struct StreamSlice {
use super::parser;
use crate::applayer::{self, *};
use crate::conf::conf_get;
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_TCP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::flow::Flow;
use nom7 as nom;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
* 02110-1301, USA.
*/
+use suricata_sys::sys::AppProto;
+
use crate::applayer::{self, *};
use crate::bittorrent_dht::parser::{
parse_bittorrent_dht_packet, BitTorrentDHTError, BitTorrentDHTRequest, BitTorrentDHTResponse,
};
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_UDP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_UDP};
use crate::direction::Direction;
use crate::flow::Flow;
use std::ffi::CString;
//! This module exposes items from the core "C" code to Rust.
use std;
+use suricata_sys::sys::{AppProto, AppProtoEnum};
+
use crate::filecontainer::*;
use crate::flow::Flow;
pub const STREAM_DEPTH: u8 = 0x20;
pub const STREAM_MIDSTREAM:u8 = 0x40;
-// Application layer protocol identifiers (app-layer-protos.h)
-pub type AppProto = u16;
-
-pub const ALPROTO_UNKNOWN : AppProto = 0;
-pub const ALPROTO_FAILED : AppProto = 1;
+pub const ALPROTO_UNKNOWN : AppProto = AppProtoEnum::ALPROTO_UNKNOWN as AppProto;
+pub const ALPROTO_FAILED : AppProto = AppProtoEnum::ALPROTO_FAILED as AppProto;
pub const IPPROTO_TCP : u8 = 6;
pub const IPPROTO_UDP : u8 = 17;
use nom7::error::{Error, ErrorKind};
use nom7::number::Endianness;
use nom7::{Err, IResult, Needed};
+use suricata_sys::sys::AppProto;
use std;
use std::cmp;
use std::ffi::CString;
}
#[no_mangle]
-pub extern "C" fn rs_dcerpc_state_new(_orig_state: *mut std::os::raw::c_void, _orig_proto: core::AppProto) -> *mut std::os::raw::c_void {
+pub extern "C" fn rs_dcerpc_state_new(_orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto) -> *mut std::os::raw::c_void {
let state = DCERPCState::new();
let boxed = Box::new(state);
return Box::into_raw(boxed) as *mut _;
use crate::direction::{Direction, DIR_BOTH};
use crate::flow::Flow;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::ffi::CString;
use std::collections::VecDeque;
}
#[no_mangle]
-pub extern "C" fn rs_dcerpc_udp_state_new(_orig_state: *mut std::os::raw::c_void, _orig_proto: core::AppProto) -> *mut std::os::raw::c_void {
+pub extern "C" fn rs_dcerpc_udp_state_new(_orig_state: *mut std::os::raw::c_void, _orig_proto: AppProto) -> *mut std::os::raw::c_void {
let state = DCERPCUDPState::new();
let boxed = Box::new(state);
return Box::into_raw(boxed) as *mut _;
}
pub unsafe extern "C" fn rs_dcerpc_probe_udp(_f: *const Flow, direction: u8, input: *const u8,
- len: u32, rdir: *mut u8) -> core::AppProto
+ len: u32, rdir: *mut u8) -> AppProto
{
SCLogDebug!("Probing the packet for DCERPC/UDP");
if len == 0 || input.is_null() {
pub mod vlan;
pub mod datasets;
-use crate::core::AppProto;
use std::os::raw::{c_int, c_void};
+use suricata_sys::sys::AppProto;
+
/// EnumString trait that will be implemented on enums that
/// derive StringEnum.
pub trait EnumString<T> {
* 02110-1301, USA.
*/
+use suricata_sys::sys::AppProto;
+
use crate::applayer::{self, *};
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_UDP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_UDP};
use crate::dhcp::parser::*;
use crate::flow::Flow;
use std;
use nom7::number::streaming::be_u16;
use nom7::{Err, IResult};
+use suricata_sys::sys::AppProto;
/// DNS record types.
pub const DNS_RECORD_TYPE_A: u16 = 1;
use crate::applayer::{self, *};
use crate::conf::conf_get;
use crate::core::{
- AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP,
+ ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP,
STREAM_TOCLIENT, STREAM_TOSERVER,
};
use crate::detect::EnumString;
use crate::flow::Flow;
use crate::frames::Frame;
use nom7 as nom;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
use crate::dns::dns::{dns_parse_request, dns_parse_response, DNSTransaction};
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
use crate::ike::ikev2::{handle_ikev2, Ikev2Container};
use crate::ike::parser::*;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::HashSet;
use std::ffi::CString;
use kerberos_parser::krb5_parser;
use kerberos_parser::krb5::{EncryptionType,ErrorCode,MessageType,PrincipalName,Realm,KrbError};
use asn1_rs::FromDer;
+use suricata_sys::sys::AppProto;
use crate::applayer::{self, *};
use crate::core;
-use crate::core::{AppProto,ALPROTO_FAILED,ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP};
+use crate::core::{ALPROTO_FAILED,ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP};
use crate::direction::Direction;
use crate::flow::Flow;
use crate::flow::Flow;
use crate::frames::*;
use nom7 as nom;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
* 02110-1301, USA.
*/
use crate::applayer::{self, *};
-use crate::core::{AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP};
+use crate::core::{ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::flow::Flow;
use std::ffi::CString;
use sawp::parser::{Direction, Parse};
use sawp::probe::{Probe, Status};
use sawp_modbus::{self, AccessType, ErrorFlags, Flags, Message};
+use suricata_sys::sys::AppProto;
pub const REQUEST_FLOOD: usize = 500; // Default unreplied Modbus requests are considered a flood
pub const MODBUS_PARSER: sawp_modbus::Modbus = sawp_modbus::Modbus { probe_strict: true };
use crate::flow::Flow;
use crate::frames::*;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
use std::ffi::CString;
use nom7::{Err, Needed};
+use suricata_sys::sys::AppProto;
use crate::applayer;
use crate::applayer::*;
use self::ntp_parser::*;
use crate::applayer::{self, *};
use crate::core;
-use crate::core::{AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN};
+use crate::core::{ALPROTO_FAILED, ALPROTO_UNKNOWN};
use crate::direction::Direction;
use crate::flow::Flow;
use std;
use std::ffi::CString;
use nom7::Err;
+use suricata_sys::sys::AppProto;
#[derive(AppLayerEvent)]
pub enum NTPEvent {
use super::parser::{self, ConsolidatedDataRowPacket, PgsqlBEMessage, PgsqlFEMessage};
use crate::applayer::*;
use crate::conf::*;
-use crate::core::{AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP, *};
+use crate::core::{ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP, *};
use crate::direction::Direction;
use crate::flow::Flow;
use nom7::{Err, IResult};
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
parser::{quic_pkt_num, QuicData, QuicHeader, QuicType},
};
use crate::{applayer::{self, *}, direction::Direction, flow::Flow};
-use crate::core::{AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_UDP};
+use crate::core::{ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_UDP};
use std::collections::VecDeque;
use std::ffi::CString;
+use suricata_sys::sys::AppProto;
use tls_parser::TlsExtensionType;
static mut ALPROTO_QUIC: AppProto = ALPROTO_UNKNOWN;
//! RDP application layer
use crate::applayer::{self, *};
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_TCP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::flow::Flow;
use crate::rdp::parser::*;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use tls_parser::{parse_tls_plaintext, TlsMessage, TlsMessageHandshake, TlsRecordType};
use super::parser;
use crate::applayer;
use crate::applayer::*;
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_TCP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::direction::Direction;
use crate::flow::Flow;
use crate::frames::*;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::ffi::CString;
use std::os::raw::c_char;
use crate::applayer::{self, *};
use crate::core;
-use crate::core::{AppProto, ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_TCP, IPPROTO_UDP};
use crate::direction::Direction;
use crate::flow::Flow;
use crate::frames::*;
use crate::sip::parser::*;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;
use std::ffi::CString;
use nom7::error::{make_error, ErrorKind};
use lru::LruCache;
+use suricata_sys::sys::AppProto;
use std::num::NonZeroUsize;
use crate::core::*;
use der_parser::der::parse_der_sequence;
use nom7::{Err, IResult};
use nom7::error::{ErrorKind, make_error};
+use suricata_sys::sys::AppProto;
#[derive(AppLayerEvent)]
pub enum SNMPEvent {
use crate::flow::Flow;
use crate::frames::Frame;
use nom7::Err;
+use suricata_sys::sys::AppProto;
use std::ffi::CString;
use std::sync::atomic::{AtomicBool, Ordering};
*/
use std;
-use crate::core::{ALPROTO_UNKNOWN, AppProto, IPPROTO_TCP};
+use crate::core::{ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::applayer::{self, *};
use crate::flow::Flow;
use crate::frames::*;
use std::ffi::CString;
use nom7::IResult;
+use suricata_sys::sys::AppProto;
use super::parser;
static mut ALPROTO_TELNET: AppProto = ALPROTO_UNKNOWN;
use super::parser;
use crate::applayer::{self, *};
use crate::conf::conf_get;
-use crate::core::{AppProto, ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP};
+use crate::core::{ALPROTO_FAILED, ALPROTO_UNKNOWN, IPPROTO_TCP};
use crate::direction::Direction;
use crate::flow::Flow;
use crate::frames::Frame;
use nom7::Needed;
use flate2::read::DeflateDecoder;
+use suricata_sys::sys::AppProto;
use std;
use std::collections::VecDeque;