DPDK  19.08.0
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 
437 };
438 
451  uint32_t num;
452 };
453 
455 #ifndef __cplusplus
456 static const struct rte_flow_item_any rte_flow_item_any_mask = {
457  .num = 0x00000000,
458 };
459 #endif
460 
480  uint32_t id;
481 };
482 
484 #ifndef __cplusplus
485 static const struct rte_flow_item_vf rte_flow_item_vf_mask = {
486  .id = 0x00000000,
487 };
488 #endif
489 
511  uint32_t index;
512 };
513 
515 #ifndef __cplusplus
517  .index = 0x00000000,
518 };
519 #endif
520 
537  uint32_t id;
538 };
539 
541 #ifndef __cplusplus
543  .id = 0xffffffff,
544 };
545 #endif
546 
566  uint32_t relative:1;
567  uint32_t search:1;
568  uint32_t reserved:30;
569  int32_t offset;
570  uint16_t limit;
571  uint16_t length;
572  const uint8_t *pattern;
573 };
574 
576 #ifndef __cplusplus
577 static const struct rte_flow_item_raw rte_flow_item_raw_mask = {
578  .relative = 1,
579  .search = 1,
580  .reserved = 0x3fffffff,
581  .offset = 0xffffffff,
582  .limit = 0xffff,
583  .length = 0xffff,
584  .pattern = NULL,
585 };
586 #endif
587 
600  struct rte_ether_addr dst;
601  struct rte_ether_addr src;
603 };
604 
606 #ifndef __cplusplus
607 static const struct rte_flow_item_eth rte_flow_item_eth_mask = {
608  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
609  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
610  .type = RTE_BE16(0x0000),
611 };
612 #endif
613 
626 };
627 
629 #ifndef __cplusplus
630 static const struct rte_flow_item_vlan rte_flow_item_vlan_mask = {
631  .tci = RTE_BE16(0x0fff),
632  .inner_type = RTE_BE16(0x0000),
633 };
634 #endif
635 
644  struct rte_ipv4_hdr hdr;
645 };
646 
648 #ifndef __cplusplus
649 static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask = {
650  .hdr = {
651  .src_addr = RTE_BE32(0xffffffff),
652  .dst_addr = RTE_BE32(0xffffffff),
653  },
654 };
655 #endif
656 
666  struct rte_ipv6_hdr hdr;
667 };
668 
670 #ifndef __cplusplus
671 static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask = {
672  .hdr = {
673  .src_addr =
674  "\xff\xff\xff\xff\xff\xff\xff\xff"
675  "\xff\xff\xff\xff\xff\xff\xff\xff",
676  .dst_addr =
677  "\xff\xff\xff\xff\xff\xff\xff\xff"
678  "\xff\xff\xff\xff\xff\xff\xff\xff",
679  },
680 };
681 #endif
682 
689  struct rte_icmp_hdr hdr;
690 };
691 
693 #ifndef __cplusplus
694 static const struct rte_flow_item_icmp rte_flow_item_icmp_mask = {
695  .hdr = {
696  .icmp_type = 0xff,
697  .icmp_code = 0xff,
698  },
699 };
700 #endif
701 
708  struct rte_udp_hdr hdr;
709 };
710 
712 #ifndef __cplusplus
713 static const struct rte_flow_item_udp rte_flow_item_udp_mask = {
714  .hdr = {
715  .src_port = RTE_BE16(0xffff),
716  .dst_port = RTE_BE16(0xffff),
717  },
718 };
719 #endif
720 
727  struct rte_tcp_hdr hdr;
728 };
729 
731 #ifndef __cplusplus
732 static const struct rte_flow_item_tcp rte_flow_item_tcp_mask = {
733  .hdr = {
734  .src_port = RTE_BE16(0xffff),
735  .dst_port = RTE_BE16(0xffff),
736  },
737 };
738 #endif
739 
746  struct rte_sctp_hdr hdr;
747 };
748 
750 #ifndef __cplusplus
751 static const struct rte_flow_item_sctp rte_flow_item_sctp_mask = {
752  .hdr = {
753  .src_port = RTE_BE16(0xffff),
754  .dst_port = RTE_BE16(0xffff),
755  },
756 };
757 #endif
758 
765  uint8_t flags;
766  uint8_t rsvd0[3];
767  uint8_t vni[3];
768  uint8_t rsvd1;
769 };
770 
772 #ifndef __cplusplus
773 static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask = {
774  .vni = "\xff\xff\xff",
775 };
776 #endif
777 
794  uint8_t in_ecid_e;
795  uint8_t ecid_e;
797 };
798 
800 #ifndef __cplusplus
801 static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask = {
802  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
803 };
804 #endif
805 
820  uint8_t tni[3];
821  uint8_t flow_id;
822 };
823 
825 #ifndef __cplusplus
826 static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask = {
827  .tni = "\xff\xff\xff",
828 };
829 #endif
830 
840  uint8_t label_tc_s[3];
841  uint8_t ttl;
842 };
843 
845 #ifndef __cplusplus
846 static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
847  .label_tc_s = "\xff\xff\xf0",
848 };
849 #endif
850 
863 };
864 
866 #ifndef __cplusplus
867 static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
868  .protocol = RTE_BE16(0xffff),
869 };
870 #endif
871 
890  uint32_t thresh;
891 };
892 
894 #ifndef __cplusplus
895 static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask = {
896  .thresh = 0xffffffff,
897 };
898 #endif
899 
912  uint8_t v_pt_rsv_flags;
913  uint8_t msg_type;
916 };
917 
919 #ifndef __cplusplus
920 static const struct rte_flow_item_gtp rte_flow_item_gtp_mask = {
921  .teid = RTE_BE32(0xffffffff),
922 };
923 #endif
924 
931  struct rte_esp_hdr hdr;
932 };
933 
935 #ifndef __cplusplus
936 static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
937  .hdr = {
938  .spi = 0xffffffff,
939  },
940 };
941 #endif
942 
955  uint8_t vni[3];
956  uint8_t rsvd1;
957 };
958 
960 #ifndef __cplusplus
961 static const struct rte_flow_item_geneve rte_flow_item_geneve_mask = {
962  .vni = "\xff\xff\xff",
963 };
964 #endif
965 
972  uint8_t flags;
973  uint8_t rsvd0[2];
974  uint8_t protocol;
975  uint8_t vni[3];
976  uint8_t rsvd1;
977 };
978 
980 #ifndef __cplusplus
982  .vni = "\xff\xff\xff",
983 };
984 #endif
985 
994  uint8_t hln;
995  uint8_t pln;
997  struct rte_ether_addr sha;
999  struct rte_ether_addr tha;
1001 };
1002 
1004 #ifndef __cplusplus
1005 static const struct rte_flow_item_arp_eth_ipv4
1007  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1008  .spa = RTE_BE32(0xffffffff),
1009  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1010  .tpa = RTE_BE32(0xffffffff),
1011 };
1012 #endif
1013 
1025  uint8_t next_hdr;
1026 };
1027 
1029 #ifndef __cplusplus
1030 static const
1032  .next_hdr = 0xff,
1033 };
1034 #endif
1035 
1042  uint8_t type;
1043  uint8_t code;
1044  uint16_t checksum;
1045 };
1046 
1048 #ifndef __cplusplus
1049 static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask = {
1050  .type = 0xff,
1051  .code = 0xff,
1052 };
1053 #endif
1054 
1061  uint8_t type;
1062  uint8_t code;
1065  uint8_t target_addr[16];
1066 };
1067 
1069 #ifndef __cplusplus
1070 static const
1072  .target_addr =
1073  "\xff\xff\xff\xff\xff\xff\xff\xff"
1074  "\xff\xff\xff\xff\xff\xff\xff\xff",
1075 };
1076 #endif
1077 
1084  uint8_t type;
1085  uint8_t code;
1092  uint8_t target_addr[16];
1093 };
1094 
1096 #ifndef __cplusplus
1097 static const
1099  .target_addr =
1100  "\xff\xff\xff\xff\xff\xff\xff\xff"
1101  "\xff\xff\xff\xff\xff\xff\xff\xff",
1102 };
1103 #endif
1104 
1117  uint8_t type;
1118  uint8_t length;
1119 };
1120 
1122 #ifndef __cplusplus
1123 static const struct rte_flow_item_icmp6_nd_opt
1125  .type = 0xff,
1126 };
1127 #endif
1128 
1141  uint8_t type;
1142  uint8_t length;
1143  struct rte_ether_addr sla;
1144 };
1145 
1147 #ifndef __cplusplus
1148 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1150  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1151 };
1152 #endif
1153 
1166  uint8_t type;
1167  uint8_t length;
1168  struct rte_ether_addr tla;
1169 };
1170 
1172 #ifndef __cplusplus
1173 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1175  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1176 };
1177 #endif
1178 
1185  rte_be32_t data;
1186 };
1187 
1189 #ifndef __cplusplus
1190 static const struct rte_flow_item_meta rte_flow_item_meta_mask = {
1191  .data = RTE_BE32(UINT32_MAX),
1192 };
1193 #endif
1194 
1214  uint32_t id;
1215 };
1216 
1251  enum rte_flow_item_type type;
1252  const void *spec;
1253  const void *last;
1254  const void *mask;
1255 };
1256 
1291 
1299 
1307 
1316 
1324 
1332 
1339 
1348 
1358 
1367 
1375 
1383 
1391 
1398 
1406 
1414 
1422 
1430 
1438 
1446 
1455 
1464 
1472 
1480 
1488 
1496 
1504 
1512 
1520 
1529 
1537 
1546 
1553 
1560 
1570 
1580 
1590 
1600 
1611 
1622 
1633 
1640 
1647 
1657 
1667 
1681 
1695 
1709 
1723 };
1724 
1736  uint32_t id;
1737 };
1738 
1752  uint32_t group;
1753 };
1754 
1761  uint16_t index;
1762 };
1763 
1764 
1791  uint32_t shared:1;
1792  uint32_t reserved:31;
1793  uint32_t id;
1794 };
1795 
1802  uint32_t reset:1;
1803  uint32_t hits_set:1;
1804  uint32_t bytes_set:1;
1805  uint32_t reserved:29;
1806  uint64_t hits;
1807  uint64_t bytes;
1808 };
1809 
1814  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
1817  RTE_ETH_HASH_FUNCTION_MAX,
1818 };
1819 
1863  uint32_t level;
1864  uint64_t types;
1865  uint32_t key_len;
1866  uint32_t queue_num;
1867  const uint8_t *key;
1868  const uint16_t *queue;
1869 };
1870 
1884  uint32_t original:1;
1885  uint32_t reserved:31;
1886  uint32_t id;
1887 };
1888 
1898  uint32_t original:1;
1899  uint32_t reserved:31;
1900  uint32_t index;
1901 };
1902 
1911  uint32_t original:1;
1912  uint32_t reserved:31;
1913  uint32_t id;
1914 };
1915 
1925  uint32_t mtr_id;
1926 };
1927 
1955 };
1956 
1964  uint8_t mpls_ttl;
1965 };
1966 
1974  uint8_t nw_ttl;
1975 };
1976 
1985 };
1986 
1995 };
1996 
2004  uint8_t vlan_pcp;
2005 };
2006 
2015 };
2016 
2025 };
2026 
2060 };
2061 
2094 };
2095 
2116  uint8_t *data;
2117  uint8_t *preserve;
2118  size_t size;
2119 };
2120 
2137  uint8_t *data;
2138  size_t size;
2139 };
2140 
2153  rte_be32_t ipv4_addr;
2154 };
2155 
2168  uint8_t ipv6_addr[16];
2169 };
2170 
2183  rte_be16_t port;
2184 };
2185 
2192  uint8_t ttl_value;
2193 };
2194 
2201  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2202 };
2203 
2204 /*
2205  * Definition of a single action.
2206  *
2207  * A list of actions is terminated by a END action.
2208  *
2209  * For simple actions without a configuration object, conf remains NULL.
2210  */
2211 struct rte_flow_action {
2212  enum rte_flow_action_type type;
2213  const void *conf;
2214 };
2215 
2222 struct rte_flow;
2223 
2248 };
2249 
2262  enum rte_flow_error_type type;
2263  const void *cause;
2264  const char *message;
2265 };
2266 
2277  union {
2278  const struct rte_flow_attr *attr_ro;
2280  };
2281  union {
2282  const struct rte_flow_item *pattern_ro;
2284  };
2285  union {
2286  const struct rte_flow_action *actions_ro;
2287  struct rte_flow_action *actions;
2288  };
2289 };
2290 
2303 
2315 
2327 
2339 
2352 
2365 
2378 
2392 
2406 
2420 
2434 };
2435 
2488 int
2489 rte_flow_validate(uint16_t port_id,
2490  const struct rte_flow_attr *attr,
2491  const struct rte_flow_item pattern[],
2492  const struct rte_flow_action actions[],
2493  struct rte_flow_error *error);
2494 
2515 struct rte_flow *
2516 rte_flow_create(uint16_t port_id,
2517  const struct rte_flow_attr *attr,
2518  const struct rte_flow_item pattern[],
2519  const struct rte_flow_action actions[],
2520  struct rte_flow_error *error);
2521 
2542 int
2543 rte_flow_destroy(uint16_t port_id,
2544  struct rte_flow *flow,
2545  struct rte_flow_error *error);
2546 
2563 int
2564 rte_flow_flush(uint16_t port_id,
2565  struct rte_flow_error *error);
2566 
2591 int
2592 rte_flow_query(uint16_t port_id,
2593  struct rte_flow *flow,
2594  const struct rte_flow_action *action,
2595  void *data,
2596  struct rte_flow_error *error);
2597 
2639 int
2640 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
2641 
2659 int
2661  int code,
2662  enum rte_flow_error_type type,
2663  const void *cause,
2664  const char *message);
2665 
2671  size_t size;
2672  struct rte_flow_attr attr;
2674  struct rte_flow_action *actions;
2675  uint8_t data[];
2676 };
2677 
2704 __rte_deprecated
2705 size_t
2706 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
2707  const struct rte_flow_attr *attr,
2708  const struct rte_flow_item *items,
2709  const struct rte_flow_action *actions);
2710 
2751 __rte_experimental
2752 int
2754  void *dst,
2755  size_t size,
2756  const void *src,
2757  struct rte_flow_error *error);
2758 
2759 #ifdef __cplusplus
2760 }
2761 #endif
2762 
2763 #endif /* RTE_FLOW_H_ */
uint32_t rte_be32_t
uint16_t rte_be16_t
#define RTE_STD_C11
Definition: rte_common.h:40
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
int rte_flow_error_set(struct rte_flow_error *error, int code, enum rte_flow_error_type type, const void *cause, const char *message)
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:542
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:516
__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)
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:867
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1071
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:981
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1190
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1149
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:694
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:773
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:961
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:801
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)
int rte_flow_flush(uint16_t port_id, struct rte_flow_error *error)
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1031
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1174
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:577
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)
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:630
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:732
rte_flow_conv_op
Definition: rte_flow.h:2296
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:2433
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:2326
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:2364
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:2302
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:2377
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:2314
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:2405
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:2419
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:2351
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:2391
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:2338
rte_flow_action_type
Definition: rte_flow.h:1283
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:1471
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:1519
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:1536
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition: rte_flow.h:1680
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:1306
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:1357
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:1621
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:1552
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:1382
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:1632
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:1589
@ RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN
Definition: rte_flow.h:1463
@ RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL
Definition: rte_flow.h:1421
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:1503
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:1559
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:1298
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:1366
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:1323
@ RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT
Definition: rte_flow.h:1454
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:1569
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:1445
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:1579
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:1338
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:1290
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:1479
@ RTE_FLOW_ACTION_TYPE_PHY_PORT
Definition: rte_flow.h:1390
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition: rte_flow.h:1722
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:1639
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:1528
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:1610
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:1397
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:1545
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:1413
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:1511
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:1487
@ RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL
Definition: rte_flow.h:1437
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition: rte_flow.h:1708
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:1331
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:1666
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:1405
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:1374
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:1599
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:1646
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:1347
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:1495
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:1656
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition: rte_flow.h:1694
@ RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL
Definition: rte_flow.h:1429
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:1315
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:920
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:846
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:751
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:671
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:485
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1124
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1006
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:713
rte_flow_error_type
Definition: rte_flow.h:2230
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:2232
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:2234
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:2231
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:2233
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:2242
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:2237
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:2238
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:2246
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:2243
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:2241
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:2244
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:2247
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:2239
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:2236
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:2235
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:2245
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:2240
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1098
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:456
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)
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:649
__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)
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1049
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:936
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:895
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
rte_eth_hash_function
Definition: rte_flow.h:1813
@ RTE_ETH_HASH_FUNCTION_SIMPLE_XOR
Definition: rte_flow.h:1816
@ RTE_ETH_HASH_FUNCTION_TOEPLITZ
Definition: rte_flow.h:1815
rte_flow_item_type
Definition: rte_flow.h:115
@ RTE_FLOW_ITEM_TYPE_IPV4
Definition: rte_flow.h:220
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT
Definition: rte_flow.h:392
@ RTE_FLOW_ITEM_TYPE_ICMP
Definition: rte_flow.h:234
@ RTE_FLOW_ITEM_TYPE_META
Definition: rte_flow.h:423
@ RTE_FLOW_ITEM_TYPE_FUZZY
Definition: rte_flow.h:302
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS
Definition: rte_flow.h:378
@ RTE_FLOW_ITEM_TYPE_GRE_KEY
Definition: rte_flow.h:436
@ RTE_FLOW_ITEM_TYPE_VXLAN
Definition: rte_flow.h:262
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:350
@ RTE_FLOW_ITEM_TYPE_TCP
Definition: rte_flow.h:248
@ RTE_FLOW_ITEM_TYPE_ESP
Definition: rte_flow.h:336
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition: rte_flow.h:283
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:124
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH
Definition: rte_flow.h:400
@ RTE_FLOW_ITEM_TYPE_RAW
Definition: rte_flow.h:199
@ RTE_FLOW_ITEM_TYPE_PF
Definition: rte_flow.h:162
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition: rte_flow.h:276
@ RTE_FLOW_ITEM_TYPE_IPV6_EXT
Definition: rte_flow.h:364
@ RTE_FLOW_ITEM_TYPE_ANY
Definition: rte_flow.h:152
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition: rte_flow.h:213
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition: rte_flow.h:329
@ RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4
Definition: rte_flow.h:357
@ RTE_FLOW_ITEM_TYPE_INVERT
Definition: rte_flow.h:144
@ RTE_FLOW_ITEM_TYPE_GTP
Definition: rte_flow.h:311
@ RTE_FLOW_ITEM_TYPE_ICMP6
Definition: rte_flow.h:371
@ RTE_FLOW_ITEM_TYPE_GRE
Definition: rte_flow.h:290
@ RTE_FLOW_ITEM_TYPE_PHY_PORT
Definition: rte_flow.h:182
@ RTE_FLOW_ITEM_TYPE_VOID
Definition: rte_flow.h:134
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:206
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition: rte_flow.h:408
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition: rte_flow.h:343
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:241
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition: rte_flow.h:269
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA
Definition: rte_flow.h:385
@ RTE_FLOW_ITEM_TYPE_MARK
Definition: rte_flow.h:415
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:227
@ RTE_FLOW_ITEM_TYPE_SCTP
Definition: rte_flow.h:255
@ RTE_FLOW_ITEM_TYPE_VF
Definition: rte_flow.h:172
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition: rte_flow.h:192
@ RTE_FLOW_ITEM_TYPE_GTPC
Definition: rte_flow.h:320
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:607
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:826
rte_be32_t spi
Definition: rte_esp.h:24
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
struct rte_flow_item * definition
Definition: rte_flow.h:2093
const uint16_t * queue
Definition: rte_flow.h:1868
enum rte_eth_hash_function func
Definition: rte_flow.h:1837
const uint8_t * key
Definition: rte_flow.h:1867
uint32_t queue_num
Definition: rte_flow.h:1866
uint32_t original
Definition: rte_flow.h:1884
uint32_t reserved
Definition: rte_flow.h:1885
struct rte_flow_item * definition
Definition: rte_flow.h:2059
uint32_t group
Definition: rte_flow.h:73
uint32_t egress
Definition: rte_flow.h:76
uint32_t priority
Definition: rte_flow.h:74
uint32_t transfer
Definition: rte_flow.h:95
uint32_t reserved
Definition: rte_flow.h:96
uint32_t ingress
Definition: rte_flow.h:75
struct rte_flow_action * actions
Definition: rte_flow.h:2287
struct rte_flow_attr * attr
Definition: rte_flow.h:2279
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2286
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2282
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2278
struct rte_flow_item * pattern
Definition: rte_flow.h:2283
struct rte_flow_action * actions
Definition: rte_flow.h:2674
uint8_t data[]
Definition: rte_flow.h:2675
struct rte_flow_attr attr
Definition: rte_flow.h:2672
struct rte_flow_item * items
Definition: rte_flow.h:2673
size_t size
Definition: rte_flow.h:2671
const char * message
Definition: rte_flow.h:2264
enum rte_flow_error_type type
Definition: rte_flow.h:2262
const void * cause
Definition: rte_flow.h:2263
uint32_t num
Definition: rte_flow.h:451
struct rte_ether_addr tha
Definition: rte_flow.h:999
struct rte_ether_addr sha
Definition: rte_flow.h:997
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:791
rte_be16_t inner_type
Definition: rte_flow.h:796
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:793
struct rte_esp_hdr hdr
Definition: rte_flow.h:931
rte_be16_t type
Definition: rte_flow.h:602
struct rte_ether_addr dst
Definition: rte_flow.h:600
struct rte_ether_addr src
Definition: rte_flow.h:601
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:953
uint8_t vni[3]
Definition: rte_flow.h:955
rte_be16_t protocol
Definition: rte_flow.h:954
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:861
rte_be16_t protocol
Definition: rte_flow.h:862
rte_be32_t teid
Definition: rte_flow.h:915
rte_be16_t msg_len
Definition: rte_flow.h:914
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:912
uint8_t msg_type
Definition: rte_flow.h:913
struct rte_ether_addr sla
Definition: rte_flow.h:1143
struct rte_ether_addr tla
Definition: rte_flow.h:1168
struct rte_icmp_hdr hdr
Definition: rte_flow.h:689
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:644
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:666
uint8_t label_tc_s[3]
Definition: rte_flow.h:840
uint8_t tni[3]
Definition: rte_flow.h:820
rte_be16_t protocol
Definition: rte_flow.h:819
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:818
const uint8_t * pattern
Definition: rte_flow.h:572
uint16_t length
Definition: rte_flow.h:571
uint32_t search
Definition: rte_flow.h:567
int32_t offset
Definition: rte_flow.h:569
uint32_t reserved
Definition: rte_flow.h:568
uint16_t limit
Definition: rte_flow.h:570
uint32_t relative
Definition: rte_flow.h:566
struct rte_sctp_hdr hdr
Definition: rte_flow.h:746
struct rte_tcp_hdr hdr
Definition: rte_flow.h:727
struct rte_udp_hdr hdr
Definition: rte_flow.h:708
uint32_t id
Definition: rte_flow.h:480
rte_be16_t tci
Definition: rte_flow.h:624
rte_be16_t inner_type
Definition: rte_flow.h:625
uint8_t vni[3]
Definition: rte_flow.h:767
uint8_t rsvd0[3]
Definition: rte_flow.h:766
const void * spec
Definition: rte_flow.h:1252
const void * mask
Definition: rte_flow.h:1254
enum rte_flow_item_type type
Definition: rte_flow.h:1251
const void * last
Definition: rte_flow.h:1253
uint32_t src_addr
Definition: rte_ip.h:42
uint8_t src_addr[16]
Definition: rte_ip.h:363
uint16_t src_port
Definition: rte_sctp.h:27
uint16_t src_port
Definition: rte_tcp.h:27
uint16_t src_port
Definition: rte_udp.h:27