DPDK  24.11.1
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
755 static const struct rte_flow_item_quota rte_flow_item_quota_mask = {
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
798 static const struct rte_flow_item_any rte_flow_item_any_mask = {
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
858 static const struct rte_flow_item_raw rte_flow_item_raw_mask = {
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
905 static const struct rte_flow_item_eth rte_flow_item_eth_mask = {
906  .hdr.dst_addr.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
907  .hdr.src_addr.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
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
946 static const struct rte_flow_item_vlan rte_flow_item_vlan_mask = {
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
965 static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask = {
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
1006 static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask = {
1007  .hdr = {
1008  .src_addr = RTE_IPV6_MASK_FULL,
1009  .dst_addr = RTE_IPV6_MASK_FULL,
1010  },
1011 };
1012 #endif
1013 
1023  struct rte_ipv6_routing_ext hdr;
1024 };
1025 
1032  struct rte_icmp_hdr hdr;
1033 };
1034 
1036 #ifndef __cplusplus
1037 static const struct rte_flow_item_icmp rte_flow_item_icmp_mask = {
1038  .hdr = {
1039  .icmp_type = 0xff,
1040  .icmp_code = 0xff,
1041  },
1042 };
1043 #endif
1044 
1051  struct rte_udp_hdr hdr;
1052 };
1053 
1055 #ifndef __cplusplus
1056 static const struct rte_flow_item_udp rte_flow_item_udp_mask = {
1057  .hdr = {
1058  .src_port = RTE_BE16(0xffff),
1059  .dst_port = RTE_BE16(0xffff),
1060  },
1061 };
1062 #endif
1063 
1070  struct rte_tcp_hdr hdr;
1071 };
1072 
1074 #ifndef __cplusplus
1075 static const struct rte_flow_item_tcp rte_flow_item_tcp_mask = {
1076  .hdr = {
1077  .src_port = RTE_BE16(0xffff),
1078  .dst_port = RTE_BE16(0xffff),
1079  },
1080 };
1081 #endif
1082 
1089  struct rte_sctp_hdr hdr;
1090 };
1091 
1093 #ifndef __cplusplus
1094 static const struct rte_flow_item_sctp rte_flow_item_sctp_mask = {
1095  .hdr = {
1096  .src_port = RTE_BE16(0xffff),
1097  .dst_port = RTE_BE16(0xffff),
1098  },
1099 };
1100 #endif
1101 
1113  union {
1114  struct {
1115  /*
1116  * These fields are retained for compatibility.
1117  * Please switch to the new header field below.
1118  */
1119  uint8_t flags;
1120  uint8_t rsvd0[3];
1121  uint8_t vni[3];
1122  uint8_t rsvd1;
1123  };
1124  struct rte_vxlan_hdr hdr;
1125  };
1126 };
1127 
1129 #ifndef __cplusplus
1130 static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask = {
1131  .hdr.vni = { 0xff, 0xff, 0xff },
1132 };
1133 #endif
1134 
1151  uint8_t in_ecid_e;
1152  uint8_t ecid_e;
1154 };
1155 
1157 #ifndef __cplusplus
1158 static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask = {
1159  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1160 };
1161 #endif
1162 
1177  uint8_t tni[3];
1178  uint8_t flow_id;
1179 };
1180 
1182 #ifndef __cplusplus
1183 static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask = {
1184  .tni = { 0xff, 0xff, 0xff },
1185 };
1186 #endif
1187 
1197  uint8_t label_tc_s[3];
1198  uint8_t ttl;
1199 };
1200 
1202 #ifndef __cplusplus
1203 static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
1204  .label_tc_s = { 0xff, 0xff, 0xf0 },
1205 };
1206 #endif
1207 
1220 };
1221 
1223 #ifndef __cplusplus
1224 static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
1225  .protocol = RTE_BE16(0xffff),
1226 };
1227 #endif
1228 
1235  struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1236  struct rte_gre_hdr_opt_key key;
1237  struct rte_gre_hdr_opt_sequence sequence;
1238 };
1239 
1246  struct rte_macsec_hdr macsec_hdr;
1247 };
1248 
1267  uint32_t thresh;
1268 };
1269 
1271 #ifndef __cplusplus
1272 static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask = {
1273  .thresh = 0xffffffff,
1274 };
1275 #endif
1276 
1283  union {
1284  struct {
1285  /*
1286  * These are old fields kept for compatibility.
1287  * Please prefer hdr field below.
1288  */
1296  uint8_t msg_type;
1299  };
1300  struct rte_gtp_hdr hdr;
1301  };
1302 };
1303 
1305 #ifndef __cplusplus
1306 static const struct rte_flow_item_gtp rte_flow_item_gtp_mask = {
1307  .hdr.teid = RTE_BE32(UINT32_MAX),
1308 };
1309 #endif
1310 
1317  struct rte_esp_hdr hdr;
1318 };
1319 
1321 #ifndef __cplusplus
1322 static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
1323  .hdr = {
1324  .spi = RTE_BE32(0xffffffff),
1325  },
1326 };
1327 #endif
1328 
1341  uint8_t vni[3];
1342  uint8_t rsvd1;
1343 };
1344 
1346 #ifndef __cplusplus
1347 static const struct rte_flow_item_geneve rte_flow_item_geneve_mask = {
1348  .vni = { 0xff, 0xff, 0xff },
1349 };
1350 #endif
1351 
1361  union {
1362  struct {
1363  /*
1364  * These are old fields kept for compatibility.
1365  * Please prefer hdr field below.
1366  */
1367  uint8_t flags;
1368  uint8_t rsvd0[2];
1369  uint8_t protocol;
1370  uint8_t vni[3];
1371  uint8_t rsvd1;
1372  };
1373  struct rte_vxlan_gpe_hdr hdr;
1374  };
1375 };
1376 
1383 #ifndef __cplusplus
1385  .hdr.vni = { 0xff, 0xff, 0xff },
1386 };
1387 #endif
1388 
1395  union {
1396  struct {
1397  /*
1398  * These are old fields kept for compatibility.
1399  * Please prefer hdr field below.
1400  */
1403  uint8_t hln;
1404  uint8_t pln;
1406  struct rte_ether_addr sha;
1408  struct rte_ether_addr tha;
1410  };
1411  struct rte_arp_hdr hdr;
1412  };
1413 };
1414 
1416 #ifndef __cplusplus
1417 static const struct rte_flow_item_arp_eth_ipv4
1419  .hdr.arp_data.arp_sha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1420  .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1421  .hdr.arp_data.arp_tha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1422  .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1423 };
1424 #endif
1425 
1437  uint8_t next_hdr;
1438 };
1439 
1441 #ifndef __cplusplus
1442 static const
1444  .next_hdr = 0xff,
1445 };
1446 #endif
1447 
1459  struct rte_ipv6_fragment_ext hdr;
1460 };
1461 
1468  uint8_t type;
1469  uint8_t code;
1470  uint16_t checksum;
1471 };
1472 
1474 #ifndef __cplusplus
1475 static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask = {
1476  .type = 0xff,
1477  .code = 0xff,
1478 };
1479 #endif
1480 
1488  struct rte_icmp_echo_hdr hdr;
1489 };
1490 
1497  uint8_t type;
1498  uint8_t code;
1501  struct rte_ipv6_addr target_addr;
1502 };
1503 
1505 #ifndef __cplusplus
1506 static const
1509 };
1510 #endif
1511 
1518  uint8_t type;
1519  uint8_t code;
1526  struct rte_ipv6_addr target_addr;
1527 };
1528 
1530 #ifndef __cplusplus
1531 static const
1534 };
1535 #endif
1536 
1549  uint8_t type;
1550  uint8_t length;
1551 };
1552 
1554 #ifndef __cplusplus
1555 static const struct rte_flow_item_icmp6_nd_opt
1557  .type = 0xff,
1558 };
1559 #endif
1560 
1573  uint8_t type;
1574  uint8_t length;
1575  struct rte_ether_addr sla;
1576 };
1577 
1579 #ifndef __cplusplus
1580 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1582  .sla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1583 };
1584 #endif
1585 
1598  uint8_t type;
1599  uint8_t length;
1600  struct rte_ether_addr tla;
1601 };
1602 
1604 #ifndef __cplusplus
1605 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1607  .tla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1608 };
1609 #endif
1610 
1623  uint32_t data;
1624 };
1625 
1627 #ifndef __cplusplus
1628 static const struct rte_flow_item_meta rte_flow_item_meta_mask = {
1629  .data = UINT32_MAX,
1630 };
1631 #endif
1632 
1639  struct rte_gtp_psc_generic_hdr hdr;
1640 };
1641 
1643 #ifndef __cplusplus
1644 static const struct rte_flow_item_gtp_psc
1646  .hdr.qfi = 0x3f,
1647 };
1648 #endif
1649 
1659  uint8_t version_type;
1660  uint8_t code;
1663 };
1664 
1679 };
1680 
1682 #ifndef __cplusplus
1683 static const struct rte_flow_item_pppoe_proto_id
1685  .proto_id = RTE_BE16(0xffff),
1686 };
1687 #endif
1688 
1698  uint32_t data;
1699  uint8_t index;
1700 };
1701 
1703 #ifndef __cplusplus
1704 static const struct rte_flow_item_tag rte_flow_item_tag_mask = {
1705  .data = 0xffffffff,
1706  .index = 0xff,
1707 };
1708 #endif
1709 
1717 };
1718 
1720 #ifndef __cplusplus
1722  .session_id = RTE_BE32(UINT32_MAX),
1723 };
1724 #endif
1725 
1726 
1746  uint32_t id;
1747 };
1748 
1750 #ifndef __cplusplus
1751 static const struct rte_flow_item_mark rte_flow_item_mark_mask = {
1752  .id = 0xffffffff,
1753 };
1754 #endif
1755 
1765  uint32_t version:2;
1766  uint32_t oam_pkt:1;
1767  uint32_t reserved:1;
1768  uint32_t ttl:6;
1769  uint32_t length:6;
1770  uint32_t reserved1:4;
1771  uint32_t mdtype:4;
1772  uint32_t next_proto:8;
1773  uint32_t spi:24;
1774  uint32_t sindex:8;
1775 };
1776 
1778 #ifndef __cplusplus
1779 static const struct rte_flow_item_nsh rte_flow_item_nsh_mask = {
1780  .mdtype = 0xf,
1781  .next_proto = 0xff,
1782  .spi = 0xffffff,
1783  .sindex = 0xff,
1784 };
1785 #endif
1786 
1796  uint32_t type:8;
1797  uint32_t max_resp_time:8;
1798  uint32_t checksum:16;
1799  uint32_t group_addr;
1800 };
1801 
1803 #ifndef __cplusplus
1804 static const struct rte_flow_item_igmp rte_flow_item_igmp_mask = {
1805  .group_addr = 0xffffffff,
1806 };
1807 #endif
1808 
1818  uint32_t next_hdr:8;
1819  uint32_t payload_len:8;
1820  uint32_t reserved:16;
1821  uint32_t spi;
1822  uint32_t seq_num;
1823 };
1824 
1826 #ifndef __cplusplus
1827 static const struct rte_flow_item_ah rte_flow_item_ah_mask = {
1828  .spi = 0xffffffff,
1829 };
1830 #endif
1831 
1841  uint8_t s_field;
1842  uint8_t msg_type;
1843  rte_be16_t msg_len;
1844  rte_be64_t seid;
1845 };
1846 
1848 #ifndef __cplusplus
1849 static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask = {
1850  .s_field = 0x01,
1851  .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1852 };
1853 #endif
1854 
1864  struct rte_ecpri_combined_msg_hdr hdr;
1865 };
1866 
1868 #ifndef __cplusplus
1869 static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask = {
1870  .hdr = {
1871  .common = {
1872  .u32 = 0x0,
1873  },
1874  },
1875 };
1876 #endif
1877 
1884  rte_be16_t option_class;
1885  uint8_t option_type;
1886  uint8_t option_len;
1887  uint32_t *data;
1888 };
1889 
1891 #ifndef __cplusplus
1892 static const struct rte_flow_item_geneve_opt
1894  .option_type = 0xff,
1895 };
1896 #endif
1897 
1910  uint32_t level;
1911  union {
1912  __extension__
1913  struct {
1915  uint64_t packet_ok:1;
1917  uint64_t l2_ok:1;
1919  uint64_t l3_ok:1;
1921  uint64_t l4_ok:1;
1923  uint64_t l2_crc_ok:1;
1925  uint64_t ipv4_csum_ok:1;
1927  uint64_t l4_csum_ok:1;
1929  uint64_t l3_len_ok:1;
1930  uint64_t reserved:56;
1931  };
1932  uint64_t value;
1933  };
1934 };
1935 
1936 #ifndef __cplusplus
1937 static const struct rte_flow_item_integrity
1938 rte_flow_item_integrity_mask = {
1939  .level = 0,
1940  .value = 0,
1941 };
1942 #endif
1943 
1947 #define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1951 #define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1956 #define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1961 #define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1966 #define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1967 
1979  uint32_t flags;
1980 };
1981 
1983 #ifndef __cplusplus
1985  .flags = 0xffffffff,
1986 };
1987 #endif
1988 
1995  uint16_t port_id;
1996 };
1997 
1999 #ifndef __cplusplus
2000 static const struct rte_flow_item_ethdev rte_flow_item_ethdev_mask = {
2001  .port_id = 0xffff,
2002 };
2003 #endif
2004 
2014  struct rte_l2tpv2_combined_msg_hdr hdr;
2015 };
2016 
2018 #ifndef __cplusplus
2019 static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask = {
2020  /*
2021  * flags and version bit mask
2022  * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
2023  * T L x x S x O P x x x x V V V V
2024  */
2025  .hdr = {
2026  .common = {
2027  .flags_version = RTE_BE16(0xcb0f),
2028  },
2029  },
2030 };
2031 #endif
2032 
2042  struct rte_ppp_hdr hdr;
2043 };
2044 
2046 #ifndef __cplusplus
2047 static const struct rte_flow_item_ppp rte_flow_item_ppp_mask = {
2048  .hdr = {
2049  .addr = 0xff,
2050  .ctrl = 0xff,
2051  .proto_id = RTE_BE16(0xffff),
2052  }
2053 };
2054 #endif
2055 
2062  struct rte_ib_bth hdr;
2063 };
2064 
2066 #ifndef __cplusplus
2067 static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask = {
2068  .hdr = {
2069  .opcode = 0xff,
2070  .dst_qp = { 0xff, 0xff, 0xff },
2071  },
2072 };
2073 #endif
2074 
2084  uint32_t value;
2085 };
2086 
2088 #ifndef __cplusplus
2089 static const struct rte_flow_item_random rte_flow_item_random_mask = {
2090  .value = UINT32_MAX,
2091 };
2092 #endif
2093 
2128  enum rte_flow_item_type type;
2129  const void *spec;
2130  const void *last;
2131  const void *mask;
2132 };
2133 
2151  struct rte_flow_item_flex_handle *handle;
2152  uint32_t length;
2153  const uint8_t *pattern;
2154 };
2186 };
2187 
2217 };
2218 
2224 __extension__
2228  uint32_t field_size;
2229  int32_t field_base;
2230  uint32_t offset_base;
2231  uint32_t offset_mask;
2232  int32_t offset_shift;
2233  uint32_t field_id:16;
2234  uint32_t reserved:16;
2235 };
2236 
2247  struct rte_flow_item item;
2252  uint32_t next;
2253 };
2254 
2284  uint32_t nb_samples;
2294  uint32_t nb_inputs;
2302  uint32_t nb_outputs;
2303 };
2304 
2311  enum rte_color color;
2312 };
2313 
2315 #ifndef __cplusplus
2317  .color = RTE_COLORS,
2318 };
2319 #endif
2320 
2336  uint8_t affinity;
2337 };
2338 
2340 #ifndef __cplusplus
2341 static const struct rte_flow_item_aggr_affinity
2343  .affinity = 0xff,
2344 };
2345 #endif
2346 
2356  uint16_t tx_queue;
2357 };
2358 
2360 #ifndef __cplusplus
2362  .tx_queue = 0xffff,
2363 };
2364 #endif
2365 
2373  uint32_t packet_type;
2374 };
2375 
2377 #ifndef __cplusplus
2378 static const struct rte_flow_item_ptype rte_flow_item_ptype_mask = {
2379  .packet_type = 0xffffffff,
2380 };
2381 #endif
2382 
2440 };
2441 
2450  enum rte_flow_field_id field;
2451  union {
2452  struct {
2454  union {
2455  struct {
2490  uint8_t level;
2491  union {
2497  uint8_t tag_index;
2504  struct {
2508  uint8_t type;
2513  };
2514  };
2515  };
2516  struct rte_flow_item_flex_handle *flex_handle;
2517  };
2519  uint32_t offset;
2520  };
2527  uint8_t value[16];
2533  void *pvalue;
2534  };
2535 };
2536 
2541  RTE_FLOW_ITEM_COMPARE_EQ, /* Compare result equal. */
2542  RTE_FLOW_ITEM_COMPARE_NE, /* Compare result not equal. */
2543  RTE_FLOW_ITEM_COMPARE_LT, /* Compare result less than. */
2544  RTE_FLOW_ITEM_COMPARE_LE, /* Compare result less than or equal. */
2545  RTE_FLOW_ITEM_COMPARE_GT, /* Compare result great than. */
2546  RTE_FLOW_ITEM_COMPARE_GE, /* Compare result great than or equal. */
2547 };
2548 
2558  enum rte_flow_item_compare_op operation; /* The compare operation. */
2559  struct rte_flow_field_data a; /* Field be compared. */
2560  struct rte_flow_field_data b; /* Field as comparator. */
2561  uint32_t width; /* Compare width. */
2562 };
2563 
2598 
2606 
2614 
2623 
2635 
2647 
2654 
2663 
2674 
2683 
2695 
2707 
2718 
2726 
2734 
2745 
2753 
2761 
2769 
2777 
2785 
2793 
2801 
2810 
2818 
2827 
2834 
2841 
2854 
2867 
2880 
2893 
2907 
2921 
2932 
2942 
2952 
2965 
2978 
2995 
3012 
3029 
3046 
3059 
3069 
3082 
3095 
3108 
3116 
3127 
3138 
3146 
3155 
3163 
3170 
3178 
3186 
3196 
3205 
3215 
3224 
3234 
3241 
3250 
3257 
3266 };
3267 
3280 };
3281 
3291  enum rte_flow_quota_mode mode;
3292  int64_t quota;
3293 };
3294 
3304  int64_t quota;
3305 };
3306 
3318 };
3319 
3330  int64_t quota;
3331 };
3332 
3344  uint32_t id;
3345 };
3346 
3360  uint32_t group;
3361 };
3362 
3369  uint16_t index;
3370 };
3371 
3386  uint32_t timeout:24;
3387  uint32_t reserved:8;
3389  void *context;
3390 };
3391 
3399  uint32_t reserved:6;
3400  uint32_t aged:1;
3403  uint32_t sec_since_last_hit:24;
3404 };
3405 
3426  uint32_t reserved:6;
3427  uint32_t timeout_valid:1;
3428  uint32_t timeout:24;
3430  uint32_t touch:1;
3431 };
3432 
3451  uint32_t id;
3452 };
3453 
3460  uint32_t reset:1;
3461  uint32_t hits_set:1;
3462  uint32_t bytes_set:1;
3463  uint32_t reserved:29;
3464  uint64_t hits;
3465  uint64_t bytes;
3466 };
3467 
3511  uint32_t level;
3512  uint64_t types;
3513  uint32_t key_len;
3514  uint32_t queue_num;
3515  const uint8_t *key;
3516  const uint16_t *queue;
3517 };
3518 
3536  uint32_t original:1;
3537  uint32_t reserved:31;
3538  uint32_t id;
3539 };
3540 
3553  uint32_t original:1;
3554  uint32_t reserved:31;
3555  uint32_t id;
3556 };
3557 
3567  uint32_t mtr_id;
3568 };
3569 
3602 };
3603 
3610 };
3611 
3621  enum rte_flow_nat64_type type;
3622 };
3623 
3632 };
3633 
3642 };
3643 
3651  uint8_t vlan_pcp;
3652 };
3653 
3662 };
3663 
3672 };
3673 
3706 };
3707 
3739 };
3740 
3761  uint8_t *data;
3762  uint8_t *preserve;
3763  size_t size;
3764 };
3765 
3782  uint8_t *data;
3783  size_t size;
3784 };
3785 
3798  rte_be32_t ipv4_addr;
3799 };
3800 
3813  struct rte_ipv6_addr ipv6_addr;
3814 };
3815 
3829  uint8_t *data;
3830  size_t size;
3831  uint8_t type;
3832 };
3833 
3845  uint8_t type;
3846 };
3847 
3860  rte_be16_t port;
3861 };
3862 
3869  uint8_t ttl_value;
3870 };
3871 
3878  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3879 };
3880 
3891  uint32_t data;
3892  uint32_t mask;
3893  uint8_t index;
3894 };
3895 
3916  uint32_t data;
3917  uint32_t mask;
3918 };
3919 
3928  uint8_t dscp;
3929 };
3930 
3948 struct rte_flow_action_handle;
3949 
3966 };
3967 
3978 };
3979 
3991  uint32_t scale:4;
3993  uint32_t close_initiated:1;
3995  uint32_t last_ack_seen:1;
4000  uint32_t data_unacked:1;
4005  uint32_t sent_end;
4010  uint32_t reply_end;
4012  uint32_t max_win;
4014  uint32_t max_ack;
4015 };
4016 
4029  uint16_t peer_port;
4034  uint32_t is_original_dir:1;
4042  uint32_t enable:1;
4044  uint32_t live_connection:1;
4046  uint32_t selective_ack:1;
4053  uint32_t last_direction:1;
4055  uint32_t liberal_mode:1;
4067  uint16_t last_window;
4068  enum rte_flow_conntrack_tcp_last_index last_index;
4070  uint32_t last_seq;
4072  uint32_t last_ack;
4077  uint32_t last_end;
4078 };
4079 
4091  uint32_t direction:1;
4093  uint32_t state:1;
4095  uint32_t reserved:30;
4096 };
4097 
4108  enum rte_color color;
4109 };
4110 
4117  uint16_t port_id;
4118 };
4119 
4127 };
4128 
4141  struct rte_flow_field_data dst;
4142  struct rte_flow_field_data src;
4143  uint32_t width;
4144 };
4145 
4158 
4160  struct rte_flow_meter_profile *profile;
4162  struct rte_flow_meter_policy *policy;
4166  int state;
4167 };
4168 
4178  uint32_t profile_valid:1;
4180  uint32_t policy_valid:1;
4182  uint32_t color_mode_valid:1;
4184  uint32_t state_valid:1;
4186  uint32_t reserved:28;
4187 };
4188 
4197  enum rte_color init_color;
4198 };
4199 
4213  const char *name;
4215  uint32_t size;
4217  const uint8_t *value;
4218 };
4219 
4235  const char *name;
4237  uint32_t args_num;
4240 };
4241 
4242 /* Mbuf dynamic field offset for metadata. */
4243 extern int32_t rte_flow_dynf_metadata_offs;
4244 
4245 /* Mbuf dynamic field flag mask for metadata. */
4246 extern uint64_t rte_flow_dynf_metadata_mask;
4247 
4248 /* Mbuf dynamic field pointer for metadata. */
4249 #define RTE_FLOW_DYNF_METADATA(m) \
4250  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4251 
4252 /* Mbuf dynamic flags for metadata. */
4253 #define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4254 #define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4255 
4256 __rte_experimental
4257 static inline uint32_t
4258 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4259 {
4260  return *RTE_FLOW_DYNF_METADATA(m);
4261 }
4262 
4263 __rte_experimental
4264 static inline void
4265 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4266 {
4267  *RTE_FLOW_DYNF_METADATA(m) = v;
4268 }
4269 
4280  struct rte_flow_template_table *table;
4281  uint32_t index;
4282 };
4283 
4292  enum rte_flow_action_type type;
4293  const void *conf;
4294 };
4295 
4302 struct rte_flow;
4303 
4309 struct rte_flow_meter_profile;
4310 
4316 struct rte_flow_meter_policy;
4317 
4335  uint32_t ratio;
4337  const struct rte_flow_action *actions;
4338 };
4339 
4365 };
4366 
4379  enum rte_flow_error_type type;
4380  const void *cause;
4381  const char *message;
4382 };
4383 
4393  union {
4394  const struct rte_flow_attr *attr_ro;
4396  };
4397  union {
4398  const struct rte_flow_item *pattern_ro;
4400  };
4401  union {
4402  const struct rte_flow_action *actions_ro;
4404  };
4405 };
4406 
4419 
4431 
4443 
4455 
4467 
4480 
4493 
4506 
4520 
4534 
4548 
4562 };
4563 
4583 __rte_experimental
4584 int
4585 rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4586  FILE *file, struct rte_flow_error *error);
4587 
4594 __rte_experimental
4595 static inline int
4597 {
4598  return !!rte_flow_dynf_metadata_mask;
4599 }
4600 
4611 __rte_experimental
4612 int
4614 
4667 int
4668 rte_flow_validate(uint16_t port_id,
4669  const struct rte_flow_attr *attr,
4670  const struct rte_flow_item pattern[],
4671  const struct rte_flow_action actions[],
4672  struct rte_flow_error *error);
4673 
4694 struct rte_flow *
4695 rte_flow_create(uint16_t port_id,
4696  const struct rte_flow_attr *attr,
4697  const struct rte_flow_item pattern[],
4698  const struct rte_flow_action actions[],
4699  struct rte_flow_error *error);
4700 
4721 int
4722 rte_flow_destroy(uint16_t port_id,
4723  struct rte_flow *flow,
4724  struct rte_flow_error *error);
4725 
4742 __rte_experimental
4743 int
4744 rte_flow_actions_update(uint16_t port_id,
4745  struct rte_flow *flow,
4746  const struct rte_flow_action actions[],
4747  struct rte_flow_error *error);
4748 
4765 int
4766 rte_flow_flush(uint16_t port_id,
4767  struct rte_flow_error *error);
4768 
4793 int
4794 rte_flow_query(uint16_t port_id,
4795  struct rte_flow *flow,
4796  const struct rte_flow_action *action,
4797  void *data,
4798  struct rte_flow_error *error);
4799 
4845 int
4846 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4847 
4865 int
4867  int code,
4868  enum rte_flow_error_type type,
4869  const void *cause,
4870  const char *message);
4871 
4877  size_t size;
4878  struct rte_flow_attr attr;
4881  uint8_t data[];
4882 };
4883 
4910 __rte_deprecated
4911 size_t
4912 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4913  const struct rte_flow_attr *attr,
4914  const struct rte_flow_item *items,
4915  const struct rte_flow_action *actions);
4916 
4957 __rte_experimental
4958 int
4960  void *dst,
4961  size_t size,
4962  const void *src,
4963  struct rte_flow_error *error);
4964 
4993 __rte_experimental
4994 int
4995 rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4996  uint32_t nb_contexts, struct rte_flow_error *error);
4997 
5037 __rte_experimental
5038 int
5039 rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
5040  uint32_t nb_contexts, struct rte_flow_error *error);
5041 
5053  uint32_t ingress:1;
5055  uint32_t egress:1;
5060  uint32_t transfer:1;
5061 };
5062 
5090 __rte_experimental
5091 struct rte_flow_action_handle *
5093  const struct rte_flow_indir_action_conf *conf,
5094  const struct rte_flow_action *action,
5095  struct rte_flow_error *error);
5096 
5119 __rte_experimental
5120 int
5122  struct rte_flow_action_handle *handle,
5123  struct rte_flow_error *error);
5124 
5158 __rte_experimental
5159 int
5161  struct rte_flow_action_handle *handle,
5162  const void *update,
5163  struct rte_flow_error *error);
5164 
5190 __rte_experimental
5191 int
5193  const struct rte_flow_action_handle *handle,
5194  void *data, struct rte_flow_error *error);
5195 
5196 /* Tunnel has a type and the key information. */
5197 struct rte_flow_tunnel {
5202  enum rte_flow_item_type type;
5203  uint64_t tun_id;
5205  union {
5206  struct {
5207  rte_be32_t src_addr;
5208  rte_be32_t dst_addr;
5209  } ipv4;
5210  struct {
5211  struct rte_ipv6_addr src_addr;
5212  struct rte_ipv6_addr dst_addr;
5213  } ipv6;
5214  };
5215  rte_be16_t tp_src;
5216  rte_be16_t tp_dst;
5217  uint16_t tun_flags;
5219  bool is_ipv6;
5225  uint8_t tos;
5226  uint8_t ttl;
5227  uint32_t label;
5228 };
5229 
5233 #define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5234 
5238 #define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5239 
5243 #define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5244 
5255  uint64_t flags;
5256  uint32_t group_id;
5257  struct rte_flow_tunnel tunnel;
5258 };
5259 
5283 __rte_experimental
5284 int
5285 rte_flow_tunnel_decap_set(uint16_t port_id,
5286  struct rte_flow_tunnel *tunnel,
5287  struct rte_flow_action **actions,
5288  uint32_t *num_of_actions,
5289  struct rte_flow_error *error);
5290 
5314 __rte_experimental
5315 int
5316 rte_flow_tunnel_match(uint16_t port_id,
5317  struct rte_flow_tunnel *tunnel,
5318  struct rte_flow_item **items,
5319  uint32_t *num_of_items,
5320  struct rte_flow_error *error);
5321 
5333 __rte_experimental
5334 uint64_t
5336 
5358 __rte_experimental
5359 int
5360 rte_flow_get_restore_info(uint16_t port_id,
5361  struct rte_mbuf *m,
5362  struct rte_flow_restore_info *info,
5363  struct rte_flow_error *error);
5364 
5381 __rte_experimental
5382 int
5384  struct rte_flow_action *actions,
5385  uint32_t num_of_actions,
5386  struct rte_flow_error *error);
5387 
5404 __rte_experimental
5405 int
5407  struct rte_flow_item *items,
5408  uint32_t num_of_items,
5409  struct rte_flow_error *error);
5410 
5436 int
5437 rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5438  struct rte_flow_error *error);
5439 
5458 __rte_experimental
5459 struct rte_flow_item_flex_handle *
5460 rte_flow_flex_item_create(uint16_t port_id,
5461  const struct rte_flow_item_flex_conf *conf,
5462  struct rte_flow_error *error);
5463 
5478 __rte_experimental
5479 int
5481  const struct rte_flow_item_flex_handle *handle,
5482  struct rte_flow_error *error);
5483 
5488 #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5489 
5495 #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5496 
5508  uint32_t max_nb_queues;
5523  uint32_t max_nb_meters;
5533  uint32_t max_nb_quotas;
5538 };
5539 
5551  uint32_t max_size;
5552 };
5553 
5575 __rte_experimental
5576 int
5577 rte_flow_info_get(uint16_t port_id,
5578  struct rte_flow_port_info *port_info,
5579  struct rte_flow_queue_info *queue_info,
5580  struct rte_flow_error *error);
5581 
5594  uint32_t nb_counters;
5604  uint32_t nb_meters;
5609  uint32_t nb_conn_tracks;
5613  uint16_t host_port_id;
5618  uint32_t nb_quotas;
5622  uint32_t flags;
5623 };
5624 
5636  uint32_t size;
5637 };
5638 
5670 __rte_experimental
5671 int
5672 rte_flow_configure(uint16_t port_id,
5673  const struct rte_flow_port_attr *port_attr,
5674  uint16_t nb_queue,
5675  const struct rte_flow_queue_attr *queue_attr[],
5676  struct rte_flow_error *error);
5677 
5682 struct rte_flow_pattern_template;
5683 
5690 __extension__
5699  uint32_t relaxed_matching:1;
5705  uint32_t ingress:1;
5707  uint32_t egress:1;
5709  uint32_t transfer:1;
5710 };
5711 
5739 __rte_experimental
5740 struct rte_flow_pattern_template *
5742  const struct rte_flow_pattern_template_attr *template_attr,
5743  const struct rte_flow_item pattern[],
5744  struct rte_flow_error *error);
5745 
5766 __rte_experimental
5767 int
5769  struct rte_flow_pattern_template *pattern_template,
5770  struct rte_flow_error *error);
5771 
5776 struct rte_flow_actions_template;
5777 
5784 __extension__
5791  uint32_t ingress:1;
5793  uint32_t egress:1;
5795  uint32_t transfer:1;
5796 };
5797 
5833 __rte_experimental
5834 struct rte_flow_actions_template *
5836  const struct rte_flow_actions_template_attr *template_attr,
5837  const struct rte_flow_action actions[],
5838  const struct rte_flow_action masks[],
5839  struct rte_flow_error *error);
5840 
5861 __rte_experimental
5862 int
5864  struct rte_flow_actions_template *actions_template,
5865  struct rte_flow_error *error);
5866 
5871 struct rte_flow_template_table;
5872 
5886 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5894 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5898 #define RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE RTE_BIT32(2)
5920 };
5921 
5945 };
5946 
5957  struct rte_flow_attr flow_attr;
5961  uint32_t nb_flows;
5970  uint32_t specialize;
5979 };
5980 
5995 __rte_experimental
5996 bool
5998  const struct rte_flow_template_table_attr *tbl_attr);
5999 
6032 __rte_experimental
6033 struct rte_flow_template_table *
6035  const struct rte_flow_template_table_attr *table_attr,
6036  struct rte_flow_pattern_template *pattern_templates[],
6037  uint8_t nb_pattern_templates,
6038  struct rte_flow_actions_template *actions_templates[],
6039  uint8_t nb_actions_templates,
6040  struct rte_flow_error *error);
6041 
6062 __rte_experimental
6063 int
6065  struct rte_flow_template_table *template_table,
6066  struct rte_flow_error *error);
6067 
6089 __rte_experimental
6090 int
6092  uint32_t group_id,
6093  const struct rte_flow_group_attr *attr,
6094  const struct rte_flow_action actions[],
6095  struct rte_flow_error *error);
6096 
6103 __extension__
6109  uint32_t postpone:1;
6110 };
6111 
6148 __rte_experimental
6149 struct rte_flow *
6150 rte_flow_async_create(uint16_t port_id,
6151  uint32_t queue_id,
6152  const struct rte_flow_op_attr *op_attr,
6153  struct rte_flow_template_table *template_table,
6154  const struct rte_flow_item pattern[],
6155  uint8_t pattern_template_index,
6156  const struct rte_flow_action actions[],
6157  uint8_t actions_template_index,
6158  void *user_data,
6159  struct rte_flow_error *error);
6160 
6193 __rte_experimental
6194 struct rte_flow *
6196  uint32_t queue_id,
6197  const struct rte_flow_op_attr *op_attr,
6198  struct rte_flow_template_table *template_table,
6199  uint32_t rule_index,
6200  const struct rte_flow_action actions[],
6201  uint8_t actions_template_index,
6202  void *user_data,
6203  struct rte_flow_error *error);
6204 
6245 __rte_experimental
6246 struct rte_flow *
6248  uint32_t queue_id,
6249  const struct rte_flow_op_attr *op_attr,
6250  struct rte_flow_template_table *template_table,
6251  uint32_t rule_index,
6252  const struct rte_flow_item pattern[],
6253  uint8_t pattern_template_index,
6254  const struct rte_flow_action actions[],
6255  uint8_t actions_template_index,
6256  void *user_data,
6257  struct rte_flow_error *error);
6258 
6288 __rte_experimental
6289 int
6290 rte_flow_async_destroy(uint16_t port_id,
6291  uint32_t queue_id,
6292  const struct rte_flow_op_attr *op_attr,
6293  struct rte_flow *flow,
6294  void *user_data,
6295  struct rte_flow_error *error);
6296 
6325 __rte_experimental
6326 int
6328  uint32_t queue_id,
6329  const struct rte_flow_op_attr *op_attr,
6330  struct rte_flow *flow,
6331  const struct rte_flow_action actions[],
6332  uint8_t actions_template_index,
6333  void *user_data,
6334  struct rte_flow_error *error);
6335 
6356 __rte_experimental
6357 int
6358 rte_flow_push(uint16_t port_id,
6359  uint32_t queue_id,
6360  struct rte_flow_error *error);
6361 
6377 };
6378 
6385 __extension__
6394  void *user_data;
6395 };
6396 
6422 __rte_experimental
6423 int
6424 rte_flow_pull(uint16_t port_id,
6425  uint32_t queue_id,
6426  struct rte_flow_op_result res[],
6427  uint16_t n_res,
6428  struct rte_flow_error *error);
6429 
6456 __rte_experimental
6457 struct rte_flow_action_handle *
6459  uint32_t queue_id,
6460  const struct rte_flow_op_attr *op_attr,
6461  const struct rte_flow_indir_action_conf *indir_action_conf,
6462  const struct rte_flow_action *action,
6463  void *user_data,
6464  struct rte_flow_error *error);
6465 
6491 __rte_experimental
6492 int
6494  uint32_t queue_id,
6495  const struct rte_flow_op_attr *op_attr,
6496  struct rte_flow_action_handle *action_handle,
6497  void *user_data,
6498  struct rte_flow_error *error);
6499 
6530 __rte_experimental
6531 int
6533  uint32_t queue_id,
6534  const struct rte_flow_op_attr *op_attr,
6535  struct rte_flow_action_handle *action_handle,
6536  const void *update,
6537  void *user_data,
6538  struct rte_flow_error *error);
6539 
6574 __rte_experimental
6575 int
6577  uint32_t queue_id,
6578  const struct rte_flow_op_attr *op_attr,
6579  const struct rte_flow_action_handle *action_handle,
6580  void *data,
6581  void *user_data,
6582  struct rte_flow_error *error);
6583 
6596 };
6597 
6631 __rte_experimental
6632 int
6634  struct rte_flow_action_handle *handle,
6635  const void *update, void *query,
6636  enum rte_flow_query_update_mode mode,
6637  struct rte_flow_error *error);
6638 
6674 __rte_experimental
6675 int
6676 rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6677  const struct rte_flow_op_attr *attr,
6678  struct rte_flow_action_handle *handle,
6679  const void *update, void *query,
6680  enum rte_flow_query_update_mode mode,
6681  void *user_data,
6682  struct rte_flow_error *error);
6683 
6684 struct rte_flow_action_list_handle;
6685 
6696  struct rte_flow_action_list_handle *handle;
6705  const void **conf;
6706 };
6707 
6735 __rte_experimental
6736 struct rte_flow_action_list_handle *
6738  const
6739  struct rte_flow_indir_action_conf *conf,
6740  const struct rte_flow_action *actions,
6741  struct rte_flow_error *error);
6742 
6777 __rte_experimental
6778 struct rte_flow_action_list_handle *
6779 rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6780  const struct rte_flow_op_attr *attr,
6781  const struct rte_flow_indir_action_conf *conf,
6782  const struct rte_flow_action *actions,
6783  void *user_data,
6784  struct rte_flow_error *error);
6785 
6807 __rte_experimental
6808 int
6810  struct rte_flow_action_list_handle *handle,
6811  struct rte_flow_error *error);
6812 
6843 __rte_experimental
6844 int
6846  (uint16_t port_id, uint32_t queue_id,
6847  const struct rte_flow_op_attr *op_attr,
6848  struct rte_flow_action_list_handle *handle,
6849  void *user_data, struct rte_flow_error *error);
6850 
6887 __rte_experimental
6888 int
6890  const struct rte_flow_action_list_handle *handle,
6891  const void **update, void **query,
6892  enum rte_flow_query_update_mode mode,
6893  struct rte_flow_error *error);
6894 
6938 __rte_experimental
6939 int
6940 rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6941  const struct rte_flow_op_attr *attr,
6942  const struct rte_flow_action_list_handle *handle,
6943  const void **update, void **query,
6944  enum rte_flow_query_update_mode mode,
6945  void *user_data,
6946  struct rte_flow_error *error);
6947 
6974 __rte_experimental
6975 int
6976 rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6977  const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6978  uint32_t *hash, struct rte_flow_error *error);
6979 
6995 };
6996 
7027 __rte_experimental
7028 int
7029 rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[],
7030  enum rte_flow_encap_hash_field dest_field, uint8_t hash_len,
7031  uint8_t *hash, struct rte_flow_error *error);
7032 
7057 __rte_experimental
7058 int
7060  struct rte_flow_template_table *table,
7061  uint32_t nb_rules,
7062  struct rte_flow_error *error);
7093 __rte_experimental
7094 int
7095 rte_flow_async_update_resized(uint16_t port_id, uint32_t queue,
7096  const struct rte_flow_op_attr *attr,
7097  struct rte_flow *rule, void *user_data,
7098  struct rte_flow_error *error);
7099 
7123 __rte_experimental
7124 int
7126  struct rte_flow_template_table *table,
7127  struct rte_flow_error *error);
7128 
7129 #ifdef __cplusplus
7130 }
7131 #endif
7132 
7133 #endif /* RTE_FLOW_H_ */
#define RTE_BIT32(nr)
Definition: rte_bitops.h:44
uint32_t rte_be32_t
uint64_t rte_be64_t
uint16_t rte_be16_t
#define __rte_unused
Definition: rte_common.h:171
rte_eth_hash_function
Definition: rte_ethdev.h:466
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:27
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_experimental int rte_flow_actions_template_destroy(uint16_t port_id, struct rte_flow_actions_template *actions_template, struct rte_flow_error *error)
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:823
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
static const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask
Definition: rte_flow.h:2342
__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)
rte_flow_modify_op
Definition: rte_flow.h:4123
@ RTE_FLOW_MODIFY_SET
Definition: rte_flow.h:4124
@ RTE_FLOW_MODIFY_SUB
Definition: rte_flow.h:4126
@ RTE_FLOW_MODIFY_ADD
Definition: rte_flow.h:4125
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1224
__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)
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:4596
__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_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1507
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1384
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1628
__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)
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1581
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:1037
rte_flow_item_compare_op
Definition: rte_flow.h:2540
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1645
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:1130
rte_flow_quota_mode
Definition: rte_flow.h:3276
@ RTE_FLOW_QUOTA_MODE_L3
Definition: rte_flow.h:3279
@ RTE_FLOW_QUOTA_MODE_L2
Definition: rte_flow.h:3278
@ RTE_FLOW_QUOTA_MODE_PACKET
Definition: rte_flow.h:3277
rte_flow_update_quota_op
Definition: rte_flow.h:3315
@ RTE_FLOW_UPDATE_QUOTA_SET
Definition: rte_flow.h:3316
@ RTE_FLOW_UPDATE_QUOTA_ADD
Definition: rte_flow.h:3317
__rte_experimental int rte_flow_template_table_destroy(uint16_t port_id, struct rte_flow_template_table *template_table, struct rte_flow_error *error)
__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)
__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)
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1684
rte_flow_op_status
Definition: rte_flow.h:6368
@ RTE_FLOW_OP_SUCCESS
Definition: rte_flow.h:6372
@ RTE_FLOW_OP_ERROR
Definition: rte_flow.h:6376
static const struct rte_flow_item_quota rte_flow_item_quota_mask
Definition: rte_flow.h:755
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3971
@ RTE_FLOW_CONNTRACK_FLAG_ACK
Definition: rte_flow.h:3976
@ RTE_FLOW_CONNTRACK_FLAG_SYNACK
Definition: rte_flow.h:3974
@ RTE_FLOW_CONNTRACK_FLAG_FIN
Definition: rte_flow.h:3975
@ RTE_FLOW_CONNTRACK_FLAG_SYN
Definition: rte_flow.h:3973
@ RTE_FLOW_CONNTRACK_FLAG_RST
Definition: rte_flow.h:3977
@ RTE_FLOW_CONNTRACK_FLAG_NONE
Definition: rte_flow.h:3972
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1347
__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_flow_conntrack_state
Definition: rte_flow.h:3953
@ RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
Definition: rte_flow.h:3957
@ RTE_FLOW_CONNTRACK_STATE_SYN_RECV
Definition: rte_flow.h:3955
@ RTE_FLOW_CONNTRACK_STATE_LAST_ACK
Definition: rte_flow.h:3963
@ RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
Definition: rte_flow.h:3959
@ RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
Definition: rte_flow.h:3965
@ RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
Definition: rte_flow.h:3961
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1158
__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_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)
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)
__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_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 int rte_flow_get_aged_flows(uint16_t port_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error)
int rte_flow_flush(uint16_t port_id, struct rte_flow_error *error)
__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)
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1443
__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)
__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_flow_encap_hash_field
Definition: rte_flow.h:6990
@ RTE_FLOW_ENCAP_HASH_FIELD_SRC_PORT
Definition: rte_flow.h:6992
@ RTE_FLOW_ENCAP_HASH_FIELD_NVGRE_FLOW_ID
Definition: rte_flow.h:6994
__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)
__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)
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
Definition: rte_flow.h:1849
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1721
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1704
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1606
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:858
static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
Definition: rte_flow.h:2316
rte_flow_query_update_mode
Definition: rte_flow.h:6593
@ RTE_FLOW_QU_UPDATE_FIRST
Definition: rte_flow.h:6595
@ RTE_FLOW_QU_QUERY_FIRST
Definition: rte_flow.h:6594
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow, FILE *file, struct rte_flow_error *error)
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_hash_func
Definition: rte_flow.h:5928
@ RTE_FLOW_TABLE_HASH_FUNC_CRC16
Definition: rte_flow.h:5944
@ RTE_FLOW_TABLE_HASH_FUNC_LINEAR
Definition: rte_flow.h:5936
@ RTE_FLOW_TABLE_HASH_FUNC_DEFAULT
Definition: rte_flow.h:5932
@ RTE_FLOW_TABLE_HASH_FUNC_CRC32
Definition: rte_flow.h:5940
__rte_experimental bool rte_flow_template_table_resizable(__rte_unused uint16_t port_id, const struct rte_flow_template_table_attr *tbl_attr)
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:946
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:1075
int rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id, struct rte_flow_error *error)
rte_flow_conv_op
Definition: rte_flow.h:4412
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:4561
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:4442
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:4492
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:4418
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:4505
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:4430
@ RTE_FLOW_CONV_OP_ITEM_MASK
Definition: rte_flow.h:4454
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:4533
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:4547
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:4479
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:4519
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:4466
__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)
__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)
__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)
rte_flow_action_type
Definition: rte_flow.h:2590
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:2752
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:2800
@ RTE_FLOW_ACTION_TYPE_SKIP_CMAN
Definition: rte_flow.h:3214
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:2817
@ RTE_FLOW_ACTION_TYPE_QUOTA
Definition: rte_flow.h:3204
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition: rte_flow.h:2994
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:2613
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:2673
@ RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
Definition: rte_flow.h:3195
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:2920
@ RTE_FLOW_ACTION_TYPE_INDIRECT
Definition: rte_flow.h:3145
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:2833
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:2706
@ RTE_FLOW_ACTION_TYPE_SET_META
Definition: rte_flow.h:3068
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:2931
@ RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX
Definition: rte_flow.h:3265
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE
Definition: rte_flow.h:3233
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:2879
@ RTE_FLOW_ACTION_TYPE_NAT64
Definition: rte_flow.h:3256
@ RTE_FLOW_ACTION_TYPE_METER_MARK
Definition: rte_flow.h:3185
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:2784
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:2840
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:2605
@ RTE_FLOW_ACTION_TYPE_AGE
Definition: rte_flow.h:3107
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:2682
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:2634
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:2853
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:2744
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:2866
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH
Definition: rte_flow.h:3223
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:2653
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:2597
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
Definition: rte_flow.h:3081
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:2760
@ RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:3169
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
Definition: rte_flow.h:3094
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition: rte_flow.h:3045
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:2941
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:2809
@ RTE_FLOW_ACTION_TYPE_PROG
Definition: rte_flow.h:3249
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:2906
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:2717
@ RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:3177
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:2826
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:2733
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:2792
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:2768
@ RTE_FLOW_ACTION_TYPE_INDIRECT_LIST
Definition: rte_flow.h:3240
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition: rte_flow.h:3028
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:2646
@ RTE_FLOW_ACTION_TYPE_CONNTRACK
Definition: rte_flow.h:3154
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:2977
@ RTE_FLOW_ACTION_TYPE_METER_COLOR
Definition: rte_flow.h:3162
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:2725
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:2694
@ RTE_FLOW_ACTION_TYPE_SET_TAG
Definition: rte_flow.h:3058
@ RTE_FLOW_ACTION_TYPE_SHARED
Definition: rte_flow.h:3126
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:2892
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:2951
@ RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
Definition: rte_flow.h:3137
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:2662
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:2776
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:2964
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition: rte_flow.h:3011
@ RTE_FLOW_ACTION_TYPE_SAMPLE
Definition: rte_flow.h:3115
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:2622
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1306
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:1203
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition: rte_flow.h:2019
__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_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_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:1094
static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask
Definition: rte_flow.h:2067
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:1006
__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:1827
rte_flow_item_flex_tunnel_mode
Definition: rte_flow.h:2191
@ FLEX_TUNNEL_MODE_OUTER
Definition: rte_flow.h:2203
@ FLEX_TUNNEL_MODE_MULTI
Definition: rte_flow.h:2212
@ FLEX_TUNNEL_MODE_INNER
Definition: rte_flow.h:2207
@ FLEX_TUNNEL_MODE_SINGLE
Definition: rte_flow.h:2199
@ FLEX_TUNNEL_MODE_TUNNEL
Definition: rte_flow.h:2216
__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)
static const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask
Definition: rte_flow.h:2361
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_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1556
__rte_experimental int rte_flow_push(uint16_t port_id, uint32_t queue_id, struct rte_flow_error *error)
rte_flow_table_insertion_type
Definition: rte_flow.h:5907
@ RTE_FLOW_TABLE_INSERTION_TYPE_INDEX
Definition: rte_flow.h:5915
@ RTE_FLOW_TABLE_INSERTION_TYPE_INDEX_WITH_PATTERN
Definition: rte_flow.h:5919
@ RTE_FLOW_TABLE_INSERTION_TYPE_PATTERN
Definition: rte_flow.h:5911
__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)
__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)
rte_flow_item_flex_field_mode
Definition: rte_flow.h:2158
@ FIELD_MODE_FIXED
Definition: rte_flow.h:2169
@ FIELD_MODE_DUMMY
Definition: rte_flow.h:2164
@ FIELD_MODE_OFFSET
Definition: rte_flow.h:2176
@ FIELD_MODE_BITMASK
Definition: rte_flow.h:2185
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1418
__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)
__rte_experimental struct rte_flow * rte_flow_async_create_by_index_with_pattern(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_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)
__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_template_table_resize_complete(uint16_t port_id, struct rte_flow_template_table *table, struct rte_flow_error *error)
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:1056
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1779
rte_flow_error_type
Definition: rte_flow.h:4346
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:4348
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:4350
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:4347
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:4349
@ RTE_FLOW_ERROR_TYPE_STATE
Definition: rte_flow.h:4364
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:4358
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:4353
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:4354
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:4362
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:4359
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:4357
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:4360
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:4363
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:4355
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:4352
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:4351
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:4361
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:4356
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1532
__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_any rte_flow_item_any_mask
Definition: rte_flow.h:798
__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)
int rte_flow_query(uint16_t port_id, struct rte_flow *flow, const struct rte_flow_action *action, void *data, struct rte_flow_error *error)
static const struct rte_flow_item_ptype rte_flow_item_ptype_mask
Definition: rte_flow.h:2378
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:965
__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)
__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)
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1804
rte_flow_quota_state
Definition: rte_flow.h:737
@ RTE_FLOW_QUOTA_STATE_PASS
Definition: rte_flow.h:738
@ RTE_FLOW_QUOTA_STATE_BLOCK
Definition: rte_flow.h:739
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1869
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:2047
__rte_deprecated size_t rte_flow_copy(struct rte_flow_desc *fd, size_t len, const struct rte_flow_attr *attr, const struct rte_flow_item *items, const struct rte_flow_action *actions)
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1475
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1322
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1751
__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)
__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)
static const struct rte_flow_item_ethdev rte_flow_item_ethdev_mask
Definition: rte_flow.h:2000
rte_flow_nat64_type
Definition: rte_flow.h:3607
@ RTE_FLOW_NAT64_6TO4
Definition: rte_flow.h:3608
@ RTE_FLOW_NAT64_4TO6
Definition: rte_flow.h:3609
__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)
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1272
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1893
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask
Definition: rte_flow.h:1984
__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_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)
__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_item_type
Definition: rte_flow.h:153
@ RTE_FLOW_ITEM_TYPE_AH
Definition: rte_flow.h:509
@ RTE_FLOW_ITEM_TYPE_L2TPV3OIP
Definition: rte_flow.h:533
@ RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REPLY
Definition: rte_flow.h:667
@ RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID
Definition: rte_flow.h:488
@ RTE_FLOW_ITEM_TYPE_IPV4
Definition: rte_flow.h:232
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT
Definition: rte_flow.h:407
@ RTE_FLOW_ITEM_TYPE_METER_COLOR
Definition: rte_flow.h:646
@ RTE_FLOW_ITEM_TYPE_ICMP
Definition: rte_flow.h:246
@ RTE_FLOW_ITEM_TYPE_META
Definition: rte_flow.h:439
@ RTE_FLOW_ITEM_TYPE_QUOTA
Definition: rte_flow.h:674
@ RTE_FLOW_ITEM_TYPE_FUZZY
Definition: rte_flow.h:314
@ RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REQUEST
Definition: rte_flow.h:660
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS
Definition: rte_flow.h:393
@ RTE_FLOW_ITEM_TYPE_GRE_KEY
Definition: rte_flow.h:452
@ RTE_FLOW_ITEM_TYPE_VXLAN
Definition: rte_flow.h:274
@ RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:592
@ RTE_FLOW_ITEM_TYPE_INTEGRITY
Definition: rte_flow.h:574
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:365
@ RTE_FLOW_ITEM_TYPE_TCP
Definition: rte_flow.h:260
@ RTE_FLOW_ITEM_TYPE_IGMP
Definition: rte_flow.h:502
@ RTE_FLOW_ITEM_TYPE_ESP
Definition: rte_flow.h:348
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition: rte_flow.h:295
@ RTE_FLOW_ITEM_TYPE_COMPARE
Definition: rte_flow.h:726
@ RTE_FLOW_ITEM_TYPE_PFCP
Definition: rte_flow.h:540
@ RTE_FLOW_ITEM_TYPE_HIGIG2
Definition: rte_flow.h:515
@ RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT
Definition: rte_flow.h:653
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:162
@ RTE_FLOW_ITEM_TYPE_PTYPE
Definition: rte_flow.h:706
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH
Definition: rte_flow.h:415
@ RTE_FLOW_ITEM_TYPE_RAW
Definition: rte_flow.h:211
@ RTE_FLOW_ITEM_TYPE_GRE_OPTION
Definition: rte_flow.h:632
@ RTE_FLOW_ITEM_TYPE_RANDOM
Definition: rte_flow.h:719
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition: rte_flow.h:288
@ RTE_FLOW_ITEM_TYPE_GENEVE_OPT
Definition: rte_flow.h:563
@ RTE_FLOW_ITEM_TYPE_IPV6_EXT
Definition: rte_flow.h:379
@ RTE_FLOW_ITEM_TYPE_ANY
Definition: rte_flow.h:190
@ RTE_FLOW_ITEM_TYPE_L2TPV2
Definition: rte_flow.h:618
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition: rte_flow.h:225
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition: rte_flow.h:341
@ RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4
Definition: rte_flow.h:372
@ RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT
Definition: rte_flow.h:556
@ RTE_FLOW_ITEM_TYPE_INVERT
Definition: rte_flow.h:182
@ RTE_FLOW_ITEM_TYPE_CONNTRACK
Definition: rte_flow.h:583
@ RTE_FLOW_ITEM_TYPE_MACSEC
Definition: rte_flow.h:639
@ RTE_FLOW_ITEM_TYPE_TAG
Definition: rte_flow.h:524
@ RTE_FLOW_ITEM_TYPE_GTP
Definition: rte_flow.h:323
@ RTE_FLOW_ITEM_TYPE_FLEX
Definition: rte_flow.h:611
@ RTE_FLOW_ITEM_TYPE_ICMP6
Definition: rte_flow.h:386
@ RTE_FLOW_ITEM_TYPE_AGGR_AFFINITY
Definition: rte_flow.h:683
@ RTE_FLOW_ITEM_TYPE_PPPOED
Definition: rte_flow.h:479
@ RTE_FLOW_ITEM_TYPE_GRE
Definition: rte_flow.h:302
@ RTE_FLOW_ITEM_TYPE_VOID
Definition: rte_flow.h:172
@ RTE_FLOW_ITEM_TYPE_IB_BTH
Definition: rte_flow.h:698
@ RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:602
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:218
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition: rte_flow.h:423
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition: rte_flow.h:355
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:253
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition: rte_flow.h:281
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA
Definition: rte_flow.h:400
@ RTE_FLOW_ITEM_TYPE_MARK
Definition: rte_flow.h:430
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:239
@ RTE_FLOW_ITEM_TYPE_PPP
Definition: rte_flow.h:625
@ RTE_FLOW_ITEM_TYPE_NSH
Definition: rte_flow.h:495
@ RTE_FLOW_ITEM_TYPE_GTP_PSC
Definition: rte_flow.h:461
@ RTE_FLOW_ITEM_TYPE_SCTP
Definition: rte_flow.h:267
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition: rte_flow.h:204
@ RTE_FLOW_ITEM_TYPE_TX_QUEUE
Definition: rte_flow.h:691
@ RTE_FLOW_ITEM_TYPE_ECPRI
Definition: rte_flow.h:549
@ RTE_FLOW_ITEM_TYPE_PPPOES
Definition: rte_flow.h:470
@ RTE_FLOW_ITEM_TYPE_GTPC
Definition: rte_flow.h:332
static const struct rte_flow_item_random rte_flow_item_random_mask
Definition: rte_flow.h:2089
__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_eth rte_flow_item_eth_mask
Definition: rte_flow.h:905
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1183
__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_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)
__rte_experimental uint64_t rte_flow_restore_info_dynflag(void)
__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_actions_update(uint16_t port_id, struct rte_flow *flow, const struct rte_flow_action actions[], struct rte_flow_error *error)
rte_flow_field_id
Definition: rte_flow.h:2387
@ RTE_FLOW_FIELD_IPV6_HOPLIMIT
Definition: rte_flow.h:2399
@ RTE_FLOW_FIELD_IPV6_PROTO
Definition: rte_flow.h:2421
@ RTE_FLOW_FIELD_METER_COLOR
Definition: rte_flow.h:2420
@ RTE_FLOW_FIELD_GTP_TEID
Definition: rte_flow.h:2411
@ RTE_FLOW_FIELD_MAC_DST
Definition: rte_flow.h:2389
@ RTE_FLOW_FIELD_IPV6_DSCP
Definition: rte_flow.h:2398
@ RTE_FLOW_FIELD_MAC_SRC
Definition: rte_flow.h:2390
@ RTE_FLOW_FIELD_GENEVE_OPT_CLASS
Definition: rte_flow.h:2425
@ RTE_FLOW_FIELD_TCP_PORT_SRC
Definition: rte_flow.h:2402
@ RTE_FLOW_FIELD_GENEVE_OPT_TYPE
Definition: rte_flow.h:2424
@ RTE_FLOW_FIELD_MPLS
Definition: rte_flow.h:2427
@ RTE_FLOW_FIELD_META
Definition: rte_flow.h:2414
@ RTE_FLOW_FIELD_IPV4_SRC
Definition: rte_flow.h:2396
@ RTE_FLOW_FIELD_IPV4_DST
Definition: rte_flow.h:2397
@ RTE_FLOW_FIELD_TAG
Definition: rte_flow.h:2412
@ RTE_FLOW_FIELD_START
Definition: rte_flow.h:2388
@ RTE_FLOW_FIELD_UDP_PORT_SRC
Definition: rte_flow.h:2407
@ RTE_FLOW_FIELD_IPV6_SRC
Definition: rte_flow.h:2400
@ RTE_FLOW_FIELD_GENEVE_OPT_DATA
Definition: rte_flow.h:2426
@ RTE_FLOW_FIELD_GTP_PSC_QFI
Definition: rte_flow.h:2419
@ RTE_FLOW_FIELD_FLEX_ITEM
Definition: rte_flow.h:2422
@ RTE_FLOW_FIELD_IPV6_DST
Definition: rte_flow.h:2401
@ RTE_FLOW_FIELD_TCP_FLAGS
Definition: rte_flow.h:2406
@ RTE_FLOW_FIELD_VALUE
Definition: rte_flow.h:2416
@ RTE_FLOW_FIELD_UDP_PORT_DST
Definition: rte_flow.h:2408
@ RTE_FLOW_FIELD_IPV4_IHL
Definition: rte_flow.h:2429
@ RTE_FLOW_FIELD_IPV4_TTL
Definition: rte_flow.h:2395
@ RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN
Definition: rte_flow.h:2431
@ RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS
Definition: rte_flow.h:2434
@ RTE_FLOW_FIELD_ESP_PROTO
Definition: rte_flow.h:2437
@ RTE_FLOW_FIELD_IPV4_PROTO
Definition: rte_flow.h:2432
@ RTE_FLOW_FIELD_MARK
Definition: rte_flow.h:2413
@ RTE_FLOW_FIELD_MAC_TYPE
Definition: rte_flow.h:2393
@ RTE_FLOW_FIELD_GENEVE_VNI
Definition: rte_flow.h:2410
@ RTE_FLOW_FIELD_VXLAN_LAST_RSVD
Definition: rte_flow.h:2439
@ RTE_FLOW_FIELD_IPV6_ECN
Definition: rte_flow.h:2418
@ RTE_FLOW_FIELD_ESP_SEQ_NUM
Definition: rte_flow.h:2436
@ RTE_FLOW_FIELD_TCP_DATA_OFFSET
Definition: rte_flow.h:2428
@ RTE_FLOW_FIELD_IPV4_DSCP
Definition: rte_flow.h:2394
@ RTE_FLOW_FIELD_VXLAN_VNI
Definition: rte_flow.h:2409
@ RTE_FLOW_FIELD_RANDOM
Definition: rte_flow.h:2438
@ RTE_FLOW_FIELD_POINTER
Definition: rte_flow.h:2415
@ RTE_FLOW_FIELD_IPV6_FLOW_LABEL
Definition: rte_flow.h:2433
@ RTE_FLOW_FIELD_VLAN_TYPE
Definition: rte_flow.h:2391
@ RTE_FLOW_FIELD_TCP_ACK_NUM
Definition: rte_flow.h:2405
@ RTE_FLOW_FIELD_TCP_SEQ_NUM
Definition: rte_flow.h:2404
@ RTE_FLOW_FIELD_IPV4_TOTAL_LEN
Definition: rte_flow.h:2430
@ RTE_FLOW_FIELD_ESP_SPI
Definition: rte_flow.h:2435
@ RTE_FLOW_FIELD_IPV4_ECN
Definition: rte_flow.h:2417
@ RTE_FLOW_FIELD_HASH_RESULT
Definition: rte_flow.h:2423
@ RTE_FLOW_FIELD_TCP_PORT_DST
Definition: rte_flow.h:2403
@ RTE_FLOW_FIELD_VLAN_ID
Definition: rte_flow.h:2392
__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)
#define RTE_IPV6_MASK_FULL
Definition: rte_ip6.h:229
rte_color
Definition: rte_meter.h:32
@ RTE_COLORS
Definition: rte_meter.h:36
rte_be32_t u32
Definition: rte_ecpri.h:67
rte_be32_t spi
Definition: rte_esp.h:20
struct rte_ether_addr dst_addr
Definition: rte_ether.h:301
struct rte_flow_tcp_dir_param reply_dir
Definition: rte_flow.h:4065
struct rte_flow_tcp_dir_param original_dir
Definition: rte_flow.h:4063
enum rte_flow_conntrack_state state
Definition: rte_flow.h:4057
struct rte_flow_action_list_handle * handle
Definition: rte_flow.h:6696
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:4160
struct rte_flow_field_data dst
Definition: rte_flow.h:4141
struct rte_flow_field_data src
Definition: rte_flow.h:4142
enum rte_flow_modify_op operation
Definition: rte_flow.h:4140
struct rte_flow_item * definition
Definition: rte_flow.h:3738
const char * name
Definition: rte_flow.h:4235
const struct rte_flow_action_prog_argument * args
Definition: rte_flow.h:4239
enum rte_flow_quota_mode mode
Definition: rte_flow.h:3291
const uint16_t * queue
Definition: rte_flow.h:3516
enum rte_eth_hash_function func
Definition: rte_flow.h:3485
const uint8_t * key
Definition: rte_flow.h:3515
uint32_t queue_num
Definition: rte_flow.h:3514
const struct rte_flow_action * actions
Definition: rte_flow.h:4337
uint32_t original
Definition: rte_flow.h:3536
uint32_t reserved
Definition: rte_flow.h:3537
struct rte_flow_item * definition
Definition: rte_flow.h:3705
const void * conf
Definition: rte_flow.h:4293
enum rte_flow_action_type type
Definition: rte_flow.h:4292
uint32_t group
Definition: rte_flow.h:100
uint32_t egress
Definition: rte_flow.h:109
uint32_t priority
Definition: rte_flow.h:101
uint32_t transfer
Definition: rte_flow.h:127
uint32_t reserved
Definition: rte_flow.h:128
uint32_t ingress
Definition: rte_flow.h:105
struct rte_flow_action * actions
Definition: rte_flow.h:4403
struct rte_flow_attr * attr
Definition: rte_flow.h:4395
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:4402
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:4398
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:4394
struct rte_flow_item * pattern
Definition: rte_flow.h:4399
struct rte_flow_action * actions
Definition: rte_flow.h:4880
uint8_t data[]
Definition: rte_flow.h:4881
struct rte_flow_attr attr
Definition: rte_flow.h:4878
struct rte_flow_item * items
Definition: rte_flow.h:4879
size_t size
Definition: rte_flow.h:4877
const char * message
Definition: rte_flow.h:4381
enum rte_flow_error_type type
Definition: rte_flow.h:4379
const void * cause
Definition: rte_flow.h:4380
uint8_t value[16]
Definition: rte_flow.h:2527
enum rte_flow_field_id field
Definition: rte_flow.h:2450
rte_be16_t class_id
Definition: rte_flow.h:2512
uint32_t num
Definition: rte_flow.h:793
struct rte_arp_hdr hdr
Definition: rte_flow.h:1411
struct rte_ether_addr tha
Definition: rte_flow.h:1408
struct rte_ether_addr sha
Definition: rte_flow.h:1406
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1148
rte_be16_t inner_type
Definition: rte_flow.h:1153
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1150
struct rte_esp_hdr hdr
Definition: rte_flow.h:1317
uint32_t has_vlan
Definition: rte_flow.h:899
rte_be16_t type
Definition: rte_flow.h:895
uint32_t reserved
Definition: rte_flow.h:900
struct rte_ether_addr dst
Definition: rte_flow.h:893
struct rte_ether_addr src
Definition: rte_flow.h:894
struct rte_flow_item_flex_field next_protocol
Definition: rte_flow.h:2276
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2300
enum rte_flow_item_flex_tunnel_mode tunnel
Definition: rte_flow.h:2265
struct rte_flow_item_flex_link * input_link
Definition: rte_flow.h:2292
struct rte_flow_item_flex_field next_header
Definition: rte_flow.h:2271
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2282
enum rte_flow_item_flex_field_mode field_mode
Definition: rte_flow.h:2227
const uint8_t * pattern
Definition: rte_flow.h:2153
struct rte_flow_item_flex_handle * handle
Definition: rte_flow.h:2151
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1339
rte_be16_t protocol
Definition: rte_flow.h:1340
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1218
rte_be16_t protocol
Definition: rte_flow.h:1219
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1639
rte_be32_t teid
Definition: rte_flow.h:1298
struct rte_gtp_hdr hdr
Definition: rte_flow.h:1300
rte_be16_t msg_len
Definition: rte_flow.h:1297
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1295
uint8_t msg_type
Definition: rte_flow.h:1296
struct rte_ib_bth hdr
Definition: rte_flow.h:2062
struct rte_ipv6_addr target_addr
Definition: rte_flow.h:1526
struct rte_ipv6_addr target_addr
Definition: rte_flow.h:1501
struct rte_ether_addr sla
Definition: rte_flow.h:1575
struct rte_ether_addr tla
Definition: rte_flow.h:1600
struct rte_icmp_hdr hdr
Definition: rte_flow.h:1032
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:960
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:981
uint32_t has_hip_ext
Definition: rte_flow.h:997
uint32_t has_frag_ext
Definition: rte_flow.h:987
uint32_t has_auth_ext
Definition: rte_flow.h:989
uint32_t has_dest_ext
Definition: rte_flow.h:993
uint32_t has_shim6_ext
Definition: rte_flow.h:999
uint32_t reserved
Definition: rte_flow.h:1001
uint32_t has_esp_ext
Definition: rte_flow.h:991
uint32_t has_route_ext
Definition: rte_flow.h:985
uint32_t has_mobil_ext
Definition: rte_flow.h:995
uint32_t has_hop_ext
Definition: rte_flow.h:983
enum rte_color color
Definition: rte_flow.h:2311
uint8_t label_tc_s[3]
Definition: rte_flow.h:1197
uint8_t tni[3]
Definition: rte_flow.h:1177
rte_be16_t protocol
Definition: rte_flow.h:1176
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1175
uint8_t version_type
Definition: rte_flow.h:1659
rte_be16_t length
Definition: rte_flow.h:1662
rte_be16_t session_id
Definition: rte_flow.h:1661
uint32_t packet_type
Definition: rte_flow.h:2373
const uint8_t * pattern
Definition: rte_flow.h:853
uint16_t length
Definition: rte_flow.h:852
uint32_t search
Definition: rte_flow.h:848
int32_t offset
Definition: rte_flow.h:850
uint32_t reserved
Definition: rte_flow.h:849
uint16_t limit
Definition: rte_flow.h:851
uint32_t relative
Definition: rte_flow.h:847
struct rte_sctp_hdr hdr
Definition: rte_flow.h:1089
struct rte_tcp_hdr hdr
Definition: rte_flow.h:1070
struct rte_udp_hdr hdr
Definition: rte_flow.h:1051
rte_be16_t tci
Definition: rte_flow.h:934
rte_be16_t inner_type
Definition: rte_flow.h:935
uint32_t reserved
Definition: rte_flow.h:941
uint32_t has_more_vlan
Definition: rte_flow.h:940
uint8_t vni[3]
Definition: rte_flow.h:1121
uint8_t rsvd0[3]
Definition: rte_flow.h:1120
const void * spec
Definition: rte_flow.h:2129
const void * mask
Definition: rte_flow.h:2131
enum rte_flow_item_type type
Definition: rte_flow.h:2128
const void * last
Definition: rte_flow.h:2130
struct rte_flow_action_conntrack new_ct
Definition: rte_flow.h:4089
uint32_t postpone
Definition: rte_flow.h:6109
enum rte_flow_op_status status
Definition: rte_flow.h:6390
uint32_t nb_conn_tracks
Definition: rte_flow.h:5609
uint32_t nb_counters
Definition: rte_flow.h:5594
uint16_t host_port_id
Definition: rte_flow.h:5613
uint32_t nb_aging_objects
Definition: rte_flow.h:5599
uint32_t nb_meters
Definition: rte_flow.h:5604
uint32_t nb_quotas
Definition: rte_flow.h:5618
uint32_t supported_flags
Definition: rte_flow.h:5537
uint32_t max_nb_quotas
Definition: rte_flow.h:5533
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:5528
uint32_t max_nb_aging_objects
Definition: rte_flow.h:5518
uint32_t max_nb_queues
Definition: rte_flow.h:5508
uint32_t max_nb_meters
Definition: rte_flow.h:5523
uint32_t max_nb_counters
Definition: rte_flow.h:5513
uint32_t sec_since_last_hit
Definition: rte_flow.h:3403
uint32_t sec_since_last_hit_valid
Definition: rte_flow.h:3402
uint32_t reserved
Definition: rte_flow.h:3399
struct rte_flow_tunnel tunnel
Definition: rte_flow.h:5257
uint32_t close_initiated
Definition: rte_flow.h:3993
enum rte_flow_table_insertion_type insertion_type
Definition: rte_flow.h:5974
struct rte_flow_attr flow_attr
Definition: rte_flow.h:5957
enum rte_flow_table_hash_func hash_func
Definition: rte_flow.h:5978
uint32_t timeout_valid
Definition: rte_flow.h:3427
struct rte_flow_action_meter_mark meter_mark
Definition: rte_flow.h:4176
enum rte_flow_update_quota_op op
Definition: rte_flow.h:3329
rte_be32_t teid
Definition: rte_gtp.h:50
uint8_t opcode
Definition: rte_ib.h:26
struct rte_l2tpv2_common_hdr common
Definition: rte_l2tpv2.h:217
rte_be16_t flags_version
Definition: rte_l2tpv2.h:96
uint8_t addr
Definition: rte_ppp.h:21
rte_be16_t src_port
Definition: rte_sctp.h:25
rte_be16_t src_port
Definition: rte_tcp.h:25
rte_be16_t src_port
Definition: rte_udp.h:25
rte_be16_t vlan_tci
Definition: rte_ether.h:317
uint8_t vni[3]
Definition: rte_vxlan.h:126
uint8_t vni[3]
Definition: rte_vxlan.h:91