DPDK  18.11.9
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_eth_ctrl.h>
24 #include <rte_icmp.h>
25 #include <rte_ip.h>
26 #include <rte_sctp.h>
27 #include <rte_tcp.h>
28 #include <rte_udp.h>
29 #include <rte_byteorder.h>
30 #include <rte_esp.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
73 struct rte_flow_attr {
74  uint32_t group;
75  uint32_t priority;
76  uint32_t ingress:1;
77  uint32_t egress:1;
96  uint32_t transfer:1;
97  uint32_t reserved:29;
98 };
99 
126 
136 
146 
154 
164 
174 
184 
194 
201 
208 
215 
222 
229 
236 
243 
250 
257 
264 
271 
278 
285 
292 
304 
313 
322 
331 
338 
345 
352 
359 
366 
373 
380 
387 
394 
402 
410 
417 
425 };
426 
439  uint32_t num;
440 };
441 
443 #ifndef __cplusplus
444 static const struct rte_flow_item_any rte_flow_item_any_mask = {
445  .num = 0x00000000,
446 };
447 #endif
448 
468  uint32_t id;
469 };
470 
472 #ifndef __cplusplus
473 static const struct rte_flow_item_vf rte_flow_item_vf_mask = {
474  .id = 0x00000000,
475 };
476 #endif
477 
499  uint32_t index;
500 };
501 
503 #ifndef __cplusplus
505  .index = 0x00000000,
506 };
507 #endif
508 
525  uint32_t id;
526 };
527 
529 #ifndef __cplusplus
531  .id = 0xffffffff,
532 };
533 #endif
534 
554  uint32_t relative:1;
555  uint32_t search:1;
556  uint32_t reserved:30;
557  int32_t offset;
558  uint16_t limit;
559  uint16_t length;
560  const uint8_t *pattern;
561 };
562 
564 #ifndef __cplusplus
565 static const struct rte_flow_item_raw rte_flow_item_raw_mask = {
566  .relative = 1,
567  .search = 1,
568  .reserved = 0x3fffffff,
569  .offset = 0xffffffff,
570  .limit = 0xffff,
571  .length = 0xffff,
572  .pattern = NULL,
573 };
574 #endif
575 
588  struct ether_addr dst;
589  struct ether_addr src;
591 };
592 
594 #ifndef __cplusplus
595 static const struct rte_flow_item_eth rte_flow_item_eth_mask = {
596  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
597  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
598  .type = RTE_BE16(0x0000),
599 };
600 #endif
601 
614 };
615 
617 #ifndef __cplusplus
618 static const struct rte_flow_item_vlan rte_flow_item_vlan_mask = {
619  .tci = RTE_BE16(0x0fff),
620  .inner_type = RTE_BE16(0x0000),
621 };
622 #endif
623 
632  struct ipv4_hdr hdr;
633 };
634 
636 #ifndef __cplusplus
637 static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask = {
638  .hdr = {
639  .src_addr = RTE_BE32(0xffffffff),
640  .dst_addr = RTE_BE32(0xffffffff),
641  },
642 };
643 #endif
644 
654  struct ipv6_hdr hdr;
655 };
656 
658 #ifndef __cplusplus
659 static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask = {
660  .hdr = {
661  .src_addr =
662  "\xff\xff\xff\xff\xff\xff\xff\xff"
663  "\xff\xff\xff\xff\xff\xff\xff\xff",
664  .dst_addr =
665  "\xff\xff\xff\xff\xff\xff\xff\xff"
666  "\xff\xff\xff\xff\xff\xff\xff\xff",
667  },
668 };
669 #endif
670 
677  struct icmp_hdr hdr;
678 };
679 
681 #ifndef __cplusplus
682 static const struct rte_flow_item_icmp rte_flow_item_icmp_mask = {
683  .hdr = {
684  .icmp_type = 0xff,
685  .icmp_code = 0xff,
686  },
687 };
688 #endif
689 
696  struct udp_hdr hdr;
697 };
698 
700 #ifndef __cplusplus
701 static const struct rte_flow_item_udp rte_flow_item_udp_mask = {
702  .hdr = {
703  .src_port = RTE_BE16(0xffff),
704  .dst_port = RTE_BE16(0xffff),
705  },
706 };
707 #endif
708 
715  struct tcp_hdr hdr;
716 };
717 
719 #ifndef __cplusplus
720 static const struct rte_flow_item_tcp rte_flow_item_tcp_mask = {
721  .hdr = {
722  .src_port = RTE_BE16(0xffff),
723  .dst_port = RTE_BE16(0xffff),
724  },
725 };
726 #endif
727 
734  struct sctp_hdr hdr;
735 };
736 
738 #ifndef __cplusplus
739 static const struct rte_flow_item_sctp rte_flow_item_sctp_mask = {
740  .hdr = {
741  .src_port = RTE_BE16(0xffff),
742  .dst_port = RTE_BE16(0xffff),
743  },
744 };
745 #endif
746 
753  uint8_t flags;
754  uint8_t rsvd0[3];
755  uint8_t vni[3];
756  uint8_t rsvd1;
757 };
758 
760 #ifndef __cplusplus
761 static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask = {
762  .vni = "\xff\xff\xff",
763 };
764 #endif
765 
782  uint8_t in_ecid_e;
783  uint8_t ecid_e;
785 };
786 
788 #ifndef __cplusplus
789 static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask = {
790  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
791 };
792 #endif
793 
808  uint8_t tni[3];
809  uint8_t flow_id;
810 };
811 
813 #ifndef __cplusplus
814 static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask = {
815  .tni = "\xff\xff\xff",
816 };
817 #endif
818 
828  uint8_t label_tc_s[3];
829  uint8_t ttl;
830 };
831 
833 #ifndef __cplusplus
834 static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
835  .label_tc_s = "\xff\xff\xf0",
836 };
837 #endif
838 
851 };
852 
854 #ifndef __cplusplus
855 static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
856  .protocol = RTE_BE16(0xffff),
857 };
858 #endif
859 
878  uint32_t thresh;
879 };
880 
882 #ifndef __cplusplus
883 static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask = {
884  .thresh = 0xffffffff,
885 };
886 #endif
887 
900  uint8_t v_pt_rsv_flags;
901  uint8_t msg_type;
904 };
905 
907 #ifndef __cplusplus
908 static const struct rte_flow_item_gtp rte_flow_item_gtp_mask = {
909  .teid = RTE_BE32(0xffffffff),
910 };
911 #endif
912 
919  struct esp_hdr hdr;
920 };
921 
923 #ifndef __cplusplus
924 static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
925  .hdr = {
926  .spi = RTE_BE32(0xffffffff),
927  },
928 };
929 #endif
930 
943  uint8_t vni[3];
944  uint8_t rsvd1;
945 };
946 
948 #ifndef __cplusplus
949 static const struct rte_flow_item_geneve rte_flow_item_geneve_mask = {
950  .vni = "\xff\xff\xff",
951 };
952 #endif
953 
960  uint8_t flags;
961  uint8_t rsvd0[2];
962  uint8_t protocol;
963  uint8_t vni[3];
964  uint8_t rsvd1;
965 };
966 
968 #ifndef __cplusplus
970  .vni = "\xff\xff\xff",
971 };
972 #endif
973 
982  uint8_t hln;
983  uint8_t pln;
985  struct ether_addr sha;
987  struct ether_addr tha;
989 };
990 
992 #ifndef __cplusplus
993 static const struct rte_flow_item_arp_eth_ipv4
995  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
996  .spa = RTE_BE32(0xffffffff),
997  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
998  .tpa = RTE_BE32(0xffffffff),
999 };
1000 #endif
1001 
1013  uint8_t next_hdr;
1014 };
1015 
1017 #ifndef __cplusplus
1018 static const
1020  .next_hdr = 0xff,
1021 };
1022 #endif
1023 
1030  uint8_t type;
1031  uint8_t code;
1032  uint16_t checksum;
1033 };
1034 
1036 #ifndef __cplusplus
1037 static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask = {
1038  .type = 0xff,
1039  .code = 0xff,
1040 };
1041 #endif
1042 
1049  uint8_t type;
1050  uint8_t code;
1053  uint8_t target_addr[16];
1054 };
1055 
1057 #ifndef __cplusplus
1058 static const
1060  .target_addr =
1061  "\xff\xff\xff\xff\xff\xff\xff\xff"
1062  "\xff\xff\xff\xff\xff\xff\xff\xff",
1063 };
1064 #endif
1065 
1072  uint8_t type;
1073  uint8_t code;
1080  uint8_t target_addr[16];
1081 };
1082 
1084 #ifndef __cplusplus
1085 static const
1087  .target_addr =
1088  "\xff\xff\xff\xff\xff\xff\xff\xff"
1089  "\xff\xff\xff\xff\xff\xff\xff\xff",
1090 };
1091 #endif
1092 
1105  uint8_t type;
1106  uint8_t length;
1107 };
1108 
1110 #ifndef __cplusplus
1111 static const struct rte_flow_item_icmp6_nd_opt
1113  .type = 0xff,
1114 };
1115 #endif
1116 
1129  uint8_t type;
1130  uint8_t length;
1131  struct ether_addr sla;
1132 };
1133 
1135 #ifndef __cplusplus
1136 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1138  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1139 };
1140 #endif
1141 
1154  uint8_t type;
1155  uint8_t length;
1156  struct ether_addr tla;
1157 };
1158 
1160 #ifndef __cplusplus
1161 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1163  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1164 };
1165 #endif
1166 
1173  rte_be32_t data;
1174 };
1175 
1177 #ifndef __cplusplus
1178 static const struct rte_flow_item_meta rte_flow_item_meta_mask = {
1179  .data = RTE_BE32(UINT32_MAX),
1180 };
1181 #endif
1182 
1202  uint32_t id;
1203 };
1204 
1239  enum rte_flow_item_type type;
1240  const void *spec;
1241  const void *last;
1242  const void *mask;
1243 };
1244 
1278 
1286 
1294 
1303 
1311 
1319 
1326 
1335 
1345 
1354 
1362 
1370 
1378 
1385 
1393 
1401 
1409 
1417 
1425 
1433 
1442 
1451 
1459 
1467 
1475 
1483 
1491 
1499 
1507 
1516 
1524 
1533 
1540 
1547 
1557 
1567 
1577 
1587 
1598 
1609 
1620 
1627 
1634 
1644 
1654 };
1655 
1667  uint32_t id;
1668 };
1669 
1683  uint32_t group;
1684 };
1685 
1692  uint16_t index;
1693 };
1694 
1695 
1722  uint32_t shared:1;
1723  uint32_t reserved:31;
1724  uint32_t id;
1725 };
1726 
1733  uint32_t reset:1;
1734  uint32_t hits_set:1;
1735  uint32_t bytes_set:1;
1736  uint32_t reserved:29;
1737  uint64_t hits;
1738  uint64_t bytes;
1739 };
1740 
1784  uint32_t level;
1785  uint64_t types;
1786  uint32_t key_len;
1787  uint32_t queue_num;
1788  const uint8_t *key;
1789  const uint16_t *queue;
1790 };
1791 
1805  uint32_t original:1;
1806  uint32_t reserved:31;
1807  uint32_t id;
1808 };
1809 
1819  uint32_t original:1;
1820  uint32_t reserved:31;
1821  uint32_t index;
1822 };
1823 
1832  uint32_t original:1;
1833  uint32_t reserved:31;
1834  uint32_t id;
1835 };
1836 
1846  uint32_t mtr_id;
1847 };
1848 
1876 };
1877 
1885  uint8_t mpls_ttl;
1886 };
1887 
1895  uint8_t nw_ttl;
1896 };
1897 
1906 };
1907 
1916 };
1917 
1925  uint8_t vlan_pcp;
1926 };
1927 
1936 };
1937 
1946 };
1947 
1981 };
1982 
2015 };
2016 
2037  uint8_t *data;
2038  uint8_t *preserve;
2039  size_t size;
2040 };
2041 
2058  uint8_t *data;
2059  size_t size;
2060 };
2061 
2074  rte_be32_t ipv4_addr;
2075 };
2076 
2089  uint8_t ipv6_addr[16];
2090 };
2091 
2104  rte_be16_t port;
2105 };
2106 
2113  uint8_t ttl_value;
2114 };
2115 
2122  uint8_t mac_addr[ETHER_ADDR_LEN];
2123 };
2124 
2125 /*
2126  * Definition of a single action.
2127  *
2128  * A list of actions is terminated by a END action.
2129  *
2130  * For simple actions without a configuration structure, conf remains NULL.
2131  */
2132 struct rte_flow_action {
2133  enum rte_flow_action_type type;
2134  const void *conf;
2135 };
2136 
2143 struct rte_flow;
2144 
2169 };
2170 
2183  enum rte_flow_error_type type;
2184  const void *cause;
2185  const char *message;
2186 };
2187 
2198  union {
2199  const struct rte_flow_attr *attr_ro;
2201  };
2202  union {
2203  const struct rte_flow_item *pattern_ro;
2205  };
2206  union {
2207  const struct rte_flow_action *actions_ro;
2208  struct rte_flow_action *actions;
2209  };
2210 };
2211 
2224 
2236 
2248 
2260 
2273 
2286 
2299 
2313 
2327 
2341 
2355 };
2356 
2409 int
2410 rte_flow_validate(uint16_t port_id,
2411  const struct rte_flow_attr *attr,
2412  const struct rte_flow_item pattern[],
2413  const struct rte_flow_action actions[],
2414  struct rte_flow_error *error);
2415 
2436 struct rte_flow *
2437 rte_flow_create(uint16_t port_id,
2438  const struct rte_flow_attr *attr,
2439  const struct rte_flow_item pattern[],
2440  const struct rte_flow_action actions[],
2441  struct rte_flow_error *error);
2442 
2463 int
2464 rte_flow_destroy(uint16_t port_id,
2465  struct rte_flow *flow,
2466  struct rte_flow_error *error);
2467 
2484 int
2485 rte_flow_flush(uint16_t port_id,
2486  struct rte_flow_error *error);
2487 
2512 int
2513 rte_flow_query(uint16_t port_id,
2514  struct rte_flow *flow,
2515  const struct rte_flow_action *action,
2516  void *data,
2517  struct rte_flow_error *error);
2518 
2560 int
2561 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
2562 
2580 int
2582  int code,
2583  enum rte_flow_error_type type,
2584  const void *cause,
2585  const char *message);
2586 
2592  size_t size;
2593  struct rte_flow_attr attr;
2595  struct rte_flow_action *actions;
2596  uint8_t data[];
2597 };
2598 
2625 __rte_deprecated
2626 size_t
2627 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
2628  const struct rte_flow_attr *attr,
2629  const struct rte_flow_item *items,
2630  const struct rte_flow_action *actions);
2631 
2672 __rte_experimental
2673 int
2675  void *dst,
2676  size_t size,
2677  const void *src,
2678  struct rte_flow_error *error);
2679 
2680 #ifdef __cplusplus
2681 }
2682 #endif
2683 
2684 #endif /* RTE_FLOW_H_ */
uint32_t rte_be32_t
uint16_t rte_be16_t
#define RTE_STD_C11
Definition: rte_common.h:37
rte_eth_hash_function
Definition: rte_eth_ctrl.h:770
#define 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:530
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:504
__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:855
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1059
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:969
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1178
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1137
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:682
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:761
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:949
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:789
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:1019
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1162
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:565
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:618
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:720
rte_flow_conv_op
Definition: rte_flow.h:2217
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:2354
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:2247
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:2285
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:2223
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:2298
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:2235
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:2326
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:2340
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:2272
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:2312
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:2259
rte_flow_action_type
Definition: rte_flow.h:1270
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:1458
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:1506
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:1523
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:1293
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:1344
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:1608
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:1539
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:1369
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:1619
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:1576
@ RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN
Definition: rte_flow.h:1450
@ RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL
Definition: rte_flow.h:1408
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:1490
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:1546
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:1285
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:1353
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:1310
@ RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT
Definition: rte_flow.h:1441
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:1556
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:1432
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:1566
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:1325
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:1277
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:1466
@ RTE_FLOW_ACTION_TYPE_PHY_PORT
Definition: rte_flow.h:1377
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:1626
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:1515
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:1597
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:1384
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:1532
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:1400
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:1498
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:1474
@ RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL
Definition: rte_flow.h:1424
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:1318
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:1653
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:1392
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:1361
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:1586
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:1633
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:1334
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:1482
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:1643
@ RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL
Definition: rte_flow.h:1416
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:1302
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:908
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:834
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:739
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:659
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:473
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1112
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:994
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:701
rte_flow_error_type
Definition: rte_flow.h:2151
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:2153
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:2155
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:2152
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:2154
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:2163
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:2158
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:2159
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:2167
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:2164
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:2162
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:2165
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:2168
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:2160
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:2157
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:2156
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:2166
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:2161
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1086
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:444
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:637
__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:1037
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:924
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:883
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
rte_flow_item_type
Definition: rte_flow.h:116
@ RTE_FLOW_ITEM_TYPE_IPV4
Definition: rte_flow.h:221
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT
Definition: rte_flow.h:393
@ RTE_FLOW_ITEM_TYPE_ICMP
Definition: rte_flow.h:235
@ RTE_FLOW_ITEM_TYPE_META
Definition: rte_flow.h:424
@ RTE_FLOW_ITEM_TYPE_FUZZY
Definition: rte_flow.h:303
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS
Definition: rte_flow.h:379
@ RTE_FLOW_ITEM_TYPE_VXLAN
Definition: rte_flow.h:263
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:351
@ RTE_FLOW_ITEM_TYPE_TCP
Definition: rte_flow.h:249
@ RTE_FLOW_ITEM_TYPE_ESP
Definition: rte_flow.h:337
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition: rte_flow.h:284
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:125
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH
Definition: rte_flow.h:401
@ RTE_FLOW_ITEM_TYPE_RAW
Definition: rte_flow.h:200
@ RTE_FLOW_ITEM_TYPE_PF
Definition: rte_flow.h:163
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition: rte_flow.h:277
@ RTE_FLOW_ITEM_TYPE_IPV6_EXT
Definition: rte_flow.h:365
@ RTE_FLOW_ITEM_TYPE_ANY
Definition: rte_flow.h:153
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition: rte_flow.h:214
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition: rte_flow.h:330
@ RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4
Definition: rte_flow.h:358
@ RTE_FLOW_ITEM_TYPE_INVERT
Definition: rte_flow.h:145
@ RTE_FLOW_ITEM_TYPE_GTP
Definition: rte_flow.h:312
@ RTE_FLOW_ITEM_TYPE_ICMP6
Definition: rte_flow.h:372
@ RTE_FLOW_ITEM_TYPE_GRE
Definition: rte_flow.h:291
@ RTE_FLOW_ITEM_TYPE_PHY_PORT
Definition: rte_flow.h:183
@ RTE_FLOW_ITEM_TYPE_VOID
Definition: rte_flow.h:135
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:207
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition: rte_flow.h:409
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition: rte_flow.h:344
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:242
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition: rte_flow.h:270
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA
Definition: rte_flow.h:386
@ RTE_FLOW_ITEM_TYPE_MARK
Definition: rte_flow.h:416
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:228
@ RTE_FLOW_ITEM_TYPE_SCTP
Definition: rte_flow.h:256
@ RTE_FLOW_ITEM_TYPE_VF
Definition: rte_flow.h:173
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition: rte_flow.h:193
@ RTE_FLOW_ITEM_TYPE_GTPC
Definition: rte_flow.h:321
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:595
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:814
rte_be32_t spi
Definition: rte_esp.h:24
uint8_t addr_bytes[ETHER_ADDR_LEN]
Definition: rte_ether.h:58
uint32_t src_addr
Definition: rte_ip.h:42
uint8_t src_addr[16]
Definition: rte_ip.h:354
struct rte_flow_item * definition
Definition: rte_flow.h:2014
const uint16_t * queue
Definition: rte_flow.h:1789
enum rte_eth_hash_function func
Definition: rte_flow.h:1758
const uint8_t * key
Definition: rte_flow.h:1788
uint32_t queue_num
Definition: rte_flow.h:1787
uint32_t original
Definition: rte_flow.h:1805
uint32_t reserved
Definition: rte_flow.h:1806
struct rte_flow_item * definition
Definition: rte_flow.h:1980
uint32_t group
Definition: rte_flow.h:74
uint32_t egress
Definition: rte_flow.h:77
uint32_t priority
Definition: rte_flow.h:75
uint32_t transfer
Definition: rte_flow.h:96
uint32_t reserved
Definition: rte_flow.h:97
uint32_t ingress
Definition: rte_flow.h:76
struct rte_flow_action * actions
Definition: rte_flow.h:2208
struct rte_flow_attr * attr
Definition: rte_flow.h:2200
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2207
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2203
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2199
struct rte_flow_item * pattern
Definition: rte_flow.h:2204
struct rte_flow_action * actions
Definition: rte_flow.h:2595
uint8_t data[]
Definition: rte_flow.h:2596
struct rte_flow_attr attr
Definition: rte_flow.h:2593
struct rte_flow_item * items
Definition: rte_flow.h:2594
size_t size
Definition: rte_flow.h:2592
const char * message
Definition: rte_flow.h:2185
enum rte_flow_error_type type
Definition: rte_flow.h:2183
const void * cause
Definition: rte_flow.h:2184
uint32_t num
Definition: rte_flow.h:439
struct ether_addr tha
Definition: rte_flow.h:987
struct ether_addr sha
Definition: rte_flow.h:985
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:779
rte_be16_t inner_type
Definition: rte_flow.h:784
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:781
struct esp_hdr hdr
Definition: rte_flow.h:919
struct ether_addr src
Definition: rte_flow.h:589
struct ether_addr dst
Definition: rte_flow.h:588
rte_be16_t type
Definition: rte_flow.h:590
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:941
uint8_t vni[3]
Definition: rte_flow.h:943
rte_be16_t protocol
Definition: rte_flow.h:942
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:849
rte_be16_t protocol
Definition: rte_flow.h:850
rte_be32_t teid
Definition: rte_flow.h:903
rte_be16_t msg_len
Definition: rte_flow.h:902
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:900
uint8_t msg_type
Definition: rte_flow.h:901
struct icmp_hdr hdr
Definition: rte_flow.h:677
struct ipv4_hdr hdr
Definition: rte_flow.h:632
struct ipv6_hdr hdr
Definition: rte_flow.h:654
uint8_t label_tc_s[3]
Definition: rte_flow.h:828
uint8_t tni[3]
Definition: rte_flow.h:808
rte_be16_t protocol
Definition: rte_flow.h:807
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:806
const uint8_t * pattern
Definition: rte_flow.h:560
uint16_t length
Definition: rte_flow.h:559
uint32_t search
Definition: rte_flow.h:555
int32_t offset
Definition: rte_flow.h:557
uint32_t reserved
Definition: rte_flow.h:556
uint16_t limit
Definition: rte_flow.h:558
uint32_t relative
Definition: rte_flow.h:554
struct sctp_hdr hdr
Definition: rte_flow.h:734
struct tcp_hdr hdr
Definition: rte_flow.h:715
struct udp_hdr hdr
Definition: rte_flow.h:696
uint32_t id
Definition: rte_flow.h:468
rte_be16_t tci
Definition: rte_flow.h:612
rte_be16_t inner_type
Definition: rte_flow.h:613
uint8_t vni[3]
Definition: rte_flow.h:755
uint8_t rsvd0[3]
Definition: rte_flow.h:754
const void * spec
Definition: rte_flow.h:1240
const void * mask
Definition: rte_flow.h:1242
enum rte_flow_item_type type
Definition: rte_flow.h:1239
const void * last
Definition: rte_flow.h:1241
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