bitflags!
{
pub flags PacketType: u32
{
const Layer2Ether = RTE_PTYPE_L2_ETHER,
const Layer2EtherTimeSync = RTE_PTYPE_L2_ETHER_TIMESYNC,
const Layer2EtherArp = RTE_PTYPE_L2_ETHER_ARP,
const Layer2EtherLldp = RTE_PTYPE_L2_ETHER_LLDP,
const Layer2EtherNsh = RTE_PTYPE_L2_ETHER_NSH,
const Layer2EtherQinQ = RTE_PTYPE_L2_ETHER_QINQ,
const Layer2EtherVirtualLan = RTE_PTYPE_L2_ETHER_VLAN,
const Layer3IpV4 = RTE_PTYPE_L3_IPV4,
const Layer3IpV4Extended = RTE_PTYPE_L3_IPV4_EXT,
const Layer3IpV6 = RTE_PTYPE_L3_IPV6,
const Layer3IpV4ExtendedUnknown = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
const Layer3IpV6Extended = RTE_PTYPE_L3_IPV6_EXT,
const Layer3IpV6ExtendedUnknown = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN,
const Layer4Tcp = RTE_PTYPE_L4_TCP,
const Layer4Udp = RTE_PTYPE_L4_UDP,
const Layer4Fragmented = RTE_PTYPE_L4_FRAG,
const Layer4Sctp = RTE_PTYPE_L4_SCTP,
const Layer4Icmp = RTE_PTYPE_L4_ICMP,
const Layer4NonFragmented = RTE_PTYPE_L4_NONFRAG,
const TunnelIp = RTE_PTYPE_TUNNEL_IP,
const TunnelGre = RTE_PTYPE_TUNNEL_GRE,
const TunnelVxLan = RTE_PTYPE_TUNNEL_VXLAN,
const TunnelNvGre = RTE_PTYPE_TUNNEL_NVGRE,
const TunnelGeneve = RTE_PTYPE_TUNNEL_GENEVE,
const TunnelGrenNat = RTE_PTYPE_TUNNEL_GRENAT,
const InnerLayer2Ether = RTE_PTYPE_INNER_L2_ETHER,
const InnerLayer2EtherQinQ = RTE_PTYPE_INNER_L2_ETHER_QINQ,
const InnerLayer2EtherVirtualLan = RTE_PTYPE_INNER_L2_ETHER_VLAN,
const InnerLayer3IpV4 = RTE_PTYPE_INNER_L3_IPV4,
const InnerLayer3IpV4Extended = RTE_PTYPE_INNER_L3_IPV4_EXT,
const InnerLayer3IpV6 = RTE_PTYPE_INNER_L3_IPV6,
const InnerLayer3IpV4ExtendedUnknown = RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN,
const InnerLayer3IpV6Extended = RTE_PTYPE_INNER_L3_IPV6_EXT,
const InnerLayer3IpV6ExtendedUnknown = RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN,
const InnerLayer4Tcp = RTE_PTYPE_INNER_L4_TCP,
const InnerLayer4Udp = RTE_PTYPE_INNER_L4_UDP,
const InnerLayer4Fragmented = RTE_PTYPE_INNER_L4_FRAG,
const InnerLayer4Sctp = RTE_PTYPE_INNER_L4_SCTP,
const InnerLayer4Icmp = RTE_PTYPE_INNER_L4_ICMP,
const InnerLayer4NonFragmented = RTE_PTYPE_INNER_L4_NONFRAG,
}
}
impl Default for PacketType
{
#[inline(always)]
fn default() -> Self
{
Self::empty()
}
}
impl PacketType
{
#[inline(always)]
pub fn isIpV4Header(self) -> bool
{
self.bits & RTE_PTYPE_L3_IPV4 != 0
}
#[inline(always)]
pub fn isIpV6Header(self) -> bool
{
self.bits & RTE_PTYPE_L3_IPV6 != 0
}
#[inline(always)]
pub fn isNotValidEther(self) -> bool
{
self.bits & RTE_PTYPE_L2_ETHER != RTE_PTYPE_L2_ETHER
}
#[inline(always)]
pub fn isEtherVirtualLan(self) -> bool
{
self.bits & RTE_PTYPE_L2_ETHER_VLAN == RTE_PTYPE_L2_ETHER_VLAN
}
#[inline(always)]
pub fn isEtherQinQ(self) -> bool
{
self.bits & RTE_PTYPE_L2_ETHER_QINQ == RTE_PTYPE_L2_ETHER_QINQ
}
}