DPDK  24.07.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 
89 struct rte_flow_attr {
100  uint32_t group;
101  uint32_t priority;
105  uint32_t ingress:1;
109  uint32_t egress:1;
127  uint32_t transfer:1;
128  uint32_t reserved:29;
129 };
130 
131 struct rte_flow_group_attr {
132  uint32_t ingress:1;
133  uint32_t egress:1;
134  uint32_t transfer:1;
135 };
136 
163 
173 
183 
191 
205 
212 
219 
226 
233 
240 
247 
254 
261 
268 
275 
282 
289 
296 
303 
315 
324 
333 
342 
349 
356 
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 
720 
727 };
728 
740 };
741 
748  enum rte_flow_quota_state state;
749 };
750 
754 #ifndef __cplusplus
756  .state = (enum rte_flow_quota_state)0xff
757 };
758 #endif
759 
766  struct rte_higig2_hdr hdr;
767 };
768 
770 #ifndef __cplusplus
772  .hdr = {
773  .ppt1 = {
774  .classification = RTE_BE16(UINT16_MAX),
775  .vid = RTE_BE16(0xfff),
776  },
777  },
778 };
779 #endif
780 
793  uint32_t num;
794 };
795 
797 #ifndef __cplusplus
799  .num = 0x00000000,
800 };
801 #endif
802 
818  uint32_t id;
819 };
820 
822 #ifndef __cplusplus
824  .id = 0xffffffff,
825 };
826 #endif
827 
847  uint32_t relative:1;
848  uint32_t search:1;
849  uint32_t reserved:30;
850  int32_t offset;
851  uint16_t limit;
852  uint16_t length;
853  const uint8_t *pattern;
854 };
855 
857 #ifndef __cplusplus
859  .relative = 1,
860  .search = 1,
861  .reserved = 0x3fffffff,
862  .offset = 0xffffffff,
863  .limit = 0xffff,
864  .length = 0xffff,
865  .pattern = NULL,
866 };
867 #endif
868 
887  union {
888  struct {
889  /*
890  * These fields are retained for compatibility.
891  * Please switch to the new header field below.
892  */
893  struct rte_ether_addr dst;
894  struct rte_ether_addr src;
896  };
897  struct rte_ether_hdr hdr;
898  };
899  uint32_t has_vlan:1;
900  uint32_t reserved:31;
901 };
902 
904 #ifndef __cplusplus
906  .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
907  .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
908  .hdr.ether_type = RTE_BE16(0x0000),
909 };
910 #endif
911 
928  union {
929  struct {
930  /*
931  * These fields are retained for compatibility.
932  * Please switch to the new header field below.
933  */
936  };
937  struct rte_vlan_hdr hdr;
938  };
940  uint32_t has_more_vlan:1;
941  uint32_t reserved:31;
942 };
943 
945 #ifndef __cplusplus
947  .hdr.vlan_tci = RTE_BE16(0x0fff),
948  .hdr.eth_proto = RTE_BE16(0x0000),
949 };
950 #endif
951 
960  struct rte_ipv4_hdr hdr;
961 };
962 
964 #ifndef __cplusplus
966  .hdr = {
967  .src_addr = RTE_BE32(0xffffffff),
968  .dst_addr = RTE_BE32(0xffffffff),
969  },
970 };
971 #endif
972 
981  struct rte_ipv6_hdr hdr;
983  uint32_t has_hop_ext:1;
985  uint32_t has_route_ext:1;
987  uint32_t has_frag_ext:1;
989  uint32_t has_auth_ext:1;
991  uint32_t has_esp_ext:1;
993  uint32_t has_dest_ext:1;
995  uint32_t has_mobil_ext:1;
997  uint32_t has_hip_ext:1;
999  uint32_t has_shim6_ext:1;
1001  uint32_t reserved:23;
1002 };
1003 
1005 #ifndef __cplusplus
1007  .hdr = {
1008  .src_addr =
1009  "\xff\xff\xff\xff\xff\xff\xff\xff"
1010  "\xff\xff\xff\xff\xff\xff\xff\xff",
1011  .dst_addr =
1012  "\xff\xff\xff\xff\xff\xff\xff\xff"
1013  "\xff\xff\xff\xff\xff\xff\xff\xff",
1014  },
1015 };
1016 #endif
1017 
1027  struct rte_ipv6_routing_ext hdr;
1028 };
1029 
1036  struct rte_icmp_hdr hdr;
1037 };
1038 
1040 #ifndef __cplusplus
1042  .hdr = {
1043  .icmp_type = 0xff,
1044  .icmp_code = 0xff,
1045  },
1046 };
1047 #endif
1048 
1055  struct rte_udp_hdr hdr;
1056 };
1057 
1059 #ifndef __cplusplus
1061  .hdr = {
1062  .src_port = RTE_BE16(0xffff),
1063  .dst_port = RTE_BE16(0xffff),
1064  },
1065 };
1066 #endif
1067 
1074  struct rte_tcp_hdr hdr;
1075 };
1076 
1078 #ifndef __cplusplus
1080  .hdr = {
1081  .src_port = RTE_BE16(0xffff),
1082  .dst_port = RTE_BE16(0xffff),
1083  },
1084 };
1085 #endif
1086 
1093  struct rte_sctp_hdr hdr;
1094 };
1095 
1097 #ifndef __cplusplus
1099  .hdr = {
1100  .src_port = RTE_BE16(0xffff),
1101  .dst_port = RTE_BE16(0xffff),
1102  },
1103 };
1104 #endif
1105 
1117  union {
1118  struct {
1119  /*
1120  * These fields are retained for compatibility.
1121  * Please switch to the new header field below.
1122  */
1123  uint8_t flags;
1124  uint8_t rsvd0[3];
1125  uint8_t vni[3];
1126  uint8_t rsvd1;
1127  };
1128  struct rte_vxlan_hdr hdr;
1129  };
1130 };
1131 
1133 #ifndef __cplusplus
1135  .hdr.vni = "\xff\xff\xff",
1136 };
1137 #endif
1138 
1155  uint8_t in_ecid_e;
1156  uint8_t ecid_e;
1158 };
1159 
1161 #ifndef __cplusplus
1163  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1164 };
1165 #endif
1166 
1181  uint8_t tni[3];
1182  uint8_t flow_id;
1183 };
1184 
1186 #ifndef __cplusplus
1188  .tni = "\xff\xff\xff",
1189 };
1190 #endif
1191 
1201  uint8_t label_tc_s[3];
1202  uint8_t ttl;
1203 };
1204 
1206 #ifndef __cplusplus
1208  .label_tc_s = "\xff\xff\xf0",
1209 };
1210 #endif
1211 
1224 };
1225 
1227 #ifndef __cplusplus
1229  .protocol = RTE_BE16(0xffff),
1230 };
1231 #endif
1232 
1239  struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1240  struct rte_gre_hdr_opt_key key;
1241  struct rte_gre_hdr_opt_sequence sequence;
1242 };
1243 
1250  struct rte_macsec_hdr macsec_hdr;
1251 };
1252 
1271  uint32_t thresh;
1272 };
1273 
1275 #ifndef __cplusplus
1277  .thresh = 0xffffffff,
1278 };
1279 #endif
1280 
1287  union {
1288  struct {
1289  /*
1290  * These are old fields kept for compatibility.
1291  * Please prefer hdr field below.
1292  */
1300  uint8_t msg_type;
1303  };
1304  struct rte_gtp_hdr hdr;
1305  };
1306 };
1307 
1309 #ifndef __cplusplus
1311  .hdr.teid = RTE_BE32(UINT32_MAX),
1312 };
1313 #endif
1314 
1321  struct rte_esp_hdr hdr;
1322 };
1323 
1325 #ifndef __cplusplus
1327  .hdr = {
1328  .spi = RTE_BE32(0xffffffff),
1329  },
1330 };
1331 #endif
1332 
1345  uint8_t vni[3];
1346  uint8_t rsvd1;
1347 };
1348 
1350 #ifndef __cplusplus
1352  .vni = "\xff\xff\xff",
1353 };
1354 #endif
1355 
1365  union {
1366  struct {
1367  /*
1368  * These are old fields kept for compatibility.
1369  * Please prefer hdr field below.
1370  */
1371  uint8_t flags;
1372  uint8_t rsvd0[2];
1373  uint8_t protocol;
1374  uint8_t vni[3];
1375  uint8_t rsvd1;
1376  };
1377  struct rte_vxlan_gpe_hdr hdr;
1378  };
1379 };
1380 
1387 #ifndef __cplusplus
1389  .hdr.vni = "\xff\xff\xff",
1390 };
1391 #endif
1392 
1399  union {
1400  struct {
1401  /*
1402  * These are old fields kept for compatibility.
1403  * Please prefer hdr field below.
1404  */
1407  uint8_t hln;
1408  uint8_t pln;
1410  struct rte_ether_addr sha;
1412  struct rte_ether_addr tha;
1414  };
1415  struct rte_arp_hdr hdr;
1416  };
1417 };
1418 
1420 #ifndef __cplusplus
1421 static const struct rte_flow_item_arp_eth_ipv4
1423  .hdr.arp_data.arp_sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1424  .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1425  .hdr.arp_data.arp_tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1426  .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1427 };
1428 #endif
1429 
1441  uint8_t next_hdr;
1442 };
1443 
1445 #ifndef __cplusplus
1446 static const
1448  .next_hdr = 0xff,
1449 };
1450 #endif
1451 
1463  struct rte_ipv6_fragment_ext hdr;
1464 };
1465 
1472  uint8_t type;
1473  uint8_t code;
1474  uint16_t checksum;
1475 };
1476 
1478 #ifndef __cplusplus
1480  .type = 0xff,
1481  .code = 0xff,
1482 };
1483 #endif
1484 
1492  struct rte_icmp_echo_hdr hdr;
1493 };
1494 
1501  uint8_t type;
1502  uint8_t code;
1505  uint8_t target_addr[16];
1506 };
1507 
1509 #ifndef __cplusplus
1510 static const
1512  .target_addr =
1513  "\xff\xff\xff\xff\xff\xff\xff\xff"
1514  "\xff\xff\xff\xff\xff\xff\xff\xff",
1515 };
1516 #endif
1517 
1524  uint8_t type;
1525  uint8_t code;
1532  uint8_t target_addr[16];
1533 };
1534 
1536 #ifndef __cplusplus
1537 static const
1539  .target_addr =
1540  "\xff\xff\xff\xff\xff\xff\xff\xff"
1541  "\xff\xff\xff\xff\xff\xff\xff\xff",
1542 };
1543 #endif
1544 
1557  uint8_t type;
1558  uint8_t length;
1559 };
1560 
1562 #ifndef __cplusplus
1563 static const struct rte_flow_item_icmp6_nd_opt
1565  .type = 0xff,
1566 };
1567 #endif
1568 
1581  uint8_t type;
1582  uint8_t length;
1583  struct rte_ether_addr sla;
1584 };
1585 
1587 #ifndef __cplusplus
1588 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1590  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1591 };
1592 #endif
1593 
1606  uint8_t type;
1607  uint8_t length;
1608  struct rte_ether_addr tla;
1609 };
1610 
1612 #ifndef __cplusplus
1613 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1615  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1616 };
1617 #endif
1618 
1631  uint32_t data;
1632 };
1633 
1635 #ifndef __cplusplus
1637  .data = UINT32_MAX,
1638 };
1639 #endif
1640 
1648 };
1649 
1651 #ifndef __cplusplus
1652 static const struct rte_flow_item_gtp_psc
1654  .hdr.qfi = 0x3f,
1655 };
1656 #endif
1657 
1667  uint8_t version_type;
1668  uint8_t code;
1671 };
1672 
1687 };
1688 
1690 #ifndef __cplusplus
1691 static const struct rte_flow_item_pppoe_proto_id
1693  .proto_id = RTE_BE16(0xffff),
1694 };
1695 #endif
1696 
1706  uint32_t data;
1707  uint8_t index;
1708 };
1709 
1711 #ifndef __cplusplus
1713  .data = 0xffffffff,
1714  .index = 0xff,
1715 };
1716 #endif
1717 
1725 };
1726 
1728 #ifndef __cplusplus
1730  .session_id = RTE_BE32(UINT32_MAX),
1731 };
1732 #endif
1733 
1734 
1754  uint32_t id;
1755 };
1756 
1758 #ifndef __cplusplus
1760  .id = 0xffffffff,
1761 };
1762 #endif
1763 
1773  uint32_t version:2;
1774  uint32_t oam_pkt:1;
1775  uint32_t reserved:1;
1776  uint32_t ttl:6;
1777  uint32_t length:6;
1778  uint32_t reserved1:4;
1779  uint32_t mdtype:4;
1780  uint32_t next_proto:8;
1781  uint32_t spi:24;
1782  uint32_t sindex:8;
1783 };
1784 
1786 #ifndef __cplusplus
1788  .mdtype = 0xf,
1789  .next_proto = 0xff,
1790  .spi = 0xffffff,
1791  .sindex = 0xff,
1792 };
1793 #endif
1794 
1804  uint32_t type:8;
1805  uint32_t max_resp_time:8;
1806  uint32_t checksum:16;
1807  uint32_t group_addr;
1808 };
1809 
1811 #ifndef __cplusplus
1813  .group_addr = 0xffffffff,
1814 };
1815 #endif
1816 
1826  uint32_t next_hdr:8;
1827  uint32_t payload_len:8;
1828  uint32_t reserved:16;
1829  uint32_t spi;
1830  uint32_t seq_num;
1831 };
1832 
1834 #ifndef __cplusplus
1836  .spi = 0xffffffff,
1837 };
1838 #endif
1839 
1849  uint8_t s_field;
1850  uint8_t msg_type;
1851  rte_be16_t msg_len;
1852  rte_be64_t seid;
1853 };
1854 
1856 #ifndef __cplusplus
1858  .s_field = 0x01,
1859  .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1860 };
1861 #endif
1862 
1872  struct rte_ecpri_combined_msg_hdr hdr;
1873 };
1874 
1876 #ifndef __cplusplus
1878  .hdr = {
1879  .common = {
1880  .u32 = 0x0,
1881  },
1882  },
1883 };
1884 #endif
1885 
1892  rte_be16_t option_class;
1893  uint8_t option_type;
1894  uint8_t option_len;
1895  uint32_t *data;
1896 };
1897 
1899 #ifndef __cplusplus
1900 static const struct rte_flow_item_geneve_opt
1902  .option_type = 0xff,
1903 };
1904 #endif
1905 
1918  uint32_t level;
1919  union {
1920  __extension__
1921  struct {
1923  uint64_t packet_ok:1;
1925  uint64_t l2_ok:1;
1927  uint64_t l3_ok:1;
1929  uint64_t l4_ok:1;
1931  uint64_t l2_crc_ok:1;
1933  uint64_t ipv4_csum_ok:1;
1935  uint64_t l4_csum_ok:1;
1937  uint64_t l3_len_ok:1;
1938  uint64_t reserved:56;
1939  };
1940  uint64_t value;
1941  };
1942 };
1943 
1944 #ifndef __cplusplus
1945 static const struct rte_flow_item_integrity
1946 rte_flow_item_integrity_mask = {
1947  .level = 0,
1948  .value = 0,
1949 };
1950 #endif
1951 
1955 #define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1956 
1959 #define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1960 
1964 #define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1965 
1969 #define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1970 
1974 #define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1975 
1987  uint32_t flags;
1988 };
1989 
1991 #ifndef __cplusplus
1993  .flags = 0xffffffff,
1994 };
1995 #endif
1996 
2003  uint16_t port_id;
2004 };
2005 
2007 #ifndef __cplusplus
2009  .port_id = 0xffff,
2010 };
2011 #endif
2012 
2022  struct rte_l2tpv2_combined_msg_hdr hdr;
2023 };
2024 
2026 #ifndef __cplusplus
2028  /*
2029  * flags and version bit mask
2030  * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
2031  * T L x x S x O P x x x x V V V V
2032  */
2033  .hdr = {
2034  .common = {
2035  .flags_version = RTE_BE16(0xcb0f),
2036  },
2037  },
2038 };
2039 #endif
2040 
2050  struct rte_ppp_hdr hdr;
2051 };
2052 
2054 #ifndef __cplusplus
2056  .hdr = {
2057  .addr = 0xff,
2058  .ctrl = 0xff,
2059  .proto_id = RTE_BE16(0xffff),
2060  }
2061 };
2062 #endif
2063 
2070  struct rte_ib_bth hdr;
2071 };
2072 
2074 #ifndef __cplusplus
2076  .hdr = {
2077  .opcode = 0xff,
2078  .dst_qp = "\xff\xff\xff",
2079  },
2080 };
2081 #endif
2082 
2092  uint32_t value;
2093 };
2094 
2096 #ifndef __cplusplus
2098  .value = UINT32_MAX,
2099 };
2100 #endif
2101 
2137  const void *spec;
2138  const void *last;
2139  const void *mask;
2140 };
2141 
2159  struct rte_flow_item_flex_handle *handle;
2160  uint32_t length;
2161  const uint8_t *pattern;
2162 };
2194 };
2195 
2225 };
2226 
2232 __extension__
2236  uint32_t field_size;
2237  int32_t field_base;
2238  uint32_t offset_base;
2239  uint32_t offset_mask;
2240  int32_t offset_shift;
2241  uint32_t field_id:16;
2242  uint32_t reserved:16;
2243 };
2244 
2255  struct rte_flow_item item;
2260  uint32_t next;
2261 };
2262 
2279  struct rte_flow_item_flex_field next_header;
2284  struct rte_flow_item_flex_field next_protocol;
2292  uint32_t nb_samples;
2302  uint32_t nb_inputs;
2310  uint32_t nb_outputs;
2311 };
2312 
2319  enum rte_color color;
2320 };
2321 
2323 #ifndef __cplusplus
2325  .color = RTE_COLORS,
2326 };
2327 #endif
2328 
2344  uint8_t affinity;
2345 };
2346 
2348 #ifndef __cplusplus
2349 static const struct rte_flow_item_aggr_affinity
2351  .affinity = 0xff,
2352 };
2353 #endif
2354 
2364  uint16_t tx_queue;
2365 };
2366 
2368 #ifndef __cplusplus
2370  .tx_queue = 0xffff,
2371 };
2372 #endif
2373 
2381  uint32_t packet_type;
2382 };
2383 
2385 #ifndef __cplusplus
2387  .packet_type = 0xffffffff,
2388 };
2389 #endif
2390 
2448 };
2449 
2458  enum rte_flow_field_id field;
2459  union {
2460  struct {
2462  union {
2463  struct {
2498  uint8_t level;
2499  union {
2505  uint8_t tag_index;
2512  struct {
2516  uint8_t type;
2521  };
2522  };
2523  };
2524  struct rte_flow_item_flex_handle *flex_handle;
2525  };
2527  uint32_t offset;
2528  };
2535  uint8_t value[16];
2541  void *pvalue;
2542  };
2543 };
2544 
2549  RTE_FLOW_ITEM_COMPARE_EQ, /* Compare result equal. */
2550  RTE_FLOW_ITEM_COMPARE_NE, /* Compare result not equal. */
2551  RTE_FLOW_ITEM_COMPARE_LT, /* Compare result less than. */
2552  RTE_FLOW_ITEM_COMPARE_LE, /* Compare result less than or equal. */
2553  RTE_FLOW_ITEM_COMPARE_GT, /* Compare result great than. */
2554  RTE_FLOW_ITEM_COMPARE_GE, /* Compare result great than or equal. */
2555 };
2556 
2566  enum rte_flow_item_compare_op operation; /* The compare operation. */
2567  struct rte_flow_field_data a; /* Field be compared. */
2568  struct rte_flow_field_data b; /* Field as comparator. */
2569  uint32_t width; /* Compare width. */
2570 };
2571 
2606 
2614 
2622 
2631 
2643 
2655 
2662 
2671 
2682 
2691 
2703 
2715 
2726 
2734 
2742 
2753 
2761 
2769 
2777 
2785 
2793 
2801 
2809 
2818 
2826 
2835 
2842 
2849 
2862 
2875 
2888 
2901 
2915 
2929 
2940 
2950 
2960 
2973 
2986 
3003 
3020 
3037 
3054 
3067 
3077 
3090 
3103 
3116 
3124 
3135 
3146 
3154 
3163 
3171 
3178 
3186 
3194 
3204 
3213 
3223 
3232 
3242 
3249 
3258 
3265 };
3266 
3279 };
3280 
3291  int64_t quota;
3292 };
3293 
3303  int64_t quota;
3304 };
3305 
3317 };
3318 
3329  int64_t quota;
3330 };
3331 
3343  uint32_t id;
3344 };
3345 
3359  uint32_t group;
3360 };
3361 
3368  uint16_t index;
3369 };
3370 
3385  uint32_t timeout:24;
3386  uint32_t reserved:8;
3388  void *context;
3389 };
3390 
3398  uint32_t reserved:6;
3399  uint32_t aged:1;
3402  uint32_t sec_since_last_hit:24;
3403 };
3404 
3425  uint32_t reserved:6;
3426  uint32_t timeout_valid:1;
3427  uint32_t timeout:24;
3429  uint32_t touch:1;
3430 };
3431 
3450  uint32_t id;
3451 };
3452 
3459  uint32_t reset:1;
3460  uint32_t hits_set:1;
3461  uint32_t bytes_set:1;
3462  uint32_t reserved:29;
3463  uint64_t hits;
3464  uint64_t bytes;
3465 };
3466 
3510  uint32_t level;
3511  uint64_t types;
3512  uint32_t key_len;
3513  uint32_t queue_num;
3514  const uint8_t *key;
3515  const uint16_t *queue;
3516 };
3517 
3535  uint32_t original:1;
3536  uint32_t reserved:31;
3537  uint32_t id;
3538 };
3539 
3552  uint32_t original:1;
3553  uint32_t reserved:31;
3554  uint32_t id;
3555 };
3556 
3566  uint32_t mtr_id;
3567 };
3568 
3601 };
3602 
3609 };
3610 
3620  enum rte_flow_nat64_type type;
3621 };
3622 
3631 };
3632 
3641 };
3642 
3650  uint8_t vlan_pcp;
3651 };
3652 
3661 };
3662 
3671 };
3672 
3705 };
3706 
3738 };
3739 
3760  uint8_t *data;
3761  uint8_t *preserve;
3762  size_t size;
3763 };
3764 
3781  uint8_t *data;
3782  size_t size;
3783 };
3784 
3797  rte_be32_t ipv4_addr;
3798 };
3799 
3812  uint8_t ipv6_addr[16];
3813 };
3814 
3828  uint8_t *data;
3829  size_t size;
3830  uint8_t type;
3831 };
3832 
3844  uint8_t type;
3845 };
3846 
3859  rte_be16_t port;
3860 };
3861 
3868  uint8_t ttl_value;
3869 };
3870 
3877  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3878 };
3879 
3890  uint32_t data;
3891  uint32_t mask;
3892  uint8_t index;
3893 };
3894 
3915  uint32_t data;
3916  uint32_t mask;
3917 };
3918 
3927  uint8_t dscp;
3928 };
3929 
3947 struct rte_flow_action_handle;
3948 
3965 };
3966 
3977 };
3978 
3990  uint32_t scale:4;
3992  uint32_t close_initiated:1;
3994  uint32_t last_ack_seen:1;
3999  uint32_t data_unacked:1;
4004  uint32_t sent_end;
4009  uint32_t reply_end;
4011  uint32_t max_win;
4013  uint32_t max_ack;
4014 };
4015 
4028  uint16_t peer_port;
4033  uint32_t is_original_dir:1;
4041  uint32_t enable:1;
4043  uint32_t live_connection:1;
4045  uint32_t selective_ack:1;
4052  uint32_t last_direction:1;
4054  uint32_t liberal_mode:1;
4062  struct rte_flow_tcp_dir_param original_dir;
4064  struct rte_flow_tcp_dir_param reply_dir;
4066  uint16_t last_window;
4067  enum rte_flow_conntrack_tcp_last_index last_index;
4069  uint32_t last_seq;
4071  uint32_t last_ack;
4076  uint32_t last_end;
4077 };
4078 
4090  uint32_t direction:1;
4092  uint32_t state:1;
4094  uint32_t reserved:30;
4095 };
4096 
4107  enum rte_color color;
4108 };
4109 
4116  uint16_t port_id;
4117 };
4118 
4126 };
4127 
4139  enum rte_flow_modify_op operation;
4140  struct rte_flow_field_data dst;
4141  struct rte_flow_field_data src;
4142  uint32_t width;
4143 };
4144 
4157 
4159  struct rte_flow_meter_profile *profile;
4161  struct rte_flow_meter_policy *policy;
4165  int state;
4166 };
4167 
4175  struct rte_flow_action_meter_mark meter_mark;
4177  uint32_t profile_valid:1;
4179  uint32_t policy_valid:1;
4181  uint32_t color_mode_valid:1;
4183  uint32_t state_valid:1;
4185  uint32_t reserved:28;
4186 };
4187 
4196  enum rte_color init_color;
4197 };
4198 
4212  const char *name;
4214  uint32_t size;
4216  const uint8_t *value;
4217 };
4218 
4234  const char *name;
4236  uint32_t args_num;
4239 };
4240 
4241 /* Mbuf dynamic field offset for metadata. */
4242 extern int32_t rte_flow_dynf_metadata_offs;
4243 
4244 /* Mbuf dynamic field flag mask for metadata. */
4245 extern uint64_t rte_flow_dynf_metadata_mask;
4246 
4247 /* Mbuf dynamic field pointer for metadata. */
4248 #define RTE_FLOW_DYNF_METADATA(m) \
4249  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4250 
4251 /* Mbuf dynamic flags for metadata. */
4252 #define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4253 #define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4254 
4255 __rte_experimental
4256 static inline uint32_t
4257 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4258 {
4259  return *RTE_FLOW_DYNF_METADATA(m);
4260 }
4261 
4262 __rte_experimental
4263 static inline void
4264 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4265 {
4266  *RTE_FLOW_DYNF_METADATA(m) = v;
4267 }
4268 
4278  const void *conf;
4279 };
4280 
4287 struct rte_flow;
4288 
4294 struct rte_flow_meter_profile;
4295 
4301 struct rte_flow_meter_policy;
4302 
4320  uint32_t ratio;
4322  const struct rte_flow_action *actions;
4323 };
4324 
4350 };
4351 
4365  const void *cause;
4366  const char *message;
4367 };
4368 
4378  union {
4379  const struct rte_flow_attr *attr_ro;
4381  };
4382  union {
4383  const struct rte_flow_item *pattern_ro;
4385  };
4386  union {
4387  const struct rte_flow_action *actions_ro;
4389  };
4390 };
4391 
4404 
4416 
4428 
4440 
4452 
4465 
4478 
4491 
4505 
4519 
4533 
4547 };
4548 
4568 __rte_experimental
4569 int
4570 rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4571  FILE *file, struct rte_flow_error *error);
4572 
4579 __rte_experimental
4580 static inline int
4582 {
4583  return !!rte_flow_dynf_metadata_mask;
4584 }
4585 
4596 __rte_experimental
4597 int
4599 
4652 int
4653 rte_flow_validate(uint16_t port_id,
4654  const struct rte_flow_attr *attr,
4655  const struct rte_flow_item pattern[],
4656  const struct rte_flow_action actions[],
4657  struct rte_flow_error *error);
4658 
4679 struct rte_flow *
4680 rte_flow_create(uint16_t port_id,
4681  const struct rte_flow_attr *attr,
4682  const struct rte_flow_item pattern[],
4683  const struct rte_flow_action actions[],
4684  struct rte_flow_error *error);
4685 
4706 int
4707 rte_flow_destroy(uint16_t port_id,
4708  struct rte_flow *flow,
4709  struct rte_flow_error *error);
4710 
4727 __rte_experimental
4728 int
4729 rte_flow_actions_update(uint16_t port_id,
4730  struct rte_flow *flow,
4731  const struct rte_flow_action actions[],
4732  struct rte_flow_error *error);
4733 
4750 int
4751 rte_flow_flush(uint16_t port_id,
4752  struct rte_flow_error *error);
4753 
4778 int
4779 rte_flow_query(uint16_t port_id,
4780  struct rte_flow *flow,
4781  const struct rte_flow_action *action,
4782  void *data,
4783  struct rte_flow_error *error);
4784 
4830 int
4831 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4832 
4850 int
4851 rte_flow_error_set(struct rte_flow_error *error,
4852  int code,
4853  enum rte_flow_error_type type,
4854  const void *cause,
4855  const char *message);
4856 
4862  size_t size;
4863  struct rte_flow_attr attr;
4866  uint8_t data[];
4867 };
4868 
4895 __rte_deprecated
4896 size_t
4897 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4898  const struct rte_flow_attr *attr,
4899  const struct rte_flow_item *items,
4900  const struct rte_flow_action *actions);
4901 
4942 __rte_experimental
4943 int
4945  void *dst,
4946  size_t size,
4947  const void *src,
4948  struct rte_flow_error *error);
4949 
4978 __rte_experimental
4979 int
4980 rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4981  uint32_t nb_contexts, struct rte_flow_error *error);
4982 
5022 __rte_experimental
5023 int
5024 rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
5025  uint32_t nb_contexts, struct rte_flow_error *error);
5026 
5038  uint32_t ingress:1;
5040  uint32_t egress:1;
5045  uint32_t transfer:1;
5046 };
5047 
5075 __rte_experimental
5076 struct rte_flow_action_handle *
5077 rte_flow_action_handle_create(uint16_t port_id,
5078  const struct rte_flow_indir_action_conf *conf,
5079  const struct rte_flow_action *action,
5080  struct rte_flow_error *error);
5081 
5104 __rte_experimental
5105 int
5106 rte_flow_action_handle_destroy(uint16_t port_id,
5107  struct rte_flow_action_handle *handle,
5108  struct rte_flow_error *error);
5109 
5143 __rte_experimental
5144 int
5145 rte_flow_action_handle_update(uint16_t port_id,
5146  struct rte_flow_action_handle *handle,
5147  const void *update,
5148  struct rte_flow_error *error);
5149 
5175 __rte_experimental
5176 int
5177 rte_flow_action_handle_query(uint16_t port_id,
5178  const struct rte_flow_action_handle *handle,
5179  void *data, struct rte_flow_error *error);
5180 
5181 /* Tunnel has a type and the key information. */
5182 struct rte_flow_tunnel {
5187  enum rte_flow_item_type type;
5188  uint64_t tun_id;
5190  union {
5191  struct {
5192  rte_be32_t src_addr;
5193  rte_be32_t dst_addr;
5194  } ipv4;
5195  struct {
5196  uint8_t src_addr[16];
5197  uint8_t dst_addr[16];
5198  } ipv6;
5199  };
5200  rte_be16_t tp_src;
5201  rte_be16_t tp_dst;
5202  uint16_t tun_flags;
5204  bool is_ipv6;
5210  uint8_t tos;
5211  uint8_t ttl;
5212  uint32_t label;
5213 };
5214 
5218 #define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5219 
5223 #define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5224 
5228 #define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5229 
5240  uint64_t flags;
5241  uint32_t group_id;
5242  struct rte_flow_tunnel tunnel;
5243 };
5244 
5268 __rte_experimental
5269 int
5270 rte_flow_tunnel_decap_set(uint16_t port_id,
5271  struct rte_flow_tunnel *tunnel,
5272  struct rte_flow_action **actions,
5273  uint32_t *num_of_actions,
5274  struct rte_flow_error *error);
5275 
5299 __rte_experimental
5300 int
5301 rte_flow_tunnel_match(uint16_t port_id,
5302  struct rte_flow_tunnel *tunnel,
5303  struct rte_flow_item **items,
5304  uint32_t *num_of_items,
5305  struct rte_flow_error *error);
5306 
5318 __rte_experimental
5319 uint64_t
5321 
5343 __rte_experimental
5344 int
5345 rte_flow_get_restore_info(uint16_t port_id,
5346  struct rte_mbuf *m,
5347  struct rte_flow_restore_info *info,
5348  struct rte_flow_error *error);
5349 
5366 __rte_experimental
5367 int
5368 rte_flow_tunnel_action_decap_release(uint16_t port_id,
5369  struct rte_flow_action *actions,
5370  uint32_t num_of_actions,
5371  struct rte_flow_error *error);
5372 
5389 __rte_experimental
5390 int
5391 rte_flow_tunnel_item_release(uint16_t port_id,
5392  struct rte_flow_item *items,
5393  uint32_t num_of_items,
5394  struct rte_flow_error *error);
5395 
5421 int
5422 rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5423  struct rte_flow_error *error);
5424 
5443 __rte_experimental
5444 struct rte_flow_item_flex_handle *
5445 rte_flow_flex_item_create(uint16_t port_id,
5446  const struct rte_flow_item_flex_conf *conf,
5447  struct rte_flow_error *error);
5448 
5463 __rte_experimental
5464 int
5465 rte_flow_flex_item_release(uint16_t port_id,
5466  const struct rte_flow_item_flex_handle *handle,
5467  struct rte_flow_error *error);
5468 
5473 #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5474 
5480 #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5481 
5493  uint32_t max_nb_queues;
5508  uint32_t max_nb_meters;
5518  uint32_t max_nb_quotas;
5523 };
5524 
5536  uint32_t max_size;
5537 };
5538 
5560 __rte_experimental
5561 int
5562 rte_flow_info_get(uint16_t port_id,
5563  struct rte_flow_port_info *port_info,
5564  struct rte_flow_queue_info *queue_info,
5565  struct rte_flow_error *error);
5566 
5579  uint32_t nb_counters;
5589  uint32_t nb_meters;
5594  uint32_t nb_conn_tracks;
5598  uint16_t host_port_id;
5603  uint32_t nb_quotas;
5607  uint32_t flags;
5608 };
5609 
5621  uint32_t size;
5622 };
5623 
5655 __rte_experimental
5656 int
5657 rte_flow_configure(uint16_t port_id,
5658  const struct rte_flow_port_attr *port_attr,
5659  uint16_t nb_queue,
5660  const struct rte_flow_queue_attr *queue_attr[],
5661  struct rte_flow_error *error);
5662 
5667 struct rte_flow_pattern_template;
5668 
5675 __extension__
5684  uint32_t relaxed_matching:1;
5690  uint32_t ingress:1;
5692  uint32_t egress:1;
5694  uint32_t transfer:1;
5695 };
5696 
5724 __rte_experimental
5725 struct rte_flow_pattern_template *
5726 rte_flow_pattern_template_create(uint16_t port_id,
5727  const struct rte_flow_pattern_template_attr *template_attr,
5728  const struct rte_flow_item pattern[],
5729  struct rte_flow_error *error);
5730 
5751 __rte_experimental
5752 int
5753 rte_flow_pattern_template_destroy(uint16_t port_id,
5754  struct rte_flow_pattern_template *pattern_template,
5755  struct rte_flow_error *error);
5756 
5761 struct rte_flow_actions_template;
5762 
5769 __extension__
5776  uint32_t ingress:1;
5778  uint32_t egress:1;
5780  uint32_t transfer:1;
5781 };
5782 
5818 __rte_experimental
5819 struct rte_flow_actions_template *
5820 rte_flow_actions_template_create(uint16_t port_id,
5821  const struct rte_flow_actions_template_attr *template_attr,
5822  const struct rte_flow_action actions[],
5823  const struct rte_flow_action masks[],
5824  struct rte_flow_error *error);
5825 
5846 __rte_experimental
5847 int
5848 rte_flow_actions_template_destroy(uint16_t port_id,
5849  struct rte_flow_actions_template *actions_template,
5850  struct rte_flow_error *error);
5851 
5856 struct rte_flow_template_table;
5857 
5871 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5872 
5879 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5880 
5883 #define RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE RTE_BIT32(2)
5884 
5901 };
5902 
5926 };
5927 
5938  struct rte_flow_attr flow_attr;
5942  uint32_t nb_flows;
5951  uint32_t specialize;
5955  enum rte_flow_table_insertion_type insertion_type;
5960 };
5961 
5976 __rte_experimental
5977 bool
5979  const struct rte_flow_template_table_attr *tbl_attr);
5980 
6013 __rte_experimental
6014 struct rte_flow_template_table *
6015 rte_flow_template_table_create(uint16_t port_id,
6016  const struct rte_flow_template_table_attr *table_attr,
6017  struct rte_flow_pattern_template *pattern_templates[],
6018  uint8_t nb_pattern_templates,
6019  struct rte_flow_actions_template *actions_templates[],
6020  uint8_t nb_actions_templates,
6021  struct rte_flow_error *error);
6022 
6043 __rte_experimental
6044 int
6045 rte_flow_template_table_destroy(uint16_t port_id,
6046  struct rte_flow_template_table *template_table,
6047  struct rte_flow_error *error);
6048 
6070 __rte_experimental
6071 int
6072 rte_flow_group_set_miss_actions(uint16_t port_id,
6073  uint32_t group_id,
6074  const struct rte_flow_group_attr *attr,
6075  const struct rte_flow_action actions[],
6076  struct rte_flow_error *error);
6077 
6084 __extension__
6090  uint32_t postpone:1;
6091 };
6092 
6129 __rte_experimental
6130 struct rte_flow *
6131 rte_flow_async_create(uint16_t port_id,
6132  uint32_t queue_id,
6133  const struct rte_flow_op_attr *op_attr,
6134  struct rte_flow_template_table *template_table,
6135  const struct rte_flow_item pattern[],
6136  uint8_t pattern_template_index,
6137  const struct rte_flow_action actions[],
6138  uint8_t actions_template_index,
6139  void *user_data,
6140  struct rte_flow_error *error);
6141 
6174 __rte_experimental
6175 struct rte_flow *
6176 rte_flow_async_create_by_index(uint16_t port_id,
6177  uint32_t queue_id,
6178  const struct rte_flow_op_attr *op_attr,
6179  struct rte_flow_template_table *template_table,
6180  uint32_t rule_index,
6181  const struct rte_flow_action actions[],
6182  uint8_t actions_template_index,
6183  void *user_data,
6184  struct rte_flow_error *error);
6185 
6215 __rte_experimental
6216 int
6217 rte_flow_async_destroy(uint16_t port_id,
6218  uint32_t queue_id,
6219  const struct rte_flow_op_attr *op_attr,
6220  struct rte_flow *flow,
6221  void *user_data,
6222  struct rte_flow_error *error);
6223 
6252 __rte_experimental
6253 int
6254 rte_flow_async_actions_update(uint16_t port_id,
6255  uint32_t queue_id,
6256  const struct rte_flow_op_attr *op_attr,
6257  struct rte_flow *flow,
6258  const struct rte_flow_action actions[],
6259  uint8_t actions_template_index,
6260  void *user_data,
6261  struct rte_flow_error *error);
6262 
6283 __rte_experimental
6284 int
6285 rte_flow_push(uint16_t port_id,
6286  uint32_t queue_id,
6287  struct rte_flow_error *error);
6288 
6304 };
6305 
6312 __extension__
6317  enum rte_flow_op_status status;
6321  void *user_data;
6322 };
6323 
6349 __rte_experimental
6350 int
6351 rte_flow_pull(uint16_t port_id,
6352  uint32_t queue_id,
6353  struct rte_flow_op_result res[],
6354  uint16_t n_res,
6355  struct rte_flow_error *error);
6356 
6383 __rte_experimental
6384 struct rte_flow_action_handle *
6385 rte_flow_async_action_handle_create(uint16_t port_id,
6386  uint32_t queue_id,
6387  const struct rte_flow_op_attr *op_attr,
6388  const struct rte_flow_indir_action_conf *indir_action_conf,
6389  const struct rte_flow_action *action,
6390  void *user_data,
6391  struct rte_flow_error *error);
6392 
6418 __rte_experimental
6419 int
6420 rte_flow_async_action_handle_destroy(uint16_t port_id,
6421  uint32_t queue_id,
6422  const struct rte_flow_op_attr *op_attr,
6423  struct rte_flow_action_handle *action_handle,
6424  void *user_data,
6425  struct rte_flow_error *error);
6426 
6457 __rte_experimental
6458 int
6459 rte_flow_async_action_handle_update(uint16_t port_id,
6460  uint32_t queue_id,
6461  const struct rte_flow_op_attr *op_attr,
6462  struct rte_flow_action_handle *action_handle,
6463  const void *update,
6464  void *user_data,
6465  struct rte_flow_error *error);
6466 
6501 __rte_experimental
6502 int
6503 rte_flow_async_action_handle_query(uint16_t port_id,
6504  uint32_t queue_id,
6505  const struct rte_flow_op_attr *op_attr,
6506  const struct rte_flow_action_handle *action_handle,
6507  void *data,
6508  void *user_data,
6509  struct rte_flow_error *error);
6510 
6523 };
6524 
6558 __rte_experimental
6559 int
6560 rte_flow_action_handle_query_update(uint16_t port_id,
6561  struct rte_flow_action_handle *handle,
6562  const void *update, void *query,
6563  enum rte_flow_query_update_mode mode,
6564  struct rte_flow_error *error);
6565 
6601 __rte_experimental
6602 int
6603 rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6604  const struct rte_flow_op_attr *attr,
6605  struct rte_flow_action_handle *handle,
6606  const void *update, void *query,
6607  enum rte_flow_query_update_mode mode,
6608  void *user_data,
6609  struct rte_flow_error *error);
6610 
6611 struct rte_flow_action_list_handle;
6612 
6623  struct rte_flow_action_list_handle *handle;
6632  const void **conf;
6633 };
6634 
6662 __rte_experimental
6663 struct rte_flow_action_list_handle *
6664 rte_flow_action_list_handle_create(uint16_t port_id,
6665  const
6666  struct rte_flow_indir_action_conf *conf,
6667  const struct rte_flow_action *actions,
6668  struct rte_flow_error *error);
6669 
6704 __rte_experimental
6705 struct rte_flow_action_list_handle *
6706 rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6707  const struct rte_flow_op_attr *attr,
6708  const struct rte_flow_indir_action_conf *conf,
6709  const struct rte_flow_action *actions,
6710  void *user_data,
6711  struct rte_flow_error *error);
6712 
6734 __rte_experimental
6735 int
6736 rte_flow_action_list_handle_destroy(uint16_t port_id,
6737  struct rte_flow_action_list_handle *handle,
6738  struct rte_flow_error *error);
6739 
6770 __rte_experimental
6771 int
6773  (uint16_t port_id, uint32_t queue_id,
6774  const struct rte_flow_op_attr *op_attr,
6775  struct rte_flow_action_list_handle *handle,
6776  void *user_data, struct rte_flow_error *error);
6777 
6814 __rte_experimental
6815 int
6817  const struct rte_flow_action_list_handle *handle,
6818  const void **update, void **query,
6819  enum rte_flow_query_update_mode mode,
6820  struct rte_flow_error *error);
6821 
6865 __rte_experimental
6866 int
6867 rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6868  const struct rte_flow_op_attr *attr,
6869  const struct rte_flow_action_list_handle *handle,
6870  const void **update, void **query,
6871  enum rte_flow_query_update_mode mode,
6872  void *user_data,
6873  struct rte_flow_error *error);
6874 
6901 __rte_experimental
6902 int
6903 rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6904  const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6905  uint32_t *hash, struct rte_flow_error *error);
6906 
6922 };
6923 
6954 __rte_experimental
6955 int
6956 rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[],
6957  enum rte_flow_encap_hash_field dest_field, uint8_t hash_len,
6958  uint8_t *hash, struct rte_flow_error *error);
6959 
6984 __rte_experimental
6985 int
6986 rte_flow_template_table_resize(uint16_t port_id,
6987  struct rte_flow_template_table *table,
6988  uint32_t nb_rules,
6989  struct rte_flow_error *error);
7020 __rte_experimental
7021 int
7022 rte_flow_async_update_resized(uint16_t port_id, uint32_t queue,
7023  const struct rte_flow_op_attr *attr,
7024  struct rte_flow *rule, void *user_data,
7025  struct rte_flow_error *error);
7026 
7050 __rte_experimental
7051 int
7053  struct rte_flow_template_table *table,
7054  struct rte_flow_error *error);
7055 
7056 #ifdef __cplusplus
7057 }
7058 #endif
7059 
7060 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:128
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1589
rte_be32_t u32
Definition: rte_ecpri.h:71
uint32_t nb_quotas
Definition: rte_flow.h:5603
uint8_t addr
Definition: rte_ppp.h:25
rte_flow_field_id
Definition: rte_flow.h:2395
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1222
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1343
__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:1001
static const struct rte_flow_item_quota rte_flow_item_quota_mask
Definition: rte_flow.h:755
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:5503
struct rte_flow_action * actions
Definition: rte_flow.h:4388
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1538
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:1006
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1152
__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:6623
rte_be16_t protocol
Definition: rte_flow.h:1344
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
Definition: rte_flow.h:1857
__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:989
uint32_t nb_counters
Definition: rte_flow.h:5579
struct rte_ib_bth hdr
Definition: rte_flow.h:2070
uint32_t num
Definition: rte_flow.h:793
__rte_experimental bool rte_flow_template_table_resizable(__rte_unused uint16_t port_id, const struct rte_flow_template_table_attr *tbl_attr)
__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:4380
uint32_t has_mobil_ext
Definition: rte_flow.h:995
uint32_t sec_since_last_hit
Definition: rte_flow.h:3402
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:3314
rte_flow_encap_hash_field
Definition: rte_flow.h:6917
__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:2199
uint32_t original
Definition: rte_flow.h:3535
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:2300
__rte_experimental int rte_flow_async_update_resized(uint16_t port_id, uint32_t queue, const struct rte_flow_op_attr *attr, struct rte_flow *rule, void *user_data, struct rte_flow_error *error)
uint32_t group
Definition: rte_flow.h:100
__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:5584
struct rte_flow_item * definition
Definition: rte_flow.h:3704
uint32_t nb_meters
Definition: rte_flow.h:5589
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1228
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:4159
rte_be16_t msg_len
Definition: rte_flow.h:1301
__rte_experimental int rte_flow_template_table_destroy(uint16_t port_id, struct rte_flow_template_table *template_table, struct rte_flow_error *error)
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1310
uint32_t postpone
Definition: rte_flow.h:6090
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:1041
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:1351
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:4379
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:1098
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:798
__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:1636
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1326
rte_flow_conntrack_state
Definition: rte_flow.h:3952
#define __rte_unused
Definition: rte_common.h:171
__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:1036
__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:1299
struct rte_ether_addr tla
Definition: rte_flow.h:1608
rte_flow_item_flex_field_mode
Definition: rte_flow.h:2166
rte_be16_t protocol
Definition: rte_flow.h:1180
uint32_t reserved
Definition: rte_flow.h:849
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:2324
static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask
Definition: rte_flow.h:1992
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1901
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1479
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:4865
uint32_t nb_conn_tracks
Definition: rte_flow.h:5594
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:5513
enum rte_color color
Definition: rte_flow.h:2319
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:960
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:1759
uint32_t reserved
Definition: rte_flow.h:3398
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2290
__rte_experimental int rte_flow_template_table_resize(uint16_t port_id, struct rte_flow_template_table *table, uint32_t nb_rules, struct rte_flow_error *error)
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:2075
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1564
struct rte_gtp_hdr hdr
Definition: rte_flow.h:1304
__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:1134
#define RTE_BIT32(nr)
Definition: rte_bitops.h:40
uint8_t src_addr[16]
Definition: rte_ip.h:533
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:823
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:771
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1187
uint64_t rte_be64_t
uint8_t vni[3]
Definition: rte_vxlan.h:96
const void * mask
Definition: rte_flow.h:2139
struct rte_flow_item * pattern
Definition: rte_flow.h:4384
static const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask
Definition: rte_flow.h:2350
__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:895
__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:4365
__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:2027
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:1060
__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:1321
rte_flow_error_type
Definition: rte_flow.h:4331
uint32_t has_esp_ext
Definition: rte_flow.h:991
rte_flow_conv_op
Definition: rte_flow.h:4397
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:999
__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:5518
uint32_t has_route_ext
Definition: rte_flow.h:985
__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:853
uint32_t search
Definition: rte_flow.h:848
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1154
rte_flow_quota_state
Definition: rte_flow.h:737
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:858
uint16_t limit
Definition: rte_flow.h:851
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3970
__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:457
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1647
uint32_t max_nb_queues
Definition: rte_flow.h:5493
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:1207
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1511
__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)
rte_flow_nat64_type
Definition: rte_flow.h:3606
const void * conf
Definition: rte_flow.h:4278
const char * message
Definition: rte_flow.h:4366
uint8_t opcode
Definition: rte_ib.h:30
static const struct rte_flow_item_random rte_flow_item_random_mask
Definition: rte_flow.h:2097
uint32_t close_initiated
Definition: rte_flow.h:3992
__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:852
rte_flow_item_compare_op
Definition: rte_flow.h:2548
const void * last
Definition: rte_flow.h:2138
uint32_t packet_type
Definition: rte_flow.h:2381
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1614
rte_be32_t teid
Definition: rte_flow.h:1302
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
uint32_t ingress
Definition: rte_flow.h:105
rte_be16_t tci
Definition: rte_flow.h:934
struct rte_arp_hdr hdr
Definition: rte_flow.h:1415
uint32_t max_nb_meters
Definition: rte_flow.h:5508
__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:965
size_t size
Definition: rte_flow.h:4862
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1179
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:2055
const uint8_t * pattern
Definition: rte_flow.h:2161
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1653
uint32_t supported_flags
Definition: rte_flow.h:5522
rte_flow_table_hash_func
Definition: rte_flow.h:5909
rte_be16_t length
Definition: rte_flow.h:1670
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:4387
uint32_t has_vlan
Definition: rte_flow.h:899
uint32_t has_more_vlan
Definition: rte_flow.h:940
struct rte_flow_item * items
Definition: rte_flow.h:4864
__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:3426
rte_flow_action_type
Definition: rte_flow.h:2598
struct rte_ether_addr sla
Definition: rte_flow.h:1583
rte_flow_query_update_mode
Definition: rte_flow.h:6520
__rte_experimental int rte_flow_template_table_resize_complete(uint16_t port_id, struct rte_flow_template_table *table, struct rte_flow_error *error)
rte_flow_quota_mode
Definition: rte_flow.h:3275
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2308
__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:4122
uint32_t has_hop_ext
Definition: rte_flow.h:983
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:5892
__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:1729
rte_color
Definition: rte_meter.h:32
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1812
const void * spec
Definition: rte_flow.h:2137
uint8_t label_tc_s[3]
Definition: rte_flow.h:1201
static const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask
Definition: rte_flow.h:2369
__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:1667
__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:3514
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1422
uint32_t has_hip_ext
Definition: rte_flow.h:997
const struct rte_flow_action * actions
Definition: rte_flow.h:4322
__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:3401
rte_be16_t vlan_tci
Definition: rte_ether.h:305
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:905
rte_flow_op_status
Definition: rte_flow.h:6295
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:2008
__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_be16_t class_id
Definition: rte_flow.h:2520
__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:987
uint32_t reserved
Definition: rte_flow.h:3536
__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:1835
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1712
uint32_t priority
Definition: rte_flow.h:101
uint32_t has_dest_ext
Definition: rte_flow.h:993
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1447
uint32_t max_nb_counters
Definition: rte_flow.h:5498
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:981
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1877
__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:1223
uint32_t queue_num
Definition: rte_flow.h:3513
uint8_t tni[3]
Definition: rte_flow.h:1181
struct rte_tcp_hdr hdr
Definition: rte_flow.h:1074
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1692
uint32_t transfer
Definition: rte_flow.h:127
struct rte_flow_item * definition
Definition: rte_flow.h:3737
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:946
uint8_t msg_type
Definition: rte_flow.h:1300
uint32_t reserved
Definition: rte_flow.h:941
uint32_t egress
Definition: rte_flow.h:109
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1162
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:4581
__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:5598
__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:1079
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1276
rte_be16_t inner_type
Definition: rte_flow.h:935
const struct rte_flow_action_prog_argument * args
Definition: rte_flow.h:4238
uint8_t vni[3]
Definition: rte_vxlan.h:131
__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:1055
__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:3515
__rte_experimental int rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[], enum rte_flow_encap_hash_field dest_field, uint8_t hash_len, uint8_t *hash, struct rte_flow_error *error)
const char * name
Definition: rte_flow.h:4234
rte_flow_item_type
Definition: rte_flow.h:153
__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:847
int32_t offset
Definition: rte_flow.h:850
__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:2386
rte_be16_t inner_type
Definition: rte_flow.h:1157
__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:2159
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:4383
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1388
rte_be16_t session_id
Definition: rte_flow.h:1669
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1787
__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:1093
uint32_t reserved
Definition: rte_flow.h:900