DPDK  make-f/home/abuild/rpmbuild/BUILD/dpdk-stable-16.11.1/mk/rte.sdkconfig.mkshowversion
rte_mbuf_ptype.h
Go to the documentation of this file.
1 /*-
2  * BSD LICENSE
3  *
4  * Copyright(c) 2010-2016 Intel Corporation.
5  * Copyright 2014-2016 6WIND S.A.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  * * Neither the name of Intel Corporation nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 
35 #ifndef _RTE_MBUF_PTYPE_H_
36 #define _RTE_MBUF_PTYPE_H_
37 
94 #ifdef __cplusplus
95 extern "C" {
96 #endif
97 
101 #define RTE_PTYPE_UNKNOWN 0x00000000
102 
109 #define RTE_PTYPE_L2_ETHER 0x00000001
110 
116 #define RTE_PTYPE_L2_ETHER_TIMESYNC 0x00000002
117 
123 #define RTE_PTYPE_L2_ETHER_ARP 0x00000003
124 
130 #define RTE_PTYPE_L2_ETHER_LLDP 0x00000004
131 
137 #define RTE_PTYPE_L2_ETHER_NSH 0x00000005
138 
144 #define RTE_PTYPE_L2_ETHER_VLAN 0x00000006
145 
151 #define RTE_PTYPE_L2_ETHER_QINQ 0x00000007
152 
156 #define RTE_PTYPE_L2_MASK 0x0000000f
157 
166 #define RTE_PTYPE_L3_IPV4 0x00000010
167 
176 #define RTE_PTYPE_L3_IPV4_EXT 0x00000030
177 
186 #define RTE_PTYPE_L3_IPV6 0x00000040
187 
196 #define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN 0x00000090
197 
207 #define RTE_PTYPE_L3_IPV6_EXT 0x000000c0
208 
218 #define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN 0x000000e0
219 
223 #define RTE_PTYPE_L3_MASK 0x000000f0
224 
235 #define RTE_PTYPE_L4_TCP 0x00000100
236 
247 #define RTE_PTYPE_L4_UDP 0x00000200
248 
267 #define RTE_PTYPE_L4_FRAG 0x00000300
268 
279 #define RTE_PTYPE_L4_SCTP 0x00000400
280 
291 #define RTE_PTYPE_L4_ICMP 0x00000500
292 
307 #define RTE_PTYPE_L4_NONFRAG 0x00000600
308 
312 #define RTE_PTYPE_L4_MASK 0x00000f00
313 
323 #define RTE_PTYPE_TUNNEL_IP 0x00001000
324 
334 #define RTE_PTYPE_TUNNEL_GRE 0x00002000
335 
347 #define RTE_PTYPE_TUNNEL_VXLAN 0x00003000
348 
361 #define RTE_PTYPE_TUNNEL_NVGRE 0x00004000
362 
374 #define RTE_PTYPE_TUNNEL_GENEVE 0x00005000
375 
381 #define RTE_PTYPE_TUNNEL_GRENAT 0x00006000
382 
385 #define RTE_PTYPE_TUNNEL_MASK 0x0000f000
386 
393 #define RTE_PTYPE_INNER_L2_ETHER 0x00010000
394 
400 #define RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000
401 
407 #define RTE_PTYPE_INNER_L2_ETHER_QINQ 0x00030000
408 
411 #define RTE_PTYPE_INNER_L2_MASK 0x000f0000
412 
420 #define RTE_PTYPE_INNER_L3_IPV4 0x00100000
421 
429 #define RTE_PTYPE_INNER_L3_IPV4_EXT 0x00200000
430 
438 #define RTE_PTYPE_INNER_L3_IPV6 0x00300000
439 
447 #define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000
448 
457 #define RTE_PTYPE_INNER_L3_IPV6_EXT 0x00500000
458 
468 #define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000
469 
472 #define RTE_PTYPE_INNER_L3_MASK 0x00f00000
473 
484 #define RTE_PTYPE_INNER_L4_TCP 0x01000000
485 
496 #define RTE_PTYPE_INNER_L4_UDP 0x02000000
497 
511 #define RTE_PTYPE_INNER_L4_FRAG 0x03000000
512 
523 #define RTE_PTYPE_INNER_L4_SCTP 0x04000000
524 
535 #define RTE_PTYPE_INNER_L4_ICMP 0x05000000
536 
548 #define RTE_PTYPE_INNER_L4_NONFRAG 0x06000000
549 
552 #define RTE_PTYPE_INNER_L4_MASK 0x0f000000
553 
556 #define RTE_PTYPE_ALL_MASK 0x0fffffff
557 
563 #define RTE_ETH_IS_IPV4_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV4)
564 
570 #define RTE_ETH_IS_IPV6_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV6)
571 
572 /* Check if it is a tunneling packet */
573 #define RTE_ETH_IS_TUNNEL_PKT(ptype) ((ptype) & \
574  (RTE_PTYPE_TUNNEL_MASK | \
575  RTE_PTYPE_INNER_L2_MASK | \
576  RTE_PTYPE_INNER_L3_MASK | \
577  RTE_PTYPE_INNER_L4_MASK))
578 
587 const char *rte_get_ptype_l2_name(uint32_t ptype);
588 
597 const char *rte_get_ptype_l3_name(uint32_t ptype);
598 
607 const char *rte_get_ptype_l4_name(uint32_t ptype);
608 
617 const char *rte_get_ptype_tunnel_name(uint32_t ptype);
618 
627 const char *rte_get_ptype_inner_l2_name(uint32_t ptype);
628 
637 const char *rte_get_ptype_inner_l3_name(uint32_t ptype);
638 
647 const char *rte_get_ptype_inner_l4_name(uint32_t ptype);
648 
662 int rte_get_ptype_name(uint32_t ptype, char *buf, size_t buflen);
663 
664 #ifdef __cplusplus
665 }
666 #endif
667 
668 #endif /* _RTE_MBUF_PTYPE_H_ */
const char * rte_get_ptype_inner_l4_name(uint32_t ptype)
const char * rte_get_ptype_tunnel_name(uint32_t ptype)
const char * rte_get_ptype_l2_name(uint32_t ptype)
const char * rte_get_ptype_inner_l2_name(uint32_t ptype)
const char * rte_get_ptype_l4_name(uint32_t ptype)
int rte_get_ptype_name(uint32_t ptype, char *buf, size_t buflen)
const char * rte_get_ptype_l3_name(uint32_t ptype)
const char * rte_get_ptype_inner_l3_name(uint32_t ptype)