1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// This file is part of dpdk. It is subject to the license terms in the COPYRIGHT file found in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/dpdk/master/COPYRIGHT. No part of dpdk, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the COPYRIGHT file.
// Copyright © 2016-2017 The developers of dpdk. See the COPYRIGHT file in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/dpdk/master/COPYRIGHT.
// Refer to rte_mbuf.h, lines 228 - 721
bitflags!
{
pub flags PacketTypeMask: u32
{
const Layer2Mask = RTE_PTYPE_L2_MASK,
const Layer3Mask = RTE_PTYPE_L3_MASK,
const Layer4Mask = RTE_PTYPE_L4_MASK,
const TunnelMask = RTE_PTYPE_TUNNEL_MASK,
const InnerLayer2Mask = RTE_PTYPE_INNER_L2_MASK,
const InnerLayer3Mask = RTE_PTYPE_INNER_L3_MASK,
const InnerLayer4Mask = RTE_PTYPE_INNER_L4_MASK,
const TunnelPacketMask = RTE_PTYPE_TUNNEL_MASK | RTE_PTYPE_INNER_L2_MASK | RTE_PTYPE_INNER_L3_MASK | RTE_PTYPE_INNER_L4_MASK,
const All = RTE_PTYPE_ALL_MASK,
const Layers2To4Mask = RTE_PTYPE_L2_MASK | RTE_PTYPE_L3_MASK | RTE_PTYPE_L4_MASK,
}
}
impl Default for PacketTypeMask
{
#[inline(always)]
fn default() -> Self
{
Self::empty()
}
}
impl PacketTypeMask
{
// Duplicated, because rust lacks proper const functions and struggles to reference constants
pub const Layers2To4MaskBits: u32 = RTE_PTYPE_L2_MASK | RTE_PTYPE_L3_MASK | RTE_PTYPE_L4_MASK;
// Equivalent to DPDK's RTE_ETH_IS_TUNNEL_PKT(ptype)
#[inline(always)]
pub fn isTunnelPacket(self) -> bool
{
self.bits & PacketTypeMask::TunnelPacketMask.bits != 0
}
}