table of contents
rte_mbuf_ptype.h(3) | DPDK | rte_mbuf_ptype.h(3) |
NAME¶
rte_mbuf_ptype.h
SYNOPSIS¶
#include <stddef.h>
#include <stdint.h>
Macros¶
#define RTE_PTYPE_UNKNOWN 0x00000000
#define RTE_PTYPE_L2_ETHER 0x00000001
#define RTE_PTYPE_L2_ETHER_TIMESYNC 0x00000002
#define RTE_PTYPE_L2_ETHER_ARP 0x00000003
#define RTE_PTYPE_L2_ETHER_LLDP 0x00000004
#define RTE_PTYPE_L2_ETHER_NSH 0x00000005
#define RTE_PTYPE_L2_ETHER_VLAN 0x00000006
#define RTE_PTYPE_L2_ETHER_QINQ 0x00000007
#define RTE_PTYPE_L2_ETHER_PPPOE 0x00000008
#define RTE_PTYPE_L2_ETHER_FCOE 0x00000009
#define RTE_PTYPE_L2_ETHER_MPLS 0x0000000a
#define RTE_PTYPE_L2_MASK 0x0000000f
#define RTE_PTYPE_L3_IPV4 0x00000010
#define RTE_PTYPE_L3_IPV4_EXT 0x00000030
#define RTE_PTYPE_L3_IPV6 0x00000040
#define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN 0x00000090
#define RTE_PTYPE_L3_IPV6_EXT 0x000000c0
#define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN 0x000000e0
#define RTE_PTYPE_L3_MASK 0x000000f0
#define RTE_PTYPE_L4_TCP 0x00000100
#define RTE_PTYPE_L4_UDP 0x00000200
#define RTE_PTYPE_L4_FRAG 0x00000300
#define RTE_PTYPE_L4_SCTP 0x00000400
#define RTE_PTYPE_L4_ICMP 0x00000500
#define RTE_PTYPE_L4_NONFRAG 0x00000600
#define RTE_PTYPE_L4_IGMP 0x00000700
#define RTE_PTYPE_L4_MASK 0x00000f00
#define RTE_PTYPE_TUNNEL_IP 0x00001000
#define RTE_PTYPE_TUNNEL_GRE 0x00002000
#define RTE_PTYPE_TUNNEL_VXLAN 0x00003000
#define RTE_PTYPE_TUNNEL_NVGRE 0x00004000
#define RTE_PTYPE_TUNNEL_GENEVE 0x00005000
#define RTE_PTYPE_TUNNEL_GRENAT 0x00006000
#define RTE_PTYPE_TUNNEL_GTPC 0x00007000
#define RTE_PTYPE_TUNNEL_GTPU 0x00008000
#define RTE_PTYPE_TUNNEL_ESP 0x00009000
#define RTE_PTYPE_TUNNEL_L2TP 0x0000a000
#define RTE_PTYPE_TUNNEL_VXLAN_GPE 0x0000b000
#define RTE_PTYPE_TUNNEL_MPLS_IN_GRE 0x0000c000
#define RTE_PTYPE_TUNNEL_MPLS_IN_UDP 0x0000d000
#define RTE_PTYPE_TUNNEL_MASK 0x0000f000
#define RTE_PTYPE_INNER_L2_ETHER 0x00010000
#define RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000
#define RTE_PTYPE_INNER_L2_ETHER_QINQ 0x00030000
#define RTE_PTYPE_INNER_L2_MASK 0x000f0000
#define RTE_PTYPE_INNER_L3_IPV4 0x00100000
#define RTE_PTYPE_INNER_L3_IPV4_EXT 0x00200000
#define RTE_PTYPE_INNER_L3_IPV6 0x00300000
#define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000
#define RTE_PTYPE_INNER_L3_IPV6_EXT 0x00500000
#define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000
#define RTE_PTYPE_INNER_L3_MASK 0x00f00000
#define RTE_PTYPE_INNER_L4_TCP 0x01000000
#define RTE_PTYPE_INNER_L4_UDP 0x02000000
#define RTE_PTYPE_INNER_L4_FRAG 0x03000000
#define RTE_PTYPE_INNER_L4_SCTP 0x04000000
#define RTE_PTYPE_INNER_L4_ICMP 0x05000000
#define RTE_PTYPE_INNER_L4_NONFRAG 0x06000000
#define RTE_PTYPE_INNER_L4_MASK 0x0f000000
#define RTE_PTYPE_ALL_MASK 0x0fffffff
#define RTE_ETH_IS_IPV4_HDR(ptype) ((ptype) &
RTE_PTYPE_L3_IPV4)
#define RTE_ETH_IS_IPV6_HDR(ptype) ((ptype) &
RTE_PTYPE_L3_IPV6)
Functions¶
const char * rte_get_ptype_l2_name (uint32_t ptype)
const char * rte_get_ptype_l3_name (uint32_t ptype)
const char * rte_get_ptype_l4_name (uint32_t ptype)
const char * rte_get_ptype_tunnel_name (uint32_t ptype)
const char * rte_get_ptype_inner_l2_name (uint32_t ptype)
const char * rte_get_ptype_inner_l3_name (uint32_t ptype)
const char * rte_get_ptype_inner_l4_name (uint32_t ptype)
int rte_get_ptype_name (uint32_t ptype, char *buf, size_t buflen)
Detailed Description¶
RTE Mbuf Packet Types
This file contains declarations for features related to mbuf packet types. The packet type gives information about the data carried by the mbuf, and is stored in the mbuf in a 32 bits field.
The 32 bits are divided into several fields to mark packet types. Note that each field is indexical.
- Bit 3:0 is for L2 types.
- Bit 7:4 is for L3 or outer L3 (for tunneling case) types.
- Bit 11:8 is for L4 or outer L4 (for tunneling case) types.
- Bit 15:12 is for tunnel types.
- Bit 19:16 is for inner L2 types.
- Bit 23:20 is for inner L3 types.
- Bit 27:24 is for inner L4 types.
- Bit 31:28 is reserved.
To be compatible with Vector PMD, RTE_PTYPE_L3_IPV4, RTE_PTYPE_L3_IPV4_EXT, RTE_PTYPE_L3_IPV6, RTE_PTYPE_L3_IPV6_EXT, RTE_PTYPE_L4_TCP, RTE_PTYPE_L4_UDP and RTE_PTYPE_L4_SCTP should be kept as below in a contiguous 7 bits.
Note that L3 types values are selected for checking IPV4/IPV6 header from performance point of view. Reading annotations of RTE_ETH_IS_IPV4_HDR and RTE_ETH_IS_IPV6_HDR is needed for any future changes of L3 type values.
Note that the packet types of the same packet recognized by different hardware may be different, as different hardware may have different capability of packet type recognition.
examples: <'ether type'=0x0800 | 'version'=4, 'protocol'=0x29 | 'version'=6, 'next header'=0x3A | 'ICMPv6 header'> will be recognized on i40e hardware as packet type combination of, RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_IP | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_ICMP.
<'ether type'=0x86DD | 'version'=6, 'next header'=0x2F | 'GRE header' | 'version'=6, 'next header'=0x11 | 'UDP header'> will be recognized on i40e hardware as packet type combination of, RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_UDP.
Definition in file rte_mbuf_ptype.h.
Macro Definition Documentation¶
#define RTE_PTYPE_UNKNOWN 0x00000000¶
No packet type information.
Definition at line 75 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER 0x00000001¶
Ethernet packet type. It is used for outer packet for tunneling cases.
Packet format: <'ether type'=[0x0800|0x86DD]>
Definition at line 83 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_TIMESYNC 0x00000002¶
Ethernet packet type for time sync.
Packet format: <'ether type'=0x88F7>
Definition at line 90 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_ARP 0x00000003¶
ARP (Address Resolution Protocol) packet type.
Packet format: <'ether type'=0x0806>
Definition at line 97 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_LLDP 0x00000004¶
LLDP (Link Layer Discovery Protocol) packet type.
Packet format: <'ether type'=0x88CC>
Definition at line 104 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_NSH 0x00000005¶
NSH (Network Service Header) packet type.
Packet format: <'ether type'=0x894F>
Definition at line 111 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_VLAN 0x00000006¶
VLAN packet type.
Packet format: <'ether type'=[0x8100]>
Definition at line 118 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_QINQ 0x00000007¶
QinQ packet type.
Packet format: <'ether type'=[0x88A8]>
Definition at line 125 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_PPPOE 0x00000008¶
PPPOE packet type.
Packet format: <'ether type'=[0x8863|0x8864]>
Definition at line 132 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_FCOE 0x00000009¶
FCoE packet type.
Packet format: <'ether type'=[0x8906]>
Definition at line 139 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_ETHER_MPLS 0x0000000a¶
MPLS packet type.
Packet format: <'ether type'=[0x8847|0x8848]>
Definition at line 146 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L2_MASK 0x0000000f¶
Mask of layer 2 packet types. It is used for outer packet for tunneling cases.
Definition at line 151 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV4 0x00000010¶
IP (Internet Protocol) version 4 packet type. It is used for outer packet for tunneling cases, and does not contain any header option.
Packet format: <'ether type'=0x0800 | 'version'=4, 'ihl'=5>
Definition at line 161 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV4_EXT 0x00000030¶
IP (Internet Protocol) version 4 packet type. It is used for outer packet for tunneling cases, and contains header options.
Packet format: <'ether type'=0x0800 | 'version'=4, 'ihl'=[6-15], 'options'>
Definition at line 171 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV6 0x00000040¶
IP (Internet Protocol) version 6 packet type. It is used for outer packet for tunneling cases, and does not contain any extension header.
Packet format: <'ether type'=0x86DD | 'version'=6, 'next header'=0x3B>
Definition at line 181 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN 0x00000090¶
IP (Internet Protocol) version 4 packet type. It is used for outer packet for tunneling cases, and may or maynot contain header options.
Packet format: <'ether type'=0x0800 | 'version'=4, 'ihl'=[5-15], <'options'>>
Definition at line 191 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV6_EXT 0x000000c0¶
IP (Internet Protocol) version 6 packet type. It is used for outer packet for tunneling cases, and contains extension headers.
Packet format: <'ether type'=0x86DD | 'version'=6, 'next header'=[0x0|0x2B|0x2C|0x32|0x33|0x3C|0x87], 'extension headers'>
Definition at line 202 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN 0x000000e0¶
IP (Internet Protocol) version 6 packet type. It is used for outer packet for tunneling cases, and may or maynot contain extension headers.
Packet format: <'ether type'=0x86DD | 'version'=6, 'next header'=[0x3B|0x0|0x2B|0x2C|0x32|0x33|0x3C|0x87], <'extension headers'>>
Definition at line 213 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L3_MASK 0x000000f0¶
Mask of layer 3 packet types. It is used for outer packet for tunneling cases.
Definition at line 218 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_TCP 0x00000100¶
TCP (Transmission Control Protocol) packet type. It is used for outer packet for tunneling cases.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=6, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=6>
Definition at line 230 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_UDP 0x00000200¶
UDP (User Datagram Protocol) packet type. It is used for outer packet for tunneling cases.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17>
Definition at line 242 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_FRAG 0x00000300¶
Fragmented IP (Internet Protocol) packet type. It is used for outer packet for tunneling cases.
It refers to those packets of any IP types, which can be recognized as fragmented. A fragmented packet cannot be recognized as any other L4 types (RTE_PTYPE_L4_TCP, RTE_PTYPE_L4_UDP, RTE_PTYPE_L4_SCTP, RTE_PTYPE_L4_ICMP, RTE_PTYPE_L4_NONFRAG).
Packet format: <'ether type'=0x0800 | 'version'=4, 'MF'=1> or, <'ether type'=0x0800 | 'version'=4, 'frag_offset'!=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=44>
Definition at line 262 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_SCTP 0x00000400¶
SCTP (Stream Control Transmission Protocol) packet type. It is used for outer packet for tunneling cases.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=132, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=132>
Definition at line 274 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_ICMP 0x00000500¶
ICMP (Internet Control Message Protocol) packet type. It is used for outer packet for tunneling cases.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=1, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=1>
Definition at line 286 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_NONFRAG 0x00000600¶
Non-fragmented IP (Internet Protocol) packet type. It is used for outer packet for tunneling cases.
It refers to those packets of any IP types, while cannot be recognized as any of above L4 types (RTE_PTYPE_L4_TCP, RTE_PTYPE_L4_UDP, RTE_PTYPE_L4_FRAG, RTE_PTYPE_L4_SCTP, RTE_PTYPE_L4_ICMP).
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'!=[6|17|132|1], 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'!=[6|17|44|132|1]>
Definition at line 302 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_IGMP 0x00000700¶
IGMP (Internet Group Management Protocol) packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=2, 'MF'=0, 'frag_offset'=0>
Definition at line 310 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_L4_MASK 0x00000f00¶
Mask of layer 4 packet types. It is used for outer packet for tunneling cases.
Definition at line 315 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_IP 0x00001000¶
IP (Internet Protocol) in IP (Internet Protocol) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=[4|41]> or, <'ether type'=0x86DD | 'version'=6, 'next header'=[4|41]>
Definition at line 326 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_GRE 0x00002000¶
GRE (Generic Routing Encapsulation) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=47> or, <'ether type'=0x86DD | 'version'=6, 'next header'=47>
Definition at line 337 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_VXLAN 0x00003000¶
VXLAN (Virtual eXtensible Local Area Network) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=4789> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=4789>
Definition at line 350 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_NVGRE 0x00004000¶
NVGRE (Network Virtualization using Generic Routing Encapsulation) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=47 | 'protocol type'=0x6558> or, <'ether type'=0x86DD | 'version'=6, 'next header'=47 | 'protocol type'=0x6558'>
Definition at line 364 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_GENEVE 0x00005000¶
GENEVE (Generic Network Virtualization Encapsulation) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=6081> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=6081>
Definition at line 377 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_GRENAT 0x00006000¶
Tunneling packet type of Teredo, VXLAN (Virtual eXtensible Local Area Network) or GRE (Generic Routing Encapsulation) could be recognized as this packet type, if they can not be recognized independently as of hardware capability.
Definition at line 384 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_GTPC 0x00007000¶
GTP-C (GPRS Tunnelling Protocol) control tunneling packet type. Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=2123> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=2123> or, <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'source port'=2123> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'source port'=2123>
Definition at line 404 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_GTPU 0x00008000¶
GTP-U (GPRS Tunnelling Protocol) user data tunneling packet type. Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=2152> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=2152>
Definition at line 416 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_ESP 0x00009000¶
ESP (IP Encapsulating Security Payload) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=50> or, <'ether type'=0x86DD | 'version'=6, 'next header'=50>
Definition at line 427 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_L2TP 0x0000a000¶
L2TP (Layer 2 Tunneling Protocol) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17> | 'destination port'=1701> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=1701> or, <'ether type'=0x0800 | 'version'=4, 'protocol'=115> or, <'ether type'=0x86DD | 'version'=6, 'protocol'=115>
Definition at line 446 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_VXLAN_GPE 0x0000b000¶
VXLAN-GPE (VXLAN Generic Protocol Extension) tunneling packet type.
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=4790> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=4790>
Definition at line 459 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_MPLS_IN_GRE 0x0000c000¶
MPLS-in-GRE tunneling packet type (RFC 4023).
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=47 | 'protocol'=0x8847> or, <'ether type'=0x0800 | 'version'=4, 'protocol'=47 | 'protocol'=0x8848> or, <'ether type'=0x86DD | 'version'=6, 'protocol'=47 | 'protocol'=0x8847> or, <'ether type'=0x86DD | 'version'=6, 'next header'=47 | 'protocol'=0x8848>
Definition at line 480 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_MPLS_IN_UDP 0x0000d000¶
MPLS-in-UDP tunneling packet type (RFC 7510).
Packet format: <'ether type'=0x0800 | 'version'=4, 'protocol'=17 | 'destination port'=6635> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17 | 'destination port'=6635>
Definition at line 493 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_TUNNEL_MASK 0x0000f000¶
Mask of tunneling packet types.
Definition at line 497 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L2_ETHER 0x00010000¶
Ethernet packet type. It is used for inner packet type only.
Packet format (inner only): <'ether type'=[0x800|0x86DD]>
Definition at line 505 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000¶
Ethernet packet type with VLAN (Virtual Local Area Network) tag.
Packet format (inner only): <'ether type'=[0x800|0x86DD], vlan=[1-4095]>
Definition at line 512 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L2_ETHER_QINQ 0x00030000¶
QinQ packet type.
Packet format: <'ether type'=[0x88A8]>
Definition at line 519 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L2_MASK 0x000f0000¶
Mask of inner layer 2 packet types.
Definition at line 523 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV4 0x00100000¶
IP (Internet Protocol) version 4 packet type. It is used for inner packet only, and does not contain any header option.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'ihl'=5>
Definition at line 532 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV4_EXT 0x00200000¶
IP (Internet Protocol) version 4 packet type. It is used for inner packet only, and contains header options.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'ihl'=[6-15], 'options'>
Definition at line 541 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV6 0x00300000¶
IP (Internet Protocol) version 6 packet type. It is used for inner packet only, and does not contain any extension header.
Packet format (inner only): <'ether type'=0x86DD | 'version'=6, 'next header'=0x3B>
Definition at line 550 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000¶
IP (Internet Protocol) version 4 packet type. It is used for inner packet only, and may or maynot contain header options.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'ihl'=[5-15], <'options'>>
Definition at line 559 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV6_EXT 0x00500000¶
IP (Internet Protocol) version 6 packet type. It is used for inner packet only, and contains extension headers.
Packet format (inner only): <'ether type'=0x86DD | 'version'=6, 'next header'=[0x0|0x2B|0x2C|0x32|0x33|0x3C|0x87], 'extension headers'>
Definition at line 569 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000¶
IP (Internet Protocol) version 6 packet type. It is used for inner packet only, and may or maynot contain extension headers.
Packet format (inner only): <'ether type'=0x86DD | 'version'=6, 'next header'=[0x3B|0x0|0x2B|0x2C|0x32|0x33|0x3C|0x87], <'extension headers'>>
Definition at line 580 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L3_MASK 0x00f00000¶
Mask of inner layer 3 packet types.
Definition at line 584 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_TCP 0x01000000¶
TCP (Transmission Control Protocol) packet type. It is used for inner packet only.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'protocol'=6, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=6>
Definition at line 596 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_UDP 0x02000000¶
UDP (User Datagram Protocol) packet type. It is used for inner packet only.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'protocol'=17, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=17>
Definition at line 608 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_FRAG 0x03000000¶
Fragmented IP (Internet Protocol) packet type. It is used for inner packet only, and may or maynot have layer 4 packet.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'MF'=1> or, <'ether type'=0x0800 | 'version'=4, 'frag_offset'!=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=44>
Definition at line 623 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_SCTP 0x04000000¶
SCTP (Stream Control Transmission Protocol) packet type. It is used for inner packet only.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'protocol'=132, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=132>
Definition at line 635 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_ICMP 0x05000000¶
ICMP (Internet Control Message Protocol) packet type. It is used for inner packet only.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'protocol'=1, 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'=1>
Definition at line 647 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_NONFRAG 0x06000000¶
Non-fragmented IP (Internet Protocol) packet type. It is used for inner packet only, and may or maynot have other unknown layer 4 packet types.
Packet format (inner only): <'ether type'=0x0800 | 'version'=4, 'protocol'!=[6|17|132|1], 'MF'=0, 'frag_offset'=0> or, <'ether type'=0x86DD | 'version'=6, 'next header'!=[6|17|44|132|1]>
Definition at line 660 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_INNER_L4_MASK 0x0f000000¶
Mask of inner layer 4 packet types.
Definition at line 664 of file rte_mbuf_ptype.h.
#define RTE_PTYPE_ALL_MASK 0x0fffffff¶
All valid layer masks.
Definition at line 668 of file rte_mbuf_ptype.h.
#define RTE_ETH_IS_IPV4_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV4)¶
Check if the (outer) L3 header is IPv4. To avoid comparing IPv4 types one by one, bit 4 is selected to be used for IPv4 only. Then checking bit 4 can determine if it is an IPV4 packet.
Definition at line 675 of file rte_mbuf_ptype.h.
#define RTE_ETH_IS_IPV6_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV6)¶
Check if the (outer) L3 header is IPv6. To avoid comparing IPv6 types one by one, bit 6 is selected to be used for IPv6 only. Then checking bit 6 can determine if it is an IPV6 packet.
Definition at line 682 of file rte_mbuf_ptype.h.
Function Documentation¶
const char* rte_get_ptype_l2_name (uint32_t ptype)¶
Get the name of the l2 packet type
Parameters
Returns
const char* rte_get_ptype_l3_name (uint32_t ptype)¶
Get the name of the l3 packet type
Parameters
Returns
const char* rte_get_ptype_l4_name (uint32_t ptype)¶
Get the name of the l4 packet type
Parameters
Returns
const char* rte_get_ptype_tunnel_name (uint32_t ptype)¶
Get the name of the tunnel packet type
Parameters
Returns
const char* rte_get_ptype_inner_l2_name (uint32_t ptype)¶
Get the name of the inner_l2 packet type
Parameters
Returns
const char* rte_get_ptype_inner_l3_name (uint32_t ptype)¶
Get the name of the inner_l3 packet type
Parameters
Returns
const char* rte_get_ptype_inner_l4_name (uint32_t ptype)¶
Get the name of the inner_l4 packet type
Parameters
Returns
int rte_get_ptype_name (uint32_t ptype, char * buf, size_t buflen)¶
Write the packet type name into the buffer
Parameters
buf The buffer where the string is written.
buflen The length of the buffer.
Returns
- 0 on success
- (-1) if the buffer is too small
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Fri Dec 15 2023 | Version 23.11.0 |