DPDK  24.03.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 
363 
370 
377 
384 
391 
398 
405 
413 
421 
428 
437 
450 
459 
468 
477 
486 
493 
500 
507 
513 
522 
531 
538 
547 
554 
561 
572 
581 
590 
600 
609 
616 
623 
630 
637 
644 
651 
658 
665 
672 
681 
689 
696 
704 
717 
724 };
725 
737 };
738 
745  enum rte_flow_quota_state state;
746 };
747 
751 #ifndef __cplusplus
753  .state = (enum rte_flow_quota_state)0xff
754 };
755 #endif
756 
763  struct rte_higig2_hdr hdr;
764 };
765 
767 #ifndef __cplusplus
769  .hdr = {
770  .ppt1 = {
771  .classification = RTE_BE16(UINT16_MAX),
772  .vid = RTE_BE16(0xfff),
773  },
774  },
775 };
776 #endif
777 
790  uint32_t num;
791 };
792 
794 #ifndef __cplusplus
796  .num = 0x00000000,
797 };
798 #endif
799 
815  uint32_t id;
816 };
817 
819 #ifndef __cplusplus
821  .id = 0xffffffff,
822 };
823 #endif
824 
844  uint32_t relative:1;
845  uint32_t search:1;
846  uint32_t reserved:30;
847  int32_t offset;
848  uint16_t limit;
849  uint16_t length;
850  const uint8_t *pattern;
851 };
852 
854 #ifndef __cplusplus
856  .relative = 1,
857  .search = 1,
858  .reserved = 0x3fffffff,
859  .offset = 0xffffffff,
860  .limit = 0xffff,
861  .length = 0xffff,
862  .pattern = NULL,
863 };
864 #endif
865 
884  union {
885  struct {
886  /*
887  * These fields are retained for compatibility.
888  * Please switch to the new header field below.
889  */
890  struct rte_ether_addr dst;
891  struct rte_ether_addr src;
893  };
894  struct rte_ether_hdr hdr;
895  };
896  uint32_t has_vlan:1;
897  uint32_t reserved:31;
898 };
899 
901 #ifndef __cplusplus
903  .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
904  .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
905  .hdr.ether_type = RTE_BE16(0x0000),
906 };
907 #endif
908 
925  union {
926  struct {
927  /*
928  * These fields are retained for compatibility.
929  * Please switch to the new header field below.
930  */
933  };
934  struct rte_vlan_hdr hdr;
935  };
937  uint32_t has_more_vlan:1;
938  uint32_t reserved:31;
939 };
940 
942 #ifndef __cplusplus
944  .hdr.vlan_tci = RTE_BE16(0x0fff),
945  .hdr.eth_proto = RTE_BE16(0x0000),
946 };
947 #endif
948 
957  struct rte_ipv4_hdr hdr;
958 };
959 
961 #ifndef __cplusplus
963  .hdr = {
964  .src_addr = RTE_BE32(0xffffffff),
965  .dst_addr = RTE_BE32(0xffffffff),
966  },
967 };
968 #endif
969 
978  struct rte_ipv6_hdr hdr;
980  uint32_t has_hop_ext:1;
982  uint32_t has_route_ext:1;
984  uint32_t has_frag_ext:1;
986  uint32_t has_auth_ext:1;
988  uint32_t has_esp_ext:1;
990  uint32_t has_dest_ext:1;
992  uint32_t has_mobil_ext:1;
994  uint32_t has_hip_ext:1;
996  uint32_t has_shim6_ext:1;
998  uint32_t reserved:23;
999 };
1000 
1002 #ifndef __cplusplus
1004  .hdr = {
1005  .src_addr =
1006  "\xff\xff\xff\xff\xff\xff\xff\xff"
1007  "\xff\xff\xff\xff\xff\xff\xff\xff",
1008  .dst_addr =
1009  "\xff\xff\xff\xff\xff\xff\xff\xff"
1010  "\xff\xff\xff\xff\xff\xff\xff\xff",
1011  },
1012 };
1013 #endif
1014 
1024  struct rte_ipv6_routing_ext hdr;
1025 };
1026 
1033  struct rte_icmp_hdr hdr;
1034 };
1035 
1037 #ifndef __cplusplus
1039  .hdr = {
1040  .icmp_type = 0xff,
1041  .icmp_code = 0xff,
1042  },
1043 };
1044 #endif
1045 
1052  struct rte_udp_hdr hdr;
1053 };
1054 
1056 #ifndef __cplusplus
1058  .hdr = {
1059  .src_port = RTE_BE16(0xffff),
1060  .dst_port = RTE_BE16(0xffff),
1061  },
1062 };
1063 #endif
1064 
1071  struct rte_tcp_hdr hdr;
1072 };
1073 
1075 #ifndef __cplusplus
1077  .hdr = {
1078  .src_port = RTE_BE16(0xffff),
1079  .dst_port = RTE_BE16(0xffff),
1080  },
1081 };
1082 #endif
1083 
1090  struct rte_sctp_hdr hdr;
1091 };
1092 
1094 #ifndef __cplusplus
1096  .hdr = {
1097  .src_port = RTE_BE16(0xffff),
1098  .dst_port = RTE_BE16(0xffff),
1099  },
1100 };
1101 #endif
1102 
1109  union {
1110  struct {
1111  /*
1112  * These fields are retained for compatibility.
1113  * Please switch to the new header field below.
1114  */
1115  uint8_t flags;
1116  uint8_t rsvd0[3];
1117  uint8_t vni[3];
1118  uint8_t rsvd1;
1119  };
1120  struct rte_vxlan_hdr hdr;
1121  };
1122 };
1123 
1125 #ifndef __cplusplus
1127  .hdr.vni = "\xff\xff\xff",
1128 };
1129 #endif
1130 
1147  uint8_t in_ecid_e;
1148  uint8_t ecid_e;
1150 };
1151 
1153 #ifndef __cplusplus
1155  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1156 };
1157 #endif
1158 
1173  uint8_t tni[3];
1174  uint8_t flow_id;
1175 };
1176 
1178 #ifndef __cplusplus
1180  .tni = "\xff\xff\xff",
1181 };
1182 #endif
1183 
1193  uint8_t label_tc_s[3];
1194  uint8_t ttl;
1195 };
1196 
1198 #ifndef __cplusplus
1200  .label_tc_s = "\xff\xff\xf0",
1201 };
1202 #endif
1203 
1216 };
1217 
1219 #ifndef __cplusplus
1221  .protocol = RTE_BE16(0xffff),
1222 };
1223 #endif
1224 
1231  struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1232  struct rte_gre_hdr_opt_key key;
1233  struct rte_gre_hdr_opt_sequence sequence;
1234 };
1235 
1242  struct rte_macsec_hdr macsec_hdr;
1243 };
1244 
1263  uint32_t thresh;
1264 };
1265 
1267 #ifndef __cplusplus
1269  .thresh = 0xffffffff,
1270 };
1271 #endif
1272 
1279  union {
1280  struct {
1281  /*
1282  * These are old fields kept for compatibility.
1283  * Please prefer hdr field below.
1284  */
1292  uint8_t msg_type;
1295  };
1296  struct rte_gtp_hdr hdr;
1297  };
1298 };
1299 
1301 #ifndef __cplusplus
1303  .hdr.teid = RTE_BE32(UINT32_MAX),
1304 };
1305 #endif
1306 
1313  struct rte_esp_hdr hdr;
1314 };
1315 
1317 #ifndef __cplusplus
1319  .hdr = {
1320  .spi = RTE_BE32(0xffffffff),
1321  },
1322 };
1323 #endif
1324 
1337  uint8_t vni[3];
1338  uint8_t rsvd1;
1339 };
1340 
1342 #ifndef __cplusplus
1344  .vni = "\xff\xff\xff",
1345 };
1346 #endif
1347 
1354  union {
1355  struct {
1356  /*
1357  * These are old fields kept for compatibility.
1358  * Please prefer hdr field below.
1359  */
1360  uint8_t flags;
1361  uint8_t rsvd0[2];
1362  uint8_t protocol;
1363  uint8_t vni[3];
1364  uint8_t rsvd1;
1365  };
1366  struct rte_vxlan_gpe_hdr hdr;
1367  };
1368 };
1369 
1371 #ifndef __cplusplus
1373  .hdr.vni = "\xff\xff\xff",
1374 };
1375 #endif
1376 
1383  union {
1384  struct {
1385  /*
1386  * These are old fields kept for compatibility.
1387  * Please prefer hdr field below.
1388  */
1391  uint8_t hln;
1392  uint8_t pln;
1394  struct rte_ether_addr sha;
1396  struct rte_ether_addr tha;
1398  };
1399  struct rte_arp_hdr hdr;
1400  };
1401 };
1402 
1404 #ifndef __cplusplus
1405 static const struct rte_flow_item_arp_eth_ipv4
1407  .hdr.arp_data.arp_sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1408  .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1409  .hdr.arp_data.arp_tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1410  .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1411 };
1412 #endif
1413 
1425  uint8_t next_hdr;
1426 };
1427 
1429 #ifndef __cplusplus
1430 static const
1432  .next_hdr = 0xff,
1433 };
1434 #endif
1435 
1447  struct rte_ipv6_fragment_ext hdr;
1448 };
1449 
1456  uint8_t type;
1457  uint8_t code;
1458  uint16_t checksum;
1459 };
1460 
1462 #ifndef __cplusplus
1464  .type = 0xff,
1465  .code = 0xff,
1466 };
1467 #endif
1468 
1476  struct rte_icmp_echo_hdr hdr;
1477 };
1478 
1485  uint8_t type;
1486  uint8_t code;
1489  uint8_t target_addr[16];
1490 };
1491 
1493 #ifndef __cplusplus
1494 static const
1496  .target_addr =
1497  "\xff\xff\xff\xff\xff\xff\xff\xff"
1498  "\xff\xff\xff\xff\xff\xff\xff\xff",
1499 };
1500 #endif
1501 
1508  uint8_t type;
1509  uint8_t code;
1516  uint8_t target_addr[16];
1517 };
1518 
1520 #ifndef __cplusplus
1521 static const
1523  .target_addr =
1524  "\xff\xff\xff\xff\xff\xff\xff\xff"
1525  "\xff\xff\xff\xff\xff\xff\xff\xff",
1526 };
1527 #endif
1528 
1541  uint8_t type;
1542  uint8_t length;
1543 };
1544 
1546 #ifndef __cplusplus
1547 static const struct rte_flow_item_icmp6_nd_opt
1549  .type = 0xff,
1550 };
1551 #endif
1552 
1565  uint8_t type;
1566  uint8_t length;
1567  struct rte_ether_addr sla;
1568 };
1569 
1571 #ifndef __cplusplus
1572 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1574  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1575 };
1576 #endif
1577 
1590  uint8_t type;
1591  uint8_t length;
1592  struct rte_ether_addr tla;
1593 };
1594 
1596 #ifndef __cplusplus
1597 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1599  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1600 };
1601 #endif
1602 
1615  uint32_t data;
1616 };
1617 
1619 #ifndef __cplusplus
1621  .data = UINT32_MAX,
1622 };
1623 #endif
1624 
1632 };
1633 
1635 #ifndef __cplusplus
1636 static const struct rte_flow_item_gtp_psc
1638  .hdr.qfi = 0x3f,
1639 };
1640 #endif
1641 
1651  uint8_t version_type;
1652  uint8_t code;
1655 };
1656 
1671 };
1672 
1674 #ifndef __cplusplus
1675 static const struct rte_flow_item_pppoe_proto_id
1677  .proto_id = RTE_BE16(0xffff),
1678 };
1679 #endif
1680 
1690  uint32_t data;
1691  uint8_t index;
1692 };
1693 
1695 #ifndef __cplusplus
1697  .data = 0xffffffff,
1698  .index = 0xff,
1699 };
1700 #endif
1701 
1709 };
1710 
1712 #ifndef __cplusplus
1714  .session_id = RTE_BE32(UINT32_MAX),
1715 };
1716 #endif
1717 
1718 
1738  uint32_t id;
1739 };
1740 
1742 #ifndef __cplusplus
1744  .id = 0xffffffff,
1745 };
1746 #endif
1747 
1757  uint32_t version:2;
1758  uint32_t oam_pkt:1;
1759  uint32_t reserved:1;
1760  uint32_t ttl:6;
1761  uint32_t length:6;
1762  uint32_t reserved1:4;
1763  uint32_t mdtype:4;
1764  uint32_t next_proto:8;
1765  uint32_t spi:24;
1766  uint32_t sindex:8;
1767 };
1768 
1770 #ifndef __cplusplus
1772  .mdtype = 0xf,
1773  .next_proto = 0xff,
1774  .spi = 0xffffff,
1775  .sindex = 0xff,
1776 };
1777 #endif
1778 
1788  uint32_t type:8;
1789  uint32_t max_resp_time:8;
1790  uint32_t checksum:16;
1791  uint32_t group_addr;
1792 };
1793 
1795 #ifndef __cplusplus
1797  .group_addr = 0xffffffff,
1798 };
1799 #endif
1800 
1810  uint32_t next_hdr:8;
1811  uint32_t payload_len:8;
1812  uint32_t reserved:16;
1813  uint32_t spi;
1814  uint32_t seq_num;
1815 };
1816 
1818 #ifndef __cplusplus
1820  .spi = 0xffffffff,
1821 };
1822 #endif
1823 
1833  uint8_t s_field;
1834  uint8_t msg_type;
1835  rte_be16_t msg_len;
1836  rte_be64_t seid;
1837 };
1838 
1840 #ifndef __cplusplus
1842  .s_field = 0x01,
1843  .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1844 };
1845 #endif
1846 
1856  struct rte_ecpri_combined_msg_hdr hdr;
1857 };
1858 
1860 #ifndef __cplusplus
1862  .hdr = {
1863  .common = {
1864  .u32 = 0x0,
1865  },
1866  },
1867 };
1868 #endif
1869 
1876  rte_be16_t option_class;
1877  uint8_t option_type;
1878  uint8_t option_len;
1879  uint32_t *data;
1880 };
1881 
1883 #ifndef __cplusplus
1884 static const struct rte_flow_item_geneve_opt
1886  .option_type = 0xff,
1887 };
1888 #endif
1889 
1902  uint32_t level;
1903  union {
1904  __extension__
1905  struct {
1907  uint64_t packet_ok:1;
1909  uint64_t l2_ok:1;
1911  uint64_t l3_ok:1;
1913  uint64_t l4_ok:1;
1915  uint64_t l2_crc_ok:1;
1917  uint64_t ipv4_csum_ok:1;
1919  uint64_t l4_csum_ok:1;
1921  uint64_t l3_len_ok:1;
1922  uint64_t reserved:56;
1923  };
1924  uint64_t value;
1925  };
1926 };
1927 
1928 #ifndef __cplusplus
1929 static const struct rte_flow_item_integrity
1930 rte_flow_item_integrity_mask = {
1931  .level = 0,
1932  .value = 0,
1933 };
1934 #endif
1935 
1939 #define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1940 
1943 #define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1944 
1948 #define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1949 
1953 #define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1954 
1958 #define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1959 
1971  uint32_t flags;
1972 };
1973 
1975 #ifndef __cplusplus
1977  .flags = 0xffffffff,
1978 };
1979 #endif
1980 
1987  uint16_t port_id;
1988 };
1989 
1991 #ifndef __cplusplus
1993  .port_id = 0xffff,
1994 };
1995 #endif
1996 
2006  struct rte_l2tpv2_combined_msg_hdr hdr;
2007 };
2008 
2010 #ifndef __cplusplus
2012  /*
2013  * flags and version bit mask
2014  * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
2015  * T L x x S x O P x x x x V V V V
2016  */
2017  .hdr = {
2018  .common = {
2019  .flags_version = RTE_BE16(0xcb0f),
2020  },
2021  },
2022 };
2023 #endif
2024 
2034  struct rte_ppp_hdr hdr;
2035 };
2036 
2038 #ifndef __cplusplus
2040  .hdr = {
2041  .addr = 0xff,
2042  .ctrl = 0xff,
2043  .proto_id = RTE_BE16(0xffff),
2044  }
2045 };
2046 #endif
2047 
2054  struct rte_ib_bth hdr;
2055 };
2056 
2058 #ifndef __cplusplus
2060  .hdr = {
2061  .opcode = 0xff,
2062  .dst_qp = "\xff\xff\xff",
2063  },
2064 };
2065 #endif
2066 
2076  uint32_t value;
2077 };
2078 
2080 #ifndef __cplusplus
2082  .value = UINT32_MAX,
2083 };
2084 #endif
2085 
2121  const void *spec;
2122  const void *last;
2123  const void *mask;
2124 };
2125 
2143  struct rte_flow_item_flex_handle *handle;
2144  uint32_t length;
2145  const uint8_t *pattern;
2146 };
2178 };
2179 
2209 };
2210 
2216 __extension__
2220  uint32_t field_size;
2221  int32_t field_base;
2222  uint32_t offset_base;
2223  uint32_t offset_mask;
2224  int32_t offset_shift;
2225  uint32_t field_id:16;
2226  uint32_t reserved:16;
2227 };
2228 
2239  struct rte_flow_item item;
2244  uint32_t next;
2245 };
2246 
2263  struct rte_flow_item_flex_field next_header;
2268  struct rte_flow_item_flex_field next_protocol;
2276  uint32_t nb_samples;
2286  uint32_t nb_inputs;
2294  uint32_t nb_outputs;
2295 };
2296 
2303  enum rte_color color;
2304 };
2305 
2307 #ifndef __cplusplus
2309  .color = RTE_COLORS,
2310 };
2311 #endif
2312 
2328  uint8_t affinity;
2329 };
2330 
2332 #ifndef __cplusplus
2333 static const struct rte_flow_item_aggr_affinity
2335  .affinity = 0xff,
2336 };
2337 #endif
2338 
2348  uint16_t tx_queue;
2349 };
2350 
2352 #ifndef __cplusplus
2354  .tx_queue = 0xffff,
2355 };
2356 #endif
2357 
2365  uint32_t packet_type;
2366 };
2367 
2369 #ifndef __cplusplus
2371  .packet_type = 0xffffffff,
2372 };
2373 #endif
2374 
2431 };
2432 
2441  enum rte_flow_field_id field;
2442  union {
2443  struct {
2445  union {
2446  struct {
2481  uint8_t level;
2482  union {
2488  uint8_t tag_index;
2495  struct {
2499  uint8_t type;
2504  };
2505  };
2506  };
2507  struct rte_flow_item_flex_handle *flex_handle;
2508  };
2510  uint32_t offset;
2511  };
2518  uint8_t value[16];
2524  void *pvalue;
2525  };
2526 };
2527 
2532  RTE_FLOW_ITEM_COMPARE_EQ, /* Compare result equal. */
2533  RTE_FLOW_ITEM_COMPARE_NE, /* Compare result not equal. */
2534  RTE_FLOW_ITEM_COMPARE_LT, /* Compare result less than. */
2535  RTE_FLOW_ITEM_COMPARE_LE, /* Compare result less than or equal. */
2536  RTE_FLOW_ITEM_COMPARE_GT, /* Compare result great than. */
2537  RTE_FLOW_ITEM_COMPARE_GE, /* Compare result great than or equal. */
2538 };
2539 
2549  enum rte_flow_item_compare_op operation; /* The compare operation. */
2550  struct rte_flow_field_data a; /* Field be compared. */
2551  struct rte_flow_field_data b; /* Field as comparator. */
2552  uint32_t width; /* Compare width. */
2553 };
2554 
2589 
2597 
2605 
2614 
2626 
2638 
2645 
2654 
2665 
2674 
2686 
2698 
2709 
2717 
2725 
2736 
2744 
2752 
2760 
2768 
2776 
2784 
2792 
2801 
2809 
2818 
2825 
2832 
2845 
2858 
2871 
2884 
2898 
2912 
2923 
2933 
2943 
2956 
2969 
2986 
3003 
3020 
3037 
3050 
3060 
3073 
3086 
3099 
3107 
3118 
3129 
3137 
3146 
3154 
3161 
3169 
3177 
3187 
3196 
3206 
3215 
3225 
3232 
3241 
3248 };
3249 
3262 };
3263 
3274  int64_t quota;
3275 };
3276 
3286  int64_t quota;
3287 };
3288 
3300 };
3301 
3312  int64_t quota;
3313 };
3314 
3326  uint32_t id;
3327 };
3328 
3342  uint32_t group;
3343 };
3344 
3351  uint16_t index;
3352 };
3353 
3368  uint32_t timeout:24;
3369  uint32_t reserved:8;
3371  void *context;
3372 };
3373 
3381  uint32_t reserved:6;
3382  uint32_t aged:1;
3385  uint32_t sec_since_last_hit:24;
3386 };
3387 
3408  uint32_t reserved:6;
3409  uint32_t timeout_valid:1;
3410  uint32_t timeout:24;
3412  uint32_t touch:1;
3413 };
3414 
3433  uint32_t id;
3434 };
3435 
3442  uint32_t reset:1;
3443  uint32_t hits_set:1;
3444  uint32_t bytes_set:1;
3445  uint32_t reserved:29;
3446  uint64_t hits;
3447  uint64_t bytes;
3448 };
3449 
3493  uint32_t level;
3494  uint64_t types;
3495  uint32_t key_len;
3496  uint32_t queue_num;
3497  const uint8_t *key;
3498  const uint16_t *queue;
3499 };
3500 
3518  uint32_t original:1;
3519  uint32_t reserved:31;
3520  uint32_t id;
3521 };
3522 
3535  uint32_t original:1;
3536  uint32_t reserved:31;
3537  uint32_t id;
3538 };
3539 
3549  uint32_t mtr_id;
3550 };
3551 
3584 };
3585 
3592 };
3593 
3603  enum rte_flow_nat64_type type;
3604 };
3605 
3614 };
3615 
3624 };
3625 
3633  uint8_t vlan_pcp;
3634 };
3635 
3644 };
3645 
3654 };
3655 
3688 };
3689 
3721 };
3722 
3743  uint8_t *data;
3744  uint8_t *preserve;
3745  size_t size;
3746 };
3747 
3764  uint8_t *data;
3765  size_t size;
3766 };
3767 
3780  rte_be32_t ipv4_addr;
3781 };
3782 
3795  uint8_t ipv6_addr[16];
3796 };
3797 
3811  uint8_t *data;
3812  size_t size;
3813  uint8_t type;
3814 };
3815 
3827  uint8_t type;
3828 };
3829 
3842  rte_be16_t port;
3843 };
3844 
3851  uint8_t ttl_value;
3852 };
3853 
3860  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3861 };
3862 
3873  uint32_t data;
3874  uint32_t mask;
3875  uint8_t index;
3876 };
3877 
3898  uint32_t data;
3899  uint32_t mask;
3900 };
3901 
3910  uint8_t dscp;
3911 };
3912 
3930 struct rte_flow_action_handle;
3931 
3948 };
3949 
3960 };
3961 
3973  uint32_t scale:4;
3975  uint32_t close_initiated:1;
3977  uint32_t last_ack_seen:1;
3982  uint32_t data_unacked:1;
3987  uint32_t sent_end;
3992  uint32_t reply_end;
3994  uint32_t max_win;
3996  uint32_t max_ack;
3997 };
3998 
4011  uint16_t peer_port;
4016  uint32_t is_original_dir:1;
4024  uint32_t enable:1;
4026  uint32_t live_connection:1;
4028  uint32_t selective_ack:1;
4035  uint32_t last_direction:1;
4037  uint32_t liberal_mode:1;
4045  struct rte_flow_tcp_dir_param original_dir;
4047  struct rte_flow_tcp_dir_param reply_dir;
4049  uint16_t last_window;
4050  enum rte_flow_conntrack_tcp_last_index last_index;
4052  uint32_t last_seq;
4054  uint32_t last_ack;
4059  uint32_t last_end;
4060 };
4061 
4073  uint32_t direction:1;
4075  uint32_t state:1;
4077  uint32_t reserved:30;
4078 };
4079 
4090  enum rte_color color;
4091 };
4092 
4099  uint16_t port_id;
4100 };
4101 
4109 };
4110 
4122  enum rte_flow_modify_op operation;
4123  struct rte_flow_field_data dst;
4124  struct rte_flow_field_data src;
4125  uint32_t width;
4126 };
4127 
4140 
4142  struct rte_flow_meter_profile *profile;
4144  struct rte_flow_meter_policy *policy;
4148  int state;
4149 };
4150 
4158  struct rte_flow_action_meter_mark meter_mark;
4160  uint32_t profile_valid:1;
4162  uint32_t policy_valid:1;
4164  uint32_t color_mode_valid:1;
4166  uint32_t state_valid:1;
4168  uint32_t reserved:28;
4169 };
4170 
4179  enum rte_color init_color;
4180 };
4181 
4195  const char *name;
4197  uint32_t size;
4199  const uint8_t *value;
4200 };
4201 
4217  const char *name;
4219  uint32_t args_num;
4222 };
4223 
4224 /* Mbuf dynamic field offset for metadata. */
4225 extern int32_t rte_flow_dynf_metadata_offs;
4226 
4227 /* Mbuf dynamic field flag mask for metadata. */
4228 extern uint64_t rte_flow_dynf_metadata_mask;
4229 
4230 /* Mbuf dynamic field pointer for metadata. */
4231 #define RTE_FLOW_DYNF_METADATA(m) \
4232  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4233 
4234 /* Mbuf dynamic flags for metadata. */
4235 #define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4236 #define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4237 
4238 __rte_experimental
4239 static inline uint32_t
4240 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4241 {
4242  return *RTE_FLOW_DYNF_METADATA(m);
4243 }
4244 
4245 __rte_experimental
4246 static inline void
4247 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4248 {
4249  *RTE_FLOW_DYNF_METADATA(m) = v;
4250 }
4251 
4261  const void *conf;
4262 };
4263 
4270 struct rte_flow;
4271 
4277 struct rte_flow_meter_profile;
4278 
4284 struct rte_flow_meter_policy;
4285 
4303  uint32_t ratio;
4305  const struct rte_flow_action *actions;
4306 };
4307 
4333 };
4334 
4348  const void *cause;
4349  const char *message;
4350 };
4351 
4361  union {
4362  const struct rte_flow_attr *attr_ro;
4364  };
4365  union {
4366  const struct rte_flow_item *pattern_ro;
4368  };
4369  union {
4370  const struct rte_flow_action *actions_ro;
4372  };
4373 };
4374 
4387 
4399 
4411 
4423 
4436 
4449 
4462 
4476 
4490 
4504 
4518 };
4519 
4539 __rte_experimental
4540 int
4541 rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4542  FILE *file, struct rte_flow_error *error);
4543 
4550 __rte_experimental
4551 static inline int
4553 {
4554  return !!rte_flow_dynf_metadata_mask;
4555 }
4556 
4567 __rte_experimental
4568 int
4570 
4623 int
4624 rte_flow_validate(uint16_t port_id,
4625  const struct rte_flow_attr *attr,
4626  const struct rte_flow_item pattern[],
4627  const struct rte_flow_action actions[],
4628  struct rte_flow_error *error);
4629 
4650 struct rte_flow *
4651 rte_flow_create(uint16_t port_id,
4652  const struct rte_flow_attr *attr,
4653  const struct rte_flow_item pattern[],
4654  const struct rte_flow_action actions[],
4655  struct rte_flow_error *error);
4656 
4677 int
4678 rte_flow_destroy(uint16_t port_id,
4679  struct rte_flow *flow,
4680  struct rte_flow_error *error);
4681 
4698 __rte_experimental
4699 int
4700 rte_flow_actions_update(uint16_t port_id,
4701  struct rte_flow *flow,
4702  const struct rte_flow_action actions[],
4703  struct rte_flow_error *error);
4704 
4721 int
4722 rte_flow_flush(uint16_t port_id,
4723  struct rte_flow_error *error);
4724 
4749 int
4750 rte_flow_query(uint16_t port_id,
4751  struct rte_flow *flow,
4752  const struct rte_flow_action *action,
4753  void *data,
4754  struct rte_flow_error *error);
4755 
4801 int
4802 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4803 
4821 int
4822 rte_flow_error_set(struct rte_flow_error *error,
4823  int code,
4824  enum rte_flow_error_type type,
4825  const void *cause,
4826  const char *message);
4827 
4833  size_t size;
4834  struct rte_flow_attr attr;
4837  uint8_t data[];
4838 };
4839 
4866 __rte_deprecated
4867 size_t
4868 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4869  const struct rte_flow_attr *attr,
4870  const struct rte_flow_item *items,
4871  const struct rte_flow_action *actions);
4872 
4913 __rte_experimental
4914 int
4916  void *dst,
4917  size_t size,
4918  const void *src,
4919  struct rte_flow_error *error);
4920 
4949 __rte_experimental
4950 int
4951 rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4952  uint32_t nb_contexts, struct rte_flow_error *error);
4953 
4993 __rte_experimental
4994 int
4995 rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4996  uint32_t nb_contexts, struct rte_flow_error *error);
4997 
5009  uint32_t ingress:1;
5011  uint32_t egress:1;
5016  uint32_t transfer:1;
5017 };
5018 
5046 __rte_experimental
5047 struct rte_flow_action_handle *
5048 rte_flow_action_handle_create(uint16_t port_id,
5049  const struct rte_flow_indir_action_conf *conf,
5050  const struct rte_flow_action *action,
5051  struct rte_flow_error *error);
5052 
5075 __rte_experimental
5076 int
5077 rte_flow_action_handle_destroy(uint16_t port_id,
5078  struct rte_flow_action_handle *handle,
5079  struct rte_flow_error *error);
5080 
5114 __rte_experimental
5115 int
5116 rte_flow_action_handle_update(uint16_t port_id,
5117  struct rte_flow_action_handle *handle,
5118  const void *update,
5119  struct rte_flow_error *error);
5120 
5146 __rte_experimental
5147 int
5148 rte_flow_action_handle_query(uint16_t port_id,
5149  const struct rte_flow_action_handle *handle,
5150  void *data, struct rte_flow_error *error);
5151 
5152 /* Tunnel has a type and the key information. */
5153 struct rte_flow_tunnel {
5158  enum rte_flow_item_type type;
5159  uint64_t tun_id;
5161  union {
5162  struct {
5163  rte_be32_t src_addr;
5164  rte_be32_t dst_addr;
5165  } ipv4;
5166  struct {
5167  uint8_t src_addr[16];
5168  uint8_t dst_addr[16];
5169  } ipv6;
5170  };
5171  rte_be16_t tp_src;
5172  rte_be16_t tp_dst;
5173  uint16_t tun_flags;
5175  bool is_ipv6;
5181  uint8_t tos;
5182  uint8_t ttl;
5183  uint32_t label;
5184 };
5185 
5189 #define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5190 
5194 #define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5195 
5199 #define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5200 
5211  uint64_t flags;
5212  uint32_t group_id;
5213  struct rte_flow_tunnel tunnel;
5214 };
5215 
5239 __rte_experimental
5240 int
5241 rte_flow_tunnel_decap_set(uint16_t port_id,
5242  struct rte_flow_tunnel *tunnel,
5243  struct rte_flow_action **actions,
5244  uint32_t *num_of_actions,
5245  struct rte_flow_error *error);
5246 
5270 __rte_experimental
5271 int
5272 rte_flow_tunnel_match(uint16_t port_id,
5273  struct rte_flow_tunnel *tunnel,
5274  struct rte_flow_item **items,
5275  uint32_t *num_of_items,
5276  struct rte_flow_error *error);
5277 
5289 __rte_experimental
5290 uint64_t
5292 
5314 __rte_experimental
5315 int
5316 rte_flow_get_restore_info(uint16_t port_id,
5317  struct rte_mbuf *m,
5318  struct rte_flow_restore_info *info,
5319  struct rte_flow_error *error);
5320 
5337 __rte_experimental
5338 int
5339 rte_flow_tunnel_action_decap_release(uint16_t port_id,
5340  struct rte_flow_action *actions,
5341  uint32_t num_of_actions,
5342  struct rte_flow_error *error);
5343 
5360 __rte_experimental
5361 int
5362 rte_flow_tunnel_item_release(uint16_t port_id,
5363  struct rte_flow_item *items,
5364  uint32_t num_of_items,
5365  struct rte_flow_error *error);
5366 
5392 int
5393 rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5394  struct rte_flow_error *error);
5395 
5414 __rte_experimental
5415 struct rte_flow_item_flex_handle *
5416 rte_flow_flex_item_create(uint16_t port_id,
5417  const struct rte_flow_item_flex_conf *conf,
5418  struct rte_flow_error *error);
5419 
5434 __rte_experimental
5435 int
5436 rte_flow_flex_item_release(uint16_t port_id,
5437  const struct rte_flow_item_flex_handle *handle,
5438  struct rte_flow_error *error);
5439 
5444 #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5445 
5451 #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5452 
5464  uint32_t max_nb_queues;
5479  uint32_t max_nb_meters;
5489  uint32_t max_nb_quotas;
5494 };
5495 
5507  uint32_t max_size;
5508 };
5509 
5531 __rte_experimental
5532 int
5533 rte_flow_info_get(uint16_t port_id,
5534  struct rte_flow_port_info *port_info,
5535  struct rte_flow_queue_info *queue_info,
5536  struct rte_flow_error *error);
5537 
5550  uint32_t nb_counters;
5560  uint32_t nb_meters;
5565  uint32_t nb_conn_tracks;
5569  uint16_t host_port_id;
5574  uint32_t nb_quotas;
5578  uint32_t flags;
5579 };
5580 
5592  uint32_t size;
5593 };
5594 
5626 __rte_experimental
5627 int
5628 rte_flow_configure(uint16_t port_id,
5629  const struct rte_flow_port_attr *port_attr,
5630  uint16_t nb_queue,
5631  const struct rte_flow_queue_attr *queue_attr[],
5632  struct rte_flow_error *error);
5633 
5638 struct rte_flow_pattern_template;
5639 
5646 __extension__
5655  uint32_t relaxed_matching:1;
5661  uint32_t ingress:1;
5663  uint32_t egress:1;
5665  uint32_t transfer:1;
5666 };
5667 
5695 __rte_experimental
5696 struct rte_flow_pattern_template *
5697 rte_flow_pattern_template_create(uint16_t port_id,
5698  const struct rte_flow_pattern_template_attr *template_attr,
5699  const struct rte_flow_item pattern[],
5700  struct rte_flow_error *error);
5701 
5722 __rte_experimental
5723 int
5724 rte_flow_pattern_template_destroy(uint16_t port_id,
5725  struct rte_flow_pattern_template *pattern_template,
5726  struct rte_flow_error *error);
5727 
5732 struct rte_flow_actions_template;
5733 
5740 __extension__
5747  uint32_t ingress:1;
5749  uint32_t egress:1;
5751  uint32_t transfer:1;
5752 };
5753 
5789 __rte_experimental
5790 struct rte_flow_actions_template *
5791 rte_flow_actions_template_create(uint16_t port_id,
5792  const struct rte_flow_actions_template_attr *template_attr,
5793  const struct rte_flow_action actions[],
5794  const struct rte_flow_action masks[],
5795  struct rte_flow_error *error);
5796 
5817 __rte_experimental
5818 int
5819 rte_flow_actions_template_destroy(uint16_t port_id,
5820  struct rte_flow_actions_template *actions_template,
5821  struct rte_flow_error *error);
5822 
5827 struct rte_flow_template_table;
5828 
5842 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5843 
5850 #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5851 
5854 #define RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE RTE_BIT32(2)
5855 
5872 };
5873 
5897 };
5898 
5909  struct rte_flow_attr flow_attr;
5913  uint32_t nb_flows;
5922  uint32_t specialize;
5926  enum rte_flow_table_insertion_type insertion_type;
5931 };
5932 
5947 __rte_experimental
5948 bool
5950  const struct rte_flow_template_table_attr *tbl_attr);
5951 
5984 __rte_experimental
5985 struct rte_flow_template_table *
5986 rte_flow_template_table_create(uint16_t port_id,
5987  const struct rte_flow_template_table_attr *table_attr,
5988  struct rte_flow_pattern_template *pattern_templates[],
5989  uint8_t nb_pattern_templates,
5990  struct rte_flow_actions_template *actions_templates[],
5991  uint8_t nb_actions_templates,
5992  struct rte_flow_error *error);
5993 
6014 __rte_experimental
6015 int
6016 rte_flow_template_table_destroy(uint16_t port_id,
6017  struct rte_flow_template_table *template_table,
6018  struct rte_flow_error *error);
6019 
6041 __rte_experimental
6042 int
6043 rte_flow_group_set_miss_actions(uint16_t port_id,
6044  uint32_t group_id,
6045  const struct rte_flow_group_attr *attr,
6046  const struct rte_flow_action actions[],
6047  struct rte_flow_error *error);
6048 
6055 __extension__
6061  uint32_t postpone:1;
6062 };
6063 
6100 __rte_experimental
6101 struct rte_flow *
6102 rte_flow_async_create(uint16_t port_id,
6103  uint32_t queue_id,
6104  const struct rte_flow_op_attr *op_attr,
6105  struct rte_flow_template_table *template_table,
6106  const struct rte_flow_item pattern[],
6107  uint8_t pattern_template_index,
6108  const struct rte_flow_action actions[],
6109  uint8_t actions_template_index,
6110  void *user_data,
6111  struct rte_flow_error *error);
6112 
6145 __rte_experimental
6146 struct rte_flow *
6147 rte_flow_async_create_by_index(uint16_t port_id,
6148  uint32_t queue_id,
6149  const struct rte_flow_op_attr *op_attr,
6150  struct rte_flow_template_table *template_table,
6151  uint32_t rule_index,
6152  const struct rte_flow_action actions[],
6153  uint8_t actions_template_index,
6154  void *user_data,
6155  struct rte_flow_error *error);
6156 
6186 __rte_experimental
6187 int
6188 rte_flow_async_destroy(uint16_t port_id,
6189  uint32_t queue_id,
6190  const struct rte_flow_op_attr *op_attr,
6191  struct rte_flow *flow,
6192  void *user_data,
6193  struct rte_flow_error *error);
6194 
6223 __rte_experimental
6224 int
6225 rte_flow_async_actions_update(uint16_t port_id,
6226  uint32_t queue_id,
6227  const struct rte_flow_op_attr *op_attr,
6228  struct rte_flow *flow,
6229  const struct rte_flow_action actions[],
6230  uint8_t actions_template_index,
6231  void *user_data,
6232  struct rte_flow_error *error);
6233 
6254 __rte_experimental
6255 int
6256 rte_flow_push(uint16_t port_id,
6257  uint32_t queue_id,
6258  struct rte_flow_error *error);
6259 
6275 };
6276 
6283 __extension__
6288  enum rte_flow_op_status status;
6292  void *user_data;
6293 };
6294 
6320 __rte_experimental
6321 int
6322 rte_flow_pull(uint16_t port_id,
6323  uint32_t queue_id,
6324  struct rte_flow_op_result res[],
6325  uint16_t n_res,
6326  struct rte_flow_error *error);
6327 
6354 __rte_experimental
6355 struct rte_flow_action_handle *
6356 rte_flow_async_action_handle_create(uint16_t port_id,
6357  uint32_t queue_id,
6358  const struct rte_flow_op_attr *op_attr,
6359  const struct rte_flow_indir_action_conf *indir_action_conf,
6360  const struct rte_flow_action *action,
6361  void *user_data,
6362  struct rte_flow_error *error);
6363 
6389 __rte_experimental
6390 int
6391 rte_flow_async_action_handle_destroy(uint16_t port_id,
6392  uint32_t queue_id,
6393  const struct rte_flow_op_attr *op_attr,
6394  struct rte_flow_action_handle *action_handle,
6395  void *user_data,
6396  struct rte_flow_error *error);
6397 
6428 __rte_experimental
6429 int
6430 rte_flow_async_action_handle_update(uint16_t port_id,
6431  uint32_t queue_id,
6432  const struct rte_flow_op_attr *op_attr,
6433  struct rte_flow_action_handle *action_handle,
6434  const void *update,
6435  void *user_data,
6436  struct rte_flow_error *error);
6437 
6472 __rte_experimental
6473 int
6474 rte_flow_async_action_handle_query(uint16_t port_id,
6475  uint32_t queue_id,
6476  const struct rte_flow_op_attr *op_attr,
6477  const struct rte_flow_action_handle *action_handle,
6478  void *data,
6479  void *user_data,
6480  struct rte_flow_error *error);
6481 
6494 };
6495 
6529 __rte_experimental
6530 int
6531 rte_flow_action_handle_query_update(uint16_t port_id,
6532  struct rte_flow_action_handle *handle,
6533  const void *update, void *query,
6534  enum rte_flow_query_update_mode mode,
6535  struct rte_flow_error *error);
6536 
6572 __rte_experimental
6573 int
6574 rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6575  const struct rte_flow_op_attr *attr,
6576  struct rte_flow_action_handle *handle,
6577  const void *update, void *query,
6578  enum rte_flow_query_update_mode mode,
6579  void *user_data,
6580  struct rte_flow_error *error);
6581 
6582 struct rte_flow_action_list_handle;
6583 
6594  struct rte_flow_action_list_handle *handle;
6603  const void **conf;
6604 };
6605 
6633 __rte_experimental
6634 struct rte_flow_action_list_handle *
6635 rte_flow_action_list_handle_create(uint16_t port_id,
6636  const
6637  struct rte_flow_indir_action_conf *conf,
6638  const struct rte_flow_action *actions,
6639  struct rte_flow_error *error);
6640 
6675 __rte_experimental
6676 struct rte_flow_action_list_handle *
6677 rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6678  const struct rte_flow_op_attr *attr,
6679  const struct rte_flow_indir_action_conf *conf,
6680  const struct rte_flow_action *actions,
6681  void *user_data,
6682  struct rte_flow_error *error);
6683 
6705 __rte_experimental
6706 int
6707 rte_flow_action_list_handle_destroy(uint16_t port_id,
6708  struct rte_flow_action_list_handle *handle,
6709  struct rte_flow_error *error);
6710 
6741 __rte_experimental
6742 int
6744  (uint16_t port_id, uint32_t queue_id,
6745  const struct rte_flow_op_attr *op_attr,
6746  struct rte_flow_action_list_handle *handle,
6747  void *user_data, struct rte_flow_error *error);
6748 
6785 __rte_experimental
6786 int
6788  const struct rte_flow_action_list_handle *handle,
6789  const void **update, void **query,
6790  enum rte_flow_query_update_mode mode,
6791  struct rte_flow_error *error);
6792 
6836 __rte_experimental
6837 int
6838 rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6839  const struct rte_flow_op_attr *attr,
6840  const struct rte_flow_action_list_handle *handle,
6841  const void **update, void **query,
6842  enum rte_flow_query_update_mode mode,
6843  void *user_data,
6844  struct rte_flow_error *error);
6845 
6872 __rte_experimental
6873 int
6874 rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6875  const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6876  uint32_t *hash, struct rte_flow_error *error);
6877 
6893 };
6894 
6925 __rte_experimental
6926 int
6927 rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[],
6928  enum rte_flow_encap_hash_field dest_field, uint8_t hash_len,
6929  uint8_t *hash, struct rte_flow_error *error);
6930 
6955 __rte_experimental
6956 int
6957 rte_flow_template_table_resize(uint16_t port_id,
6958  struct rte_flow_template_table *table,
6959  uint32_t nb_rules,
6960  struct rte_flow_error *error);
6991 __rte_experimental
6992 int
6993 rte_flow_async_update_resized(uint16_t port_id, uint32_t queue,
6994  const struct rte_flow_op_attr *attr,
6995  struct rte_flow *rule, void *user_data,
6996  struct rte_flow_error *error);
6997 
7021 __rte_experimental
7022 int
7024  struct rte_flow_template_table *table,
7025  struct rte_flow_error *error);
7026 
7027 #ifdef __cplusplus
7028 }
7029 #endif
7030 
7031 #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:1573
rte_be32_t u32
Definition: rte_ecpri.h:71
uint32_t nb_quotas
Definition: rte_flow.h:5574
uint8_t addr
Definition: rte_ppp.h:25
rte_flow_field_id
Definition: rte_flow.h:2379
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1214
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1335
__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:998
static const struct rte_flow_item_quota rte_flow_item_quota_mask
Definition: rte_flow.h:752
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:5474
struct rte_flow_action * actions
Definition: rte_flow.h:4371
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1522
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:1003
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1144
__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:6594
rte_be16_t protocol
Definition: rte_flow.h:1336
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
Definition: rte_flow.h:1841
__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:986
uint32_t nb_counters
Definition: rte_flow.h:5550
struct rte_ib_bth hdr
Definition: rte_flow.h:2054
uint32_t num
Definition: rte_flow.h:790
__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:4363
uint32_t has_mobil_ext
Definition: rte_flow.h:992
uint32_t sec_since_last_hit
Definition: rte_flow.h:3385
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:3297
rte_flow_encap_hash_field
Definition: rte_flow.h:6888
__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:2183
uint32_t original
Definition: rte_flow.h:3518
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:2284
__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:5555
struct rte_flow_item * definition
Definition: rte_flow.h:3687
uint32_t nb_meters
Definition: rte_flow.h:5560
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1220
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:4142
rte_be16_t msg_len
Definition: rte_flow.h:1293
__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:1302
uint32_t postpone
Definition: rte_flow.h:6061
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:1038
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:1343
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:4362
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:1095
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:795
__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:1620
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1318
rte_flow_conntrack_state
Definition: rte_flow.h:3935
#define __rte_unused
Definition: rte_common.h:156
__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:1033
__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:1291
struct rte_ether_addr tla
Definition: rte_flow.h:1592
rte_flow_item_flex_field_mode
Definition: rte_flow.h:2150
rte_be16_t protocol
Definition: rte_flow.h:1172
uint32_t reserved
Definition: rte_flow.h:846
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:2308
static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask
Definition: rte_flow.h:1976
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1885
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1463
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:4836
uint32_t nb_conn_tracks
Definition: rte_flow.h:5565
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:5484
enum rte_color color
Definition: rte_flow.h:2303
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:957
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:1743
uint32_t reserved
Definition: rte_flow.h:3381
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2274
__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:2059
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1548
struct rte_gtp_hdr hdr
Definition: rte_flow.h:1296
__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:1126
#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:820
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:768
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1179
uint64_t rte_be64_t
uint8_t vni[3]
Definition: rte_vxlan.h:43
const void * mask
Definition: rte_flow.h:2123
struct rte_flow_item * pattern
Definition: rte_flow.h:4367
static const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask
Definition: rte_flow.h:2334
__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:892
__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:4348
__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:2011
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:1057
__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:1313
rte_flow_error_type
Definition: rte_flow.h:4314
uint32_t has_esp_ext
Definition: rte_flow.h:988
rte_flow_conv_op
Definition: rte_flow.h:4380
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:996
__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:5489
uint32_t has_route_ext
Definition: rte_flow.h:982
__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:850
uint32_t search
Definition: rte_flow.h:845
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1146
rte_flow_quota_state
Definition: rte_flow.h:734
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:855
uint16_t limit
Definition: rte_flow.h:848
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3953
__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:452
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1631
uint32_t max_nb_queues
Definition: rte_flow.h:5464
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:1199
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1495
__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:3589
const void * conf
Definition: rte_flow.h:4261
const char * message
Definition: rte_flow.h:4349
uint8_t opcode
Definition: rte_ib.h:30
static const struct rte_flow_item_random rte_flow_item_random_mask
Definition: rte_flow.h:2081
uint32_t close_initiated
Definition: rte_flow.h:3975
__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:849
rte_flow_item_compare_op
Definition: rte_flow.h:2531
const void * last
Definition: rte_flow.h:2122
uint32_t packet_type
Definition: rte_flow.h:2365
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1598
rte_be32_t teid
Definition: rte_flow.h:1294
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:931
struct rte_arp_hdr hdr
Definition: rte_flow.h:1399
uint32_t max_nb_meters
Definition: rte_flow.h:5479
__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:962
size_t size
Definition: rte_flow.h:4833
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1171
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:2039
const uint8_t * pattern
Definition: rte_flow.h:2145
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1637
uint32_t supported_flags
Definition: rte_flow.h:5493
rte_flow_table_hash_func
Definition: rte_flow.h:5880
rte_be16_t length
Definition: rte_flow.h:1654
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:4370
uint32_t has_vlan
Definition: rte_flow.h:896
uint32_t has_more_vlan
Definition: rte_flow.h:937
struct rte_flow_item * items
Definition: rte_flow.h:4835
__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:3409
rte_flow_action_type
Definition: rte_flow.h:2581
struct rte_ether_addr sla
Definition: rte_flow.h:1567
rte_flow_query_update_mode
Definition: rte_flow.h:6491
__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:3258
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2292
__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:4105
uint32_t has_hop_ext
Definition: rte_flow.h:980
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:5863
__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:1713
rte_color
Definition: rte_meter.h:32
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1796
const void * spec
Definition: rte_flow.h:2121
uint8_t label_tc_s[3]
Definition: rte_flow.h:1193
static const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask
Definition: rte_flow.h:2353
__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:1651
__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:3497
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1406
uint32_t has_hip_ext
Definition: rte_flow.h:994
const struct rte_flow_action * actions
Definition: rte_flow.h:4305
__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:3384
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:902
rte_flow_op_status
Definition: rte_flow.h:6266
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:1992
__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:2503
__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:984
uint32_t reserved
Definition: rte_flow.h:3519
__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:1819
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1696
uint32_t priority
Definition: rte_flow.h:101
uint32_t has_dest_ext
Definition: rte_flow.h:990
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1431
uint32_t max_nb_counters
Definition: rte_flow.h:5469
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:978
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1861
__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:1215
uint32_t queue_num
Definition: rte_flow.h:3496
uint8_t tni[3]
Definition: rte_flow.h:1173
struct rte_tcp_hdr hdr
Definition: rte_flow.h:1071
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1676
uint32_t transfer
Definition: rte_flow.h:127
struct rte_flow_item * definition
Definition: rte_flow.h:3720
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:943
uint8_t msg_type
Definition: rte_flow.h:1292
uint32_t reserved
Definition: rte_flow.h:938
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:1154
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:4552
__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:5569
__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:1076
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1268
rte_be16_t inner_type
Definition: rte_flow.h:932
const struct rte_flow_action_prog_argument * args
Definition: rte_flow.h:4221
uint8_t vni[3]
Definition: rte_vxlan.h:72
__rte_experimental int rte_flow_tunnel_action_decap_release(uint16_t port_id, struct rte_flow_action *actions, uint32_t num_of_actions, struct rte_flow_error *error)
__rte_experimental int rte_flow_action_list_handle_destroy(uint16_t port_id, struct rte_flow_action_list_handle *handle, struct rte_flow_error *error)
struct rte_udp_hdr hdr
Definition: rte_flow.h:1052
__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:3498
__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:4217
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:844
int32_t offset
Definition: rte_flow.h:847
__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:2370
rte_be16_t inner_type
Definition: rte_flow.h:1149
__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:2143
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:4366
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1372
rte_be16_t session_id
Definition: rte_flow.h:1653
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1771
__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:1090
uint32_t reserved
Definition: rte_flow.h:897