DPDK  23.11.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_compat.h>
21 #include <rte_common.h>
22 #include <rte_ether.h>
23 #include <rte_arp.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_vxlan.h>
30 #include <rte_esp.h>
31 #include <rte_higig.h>
32 #include <rte_ecpri.h>
33 #include <rte_bitops.h>
34 #include <rte_mbuf_dyn.h>
35 #include <rte_meter.h>
36 #include <rte_gtp.h>
37 #include <rte_l2tpv2.h>
38 #include <rte_ppp.h>
39 #include <rte_gre.h>
40 #include <rte_macsec.h>
41 #include <rte_ib.h>
42 
43 #include "rte_ethdev.h"
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 #define RTE_FLOW_LOG(level, ...) \
50  rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, "" __VA_ARGS__)
51 
92 struct rte_flow_attr {
103  uint32_t group;
104  uint32_t priority;
108  uint32_t ingress:1;
112  uint32_t egress:1;
130  uint32_t transfer:1;
131  uint32_t reserved:29;
132 };
133 
134 struct rte_flow_group_attr {
135  uint32_t ingress:1;
136  uint32_t egress:1;
137  uint32_t transfer:1;
138 };
139 
166 
176 
186 
194 
208 
215 
222 
229 
236 
243 
250 
257 
264 
271 
278 
285 
292 
299 
306 
318 
327 
336 
345 
352 
359 
366 
373 
380 
387 
394 
401 
408 
416 
424 
431 
440 
453 
462 
471 
480 
489 
496 
503 
510 
516 
525 
534 
541 
550 
557 
564 
575 
584 
593 
603 
612 
619 
626 
633 
640 
647 
654 
661 
668 
675 
684 
692 
699 
707 };
708 
720 };
721 
728  enum rte_flow_quota_state state;
729 };
730 
734 #ifndef __cplusplus
736  .state = (enum rte_flow_quota_state)0xff
737 };
738 #endif
739 
746  struct rte_higig2_hdr hdr;
747 };
748 
750 #ifndef __cplusplus
752  .hdr = {
753  .ppt1 = {
754  .classification = RTE_BE16(UINT16_MAX),
755  .vid = RTE_BE16(0xfff),
756  },
757  },
758 };
759 #endif
760 
773  uint32_t num;
774 };
775 
777 #ifndef __cplusplus
779  .num = 0x00000000,
780 };
781 #endif
782 
798  uint32_t id;
799 };
800 
802 #ifndef __cplusplus
804  .id = 0xffffffff,
805 };
806 #endif
807 
827  uint32_t relative:1;
828  uint32_t search:1;
829  uint32_t reserved:30;
830  int32_t offset;
831  uint16_t limit;
832  uint16_t length;
833  const uint8_t *pattern;
834 };
835 
837 #ifndef __cplusplus
839  .relative = 1,
840  .search = 1,
841  .reserved = 0x3fffffff,
842  .offset = 0xffffffff,
843  .limit = 0xffff,
844  .length = 0xffff,
845  .pattern = NULL,
846 };
847 #endif
848 
867  union {
868  struct {
869  /*
870  * These fields are retained for compatibility.
871  * Please switch to the new header field below.
872  */
873  struct rte_ether_addr dst;
874  struct rte_ether_addr src;
876  };
877  struct rte_ether_hdr hdr;
878  };
879  uint32_t has_vlan:1;
880  uint32_t reserved:31;
881 };
882 
884 #ifndef __cplusplus
886  .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
887  .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
888  .hdr.ether_type = RTE_BE16(0x0000),
889 };
890 #endif
891 
908  union {
909  struct {
910  /*
911  * These fields are retained for compatibility.
912  * Please switch to the new header field below.
913  */
916  };
917  struct rte_vlan_hdr hdr;
918  };
920  uint32_t has_more_vlan:1;
921  uint32_t reserved:31;
922 };
923 
925 #ifndef __cplusplus
927  .hdr.vlan_tci = RTE_BE16(0x0fff),
928  .hdr.eth_proto = RTE_BE16(0x0000),
929 };
930 #endif
931 
940  struct rte_ipv4_hdr hdr;
941 };
942 
944 #ifndef __cplusplus
946  .hdr = {
947  .src_addr = RTE_BE32(0xffffffff),
948  .dst_addr = RTE_BE32(0xffffffff),
949  },
950 };
951 #endif
952 
961  struct rte_ipv6_hdr hdr;
963  uint32_t has_hop_ext:1;
965  uint32_t has_route_ext:1;
967  uint32_t has_frag_ext:1;
969  uint32_t has_auth_ext:1;
971  uint32_t has_esp_ext:1;
973  uint32_t has_dest_ext:1;
975  uint32_t has_mobil_ext:1;
977  uint32_t has_hip_ext:1;
979  uint32_t has_shim6_ext:1;
981  uint32_t reserved:23;
982 };
983 
985 #ifndef __cplusplus
987  .hdr = {
988  .src_addr =
989  "\xff\xff\xff\xff\xff\xff\xff\xff"
990  "\xff\xff\xff\xff\xff\xff\xff\xff",
991  .dst_addr =
992  "\xff\xff\xff\xff\xff\xff\xff\xff"
993  "\xff\xff\xff\xff\xff\xff\xff\xff",
994  },
995 };
996 #endif
997 
1007  struct rte_ipv6_routing_ext hdr;
1008 };
1009 
1016  struct rte_icmp_hdr hdr;
1017 };
1018 
1020 #ifndef __cplusplus
1022  .hdr = {
1023  .icmp_type = 0xff,
1024  .icmp_code = 0xff,
1025  },
1026 };
1027 #endif
1028 
1035  struct rte_udp_hdr hdr;
1036 };
1037 
1039 #ifndef __cplusplus
1041  .hdr = {
1042  .src_port = RTE_BE16(0xffff),
1043  .dst_port = RTE_BE16(0xffff),
1044  },
1045 };
1046 #endif
1047 
1054  struct rte_tcp_hdr hdr;
1055 };
1056 
1058 #ifndef __cplusplus
1060  .hdr = {
1061  .src_port = RTE_BE16(0xffff),
1062  .dst_port = RTE_BE16(0xffff),
1063  },
1064 };
1065 #endif
1066 
1073  struct rte_sctp_hdr hdr;
1074 };
1075 
1077 #ifndef __cplusplus
1079  .hdr = {
1080  .src_port = RTE_BE16(0xffff),
1081  .dst_port = RTE_BE16(0xffff),
1082  },
1083 };
1084 #endif
1085 
1092  union {
1093  struct {
1094  /*
1095  * These fields are retained for compatibility.
1096  * Please switch to the new header field below.
1097  */
1098  uint8_t flags;
1099  uint8_t rsvd0[3];
1100  uint8_t vni[3];
1101  uint8_t rsvd1;
1102  };
1103  struct rte_vxlan_hdr hdr;
1104  };
1105 };
1106 
1108 #ifndef __cplusplus
1110  .hdr.vni = "\xff\xff\xff",
1111 };
1112 #endif
1113 
1130  uint8_t in_ecid_e;
1131  uint8_t ecid_e;
1133 };
1134 
1136 #ifndef __cplusplus
1138  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1139 };
1140 #endif
1141 
1156  uint8_t tni[3];
1157  uint8_t flow_id;
1158 };
1159 
1161 #ifndef __cplusplus
1163  .tni = "\xff\xff\xff",
1164 };
1165 #endif
1166 
1176  uint8_t label_tc_s[3];
1177  uint8_t ttl;
1178 };
1179 
1181 #ifndef __cplusplus
1183  .label_tc_s = "\xff\xff\xf0",
1184 };
1185 #endif
1186 
1199 };
1200 
1202 #ifndef __cplusplus
1204  .protocol = RTE_BE16(0xffff),
1205 };
1206 #endif
1207 
1214  struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1215  struct rte_gre_hdr_opt_key key;
1216  struct rte_gre_hdr_opt_sequence sequence;
1217 };
1218 
1225  struct rte_macsec_hdr macsec_hdr;
1226 };
1227 
1246  uint32_t thresh;
1247 };
1248 
1250 #ifndef __cplusplus
1252  .thresh = 0xffffffff,
1253 };
1254 #endif
1255 
1262  union {
1263  struct {
1264  /*
1265  * These are old fields kept for compatibility.
1266  * Please prefer hdr field below.
1267  */
1275  uint8_t msg_type;
1278  };
1279  struct rte_gtp_hdr hdr;
1280  };
1281 };
1282 
1284 #ifndef __cplusplus
1286  .hdr.teid = RTE_BE32(UINT32_MAX),
1287 };
1288 #endif
1289 
1296  struct rte_esp_hdr hdr;
1297 };
1298 
1300 #ifndef __cplusplus
1302  .hdr = {
1303  .spi = RTE_BE32(0xffffffff),
1304  },
1305 };
1306 #endif
1307 
1320  uint8_t vni[3];
1321  uint8_t rsvd1;
1322 };
1323 
1325 #ifndef __cplusplus
1327  .vni = "\xff\xff\xff",
1328 };
1329 #endif
1330 
1337  union {
1338  struct {
1339  /*
1340  * These are old fields kept for compatibility.
1341  * Please prefer hdr field below.
1342  */
1343  uint8_t flags;
1344  uint8_t rsvd0[2];
1345  uint8_t protocol;
1346  uint8_t vni[3];
1347  uint8_t rsvd1;
1348  };
1349  struct rte_vxlan_gpe_hdr hdr;
1350  };
1351 };
1352 
1354 #ifndef __cplusplus
1356  .hdr.vni = "\xff\xff\xff",
1357 };
1358 #endif
1359 
1366  union {
1367  struct {
1368  /*
1369  * These are old fields kept for compatibility.
1370  * Please prefer hdr field below.
1371  */
1374  uint8_t hln;
1375  uint8_t pln;
1377  struct rte_ether_addr sha;
1379  struct rte_ether_addr tha;
1381  };
1382  struct rte_arp_hdr hdr;
1383  };
1384 };
1385 
1387 #ifndef __cplusplus
1388 static const struct rte_flow_item_arp_eth_ipv4
1390  .hdr.arp_data.arp_sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1391  .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1392  .hdr.arp_data.arp_tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1393  .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1394 };
1395 #endif
1396 
1408  uint8_t next_hdr;
1409 };
1410 
1412 #ifndef __cplusplus
1413 static const
1415  .next_hdr = 0xff,
1416 };
1417 #endif
1418 
1430  struct rte_ipv6_fragment_ext hdr;
1431 };
1432 
1439  uint8_t type;
1440  uint8_t code;
1441  uint16_t checksum;
1442 };
1443 
1445 #ifndef __cplusplus
1447  .type = 0xff,
1448  .code = 0xff,
1449 };
1450 #endif
1451 
1459  struct rte_icmp_echo_hdr hdr;
1460 };
1461 
1468  uint8_t type;
1469  uint8_t code;
1472  uint8_t target_addr[16];
1473 };
1474 
1476 #ifndef __cplusplus
1477 static const
1479  .target_addr =
1480  "\xff\xff\xff\xff\xff\xff\xff\xff"
1481  "\xff\xff\xff\xff\xff\xff\xff\xff",
1482 };
1483 #endif
1484 
1491  uint8_t type;
1492  uint8_t code;
1499  uint8_t target_addr[16];
1500 };
1501 
1503 #ifndef __cplusplus
1504 static const
1506  .target_addr =
1507  "\xff\xff\xff\xff\xff\xff\xff\xff"
1508  "\xff\xff\xff\xff\xff\xff\xff\xff",
1509 };
1510 #endif
1511 
1524  uint8_t type;
1525  uint8_t length;
1526 };
1527 
1529 #ifndef __cplusplus
1530 static const struct rte_flow_item_icmp6_nd_opt
1532  .type = 0xff,
1533 };
1534 #endif
1535 
1548  uint8_t type;
1549  uint8_t length;
1550  struct rte_ether_addr sla;
1551 };
1552 
1554 #ifndef __cplusplus
1555 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1557  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1558 };
1559 #endif
1560 
1573  uint8_t type;
1574  uint8_t length;
1575  struct rte_ether_addr tla;
1576 };
1577 
1579 #ifndef __cplusplus
1580 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1582  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1583 };
1584 #endif
1585 
1598  uint32_t data;
1599 };
1600 
1602 #ifndef __cplusplus
1604  .data = UINT32_MAX,
1605 };
1606 #endif
1607 
1615 };
1616 
1618 #ifndef __cplusplus
1619 static const struct rte_flow_item_gtp_psc
1621  .hdr.qfi = 0x3f,
1622 };
1623 #endif
1624 
1634  uint8_t version_type;
1635  uint8_t code;
1638 };
1639 
1654 };
1655 
1657 #ifndef __cplusplus
1658 static const struct rte_flow_item_pppoe_proto_id
1660  .proto_id = RTE_BE16(0xffff),
1661 };
1662 #endif
1663 
1673  uint32_t data;
1674  uint8_t index;
1675 };
1676 
1678 #ifndef __cplusplus
1680  .data = 0xffffffff,
1681  .index = 0xff,
1682 };
1683 #endif
1684 
1692 };
1693 
1695 #ifndef __cplusplus
1697  .session_id = RTE_BE32(UINT32_MAX),
1698 };
1699 #endif
1700 
1701 
1721  uint32_t id;
1722 };
1723 
1725 #ifndef __cplusplus
1727  .id = 0xffffffff,
1728 };
1729 #endif
1730 
1740  uint32_t version:2;
1741  uint32_t oam_pkt:1;
1742  uint32_t reserved:1;
1743  uint32_t ttl:6;
1744  uint32_t length:6;
1745  uint32_t reserved1:4;
1746  uint32_t mdtype:4;
1747  uint32_t next_proto:8;
1748  uint32_t spi:24;
1749  uint32_t sindex:8;
1750 };
1751 
1753 #ifndef __cplusplus
1755  .mdtype = 0xf,
1756  .next_proto = 0xff,
1757  .spi = 0xffffff,
1758  .sindex = 0xff,
1759 };
1760 #endif
1761 
1771  uint32_t type:8;
1772  uint32_t max_resp_time:8;
1773  uint32_t checksum:16;
1774  uint32_t group_addr;
1775 };
1776 
1778 #ifndef __cplusplus
1780  .group_addr = 0xffffffff,
1781 };
1782 #endif
1783 
1793  uint32_t next_hdr:8;
1794  uint32_t payload_len:8;
1795  uint32_t reserved:16;
1796  uint32_t spi;
1797  uint32_t seq_num;
1798 };
1799 
1801 #ifndef __cplusplus
1803  .spi = 0xffffffff,
1804 };
1805 #endif
1806 
1816  uint8_t s_field;
1817  uint8_t msg_type;
1818  rte_be16_t msg_len;
1819  rte_be64_t seid;
1820 };
1821 
1823 #ifndef __cplusplus
1825  .s_field = 0x01,
1826  .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1827 };
1828 #endif
1829 
1839  struct rte_ecpri_combined_msg_hdr hdr;
1840 };
1841 
1843 #ifndef __cplusplus
1845  .hdr = {
1846  .common = {
1847  .u32 = 0x0,
1848  },
1849  },
1850 };
1851 #endif
1852 
1859  rte_be16_t option_class;
1860  uint8_t option_type;
1861  uint8_t option_len;
1862  uint32_t *data;
1863 };
1864 
1866 #ifndef __cplusplus
1867 static const struct rte_flow_item_geneve_opt
1869  .option_type = 0xff,
1870 };
1871 #endif
1872 
1885  uint32_t level;
1886  union {
1887  __extension__
1888  struct {
1890  uint64_t packet_ok:1;
1892  uint64_t l2_ok:1;
1894  uint64_t l3_ok:1;
1896  uint64_t l4_ok:1;
1898  uint64_t l2_crc_ok:1;
1900  uint64_t ipv4_csum_ok:1;
1902  uint64_t l4_csum_ok:1;
1904  uint64_t l3_len_ok:1;
1905  uint64_t reserved:56;
1906  };
1907  uint64_t value;
1908  };
1909 };
1910 
1911 #ifndef __cplusplus
1912 static const struct rte_flow_item_integrity
1913 rte_flow_item_integrity_mask = {
1914  .level = 0,
1915  .value = 0,
1916 };
1917 #endif
1918 
1922 #define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1923 
1926 #define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1927 
1931 #define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1932 
1936 #define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1937 
1941 #define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1942 
1954  uint32_t flags;
1955 };
1956 
1958 #ifndef __cplusplus
1960  .flags = 0xffffffff,
1961 };
1962 #endif
1963 
1970  uint16_t port_id;
1971 };
1972 
1974 #ifndef __cplusplus
1976  .port_id = 0xffff,
1977 };
1978 #endif
1979 
1989  struct rte_l2tpv2_combined_msg_hdr hdr;
1990 };
1991 
1993 #ifndef __cplusplus
1995  /*
1996  * flags and version bit mask
1997  * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1998  * T L x x S x O P x x x x V V V V
1999  */
2000  .hdr = {
2001  .common = {
2002  .flags_version = RTE_BE16(0xcb0f),
2003  },
2004  },
2005 };
2006 #endif
2007 
2017  struct rte_ppp_hdr hdr;
2018 };
2019 
2021 #ifndef __cplusplus
2023  .hdr = {
2024  .addr = 0xff,
2025  .ctrl = 0xff,
2026  .proto_id = RTE_BE16(0xffff),
2027  }
2028 };
2029 #endif
2030 
2037  struct rte_ib_bth hdr;
2038 };
2039 
2041 #ifndef __cplusplus
2043  .hdr = {
2044  .opcode = 0xff,
2045  .dst_qp = "\xff\xff\xff",
2046  },
2047 };
2048 #endif
2049 
2085  const void *spec;
2086  const void *last;
2087  const void *mask;
2088 };
2089 
2107  struct rte_flow_item_flex_handle *handle;
2108  uint32_t length;
2109  const uint8_t *pattern;
2110 };
2142 };
2143 
2173 };
2174 
2180 __extension__
2184  uint32_t field_size;
2185  int32_t field_base;
2186  uint32_t offset_base;
2187  uint32_t offset_mask;
2188  int32_t offset_shift;
2189  uint32_t field_id:16;
2190  uint32_t reserved:16;
2191 };
2192 
2203  struct rte_flow_item item;
2208  uint32_t next;
2209 };
2210 
2227  struct rte_flow_item_flex_field next_header;
2232  struct rte_flow_item_flex_field next_protocol;
2240  uint32_t nb_samples;
2250  uint32_t nb_inputs;
2258  uint32_t nb_outputs;
2259 };
2260 
2267  enum rte_color color;
2268 };
2269 
2271 #ifndef __cplusplus
2273  .color = RTE_COLORS,
2274 };
2275 #endif
2276 
2292  uint8_t affinity;
2293 };
2294 
2296 #ifndef __cplusplus
2297 static const struct rte_flow_item_aggr_affinity
2299  .affinity = 0xff,
2300 };
2301 #endif
2302 
2312  uint16_t tx_queue;
2313 };
2314 
2316 #ifndef __cplusplus
2318  .tx_queue = 0xffff,
2319 };
2320 #endif
2321 
2329  uint32_t packet_type;
2330 };
2331 
2333 #ifndef __cplusplus
2335  .packet_type = 0xffffffff,
2336 };
2337 #endif
2338 
2373 
2381 
2389 
2398 
2410 
2422 
2429 
2438 
2449 
2458 
2470 
2482 
2493 
2501 
2509 
2520 
2528 
2536 
2544 
2552 
2560 
2568 
2576 
2585 
2593 
2602 
2609 
2616 
2629 
2642 
2655 
2668 
2682 
2696 
2707 
2717 
2727 
2740 
2753 
2770 
2787 
2804 
2821 
2834 
2844 
2857 
2870 
2883 
2891 
2902 
2913 
2921 
2930 
2938 
2945 
2953 
2961 
2971 
2980 
2990 
2999 
3009 
3016 
3025 };
3026 
3039 };
3040 
3051  int64_t quota;
3052 };
3053 
3063  int64_t quota;
3064 };
3065 
3077 };
3078 
3089  int64_t quota;
3090 };
3091 
3103  uint32_t id;
3104 };
3105 
3119  uint32_t group;
3120 };
3121 
3128  uint16_t index;
3129 };
3130 
3145  uint32_t timeout:24;
3146  uint32_t reserved:8;
3148  void *context;
3149 };
3150 
3158  uint32_t reserved:6;
3159  uint32_t aged:1;
3162  uint32_t sec_since_last_hit:24;
3163 };
3164 
3185  uint32_t reserved:6;
3186  uint32_t timeout_valid:1;
3187  uint32_t timeout:24;
3189  uint32_t touch:1;
3190 };
3191 
3210  uint32_t id;
3211 };
3212 
3219  uint32_t reset:1;
3220  uint32_t hits_set:1;
3221  uint32_t bytes_set:1;
3222  uint32_t reserved:29;
3223  uint64_t hits;
3224  uint64_t bytes;
3225 };
3226 
3270  uint32_t level;
3271  uint64_t types;
3272  uint32_t key_len;
3273  uint32_t queue_num;
3274  const uint8_t *key;
3275  const uint16_t *queue;
3276 };
3277 
3295  uint32_t original:1;
3296  uint32_t reserved:31;
3297  uint32_t id;
3298 };
3299 
3312  uint32_t original:1;
3313  uint32_t reserved:31;
3314  uint32_t id;
3315 };
3316 
3326  uint32_t mtr_id;
3327 };
3328 
3361 };
3362 
3371 };
3372 
3381 };
3382 
3390  uint8_t vlan_pcp;
3391 };
3392 
3401 };
3402 
3411 };
3412 
3445 };
3446 
3478 };
3479 
3500  uint8_t *data;
3501  uint8_t *preserve;
3502  size_t size;
3503 };
3504 
3521  uint8_t *data;
3522  size_t size;
3523 };
3524 
3537  rte_be32_t ipv4_addr;
3538 };
3539 
3552  uint8_t ipv6_addr[16];
3553 };
3554 
3568  uint8_t *data;
3569  size_t size;
3570  uint8_t type;
3571 };
3572 
3584  uint8_t type;
3585 };
3586 
3599  rte_be16_t port;
3600 };
3601 
3608  uint8_t ttl_value;
3609 };
3610 
3617  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3618 };
3619 
3630  uint32_t data;
3631  uint32_t mask;
3632  uint8_t index;
3633 };
3634 
3655  uint32_t data;
3656  uint32_t mask;
3657 };
3658 
3667  uint8_t dscp;
3668 };
3669 
3687 struct rte_flow_action_handle;
3688 
3705 };
3706 
3717 };
3718 
3730  uint32_t scale:4;
3732  uint32_t close_initiated:1;
3734  uint32_t last_ack_seen:1;
3739  uint32_t data_unacked:1;
3744  uint32_t sent_end;
3749  uint32_t reply_end;
3751  uint32_t max_win;
3753  uint32_t max_ack;
3754 };
3755 
3768  uint16_t peer_port;
3773  uint32_t is_original_dir:1;
3781  uint32_t enable:1;
3783  uint32_t live_connection:1;
3785  uint32_t selective_ack:1;
3792  uint32_t last_direction:1;
3794  uint32_t liberal_mode:1;
3802  struct rte_flow_tcp_dir_param original_dir;
3804  struct rte_flow_tcp_dir_param reply_dir;
3806  uint16_t last_window;
3807  enum rte_flow_conntrack_tcp_last_index last_index;
3809  uint32_t last_seq;
3811  uint32_t last_ack;
3816  uint32_t last_end;
3817 };
3818 
3830  uint32_t direction:1;
3832  uint32_t state:1;
3834  uint32_t reserved:30;
3835 };
3836 
3847  enum rte_color color;
3848 };
3849 
3856  uint16_t port_id;
3857 };
3858 
3907 };
3908 
3916  enum rte_flow_field_id field;
3917  union {
3918  struct {
3920  union {
3921  struct {
3956  uint8_t level;
3957  union {
3963  uint8_t tag_index;
3970  struct {
3974  uint8_t type;
3979  };
3980  };
3981  };
3982  struct rte_flow_item_flex_handle *flex_handle;
3983  };
3985  uint32_t offset;
3986  };
3993  uint8_t value[16];
3999  void *pvalue;
4000  };
4001 };
4002 
4010 };
4011 
4023  enum rte_flow_modify_op operation;
4026  uint32_t width;
4027 };
4028 
4041 
4043  struct rte_flow_meter_profile *profile;
4045  struct rte_flow_meter_policy *policy;
4049  int state;
4050 };
4051 
4059  struct rte_flow_action_meter_mark meter_mark;
4061  uint32_t profile_valid:1;
4063  uint32_t policy_valid:1;
4065  uint32_t color_mode_valid:1;
4067  uint32_t state_valid:1;
4069  uint32_t reserved:28;
4070 };
4071 
4080  enum rte_color init_color;
4081 };
4082 
4096  const char *name;
4098  uint32_t size;
4100  const uint8_t *value;
4101 };
4102 
4118  const char *name;
4120  uint32_t args_num;
4123 };
4124 
4125 /* Mbuf dynamic field offset for metadata. */
4126 extern int32_t rte_flow_dynf_metadata_offs;
4127 
4128 /* Mbuf dynamic field flag mask for metadata. */
4129 extern uint64_t rte_flow_dynf_metadata_mask;
4130 
4131 /* Mbuf dynamic field pointer for metadata. */
4132 #define RTE_FLOW_DYNF_METADATA(m) \
4133  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4134 
4135 /* Mbuf dynamic flags for metadata. */
4136 #define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4137 #define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4138 
4139 __rte_experimental
4140 static inline uint32_t
4141 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4142 {
4143  return *RTE_FLOW_DYNF_METADATA(m);
4144 }
4145 
4146 __rte_experimental
4147 static inline void
4148 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4149 {
4150  *RTE_FLOW_DYNF_METADATA(m) = v;
4151 }
4152 
4162  const void *conf;
4163 };
4164 
4171 struct rte_flow;
4172 
4178 struct rte_flow_meter_profile;
4179 
4185 struct rte_flow_meter_policy;
4186 
4204  uint32_t ratio;
4206  const struct rte_flow_action *actions;
4207 };
4208 
4234 };
4235 
4249  const void *cause;
4250  const char *message;
4251 };
4252 
4262  union {
4263  const struct rte_flow_attr *attr_ro;
4265  };
4266  union {
4267  const struct rte_flow_item *pattern_ro;
4269  };
4270  union {
4271  const struct rte_flow_action *actions_ro;
4273  };
4274 };
4275 
4288 
4300 
4312 
4324 
4337 
4350 
4363 
4377 
4391 
4405 
4419 };
4420 
4440 __rte_experimental
4441 int
4442 rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4443  FILE *file, struct rte_flow_error *error);
4444 
4451 __rte_experimental
4452 static inline int
4454 {
4455  return !!rte_flow_dynf_metadata_mask;
4456 }
4457 
4468 __rte_experimental
4469 int
4471 
4524 int
4525 rte_flow_validate(uint16_t port_id,
4526  const struct rte_flow_attr *attr,
4527  const struct rte_flow_item pattern[],
4528  const struct rte_flow_action actions[],
4529  struct rte_flow_error *error);
4530 
4551 struct rte_flow *
4552 rte_flow_create(uint16_t port_id,
4553  const struct rte_flow_attr *attr,
4554  const struct rte_flow_item pattern[],
4555  const struct rte_flow_action actions[],
4556  struct rte_flow_error *error);
4557 
4578 int
4579 rte_flow_destroy(uint16_t port_id,
4580  struct rte_flow *flow,
4581  struct rte_flow_error *error);
4582 
4599 __rte_experimental
4600 int
4601 rte_flow_actions_update(uint16_t port_id,
4602  struct rte_flow *flow,
4603  const struct rte_flow_action actions[],
4604  struct rte_flow_error *error);
4605 
4622 int
4623 rte_flow_flush(uint16_t port_id,
4624  struct rte_flow_error *error);
4625 
4650 int
4651 rte_flow_query(uint16_t port_id,
4652  struct rte_flow *flow,
4653  const struct rte_flow_action *action,
4654  void *data,
4655  struct rte_flow_error *error);
4656 
4702 int
4703 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4704 
4722 int
4723 rte_flow_error_set(struct rte_flow_error *error,
4724  int code,
4725  enum rte_flow_error_type type,
4726  const void *cause,
4727  const char *message);
4728 
4734  size_t size;
4735  struct rte_flow_attr attr;
4738  uint8_t data[];
4739 };
4740 
4767 __rte_deprecated
4768 size_t
4769 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4770  const struct rte_flow_attr *attr,
4771  const struct rte_flow_item *items,
4772  const struct rte_flow_action *actions);
4773 
4814 __rte_experimental
4815 int
4817  void *dst,
4818  size_t size,
4819  const void *src,
4820  struct rte_flow_error *error);
4821 
4850 __rte_experimental
4851 int
4852 rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4853  uint32_t nb_contexts, struct rte_flow_error *error);
4854 
4894 __rte_experimental
4895 int
4896 rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4897  uint32_t nb_contexts, struct rte_flow_error *error);
4898 
4910  uint32_t ingress:1;
4912  uint32_t egress:1;
4917  uint32_t transfer:1;
4918 };
4919 
4947 __rte_experimental
4948 struct rte_flow_action_handle *
4949 rte_flow_action_handle_create(uint16_t port_id,
4950  const struct rte_flow_indir_action_conf *conf,
4951  const struct rte_flow_action *action,
4952  struct rte_flow_error *error);
4953 
4976 __rte_experimental
4977 int
4978 rte_flow_action_handle_destroy(uint16_t port_id,
4979  struct rte_flow_action_handle *handle,
4980  struct rte_flow_error *error);
4981 
5015 __rte_experimental
5016 int
5017 rte_flow_action_handle_update(uint16_t port_id,
5018  struct rte_flow_action_handle *handle,
5019  const void *update,
5020  struct rte_flow_error *error);
5021 
5047 __rte_experimental
5048 int
5049 rte_flow_action_handle_query(uint16_t port_id,
5050  const struct rte_flow_action_handle *handle,
5051  void *data, struct rte_flow_error *error);
5052 
5053 /* Tunnel has a type and the key information. */
5054 struct rte_flow_tunnel {
5059  enum rte_flow_item_type type;
5060  uint64_t tun_id;
5062  union {
5063  struct {
5066  } ipv4;
5067  struct {
5068  uint8_t src_addr[16];
5069  uint8_t dst_addr[16];
5070  } ipv6;
5071  };
5072  rte_be16_t tp_src;
5073  rte_be16_t tp_dst;
5074  uint16_t tun_flags;
5076  bool is_ipv6;
5082  uint8_t tos;
5083  uint8_t ttl;
5084  uint32_t label;
5085 };
5086 
5090 #define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5091 
5095 #define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5096 
5100 #define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5101 
5112  uint64_t flags;
5113  uint32_t group_id;
5114  struct rte_flow_tunnel tunnel;
5115 };
5116 
5140 __rte_experimental
5141 int
5142 rte_flow_tunnel_decap_set(uint16_t port_id,
5143  struct rte_flow_tunnel *tunnel,
5144  struct rte_flow_action **actions,
5145  uint32_t *num_of_actions,
5146  struct rte_flow_error *error);
5147 
5171 __rte_experimental
5172 int
5173 rte_flow_tunnel_match(uint16_t port_id,
5174  struct rte_flow_tunnel *tunnel,
5175  struct rte_flow_item **items,
5176  uint32_t *num_of_items,
5177  struct rte_flow_error *error);
5178 
5190 __rte_experimental
5191 uint64_t
5193 
5215 __rte_experimental
5216 int
5217 rte_flow_get_restore_info(uint16_t port_id,
5218  struct rte_mbuf *m,
5219  struct rte_flow_restore_info *info,
5220  struct rte_flow_error *error);
5221 
5238 __rte_experimental
5239 int
5240 rte_flow_tunnel_action_decap_release(uint16_t port_id,
5241  struct rte_flow_action *actions,
5242  uint32_t num_of_actions,
5243  struct rte_flow_error *error);
5244 
5261 __rte_experimental
5262 int
5263 rte_flow_tunnel_item_release(uint16_t port_id,
5264  struct rte_flow_item *items,
5265  uint32_t num_of_items,
5266  struct rte_flow_error *error);
5267 
5293 int
5294 rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5295  struct rte_flow_error *error);
5296 
5315 __rte_experimental
5316 struct rte_flow_item_flex_handle *
5317 rte_flow_flex_item_create(uint16_t port_id,
5318  const struct rte_flow_item_flex_conf *conf,
5319  struct rte_flow_error *error);
5320 
5335 __rte_experimental
5336 int
5337 rte_flow_flex_item_release(uint16_t port_id,
5338  const struct rte_flow_item_flex_handle *handle,
5339  struct rte_flow_error *error);
5340 
5345 #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5346 
5352 #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5353 
5365  uint32_t max_nb_queues;
5380  uint32_t max_nb_meters;
5390  uint32_t max_nb_quotas;
5395 };
5396 
5408  uint32_t max_size;
5409 };
5410 
5432 __rte_experimental
5433 int
5434 rte_flow_info_get(uint16_t port_id,
5435  struct rte_flow_port_info *port_info,
5436  struct rte_flow_queue_info *queue_info,
5437  struct rte_flow_error *error);
5438 
5451  uint32_t nb_counters;
5461  uint32_t nb_meters;
5466  uint32_t nb_conn_tracks;
5470  uint16_t host_port_id;
5475  uint32_t nb_quotas;
5479  uint32_t flags;
5480 };
5481 
5493  uint32_t size;
5494 };
5495 
5527 __rte_experimental
5528 int
5529 rte_flow_configure(uint16_t port_id,
5530  const struct rte_flow_port_attr *port_attr,
5531  uint16_t nb_queue,
5532  const struct rte_flow_queue_attr *queue_attr[],
5533  struct rte_flow_error *error);
5534 
5539 struct rte_flow_pattern_template;
5540 
5547 __extension__
5556  uint32_t relaxed_matching:1;
5562  uint32_t ingress:1;
5564  uint32_t egress:1;
5566  uint32_t transfer:1;
5567 };
5568 
5596 __rte_experimental
5597 struct rte_flow_pattern_template *
5598 rte_flow_pattern_template_create(uint16_t port_id,
5599  const struct rte_flow_pattern_template_attr *template_attr,
5600  const struct rte_flow_item pattern[],
5601  struct rte_flow_error *error);
5602 
5623 __rte_experimental
5624 int
5625 rte_flow_pattern_template_destroy(uint16_t port_id,
5626  struct rte_flow_pattern_template *pattern_template,
5627  struct rte_flow_error *error);
5628 
5633 struct rte_flow_actions_template;
5634 
5641 __extension__
5648  uint32_t ingress:1;
5650  uint32_t egress:1;
5652  uint32_t transfer:1;
5653 };
5654 
5690 __rte_experimental
5691 struct rte_flow_actions_template *
5692 rte_flow_actions_template_create(uint16_t port_id,
5693  const struct rte_flow_actions_template_attr *template_attr,
5694  const struct rte_flow_action actions[],
5695  const struct rte_flow_action masks[],
5696  struct rte_flow_error *error);
5697 
5718 __rte_experimental
5719 int
5720 rte_flow_actions_template_destroy(uint16_t port_id,
5721  struct rte_flow_actions_template *actions_template,
5722  struct rte_flow_error *error);
5723 
5728 struct rte_flow_template_table;
5729 
5743 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5744 
5751 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5752 
5769 };
5770 
5794 };
5795 
5806  struct rte_flow_attr flow_attr;
5810  uint32_t nb_flows;
5819  uint32_t specialize;
5823  enum rte_flow_table_insertion_type insertion_type;
5828 };
5829 
5862 __rte_experimental
5863 struct rte_flow_template_table *
5864 rte_flow_template_table_create(uint16_t port_id,
5865  const struct rte_flow_template_table_attr *table_attr,
5866  struct rte_flow_pattern_template *pattern_templates[],
5867  uint8_t nb_pattern_templates,
5868  struct rte_flow_actions_template *actions_templates[],
5869  uint8_t nb_actions_templates,
5870  struct rte_flow_error *error);
5871 
5892 __rte_experimental
5893 int
5894 rte_flow_template_table_destroy(uint16_t port_id,
5895  struct rte_flow_template_table *template_table,
5896  struct rte_flow_error *error);
5897 
5919 __rte_experimental
5920 int
5921 rte_flow_group_set_miss_actions(uint16_t port_id,
5922  uint32_t group_id,
5923  const struct rte_flow_group_attr *attr,
5924  const struct rte_flow_action actions[],
5925  struct rte_flow_error *error);
5926 
5933 __extension__
5939  uint32_t postpone:1;
5940 };
5941 
5978 __rte_experimental
5979 struct rte_flow *
5980 rte_flow_async_create(uint16_t port_id,
5981  uint32_t queue_id,
5982  const struct rte_flow_op_attr *op_attr,
5983  struct rte_flow_template_table *template_table,
5984  const struct rte_flow_item pattern[],
5985  uint8_t pattern_template_index,
5986  const struct rte_flow_action actions[],
5987  uint8_t actions_template_index,
5988  void *user_data,
5989  struct rte_flow_error *error);
5990 
6023 __rte_experimental
6024 struct rte_flow *
6025 rte_flow_async_create_by_index(uint16_t port_id,
6026  uint32_t queue_id,
6027  const struct rte_flow_op_attr *op_attr,
6028  struct rte_flow_template_table *template_table,
6029  uint32_t rule_index,
6030  const struct rte_flow_action actions[],
6031  uint8_t actions_template_index,
6032  void *user_data,
6033  struct rte_flow_error *error);
6034 
6064 __rte_experimental
6065 int
6066 rte_flow_async_destroy(uint16_t port_id,
6067  uint32_t queue_id,
6068  const struct rte_flow_op_attr *op_attr,
6069  struct rte_flow *flow,
6070  void *user_data,
6071  struct rte_flow_error *error);
6072 
6101 __rte_experimental
6102 int
6103 rte_flow_async_actions_update(uint16_t port_id,
6104  uint32_t queue_id,
6105  const struct rte_flow_op_attr *op_attr,
6106  struct rte_flow *flow,
6107  const struct rte_flow_action actions[],
6108  uint8_t actions_template_index,
6109  void *user_data,
6110  struct rte_flow_error *error);
6111 
6132 __rte_experimental
6133 int
6134 rte_flow_push(uint16_t port_id,
6135  uint32_t queue_id,
6136  struct rte_flow_error *error);
6137 
6153 };
6154 
6161 __extension__
6166  enum rte_flow_op_status status;
6170  void *user_data;
6171 };
6172 
6198 __rte_experimental
6199 int
6200 rte_flow_pull(uint16_t port_id,
6201  uint32_t queue_id,
6202  struct rte_flow_op_result res[],
6203  uint16_t n_res,
6204  struct rte_flow_error *error);
6205 
6232 __rte_experimental
6233 struct rte_flow_action_handle *
6234 rte_flow_async_action_handle_create(uint16_t port_id,
6235  uint32_t queue_id,
6236  const struct rte_flow_op_attr *op_attr,
6237  const struct rte_flow_indir_action_conf *indir_action_conf,
6238  const struct rte_flow_action *action,
6239  void *user_data,
6240  struct rte_flow_error *error);
6241 
6267 __rte_experimental
6268 int
6269 rte_flow_async_action_handle_destroy(uint16_t port_id,
6270  uint32_t queue_id,
6271  const struct rte_flow_op_attr *op_attr,
6272  struct rte_flow_action_handle *action_handle,
6273  void *user_data,
6274  struct rte_flow_error *error);
6275 
6306 __rte_experimental
6307 int
6308 rte_flow_async_action_handle_update(uint16_t port_id,
6309  uint32_t queue_id,
6310  const struct rte_flow_op_attr *op_attr,
6311  struct rte_flow_action_handle *action_handle,
6312  const void *update,
6313  void *user_data,
6314  struct rte_flow_error *error);
6315 
6350 __rte_experimental
6351 int
6352 rte_flow_async_action_handle_query(uint16_t port_id,
6353  uint32_t queue_id,
6354  const struct rte_flow_op_attr *op_attr,
6355  const struct rte_flow_action_handle *action_handle,
6356  void *data,
6357  void *user_data,
6358  struct rte_flow_error *error);
6359 
6372 };
6373 
6407 __rte_experimental
6408 int
6409 rte_flow_action_handle_query_update(uint16_t port_id,
6410  struct rte_flow_action_handle *handle,
6411  const void *update, void *query,
6412  enum rte_flow_query_update_mode mode,
6413  struct rte_flow_error *error);
6414 
6450 __rte_experimental
6451 int
6452 rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6453  const struct rte_flow_op_attr *attr,
6454  struct rte_flow_action_handle *handle,
6455  const void *update, void *query,
6456  enum rte_flow_query_update_mode mode,
6457  void *user_data,
6458  struct rte_flow_error *error);
6459 
6460 struct rte_flow_action_list_handle;
6461 
6472  struct rte_flow_action_list_handle *handle;
6481  const void **conf;
6482 };
6483 
6511 __rte_experimental
6512 struct rte_flow_action_list_handle *
6513 rte_flow_action_list_handle_create(uint16_t port_id,
6514  const
6515  struct rte_flow_indir_action_conf *conf,
6516  const struct rte_flow_action *actions,
6517  struct rte_flow_error *error);
6518 
6553 __rte_experimental
6554 struct rte_flow_action_list_handle *
6555 rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6556  const struct rte_flow_op_attr *attr,
6557  const struct rte_flow_indir_action_conf *conf,
6558  const struct rte_flow_action *actions,
6559  void *user_data,
6560  struct rte_flow_error *error);
6561 
6583 __rte_experimental
6584 int
6585 rte_flow_action_list_handle_destroy(uint16_t port_id,
6586  struct rte_flow_action_list_handle *handle,
6587  struct rte_flow_error *error);
6588 
6619 __rte_experimental
6620 int
6622  (uint16_t port_id, uint32_t queue_id,
6623  const struct rte_flow_op_attr *op_attr,
6624  struct rte_flow_action_list_handle *handle,
6625  void *user_data, struct rte_flow_error *error);
6626 
6663 __rte_experimental
6664 int
6666  const struct rte_flow_action_list_handle *handle,
6667  const void **update, void **query,
6668  enum rte_flow_query_update_mode mode,
6669  struct rte_flow_error *error);
6670 
6714 __rte_experimental
6715 int
6716 rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6717  const struct rte_flow_op_attr *attr,
6718  const struct rte_flow_action_list_handle *handle,
6719  const void **update, void **query,
6720  enum rte_flow_query_update_mode mode,
6721  void *user_data,
6722  struct rte_flow_error *error);
6723 
6750 __rte_experimental
6751 int
6752 rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6753  const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6754  uint32_t *hash, struct rte_flow_error *error);
6755 
6756 #ifdef __cplusplus
6757 }
6758 #endif
6759 
6760 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:131
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1556
rte_be32_t u32
Definition: rte_ecpri.h:71
uint32_t nb_quotas
Definition: rte_flow.h:5475
uint8_t addr
Definition: rte_ppp.h:25
rte_flow_field_id
Definition: rte_flow.h:3862
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1197
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1318
__rte_experimental int rte_flow_action_handle_update(uint16_t port_id, struct rte_flow_action_handle *handle, const void *update, struct rte_flow_error *error)
__rte_experimental int rte_flow_async_action_handle_query(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, const struct rte_flow_action_handle *action_handle, void *data, void *user_data, struct rte_flow_error *error)
uint32_t reserved
Definition: rte_flow.h:981
static const struct rte_flow_item_quota rte_flow_item_quota_mask
Definition: rte_flow.h:735
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)
uint32_t max_nb_aging_objects
Definition: rte_flow.h:5375
struct rte_ether_addr src_addr
Definition: rte_ether.h:275
struct rte_flow_action * actions
Definition: rte_flow.h:4272
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1505
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:986
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1127
__rte_experimental int rte_flow_action_handle_query(uint16_t port_id, const struct rte_flow_action_handle *handle, void *data, struct rte_flow_error *error)
__rte_experimental struct rte_flow * rte_flow_async_create(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_template_table *template_table, const struct rte_flow_item pattern[], uint8_t pattern_template_index, const struct rte_flow_action actions[], uint8_t actions_template_index, void *user_data, struct rte_flow_error *error)
struct rte_flow_action_list_handle * handle
Definition: rte_flow.h:6472
rte_be16_t protocol
Definition: rte_flow.h:1319
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
Definition: rte_flow.h:1824
__rte_experimental struct rte_flow_action_list_handle * rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *attr, const struct rte_flow_indir_action_conf *conf, const struct rte_flow_action *actions, void *user_data, struct rte_flow_error *error)
uint32_t has_auth_ext
Definition: rte_flow.h:969
uint32_t nb_counters
Definition: rte_flow.h:5451
struct rte_ib_bth hdr
Definition: rte_flow.h:2037
struct rte_ether_addr arp_sha
Definition: rte_arp.h:25
uint32_t num
Definition: rte_flow.h:773
__rte_experimental int rte_flow_async_destroy(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow *flow, void *user_data, struct rte_flow_error *error)
struct rte_flow_attr * attr
Definition: rte_flow.h:4264
uint32_t has_mobil_ext
Definition: rte_flow.h:975
uint32_t sec_since_last_hit
Definition: rte_flow.h:3162
uint32_t rte_be32_t
__rte_experimental int rte_flow_action_handle_destroy(uint16_t port_id, struct rte_flow_action_handle *handle, struct rte_flow_error *error)
rte_flow_update_quota_op
Definition: rte_flow.h:3074
__rte_experimental int rte_flow_async_action_list_handle_destroy(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_list_handle *handle, void *user_data, struct rte_flow_error *error)
rte_flow_item_flex_tunnel_mode
Definition: rte_flow.h:2147
uint32_t original
Definition: rte_flow.h:3295
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)
struct rte_flow_item_flex_link * input_link
Definition: rte_flow.h:2248
uint32_t group
Definition: rte_flow.h:103
__rte_experimental int rte_flow_async_action_handle_destroy(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, void *user_data, struct rte_flow_error *error)
uint32_t nb_aging_objects
Definition: rte_flow.h:5456
struct rte_flow_item * definition
Definition: rte_flow.h:3444
uint32_t nb_meters
Definition: rte_flow.h:5461
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1203
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:4043
rte_be16_t msg_len
Definition: rte_flow.h:1276
__rte_experimental int rte_flow_template_table_destroy(uint16_t port_id, struct rte_flow_template_table *template_table, struct rte_flow_error *error)
struct rte_ether_addr dst_addr
Definition: rte_ether.h:280
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1285
uint32_t postpone
Definition: rte_flow.h:5939
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:1021
rte_be16_t flags_version
Definition: rte_l2tpv2.h:100
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:25
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1326
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:4263
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:1078
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:778
__rte_experimental int rte_flow_action_handle_query_update(uint16_t port_id, struct rte_flow_action_handle *handle, const void *update, void *query, enum rte_flow_query_update_mode mode, struct rte_flow_error *error)
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1603
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1301
rte_flow_conntrack_state
Definition: rte_flow.h:3692
__rte_experimental int rte_flow_get_restore_info(uint16_t port_id, struct rte_mbuf *m, struct rte_flow_restore_info *info, struct rte_flow_error *error)
struct rte_icmp_hdr hdr
Definition: rte_flow.h:1016
__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:1274
struct rte_ether_addr tla
Definition: rte_flow.h:1575
rte_flow_item_flex_field_mode
Definition: rte_flow.h:2114
rte_be16_t protocol
Definition: rte_flow.h:1155
uint32_t reserved
Definition: rte_flow.h:829
rte_be32_t spi
Definition: rte_esp.h:24
static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
Definition: rte_flow.h:2272
static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask
Definition: rte_flow.h:1959
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1868
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1446
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:4737
uint32_t nb_conn_tracks
Definition: rte_flow.h:5466
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:5385
enum rte_color color
Definition: rte_flow.h:2267
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:940
rte_be32_t teid
Definition: rte_gtp.h:54
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1726
uint32_t reserved
Definition: rte_flow.h:3158
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2238
rte_be32_t src_addr
Definition: rte_ip.h:62
static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask
Definition: rte_flow.h:2042
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1531
struct rte_gtp_hdr hdr
Definition: rte_flow.h:1279
__rte_experimental int rte_flow_actions_update(uint16_t port_id, struct rte_flow *flow, const struct rte_flow_action actions[], struct rte_flow_error *error)
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:1109
#define RTE_BIT32(nr)
Definition: rte_bitops.h:40
uint8_t src_addr[16]
Definition: rte_ip.h:530
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:803
struct rte_ether_addr dst_addr
Definition: rte_ether.h:274
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:751
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1162
uint64_t rte_be64_t
uint8_t vni[3]
Definition: rte_vxlan.h:43
const void * mask
Definition: rte_flow.h:2087
struct rte_flow_item * pattern
Definition: rte_flow.h:4268
static const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask
Definition: rte_flow.h:2298
__rte_experimental struct rte_flow * rte_flow_async_create_by_index(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_template_table *template_table, uint32_t rule_index, const struct rte_flow_action actions[], uint8_t actions_template_index, void *user_data, struct rte_flow_error *error)
rte_be16_t type
Definition: rte_flow.h:875
__rte_experimental int rte_flow_group_set_miss_actions(uint16_t port_id, uint32_t group_id, const struct rte_flow_group_attr *attr, const struct rte_flow_action actions[], struct rte_flow_error *error)
const void * cause
Definition: rte_flow.h:4249
__rte_experimental int rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *attr, struct rte_flow_action_handle *handle, const void *update, void *query, enum rte_flow_query_update_mode mode, void *user_data, struct rte_flow_error *error)
__rte_experimental int rte_flow_async_action_handle_update(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, const void *update, void *user_data, struct rte_flow_error *error)
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition: rte_flow.h:1994
struct rte_l2tpv2_common_hdr common
Definition: rte_l2tpv2.h:221
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:1040
__rte_experimental int rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error)
struct rte_esp_hdr hdr
Definition: rte_flow.h:1296
rte_flow_error_type
Definition: rte_flow.h:4215
uint32_t has_esp_ext
Definition: rte_flow.h:971
rte_flow_conv_op
Definition: rte_flow.h:4281
rte_be16_t src_port
Definition: rte_udp.h:29
__rte_experimental uint64_t rte_flow_restore_info_dynflag(void)
uint32_t has_shim6_ext
Definition: rte_flow.h:979
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow, FILE *file, struct rte_flow_error *error)
uint32_t max_nb_quotas
Definition: rte_flow.h:5390
uint32_t has_route_ext
Definition: rte_flow.h:965
__rte_experimental int rte_flow_actions_template_destroy(uint16_t port_id, struct rte_flow_actions_template *actions_template, struct rte_flow_error *error)
const uint8_t * pattern
Definition: rte_flow.h:833
uint32_t search
Definition: rte_flow.h:828
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1129
rte_flow_quota_state
Definition: rte_flow.h:717
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:838
uint16_t limit
Definition: rte_flow.h:831
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3710
__rte_experimental int rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table, const struct rte_flow_item pattern[], uint8_t pattern_template_index, uint32_t *hash, struct rte_flow_error *error)
__rte_experimental struct rte_flow_item_flex_handle * rte_flow_flex_item_create(uint16_t port_id, const struct rte_flow_item_flex_conf *conf, struct rte_flow_error *error)
rte_eth_hash_function
Definition: rte_ethdev.h:451
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1614
uint32_t max_nb_queues
Definition: rte_flow.h:5365
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:1182
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1478
__rte_experimental struct rte_flow_action_handle * rte_flow_action_handle_create(uint16_t port_id, const struct rte_flow_indir_action_conf *conf, const struct rte_flow_action *action, struct rte_flow_error *error)
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 void * conf
Definition: rte_flow.h:4162
const char * message
Definition: rte_flow.h:4250
uint8_t opcode
Definition: rte_ib.h:30
uint32_t close_initiated
Definition: rte_flow.h:3732
__rte_experimental struct rte_flow_action_list_handle * rte_flow_action_list_handle_create(uint16_t port_id, const struct rte_flow_indir_action_conf *conf, const struct rte_flow_action *actions, struct rte_flow_error *error)
uint16_t length
Definition: rte_flow.h:832
const void * last
Definition: rte_flow.h:2086
uint32_t packet_type
Definition: rte_flow.h:2329
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1581
rte_be32_t teid
Definition: rte_flow.h:1277
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
uint32_t ingress
Definition: rte_flow.h:108
rte_be16_t tci
Definition: rte_flow.h:914
struct rte_arp_hdr hdr
Definition: rte_flow.h:1382
uint32_t max_nb_meters
Definition: rte_flow.h:5380
__rte_experimental struct rte_flow_action_handle * rte_flow_async_action_handle_create(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, const struct rte_flow_indir_action_conf *indir_action_conf, const struct rte_flow_action *action, void *user_data, struct rte_flow_error *error)
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:945
size_t size
Definition: rte_flow.h:4734
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1154
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:2022
const uint8_t * pattern
Definition: rte_flow.h:2109
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1620
uint32_t supported_flags
Definition: rte_flow.h:5394
rte_flow_table_hash_func
Definition: rte_flow.h:5777
rte_be16_t length
Definition: rte_flow.h:1637
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:4271
uint32_t has_vlan
Definition: rte_flow.h:879
uint32_t has_more_vlan
Definition: rte_flow.h:920
struct rte_flow_item * items
Definition: rte_flow.h:4736
__rte_experimental int rte_flow_get_aged_flows(uint16_t port_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error)
uint32_t timeout_valid
Definition: rte_flow.h:3186
rte_flow_action_type
Definition: rte_flow.h:2365
struct rte_ether_addr sla
Definition: rte_flow.h:1550
rte_flow_query_update_mode
Definition: rte_flow.h:6369
rte_flow_quota_mode
Definition: rte_flow.h:3035
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2256
__rte_experimental struct rte_flow_template_table * rte_flow_template_table_create(uint16_t port_id, const struct rte_flow_template_table_attr *table_attr, struct rte_flow_pattern_template *pattern_templates[], uint8_t nb_pattern_templates, struct rte_flow_actions_template *actions_templates[], uint8_t nb_actions_templates, struct rte_flow_error *error)
rte_flow_modify_op
Definition: rte_flow.h:4006
uint32_t has_hop_ext
Definition: rte_flow.h:963
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)
rte_flow_table_insertion_type
Definition: rte_flow.h:5760
__rte_experimental int rte_flow_pattern_template_destroy(uint16_t port_id, struct rte_flow_pattern_template *pattern_template, struct rte_flow_error *error)
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1696
rte_color
Definition: rte_meter.h:32
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1779
const void * spec
Definition: rte_flow.h:2085
uint8_t label_tc_s[3]
Definition: rte_flow.h:1176
static const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask
Definition: rte_flow.h:2317
__rte_experimental int rte_flow_action_list_handle_query_update(uint16_t port_id, const struct rte_flow_action_list_handle *handle, const void **update, void **query, enum rte_flow_query_update_mode mode, struct rte_flow_error *error)
uint8_t version_type
Definition: rte_flow.h:1634
__rte_experimental int rte_flow_tunnel_decap_set(uint16_t port_id, struct rte_flow_tunnel *tunnel, struct rte_flow_action **actions, uint32_t *num_of_actions, struct rte_flow_error *error)
const uint8_t * key
Definition: rte_flow.h:3274
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1389
uint32_t has_hip_ext
Definition: rte_flow.h:977
const struct rte_flow_action * actions
Definition: rte_flow.h:4206
__rte_experimental int rte_flow_flex_item_release(uint16_t port_id, const struct rte_flow_item_flex_handle *handle, struct rte_flow_error *error)
uint32_t sec_since_last_hit_valid
Definition: rte_flow.h:3161
rte_be16_t vlan_tci
Definition: rte_ether.h:291
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:885
rte_flow_op_status
Definition: rte_flow.h:6144
rte_be16_t src_port
Definition: rte_tcp.h:29
static const struct rte_flow_item_ethdev rte_flow_item_ethdev_mask
Definition: rte_flow.h:1975
__rte_experimental int rte_flow_info_get(uint16_t port_id, struct rte_flow_port_info *port_info, struct rte_flow_queue_info *queue_info, struct rte_flow_error *error)
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 has_frag_ext
Definition: rte_flow.h:967
uint32_t reserved
Definition: rte_flow.h:3296
__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:1802
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1679
uint32_t priority
Definition: rte_flow.h:104
uint32_t has_dest_ext
Definition: rte_flow.h:973
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1414
uint32_t max_nb_counters
Definition: rte_flow.h:5370
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:961
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1844
__rte_experimental struct rte_flow_actions_template * rte_flow_actions_template_create(uint16_t port_id, const struct rte_flow_actions_template_attr *template_attr, const struct rte_flow_action actions[], const struct rte_flow_action masks[], struct rte_flow_error *error)
rte_be16_t protocol
Definition: rte_flow.h:1198
uint32_t queue_num
Definition: rte_flow.h:3273
uint8_t tni[3]
Definition: rte_flow.h:1156
struct rte_tcp_hdr hdr
Definition: rte_flow.h:1054
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1659
uint32_t transfer
Definition: rte_flow.h:130
struct rte_flow_item * definition
Definition: rte_flow.h:3477
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:926
uint8_t msg_type
Definition: rte_flow.h:1275
uint32_t reserved
Definition: rte_flow.h:921
uint32_t egress
Definition: rte_flow.h:112
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1137
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:4453
__rte_experimental int rte_flow_tunnel_item_release(uint16_t port_id, struct rte_flow_item *items, uint32_t num_of_items, struct rte_flow_error *error)
uint16_t host_port_id
Definition: rte_flow.h:5470
__rte_experimental struct rte_flow_pattern_template * rte_flow_pattern_template_create(uint16_t port_id, const struct rte_flow_pattern_template_attr *template_attr, const struct rte_flow_item pattern[], struct rte_flow_error *error)
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:1059
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1251
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:915
const struct rte_flow_action_prog_argument * args
Definition: rte_flow.h:4122
uint8_t vni[3]
Definition: rte_vxlan.h:72
__rte_experimental int rte_flow_tunnel_action_decap_release(uint16_t port_id, struct rte_flow_action *actions, uint32_t num_of_actions, struct rte_flow_error *error)
__rte_experimental int rte_flow_action_list_handle_destroy(uint16_t port_id, struct rte_flow_action_list_handle *handle, struct rte_flow_error *error)
struct rte_udp_hdr hdr
Definition: rte_flow.h:1035
__rte_experimental int rte_flow_configure(uint16_t port_id, const struct rte_flow_port_attr *port_attr, uint16_t nb_queue, const struct rte_flow_queue_attr *queue_attr[], struct rte_flow_error *error)
const uint16_t * queue
Definition: rte_flow.h:3275
const char * name
Definition: rte_flow.h:4118
rte_flow_item_type
Definition: rte_flow.h:156
__rte_experimental int rte_flow_pull(uint16_t port_id, uint32_t queue_id, struct rte_flow_op_result res[], uint16_t n_res, struct rte_flow_error *error)
uint32_t relative
Definition: rte_flow.h:827
int32_t offset
Definition: rte_flow.h:830
__rte_experimental int rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *attr, const struct rte_flow_action_list_handle *handle, const void **update, void **query, enum rte_flow_query_update_mode mode, void *user_data, struct rte_flow_error *error)
static const struct rte_flow_item_ptype rte_flow_item_ptype_mask
Definition: rte_flow.h:2334
rte_be16_t inner_type
Definition: rte_flow.h:1132
__rte_experimental int rte_flow_tunnel_match(uint16_t port_id, struct rte_flow_tunnel *tunnel, struct rte_flow_item **items, uint32_t *num_of_items, struct rte_flow_error *error)
struct rte_flow_item_flex_handle * handle
Definition: rte_flow.h:2107
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:4267
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1355
rte_be16_t session_id
Definition: rte_flow.h:1636
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1754
__rte_experimental int rte_flow_async_actions_update(uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow *flow, const struct rte_flow_action actions[], uint8_t actions_template_index, void *user_data, struct rte_flow_error *error)
__rte_experimental int rte_flow_push(uint16_t port_id, uint32_t queue_id, struct rte_flow_error *error)
int rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id, struct rte_flow_error *error)
struct rte_sctp_hdr hdr
Definition: rte_flow.h:1073
uint32_t reserved
Definition: rte_flow.h:880