use bitflags::bitflags;
pub const ADAPTER_NAME_SIZE: usize = 256;
pub const ADAPTER_LIST_SIZE: usize = 32;
pub const ETHER_ADDR_LENGTH: usize = 6;
pub const MAX_ETHER_FRAME: usize = 1514;
pub const RAS_LINK_BUFFER_LENGTH: usize = 2048;
pub const RAS_LINKS_MAX: usize = 256;
pub const IP_SUBNET_V4_TYPE: u32 = 1;
pub const IP_RANGE_V4_TYPE: u32 = 2;
pub const IP_SUBNET_V6_TYPE: u32 = 1;
pub const IP_RANGE_V6_TYPE: u32 = 2;
pub const ETH_802_3: u32 = 1;
pub const IPV4: u32 = 1;
pub const IPV6: u32 = 2;
pub const TCPUDP: u32 = 1;
pub const ICMP: u32 = 2;
pub const FILTER_PACKET_PASS: u32 = 1;
pub const FILTER_PACKET_DROP: u32 = 2;
pub const FILTER_PACKET_REDIRECT: u32 = 3;
pub const FILTER_PACKET_PASS_RDR: u32 = 4;
pub const FILTER_PACKET_DROP_RDR: u32 = 5;
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct FilterFlags: u32 {
const MSTCP_FLAG_SENT_TUNNEL = 1;
const MSTCP_FLAG_RECV_TUNNEL = 2;
const MSTCP_FLAG_SENT_LISTEN = 4;
const MSTCP_FLAG_RECV_LISTEN = 8;
const MSTCP_FLAG_FILTER_DIRECT = 16;
const MSTCP_FLAG_LOOPBACK_FILTER = 32;
const MSTCP_FLAG_LOOPBACK_BLOCK = 64;
const MSTCP_FLAG_SENT_RECEIVE_TUNNEL = Self::MSTCP_FLAG_SENT_TUNNEL.bits() | Self::MSTCP_FLAG_RECV_TUNNEL.bits();
const MSTCP_FLAG_SENT_RECEIVE_LISTEN = Self::MSTCP_FLAG_SENT_LISTEN.bits() | Self::MSTCP_FLAG_RECV_LISTEN.bits();
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct DirectionFlags: u32 {
const PACKET_FLAG_ON_SEND = 1;
const PACKET_FLAG_ON_RECEIVE = 2;
const PACKET_FLAG_ON_SEND_RECEIVE = Self::PACKET_FLAG_ON_SEND.bits() | Self::PACKET_FLAG_ON_RECEIVE.bits();
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct Eth802_3FilterFlags: u32 {
const ETH_802_3_SRC_ADDRESS = 1;
const ETH_802_3_DEST_ADDRESS = 2;
const ETH_802_3_PROTOCOL = 4;
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct IpV4FilterFlags: u32 {
const IP_V4_FILTER_SRC_ADDRESS = 1;
const IP_V4_FILTER_DEST_ADDRESS = 2;
const IP_V4_FILTER_PROTOCOL = 4;
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct IpV6FilterFlags: u32 {
const IP_V6_FILTER_SRC_ADDRESS = 1;
const IP_V6_FILTER_DEST_ADDRESS = 2;
const IP_V6_FILTER_PROTOCOL = 4;
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct TcpUdpFilterFlags: u32 {
const TCPUDP_SRC_PORT = 1;
const TCPUDP_DEST_PORT = 2;
const TCPUDP_TCP_FLAGS = 4;
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct IcmpFilterFlags: u32 {
const ICMP_TYPE = 1;
const ICMP_CODE = 2;
}
}
bitflags! {
#[derive(Default, Clone, Copy, Debug, PartialEq)]
pub struct FilterLayerFlags: u32 {
const DATA_LINK_LAYER_VALID = 1;
const NETWORK_LAYER_VALID = 2;
const TRANSPORT_LAYER_VALID = 4;
}
}