Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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_ESP	  0x00000800
       #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_ESP	0x08000000
       #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,	    RTE_PTYPE_L4_IGMP,
       RTE_PTYPE_L4_ESP).

       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  (for	IPv6),	RTE_PTYPE_L4_SCTP,  RTE_PTYPE_L4_ICMP,
       RTE_PTYPE_L4_IGMP (for IPv4), RTE_PTYPE_L4_ESP).

       Packet	  format:     <'ether	  type'=0x0800	   |	  'version'=4,
       'protocol'!=[1|2|6|17|50|132],  'MF'=0,	'frag_offset'=0>  or,  <'ether
       type'=0x86DD | 'version'=6, 'next header'!=[1|6|17|44|50|132]>

       Definition at line 303 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 311 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_L4_ESP   0x00000800
       ESP (IP Encapsulating Security Payload) transport packet	type.

       Packet  format:	<'ether	 type'=0x0800  |  'version'=4,	'protocol'=50,
       'MF'=0, 'frag_offset'=0>	or, <'ether type'=0x86DD | 'version'=6,	 'next
       header'=50>

       Definition at line 322 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 327 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 338 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 349 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 362 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 376 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 389 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 396 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 416 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 428 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 439 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 458 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 471 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 492 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 505 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_TUNNEL_MASK   0x0000f000
       Mask of tunneling packet	types.

       Definition at line 509 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 517 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 524 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 531 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_INNER_L2_MASK   0x000f0000
       Mask of inner layer 2 packet types.

       Definition at line 535 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 544 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 553 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 562 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 571 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 581 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 592 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_INNER_L3_MASK   0x00f00000
       Mask of inner layer 3 packet types.

       Definition at line 596 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 608 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 620 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 635 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 647 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 659 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'!=[1|6|17|50|132],   'MF'=0,	'frag_offset'=0>  or,  <'ether
       type'=0x86DD | 'version'=6, 'next header'!=[1|6|17|44|50|132]>

       Definition at line 672 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_INNER_L4_ESP   0x08000000
       ESP (IP Encapsulating Security Payload) transport packet	 type.	It  is
       used for	inner packet only.

       Packet	format	(inner	only):	<'ether	 type'=0x0800  |  'version'=4,
       'protocol'=50, 'MF'=0,  'frag_offset'=0>	 or,  <'ether  type'=0x86DD  |
       'version'=6, 'next header'=50>

       Definition at line 684 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_INNER_L4_MASK   0x0f000000
       Mask of inner layer 4 packet types.

       Definition at line 688 of file rte_mbuf_ptype.h.

   #define RTE_PTYPE_ALL_MASK	0x0fffffff
       All valid layer masks.

       Definition at line 692 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 699 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 706 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
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_l3_name (uint32_t	ptype)
       Get the name of the l3 packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_l4_name (uint32_t	ptype)
       Get the name of the l4 packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_tunnel_name (uint32_t ptype)
       Get the name of the tunnel packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_inner_l2_name (uint32_t ptype)
       Get the name of the inner_l2 packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_inner_l3_name (uint32_t ptype)
       Get the name of the inner_l3 packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   const char *	rte_get_ptype_inner_l4_name (uint32_t ptype)
       Get the name of the inner_l4 packet type

       Parameters
	   ptype The packet type value.

       Returns
	   A non-null string describing	the packet type.

   int rte_get_ptype_name (uint32_t ptype, char	* buf, size_t buflen)
       Write the packet	type name into the buffer

       Parameters
	   ptype The packet type value.
	   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.

Version	25.11.0			Thu Jun	11 2026		   rte_mbuf_ptype.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_ETH_IS_IPV6_HDR&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help