DPDK  19.08.0-rc0
rte_flow.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2016 6WIND S.A.
3  * Copyright 2016 Mellanox Technologies, Ltd
4  */
5 
6 #ifndef RTE_FLOW_H_
7 #define RTE_FLOW_H_
8 
17 #include <stddef.h>
18 #include <stdint.h>
19 
20 #include <rte_arp.h>
21 #include <rte_common.h>
22 #include <rte_ether.h>
23 #include <rte_icmp.h>
24 #include <rte_ip.h>
25 #include <rte_sctp.h>
26 #include <rte_tcp.h>
27 #include <rte_udp.h>
28 #include <rte_byteorder.h>
29 #include <rte_esp.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
72 struct rte_flow_attr {
73  uint32_t group;
74  uint32_t priority;
75  uint32_t ingress:1;
76  uint32_t egress:1;
95  uint32_t transfer:1;
96  uint32_t reserved:29;
97 };
98 
125 
135 
145 
153 
163 
173 
183 
193 
200 
207 
214 
221 
228 
235 
242 
249 
256 
263 
270 
277 
284 
291 
303 
312 
321 
330 
337 
344 
351 
358 
365 
372 
379 
386 
393 
401 
409 
416 
424 };
425 
438  uint32_t num;
439 };
440 
442 #ifndef __cplusplus
444  .num = 0x00000000,
445 };
446 #endif
447 
467  uint32_t id;
468 };
469 
471 #ifndef __cplusplus
473  .id = 0x00000000,
474 };
475 #endif
476 
498  uint32_t index;
499 };
500 
502 #ifndef __cplusplus
504  .index = 0x00000000,
505 };
506 #endif
507 
524  uint32_t id;
525 };
526 
528 #ifndef __cplusplus
530  .id = 0xffffffff,
531 };
532 #endif
533 
553  uint32_t relative:1;
554  uint32_t search:1;
555  uint32_t reserved:30;
556  int32_t offset;
557  uint16_t limit;
558  uint16_t length;
559  const uint8_t *pattern;
560 };
561 
563 #ifndef __cplusplus
565  .relative = 1,
566  .search = 1,
567  .reserved = 0x3fffffff,
568  .offset = 0xffffffff,
569  .limit = 0xffff,
570  .length = 0xffff,
571  .pattern = NULL,
572 };
573 #endif
574 
590 };
591 
593 #ifndef __cplusplus
595  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
596  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
597  .type = RTE_BE16(0x0000),
598 };
599 #endif
600 
613 };
614 
616 #ifndef __cplusplus
618  .tci = RTE_BE16(0x0fff),
619  .inner_type = RTE_BE16(0x0000),
620 };
621 #endif
622 
631  struct rte_ipv4_hdr hdr;
632 };
633 
635 #ifndef __cplusplus
637  .hdr = {
638  .src_addr = RTE_BE32(0xffffffff),
639  .dst_addr = RTE_BE32(0xffffffff),
640  },
641 };
642 #endif
643 
653  struct rte_ipv6_hdr hdr;
654 };
655 
657 #ifndef __cplusplus
659  .hdr = {
660  .src_addr =
661  "\xff\xff\xff\xff\xff\xff\xff\xff"
662  "\xff\xff\xff\xff\xff\xff\xff\xff",
663  .dst_addr =
664  "\xff\xff\xff\xff\xff\xff\xff\xff"
665  "\xff\xff\xff\xff\xff\xff\xff\xff",
666  },
667 };
668 #endif
669 
676  struct rte_icmp_hdr hdr;
677 };
678 
680 #ifndef __cplusplus
682  .hdr = {
683  .icmp_type = 0xff,
684  .icmp_code = 0xff,
685  },
686 };
687 #endif
688 
695  struct rte_udp_hdr hdr;
696 };
697 
699 #ifndef __cplusplus
701  .hdr = {
702  .src_port = RTE_BE16(0xffff),
703  .dst_port = RTE_BE16(0xffff),
704  },
705 };
706 #endif
707 
714  struct rte_tcp_hdr hdr;
715 };
716 
718 #ifndef __cplusplus
720  .hdr = {
721  .src_port = RTE_BE16(0xffff),
722  .dst_port = RTE_BE16(0xffff),
723  },
724 };
725 #endif
726 
733  struct rte_sctp_hdr hdr;
734 };
735 
737 #ifndef __cplusplus
739  .hdr = {
740  .src_port = RTE_BE16(0xffff),
741  .dst_port = RTE_BE16(0xffff),
742  },
743 };
744 #endif
745 
752  uint8_t flags;
753  uint8_t rsvd0[3];
754  uint8_t vni[3];
755  uint8_t rsvd1;
756 };
757 
759 #ifndef __cplusplus
761  .vni = "\xff\xff\xff",
762 };
763 #endif
764 
781  uint8_t in_ecid_e;
782  uint8_t ecid_e;
784 };
785 
787 #ifndef __cplusplus
789  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
790 };
791 #endif
792 
807  uint8_t tni[3];
808  uint8_t flow_id;
809 };
810 
812 #ifndef __cplusplus
814  .tni = "\xff\xff\xff",
815 };
816 #endif
817 
827  uint8_t label_tc_s[3];
828  uint8_t ttl;
829 };
830 
832 #ifndef __cplusplus
834  .label_tc_s = "\xff\xff\xf0",
835 };
836 #endif
837 
850 };
851 
853 #ifndef __cplusplus
855  .protocol = RTE_BE16(0xffff),
856 };
857 #endif
858 
877  uint32_t thresh;
878 };
879 
881 #ifndef __cplusplus
883  .thresh = 0xffffffff,
884 };
885 #endif
886 
899  uint8_t v_pt_rsv_flags;
900  uint8_t msg_type;
903 };
904 
906 #ifndef __cplusplus
908  .teid = RTE_BE32(0xffffffff),
909 };
910 #endif
911 
918  struct rte_esp_hdr hdr;
919 };
920 
922 #ifndef __cplusplus
924  .hdr = {
925  .spi = 0xffffffff,
926  },
927 };
928 #endif
929 
942  uint8_t vni[3];
943  uint8_t rsvd1;
944 };
945 
947 #ifndef __cplusplus
949  .vni = "\xff\xff\xff",
950 };
951 #endif
952 
959  uint8_t flags;
960  uint8_t rsvd0[2];
961  uint8_t protocol;
962  uint8_t vni[3];
963  uint8_t rsvd1;
964 };
965 
967 #ifndef __cplusplus
969  .vni = "\xff\xff\xff",
970 };
971 #endif
972 
981  uint8_t hln;
982  uint8_t pln;
988 };
989 
991 #ifndef __cplusplus
992 static const struct rte_flow_item_arp_eth_ipv4
994  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
995  .spa = RTE_BE32(0xffffffff),
996  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
997  .tpa = RTE_BE32(0xffffffff),
998 };
999 #endif
1000 
1012  uint8_t next_hdr;
1013 };
1014 
1016 #ifndef __cplusplus
1017 static const
1019  .next_hdr = 0xff,
1020 };
1021 #endif
1022 
1029  uint8_t type;
1030  uint8_t code;
1031  uint16_t checksum;
1032 };
1033 
1035 #ifndef __cplusplus
1037  .type = 0xff,
1038  .code = 0xff,
1039 };
1040 #endif
1041 
1048  uint8_t type;
1049  uint8_t code;
1052  uint8_t target_addr[16];
1053 };
1054 
1056 #ifndef __cplusplus
1057 static const
1059  .target_addr =
1060  "\xff\xff\xff\xff\xff\xff\xff\xff"
1061  "\xff\xff\xff\xff\xff\xff\xff\xff",
1062 };
1063 #endif
1064 
1071  uint8_t type;
1072  uint8_t code;
1079  uint8_t target_addr[16];
1080 };
1081 
1083 #ifndef __cplusplus
1084 static const
1086  .target_addr =
1087  "\xff\xff\xff\xff\xff\xff\xff\xff"
1088  "\xff\xff\xff\xff\xff\xff\xff\xff",
1089 };
1090 #endif
1091 
1104  uint8_t type;
1105  uint8_t length;
1106 };
1107 
1109 #ifndef __cplusplus
1110 static const struct rte_flow_item_icmp6_nd_opt
1112  .type = 0xff,
1113 };
1114 #endif
1115 
1128  uint8_t type;
1129  uint8_t length;
1131 };
1132 
1134 #ifndef __cplusplus
1135 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1137  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1138 };
1139 #endif
1140 
1153  uint8_t type;
1154  uint8_t length;
1156 };
1157 
1159 #ifndef __cplusplus
1160 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1162  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1163 };
1164 #endif
1165 
1172  rte_be32_t data;
1173 };
1174 
1176 #ifndef __cplusplus
1178  .data = RTE_BE32(UINT32_MAX),
1179 };
1180 #endif
1181 
1201  uint32_t id;
1202 };
1203 
1239  const void *spec;
1240  const void *last;
1241  const void *mask;
1242 };
1243 
1277 
1285 
1293 
1302 
1310 
1318 
1325 
1334 
1344 
1353 
1361 
1369 
1377 
1384 
1392 
1400 
1408 
1416 
1424 
1432 
1441 
1450 
1458 
1466 
1474 
1482 
1490 
1498 
1506 
1515 
1523 
1532 
1539 
1546 
1556 
1566 
1576 
1586 
1597 
1608 
1619 
1626 
1633 
1643 
1653 };
1654 
1666  uint32_t id;
1667 };
1668 
1682  uint32_t group;
1683 };
1684 
1691  uint16_t index;
1692 };
1693 
1694 
1721  uint32_t shared:1;
1722  uint32_t reserved:31;
1723  uint32_t id;
1724 };
1725 
1732  uint32_t reset:1;
1733  uint32_t hits_set:1;
1734  uint32_t bytes_set:1;
1735  uint32_t reserved:29;
1736  uint64_t hits;
1737  uint64_t bytes;
1738 };
1739 
1744  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
1747  RTE_ETH_HASH_FUNCTION_MAX,
1748 };
1749 
1793  uint32_t level;
1794  uint64_t types;
1795  uint32_t key_len;
1796  uint32_t queue_num;
1797  const uint8_t *key;
1798  const uint16_t *queue;
1799 };
1800 
1814  uint32_t original:1;
1815  uint32_t reserved:31;
1816  uint32_t id;
1817 };
1818 
1828  uint32_t original:1;
1829  uint32_t reserved:31;
1830  uint32_t index;
1831 };
1832 
1841  uint32_t original:1;
1842  uint32_t reserved:31;
1843  uint32_t id;
1844 };
1845 
1855  uint32_t mtr_id;
1856 };
1857 
1885 };
1886 
1894  uint8_t mpls_ttl;
1895 };
1896 
1904  uint8_t nw_ttl;
1905 };
1906 
1915 };
1916 
1925 };
1926 
1934  uint8_t vlan_pcp;
1935 };
1936 
1945 };
1946 
1955 };
1956 
1990 };
1991 
2024 };
2025 
2046  uint8_t *data;
2047  uint8_t *preserve;
2048  size_t size;
2049 };
2050 
2067  uint8_t *data;
2068  size_t size;
2069 };
2070 
2083  rte_be32_t ipv4_addr;
2084 };
2085 
2098  uint8_t ipv6_addr[16];
2099 };
2100 
2113  rte_be16_t port;
2114 };
2115 
2122  uint8_t ttl_value;
2123 };
2124 
2131  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2132 };
2133 
2134 /*
2135  * Definition of a single action.
2136  *
2137  * A list of actions is terminated by a END action.
2138  *
2139  * For simple actions without a configuration structure, conf remains NULL.
2140  */
2141 struct rte_flow_action {
2142  enum rte_flow_action_type type;
2143  const void *conf;
2144 };
2145 
2152 struct rte_flow;
2153 
2178 };
2179 
2193  const void *cause;
2194  const char *message;
2195 };
2196 
2207  union {
2208  const struct rte_flow_attr *attr_ro;
2210  };
2211  union {
2212  const struct rte_flow_item *pattern_ro;
2214  };
2215  union {
2216  const struct rte_flow_action *actions_ro;
2217  struct rte_flow_action *actions;
2218  };
2219 };
2220 
2233 
2245 
2257 
2269 
2282 
2295 
2308 
2322 
2336 
2350 
2364 };
2365 
2418 int
2419 rte_flow_validate(uint16_t port_id,
2420  const struct rte_flow_attr *attr,
2421  const struct rte_flow_item pattern[],
2422  const struct rte_flow_action actions[],
2423  struct rte_flow_error *error);
2424 
2445 struct rte_flow *
2446 rte_flow_create(uint16_t port_id,
2447  const struct rte_flow_attr *attr,
2448  const struct rte_flow_item pattern[],
2449  const struct rte_flow_action actions[],
2450  struct rte_flow_error *error);
2451 
2472 int
2473 rte_flow_destroy(uint16_t port_id,
2474  struct rte_flow *flow,
2475  struct rte_flow_error *error);
2476 
2493 int
2494 rte_flow_flush(uint16_t port_id,
2495  struct rte_flow_error *error);
2496 
2521 int
2522 rte_flow_query(uint16_t port_id,
2523  struct rte_flow *flow,
2524  const struct rte_flow_action *action,
2525  void *data,
2526  struct rte_flow_error *error);
2527 
2569 int
2570 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
2571 
2589 int
2590 rte_flow_error_set(struct rte_flow_error *error,
2591  int code,
2592  enum rte_flow_error_type type,
2593  const void *cause,
2594  const char *message);
2595 
2601  size_t size;
2604  struct rte_flow_action *actions;
2605  uint8_t data[];
2606 };
2607 
2634 __rte_deprecated
2635 size_t
2636 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
2637  const struct rte_flow_attr *attr,
2638  const struct rte_flow_item *items,
2639  const struct rte_flow_action *actions);
2640 
2681 __rte_experimental
2682 int
2684  void *dst,
2685  size_t size,
2686  const void *src,
2687  struct rte_flow_error *error);
2688 
2689 #ifdef __cplusplus
2690 }
2691 #endif
2692 
2693 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:96
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1136
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:848
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:940
int rte_flow_validate(uint16_t port_id, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error)
struct rte_flow_action * actions
Definition: rte_flow.h:2217
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1085
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:658
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:778
rte_be16_t protocol
Definition: rte_flow.h:941
uint32_t num
Definition: rte_flow.h:438
struct rte_flow_attr * attr
Definition: rte_flow.h:2209
uint32_t rte_be32_t
uint32_t original
Definition: rte_flow.h:1814
int rte_flow_query(uint16_t port_id, struct rte_flow *flow, const struct rte_flow_action *action, void *data, struct rte_flow_error *error)
uint32_t group
Definition: rte_flow.h:73
struct rte_flow_item * definition
Definition: rte_flow.h:1989
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:854
struct rte_flow_attr attr
Definition: rte_flow.h:2602
rte_be16_t msg_len
Definition: rte_flow.h:901
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:907
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:681
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:948
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2208
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:738
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:443
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1177
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:923
struct rte_icmp_hdr hdr
Definition: rte_flow.h:676
__rte_deprecated size_t rte_flow_copy(struct rte_flow_desc *fd, size_t len, const struct rte_flow_attr *attr, const struct rte_flow_item *items, const struct rte_flow_action *actions)
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:899
struct rte_ether_addr tla
Definition: rte_flow.h:1155
rte_be16_t protocol
Definition: rte_flow.h:806
uint32_t reserved
Definition: rte_flow.h:555
rte_be32_t spi
Definition: rte_esp.h:24
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1036
struct rte_flow_action * actions
Definition: rte_flow.h:2604
uint8_t data[]
Definition: rte_flow.h:2605
struct rte_ether_addr tha
Definition: rte_flow.h:986
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:631
uint16_t src_port
Definition: rte_sctp.h:27
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1111
static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:503
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:760
uint8_t src_addr[16]
Definition: rte_ip.h:352
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:529
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:813
const void * mask
Definition: rte_flow.h:1241
struct rte_flow_item * pattern
Definition: rte_flow.h:2213
enum rte_eth_hash_function func
Definition: rte_flow.h:1767
rte_be16_t type
Definition: rte_flow.h:589
enum rte_flow_error_type type
Definition: rte_flow.h:2192
const void * cause
Definition: rte_flow.h:2193
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:700
struct rte_esp_hdr hdr
Definition: rte_flow.h:918
rte_flow_error_type
Definition: rte_flow.h:2160
rte_flow_conv_op
Definition: rte_flow.h:2226
uint32_t id
Definition: rte_flow.h:467
const uint8_t * pattern
Definition: rte_flow.h:559
uint32_t search
Definition: rte_flow.h:554
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:780
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:564
uint16_t limit
Definition: rte_flow.h:557
uint8_t vni[3]
Definition: rte_flow.h:942
int rte_flow_flush(uint16_t port_id, struct rte_flow_error *error)
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:833
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1058
int rte_flow_error_set(struct rte_flow_error *error, int code, enum rte_flow_error_type type, const void *cause, const char *message)
const char * message
Definition: rte_flow.h:2194
rte_eth_hash_function
Definition: rte_flow.h:1743
uint16_t length
Definition: rte_flow.h:558
const void * last
Definition: rte_flow.h:1240
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1161
rte_be32_t teid
Definition: rte_flow.h:902
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
uint32_t ingress
Definition: rte_flow.h:75
enum rte_flow_item_type type
Definition: rte_flow.h:1238
rte_be16_t tci
Definition: rte_flow.h:611
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:636
size_t size
Definition: rte_flow.h:2601
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:805
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2216
struct rte_flow_item * items
Definition: rte_flow.h:2603
rte_flow_action_type
Definition: rte_flow.h:1269
struct rte_ether_addr sla
Definition: rte_flow.h:1130
struct rte_flow * rte_flow_create(uint16_t port_id, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error)
struct rte_ether_addr dst
Definition: rte_flow.h:587
const void * spec
Definition: rte_flow.h:1239
uint8_t label_tc_s[3]
Definition: rte_flow.h:827
uint16_t src_port
Definition: rte_udp.h:27
#define RTE_STD_C11
Definition: rte_common.h:40
const uint8_t * key
Definition: rte_flow.h:1797
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:993
uint16_t src_port
Definition: rte_tcp.h:27
struct rte_ether_addr sha
Definition: rte_flow.h:984
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:594
uint16_t rte_be16_t
__rte_experimental int rte_flow_conv(enum rte_flow_conv_op op, void *dst, size_t size, const void *src, struct rte_flow_error *error)
uint32_t reserved
Definition: rte_flow.h:1815
uint32_t priority
Definition: rte_flow.h:74
struct rte_ether_addr src
Definition: rte_flow.h:588
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1018
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:472
uint32_t src_addr
Definition: rte_ip.h:40
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:653
rte_be16_t protocol
Definition: rte_flow.h:849
uint32_t queue_num
Definition: rte_flow.h:1796
uint8_t tni[3]
Definition: rte_flow.h:807
struct rte_tcp_hdr hdr
Definition: rte_flow.h:714
uint32_t transfer
Definition: rte_flow.h:95
struct rte_flow_item * definition
Definition: rte_flow.h:2023
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:617
uint8_t msg_type
Definition: rte_flow.h:900
uint32_t egress
Definition: rte_flow.h:76
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:788
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:719
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:882
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:612
uint8_t rsvd0[3]
Definition: rte_flow.h:753
struct rte_udp_hdr hdr
Definition: rte_flow.h:695
const uint16_t * queue
Definition: rte_flow.h:1798
rte_flow_item_type
Definition: rte_flow.h:115
uint32_t relative
Definition: rte_flow.h:553
uint8_t vni[3]
Definition: rte_flow.h:754
int32_t offset
Definition: rte_flow.h:556
rte_be16_t inner_type
Definition: rte_flow.h:783
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2212
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:968
struct rte_sctp_hdr hdr
Definition: rte_flow.h:733