DPDK  20.02.0-rc1
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 #include <rte_higig.h>
31 #include <rte_mbuf.h>
32 #include <rte_mbuf_dyn.h>
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
75 struct rte_flow_attr {
76  uint32_t group;
77  uint32_t priority;
78  uint32_t ingress:1;
79  uint32_t egress:1;
98  uint32_t transfer:1;
99  uint32_t reserved:29;
100 };
101 
128 
138 
148 
156 
166 
176 
186 
196 
203 
210 
217 
224 
231 
238 
245 
252 
259 
266 
273 
280 
287 
294 
306 
315 
324 
333 
340 
347 
354 
361 
368 
375 
382 
389 
396 
404 
412 
419 
428 
441 
450 
459 
468 
477 
484 
491 
498 
504 
513 
522 
523 };
524 
532  struct rte_higig2_hdr hdr;
533 };
534 
536 #ifndef __cplusplus
538  .hdr = {
539  .ppt1 = {
540  .classification = 0xffff,
541  .vid = 0xfff,
542  },
543  },
544 };
545 #endif
546 
559  uint32_t num;
560 };
561 
563 #ifndef __cplusplus
565  .num = 0x00000000,
566 };
567 #endif
568 
588  uint32_t id;
589 };
590 
592 #ifndef __cplusplus
594  .id = 0x00000000,
595 };
596 #endif
597 
619  uint32_t index;
620 };
621 
623 #ifndef __cplusplus
625  .index = 0x00000000,
626 };
627 #endif
628 
645  uint32_t id;
646 };
647 
649 #ifndef __cplusplus
651  .id = 0xffffffff,
652 };
653 #endif
654 
674  uint32_t relative:1;
675  uint32_t search:1;
676  uint32_t reserved:30;
677  int32_t offset;
678  uint16_t limit;
679  uint16_t length;
680  const uint8_t *pattern;
681 };
682 
684 #ifndef __cplusplus
686  .relative = 1,
687  .search = 1,
688  .reserved = 0x3fffffff,
689  .offset = 0xffffffff,
690  .limit = 0xffff,
691  .length = 0xffff,
692  .pattern = NULL,
693 };
694 #endif
695 
711 };
712 
714 #ifndef __cplusplus
716  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
717  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
718  .type = RTE_BE16(0x0000),
719 };
720 #endif
721 
734 };
735 
737 #ifndef __cplusplus
739  .tci = RTE_BE16(0x0fff),
740  .inner_type = RTE_BE16(0x0000),
741 };
742 #endif
743 
752  struct rte_ipv4_hdr hdr;
753 };
754 
756 #ifndef __cplusplus
758  .hdr = {
759  .src_addr = RTE_BE32(0xffffffff),
760  .dst_addr = RTE_BE32(0xffffffff),
761  },
762 };
763 #endif
764 
774  struct rte_ipv6_hdr hdr;
775 };
776 
778 #ifndef __cplusplus
780  .hdr = {
781  .src_addr =
782  "\xff\xff\xff\xff\xff\xff\xff\xff"
783  "\xff\xff\xff\xff\xff\xff\xff\xff",
784  .dst_addr =
785  "\xff\xff\xff\xff\xff\xff\xff\xff"
786  "\xff\xff\xff\xff\xff\xff\xff\xff",
787  },
788 };
789 #endif
790 
797  struct rte_icmp_hdr hdr;
798 };
799 
801 #ifndef __cplusplus
803  .hdr = {
804  .icmp_type = 0xff,
805  .icmp_code = 0xff,
806  },
807 };
808 #endif
809 
816  struct rte_udp_hdr hdr;
817 };
818 
820 #ifndef __cplusplus
822  .hdr = {
823  .src_port = RTE_BE16(0xffff),
824  .dst_port = RTE_BE16(0xffff),
825  },
826 };
827 #endif
828 
835  struct rte_tcp_hdr hdr;
836 };
837 
839 #ifndef __cplusplus
841  .hdr = {
842  .src_port = RTE_BE16(0xffff),
843  .dst_port = RTE_BE16(0xffff),
844  },
845 };
846 #endif
847 
854  struct rte_sctp_hdr hdr;
855 };
856 
858 #ifndef __cplusplus
860  .hdr = {
861  .src_port = RTE_BE16(0xffff),
862  .dst_port = RTE_BE16(0xffff),
863  },
864 };
865 #endif
866 
873  uint8_t flags;
874  uint8_t rsvd0[3];
875  uint8_t vni[3];
876  uint8_t rsvd1;
877 };
878 
880 #ifndef __cplusplus
882  .vni = "\xff\xff\xff",
883 };
884 #endif
885 
902  uint8_t in_ecid_e;
903  uint8_t ecid_e;
905 };
906 
908 #ifndef __cplusplus
910  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
911 };
912 #endif
913 
928  uint8_t tni[3];
929  uint8_t flow_id;
930 };
931 
933 #ifndef __cplusplus
935  .tni = "\xff\xff\xff",
936 };
937 #endif
938 
948  uint8_t label_tc_s[3];
949  uint8_t ttl;
950 };
951 
953 #ifndef __cplusplus
955  .label_tc_s = "\xff\xff\xf0",
956 };
957 #endif
958 
971 };
972 
974 #ifndef __cplusplus
976  .protocol = RTE_BE16(0xffff),
977 };
978 #endif
979 
998  uint32_t thresh;
999 };
1000 
1002 #ifndef __cplusplus
1004  .thresh = 0xffffffff,
1005 };
1006 #endif
1007 
1021  uint8_t msg_type;
1024 };
1025 
1027 #ifndef __cplusplus
1029  .teid = RTE_BE32(0xffffffff),
1030 };
1031 #endif
1032 
1039  struct rte_esp_hdr hdr;
1040 };
1041 
1043 #ifndef __cplusplus
1045  .hdr = {
1046  .spi = RTE_BE32(0xffffffff),
1047  },
1048 };
1049 #endif
1050 
1063  uint8_t vni[3];
1064  uint8_t rsvd1;
1065 };
1066 
1068 #ifndef __cplusplus
1070  .vni = "\xff\xff\xff",
1071 };
1072 #endif
1073 
1080  uint8_t flags;
1081  uint8_t rsvd0[2];
1082  uint8_t protocol;
1083  uint8_t vni[3];
1084  uint8_t rsvd1;
1085 };
1086 
1088 #ifndef __cplusplus
1090  .vni = "\xff\xff\xff",
1091 };
1092 #endif
1093 
1102  uint8_t hln;
1103  uint8_t pln;
1109 };
1110 
1112 #ifndef __cplusplus
1113 static const struct rte_flow_item_arp_eth_ipv4
1115  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1116  .spa = RTE_BE32(0xffffffff),
1117  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1118  .tpa = RTE_BE32(0xffffffff),
1119 };
1120 #endif
1121 
1133  uint8_t next_hdr;
1134 };
1135 
1137 #ifndef __cplusplus
1138 static const
1140  .next_hdr = 0xff,
1141 };
1142 #endif
1143 
1150  uint8_t type;
1151  uint8_t code;
1152  uint16_t checksum;
1153 };
1154 
1156 #ifndef __cplusplus
1158  .type = 0xff,
1159  .code = 0xff,
1160 };
1161 #endif
1162 
1169  uint8_t type;
1170  uint8_t code;
1173  uint8_t target_addr[16];
1174 };
1175 
1177 #ifndef __cplusplus
1178 static const
1180  .target_addr =
1181  "\xff\xff\xff\xff\xff\xff\xff\xff"
1182  "\xff\xff\xff\xff\xff\xff\xff\xff",
1183 };
1184 #endif
1185 
1192  uint8_t type;
1193  uint8_t code;
1200  uint8_t target_addr[16];
1201 };
1202 
1204 #ifndef __cplusplus
1205 static const
1207  .target_addr =
1208  "\xff\xff\xff\xff\xff\xff\xff\xff"
1209  "\xff\xff\xff\xff\xff\xff\xff\xff",
1210 };
1211 #endif
1212 
1225  uint8_t type;
1226  uint8_t length;
1227 };
1228 
1230 #ifndef __cplusplus
1231 static const struct rte_flow_item_icmp6_nd_opt
1233  .type = 0xff,
1234 };
1235 #endif
1236 
1249  uint8_t type;
1250  uint8_t length;
1252 };
1253 
1255 #ifndef __cplusplus
1256 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1258  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1259 };
1260 #endif
1261 
1274  uint8_t type;
1275  uint8_t length;
1277 };
1278 
1280 #ifndef __cplusplus
1281 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1283  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1284 };
1285 #endif
1286 
1298  uint32_t data;
1299 };
1300 
1302 #ifndef __cplusplus
1304  .data = UINT32_MAX,
1305 };
1306 #endif
1307 
1314  uint8_t pdu_type;
1315  uint8_t qfi;
1316 };
1317 
1319 #ifndef __cplusplus
1320 static const struct rte_flow_item_gtp_psc
1322  .qfi = 0x3f,
1323 };
1324 #endif
1325 
1335  uint8_t version_type;
1336  uint8_t code;
1339 };
1340 
1355 };
1356 
1358 #ifndef __cplusplus
1359 static const struct rte_flow_item_pppoe_proto_id
1361  .proto_id = RTE_BE16(0xffff),
1362 };
1363 #endif
1364 
1374  uint32_t data;
1375  uint8_t index;
1376 };
1377 
1379 #ifndef __cplusplus
1381  .data = 0xffffffff,
1382  .index = 0xff,
1383 };
1384 #endif
1385 
1393 };
1394 
1396 #ifndef __cplusplus
1398  .session_id = RTE_BE32(UINT32_MAX),
1399 };
1400 #endif
1401 
1402 
1422  uint32_t id;
1423 };
1424 
1426 #ifndef __cplusplus
1428  .id = 0xffffffff,
1429 };
1430 #endif
1431 
1442  uint32_t version:2;
1443  uint32_t oam_pkt:1;
1444  uint32_t reserved:1;
1445  uint32_t ttl:6;
1446  uint32_t length:6;
1447  uint32_t reserved1:4;
1448  uint32_t mdtype:4;
1449  uint32_t next_proto:8;
1450  uint32_t spi:24;
1451  uint32_t sindex:8;
1452 };
1453 
1455 #ifndef __cplusplus
1457  .mdtype = 0xf,
1458  .next_proto = 0xff,
1459  .spi = 0xffffff,
1460  .sindex = 0xff,
1461 };
1462 #endif
1463 
1474  uint32_t type:8;
1475  uint32_t max_resp_time:8;
1476  uint32_t checksum:16;
1477  uint32_t group_addr;
1478 };
1479 
1481 #ifndef __cplusplus
1483  .group_addr = 0xffffffff,
1484 };
1485 #endif
1486 
1497  uint32_t next_hdr:8;
1498  uint32_t payload_len:8;
1499  uint32_t reserved:16;
1500  uint32_t spi;
1501  uint32_t seq_num;
1502 };
1503 
1505 #ifndef __cplusplus
1507  .spi = 0xffffffff,
1508 };
1509 #endif
1510 
1546  const void *spec;
1547  const void *last;
1548  const void *mask;
1549 };
1550 
1585 
1593 
1601 
1610 
1618 
1626 
1633 
1642 
1652 
1661 
1669 
1677 
1685 
1692 
1700 
1708 
1716 
1724 
1732 
1740 
1749 
1758 
1766 
1774 
1782 
1790 
1798 
1806 
1814 
1823 
1831 
1840 
1847 
1854 
1864 
1874 
1884 
1894 
1905 
1916 
1927 
1934 
1941 
1951 
1961 
1975 
1989 
2003 
2017 
2027 
2034 
2044 
2054 };
2055 
2067  uint32_t id;
2068 };
2069 
2083  uint32_t group;
2084 };
2085 
2092  uint16_t index;
2093 };
2094 
2095 
2122  uint32_t shared:1;
2123  uint32_t reserved:31;
2124  uint32_t id;
2125 };
2126 
2133  uint32_t reset:1;
2134  uint32_t hits_set:1;
2135  uint32_t bytes_set:1;
2136  uint32_t reserved:29;
2137  uint64_t hits;
2138  uint64_t bytes;
2139 };
2140 
2145  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2154  RTE_ETH_HASH_FUNCTION_MAX,
2155 };
2156 
2200  uint32_t level;
2201  uint64_t types;
2202  uint32_t key_len;
2203  uint32_t queue_num;
2204  const uint8_t *key;
2205  const uint16_t *queue;
2206 };
2207 
2221  uint32_t original:1;
2222  uint32_t reserved:31;
2223  uint32_t id;
2224 };
2225 
2235  uint32_t original:1;
2236  uint32_t reserved:31;
2237  uint32_t index;
2238 };
2239 
2248  uint32_t original:1;
2249  uint32_t reserved:31;
2250  uint32_t id;
2251 };
2252 
2262  uint32_t mtr_id;
2263 };
2264 
2297 };
2298 
2306  uint8_t mpls_ttl;
2307 };
2308 
2316  uint8_t nw_ttl;
2317 };
2318 
2327 };
2328 
2337 };
2338 
2346  uint8_t vlan_pcp;
2347 };
2348 
2357 };
2358 
2367 };
2368 
2402 };
2403 
2436 };
2437 
2458  uint8_t *data;
2459  uint8_t *preserve;
2460  size_t size;
2461 };
2462 
2479  uint8_t *data;
2480  size_t size;
2481 };
2482 
2495  rte_be32_t ipv4_addr;
2496 };
2497 
2510  uint8_t ipv6_addr[16];
2511 };
2512 
2525  rte_be16_t port;
2526 };
2527 
2534  uint8_t ttl_value;
2535 };
2536 
2543  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2544 };
2545 
2556  uint32_t data;
2557  uint32_t mask;
2558  uint8_t index;
2559 };
2560 
2581  uint32_t data;
2582  uint32_t mask;
2583 };
2584 
2593  uint8_t dscp;
2594 };
2595 
2596 /* Mbuf dynamic field offset for metadata. */
2597 extern int rte_flow_dynf_metadata_offs;
2598 
2599 /* Mbuf dynamic field flag mask for metadata. */
2600 extern uint64_t rte_flow_dynf_metadata_mask;
2601 
2602 /* Mbuf dynamic field pointer for metadata. */
2603 #define RTE_FLOW_DYNF_METADATA(m) \
2604  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
2605 
2606 /* Mbuf dynamic flags for metadata. */
2607 #define PKT_RX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2608 #define PKT_TX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2609 
2610 __rte_experimental
2611 static inline uint32_t
2612 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
2613 {
2614  return *RTE_FLOW_DYNF_METADATA(m);
2615 }
2616 
2617 __rte_experimental
2618 static inline void
2619 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
2620 {
2621  *RTE_FLOW_DYNF_METADATA(m) = v;
2622 }
2623 
2624 /*
2625  * Definition of a single action.
2626  *
2627  * A list of actions is terminated by a END action.
2628  *
2629  * For simple actions without a configuration object, conf remains NULL.
2630  */
2631 struct rte_flow_action {
2632  enum rte_flow_action_type type;
2633  const void *conf;
2634 };
2635 
2642 struct rte_flow;
2643 
2668 };
2669 
2683  const void *cause;
2684  const char *message;
2685 };
2686 
2697  union {
2698  const struct rte_flow_attr *attr_ro;
2700  };
2701  union {
2702  const struct rte_flow_item *pattern_ro;
2704  };
2705  union {
2706  const struct rte_flow_action *actions_ro;
2707  struct rte_flow_action *actions;
2708  };
2709 };
2710 
2723 
2735 
2747 
2759 
2772 
2785 
2798 
2812 
2826 
2840 
2854 };
2855 
2873 __rte_experimental
2874 int
2875 rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error);
2876 
2883 __rte_experimental
2884 static inline int
2886 {
2887  return !!rte_flow_dynf_metadata_mask;
2888 }
2889 
2900 __rte_experimental
2901 int
2903 
2956 int
2957 rte_flow_validate(uint16_t port_id,
2958  const struct rte_flow_attr *attr,
2959  const struct rte_flow_item pattern[],
2960  const struct rte_flow_action actions[],
2961  struct rte_flow_error *error);
2962 
2983 struct rte_flow *
2984 rte_flow_create(uint16_t port_id,
2985  const struct rte_flow_attr *attr,
2986  const struct rte_flow_item pattern[],
2987  const struct rte_flow_action actions[],
2988  struct rte_flow_error *error);
2989 
3010 int
3011 rte_flow_destroy(uint16_t port_id,
3012  struct rte_flow *flow,
3013  struct rte_flow_error *error);
3014 
3031 int
3032 rte_flow_flush(uint16_t port_id,
3033  struct rte_flow_error *error);
3034 
3059 int
3060 rte_flow_query(uint16_t port_id,
3061  struct rte_flow *flow,
3062  const struct rte_flow_action *action,
3063  void *data,
3064  struct rte_flow_error *error);
3065 
3107 int
3108 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
3109 
3127 int
3128 rte_flow_error_set(struct rte_flow_error *error,
3129  int code,
3130  enum rte_flow_error_type type,
3131  const void *cause,
3132  const char *message);
3133 
3139  size_t size;
3142  struct rte_flow_action *actions;
3143  uint8_t data[];
3144 };
3145 
3172 __rte_deprecated
3173 size_t
3174 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
3175  const struct rte_flow_attr *attr,
3176  const struct rte_flow_item *items,
3177  const struct rte_flow_action *actions);
3178 
3219 __rte_experimental
3220 int
3222  void *dst,
3223  size_t size,
3224  const void *src,
3225  struct rte_flow_error *error);
3226 
3227 #ifdef __cplusplus
3228 }
3229 #endif
3230 
3231 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:99
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1257
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:969
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1061
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:2707
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1206
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:779
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:899
rte_be16_t protocol
Definition: rte_flow.h:1062
uint32_t num
Definition: rte_flow.h:559
struct rte_flow_attr * attr
Definition: rte_flow.h:2699
uint32_t rte_be32_t
uint32_t original
Definition: rte_flow.h:2221
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:76
struct rte_flow_item * definition
Definition: rte_flow.h:2401
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:975
struct rte_flow_attr attr
Definition: rte_flow.h:3140
rte_be16_t msg_len
Definition: rte_flow.h:1022
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1028
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:802
#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:1069
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2698
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:859
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:564
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1303
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1044
struct rte_icmp_hdr hdr
Definition: rte_flow.h:797
__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:1020
struct rte_ether_addr tla
Definition: rte_flow.h:1276
rte_be16_t protocol
Definition: rte_flow.h:927
uint32_t reserved
Definition: rte_flow.h:676
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:1157
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:3142
uint8_t data[]
Definition: rte_flow.h:3143
struct rte_ether_addr tha
Definition: rte_flow.h:1107
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:752
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1427
rte_be32_t src_addr
Definition: rte_ip.h:42
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1232
static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:624
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:881
uint8_t src_addr[16]
Definition: rte_ip.h:363
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:650
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:537
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:934
const void * mask
Definition: rte_flow.h:1548
struct rte_flow_item * pattern
Definition: rte_flow.h:2703
enum rte_eth_hash_function func
Definition: rte_flow.h:2174
rte_be16_t type
Definition: rte_flow.h:710
enum rte_flow_error_type type
Definition: rte_flow.h:2682
const void * cause
Definition: rte_flow.h:2683
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:821
struct rte_esp_hdr hdr
Definition: rte_flow.h:1039
rte_flow_error_type
Definition: rte_flow.h:2650
rte_flow_conv_op
Definition: rte_flow.h:2716
rte_be16_t src_port
Definition: rte_udp.h:29
uint32_t id
Definition: rte_flow.h:588
const uint8_t * pattern
Definition: rte_flow.h:680
uint32_t search
Definition: rte_flow.h:675
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:901
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:685
uint16_t limit
Definition: rte_flow.h:678
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:954
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1179
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:2684
rte_eth_hash_function
Definition: rte_flow.h:2144
uint16_t length
Definition: rte_flow.h:679
const void * last
Definition: rte_flow.h:1547
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1282
rte_be32_t teid
Definition: rte_flow.h:1023
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
uint32_t ingress
Definition: rte_flow.h:78
enum rte_flow_item_type type
Definition: rte_flow.h:1545
rte_be16_t tci
Definition: rte_flow.h:732
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:757
size_t size
Definition: rte_flow.h:3139
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:926
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1321
rte_be16_t length
Definition: rte_flow.h:1338
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2706
struct rte_flow_item * items
Definition: rte_flow.h:3141
rte_flow_action_type
Definition: rte_flow.h:1577
struct rte_ether_addr sla
Definition: rte_flow.h:1251
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:708
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1397
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1482
const void * spec
Definition: rte_flow.h:1546
uint8_t label_tc_s[3]
Definition: rte_flow.h:948
uint8_t version_type
Definition: rte_flow.h:1335
#define RTE_STD_C11
Definition: rte_common.h:40
const uint8_t * key
Definition: rte_flow.h:2204
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1114
struct rte_ether_addr sha
Definition: rte_flow.h:1105
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:715
rte_be16_t src_port
Definition: rte_tcp.h:29
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:2222
__rte_experimental int rte_flow_dynf_metadata_register(void)
static const struct rte_flow_item_ah rte_flow_item_ah_mask
Definition: rte_flow.h:1506
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1380
uint32_t priority
Definition: rte_flow.h:77
struct rte_ether_addr src
Definition: rte_flow.h:709
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1139
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:593
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:774
rte_be16_t protocol
Definition: rte_flow.h:970
uint32_t queue_num
Definition: rte_flow.h:2203
uint8_t tni[3]
Definition: rte_flow.h:928
struct rte_tcp_hdr hdr
Definition: rte_flow.h:835
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1360
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error)
uint32_t transfer
Definition: rte_flow.h:98
struct rte_flow_item * definition
Definition: rte_flow.h:2435
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:738
uint8_t msg_type
Definition: rte_flow.h:1021
uint32_t egress
Definition: rte_flow.h:79
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:909
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:2885
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:840
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1003
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:733
uint8_t rsvd0[3]
Definition: rte_flow.h:874
struct rte_udp_hdr hdr
Definition: rte_flow.h:816
const uint16_t * queue
Definition: rte_flow.h:2205
rte_flow_item_type
Definition: rte_flow.h:118
uint32_t relative
Definition: rte_flow.h:674
uint8_t vni[3]
Definition: rte_flow.h:875
int32_t offset
Definition: rte_flow.h:677
rte_be16_t inner_type
Definition: rte_flow.h:904
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2702
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1089
rte_be16_t session_id
Definition: rte_flow.h:1337
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1456
struct rte_sctp_hdr hdr
Definition: rte_flow.h:854