DPDK 23.11.2
Loading...
Searching...
No Matches
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
46extern "C" {
47#endif
48
49#define RTE_FLOW_LOG(level, ...) \
50 rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, "" __VA_ARGS__)
51
103 uint32_t group;
104 uint32_t priority;
108 uint32_t ingress:1;
112 uint32_t egress:1;
130 uint32_t transfer:1;
131 uint32_t reserved:29;
132};
133
134struct rte_flow_group_attr {
135 uint32_t ingress:1;
136 uint32_t egress:1;
137 uint32_t transfer:1;
138};
139
166
176
186
194
208
215
222
229
236
243
250
257
264
271
278
285
292
299
306
318
327
336
345
352
359
366
373
380
387
394
401
408
416
424
431
440
453
462
471
480
489
496
503
510
516
525
534
541
550
557
564
575
584
593
603
612
619
626
633
640
647
654
661
668
675
684
692
699
707};
708
721
728 enum rte_flow_quota_state state;
729};
730
734#ifndef __cplusplus
736 .state = (enum rte_flow_quota_state)0xff
737};
738#endif
739
746 struct rte_higig2_hdr hdr;
747};
748
750#ifndef __cplusplus
752 .hdr = {
753 .ppt1 = {
754 .classification = RTE_BE16(UINT16_MAX),
755 .vid = RTE_BE16(0xfff),
756 },
757 },
758};
759#endif
760
773 uint32_t num;
774};
775
777#ifndef __cplusplus
779 .num = 0x00000000,
780};
781#endif
782
798 uint32_t id;
799};
800
802#ifndef __cplusplus
804 .id = 0xffffffff,
805};
806#endif
807
827 uint32_t relative:1;
828 uint32_t search:1;
829 uint32_t reserved:30;
830 int32_t offset;
831 uint16_t limit;
832 uint16_t length;
833 const uint8_t *pattern;
834};
835
837#ifndef __cplusplus
839 .relative = 1,
840 .search = 1,
841 .reserved = 0x3fffffff,
842 .offset = 0xffffffff,
843 .limit = 0xffff,
844 .length = 0xffff,
845 .pattern = NULL,
846};
847#endif
848
867 union {
868 struct {
869 /*
870 * These fields are retained for compatibility.
871 * Please switch to the new header field below.
872 */
876 };
877 struct rte_ether_hdr hdr;
878 };
879 uint32_t has_vlan:1;
880 uint32_t reserved:31;
881};
882
884#ifndef __cplusplus
886 .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
887 .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
888 .hdr.ether_type = RTE_BE16(0x0000),
889};
890#endif
891
908 union {
909 struct {
910 /*
911 * These fields are retained for compatibility.
912 * Please switch to the new header field below.
913 */
916 };
917 struct rte_vlan_hdr hdr;
918 };
920 uint32_t has_more_vlan:1;
921 uint32_t reserved:31;
922};
923
925#ifndef __cplusplus
927 .hdr.vlan_tci = RTE_BE16(0x0fff),
928 .hdr.eth_proto = RTE_BE16(0x0000),
929};
930#endif
931
942
944#ifndef __cplusplus
946 .hdr = {
947 .src_addr = RTE_BE32(0xffffffff),
948 .dst_addr = RTE_BE32(0xffffffff),
949 },
950};
951#endif
952
963 uint32_t has_hop_ext:1;
965 uint32_t has_route_ext:1;
967 uint32_t has_frag_ext:1;
969 uint32_t has_auth_ext:1;
971 uint32_t has_esp_ext:1;
973 uint32_t has_dest_ext:1;
975 uint32_t has_mobil_ext:1;
977 uint32_t has_hip_ext:1;
979 uint32_t has_shim6_ext:1;
981 uint32_t reserved:23;
982};
983
985#ifndef __cplusplus
987 .hdr = {
988 .src_addr =
989 "\xff\xff\xff\xff\xff\xff\xff\xff"
990 "\xff\xff\xff\xff\xff\xff\xff\xff",
991 .dst_addr =
992 "\xff\xff\xff\xff\xff\xff\xff\xff"
993 "\xff\xff\xff\xff\xff\xff\xff\xff",
994 },
995};
996#endif
997
1009
1018
1020#ifndef __cplusplus
1022 .hdr = {
1023 .icmp_type = 0xff,
1024 .icmp_code = 0xff,
1025 },
1026};
1027#endif
1028
1037
1039#ifndef __cplusplus
1041 .hdr = {
1042 .src_port = RTE_BE16(0xffff),
1043 .dst_port = RTE_BE16(0xffff),
1044 },
1045};
1046#endif
1047
1056
1058#ifndef __cplusplus
1060 .hdr = {
1061 .src_port = RTE_BE16(0xffff),
1062 .dst_port = RTE_BE16(0xffff),
1063 },
1064};
1065#endif
1066
1075
1077#ifndef __cplusplus
1079 .hdr = {
1080 .src_port = RTE_BE16(0xffff),
1081 .dst_port = RTE_BE16(0xffff),
1082 },
1083};
1084#endif
1085
1092 union {
1093 struct {
1094 /*
1095 * These fields are retained for compatibility.
1096 * Please switch to the new header field below.
1097 */
1098 uint8_t flags;
1099 uint8_t rsvd0[3];
1100 uint8_t vni[3];
1101 uint8_t rsvd1;
1102 };
1103 struct rte_vxlan_hdr hdr;
1104 };
1105};
1106
1108#ifndef __cplusplus
1110 .hdr.vni = "\xff\xff\xff",
1111};
1112#endif
1113
1134
1136#ifndef __cplusplus
1138 .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1139};
1140#endif
1141
1159
1161#ifndef __cplusplus
1163 .tni = "\xff\xff\xff",
1164};
1165#endif
1166
1176 uint8_t label_tc_s[3];
1177 uint8_t ttl;
1178};
1179
1181#ifndef __cplusplus
1183 .label_tc_s = "\xff\xff\xf0",
1184};
1185#endif
1186
1200
1202#ifndef __cplusplus
1204 .protocol = RTE_BE16(0xffff),
1205};
1206#endif
1207
1214 struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1215 struct rte_gre_hdr_opt_key key;
1216 struct rte_gre_hdr_opt_sequence sequence;
1217};
1218
1225 struct rte_macsec_hdr macsec_hdr;
1226};
1227
1246 uint32_t thresh;
1247};
1248
1250#ifndef __cplusplus
1252 .thresh = 0xffffffff,
1253};
1254#endif
1255
1262 union {
1263 struct {
1264 /*
1265 * These are old fields kept for compatibility.
1266 * Please prefer hdr field below.
1267 */
1275 uint8_t msg_type;
1278 };
1280 };
1281};
1282
1284#ifndef __cplusplus
1286 .hdr.teid = RTE_BE32(UINT32_MAX),
1287};
1288#endif
1289
1298
1300#ifndef __cplusplus
1302 .hdr = {
1303 .spi = RTE_BE32(0xffffffff),
1304 },
1305};
1306#endif
1307
1323
1325#ifndef __cplusplus
1327 .vni = "\xff\xff\xff",
1328};
1329#endif
1330
1337 union {
1338 struct {
1339 /*
1340 * These are old fields kept for compatibility.
1341 * Please prefer hdr field below.
1342 */
1343 uint8_t flags;
1344 uint8_t rsvd0[2];
1345 uint8_t protocol;
1346 uint8_t vni[3];
1347 uint8_t rsvd1;
1348 };
1349 struct rte_vxlan_gpe_hdr hdr;
1350 };
1351};
1352
1354#ifndef __cplusplus
1356 .hdr.vni = "\xff\xff\xff",
1357};
1358#endif
1359
1366 union {
1367 struct {
1368 /*
1369 * These are old fields kept for compatibility.
1370 * Please prefer hdr field below.
1371 */
1374 uint8_t hln;
1375 uint8_t pln;
1381 };
1383 };
1384};
1385
1387#ifndef __cplusplus
1388static const struct rte_flow_item_arp_eth_ipv4
1390 .hdr.arp_data.arp_sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1391 .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1392 .hdr.arp_data.arp_tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1393 .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1394};
1395#endif
1396
1408 uint8_t next_hdr;
1409};
1410
1412#ifndef __cplusplus
1413static const
1417#endif
1418
1430 struct rte_ipv6_fragment_ext hdr;
1431};
1432
1439 uint8_t type;
1440 uint8_t code;
1441 uint16_t checksum;
1442};
1443
1445#ifndef __cplusplus
1447 .type = 0xff,
1448 .code = 0xff,
1449};
1450#endif
1451
1459 struct rte_icmp_echo_hdr hdr;
1460};
1461
1474
1476#ifndef __cplusplus
1477static const
1479 .target_addr =
1480 "\xff\xff\xff\xff\xff\xff\xff\xff"
1481 "\xff\xff\xff\xff\xff\xff\xff\xff",
1482};
1483#endif
1484
1501
1503#ifndef __cplusplus
1504static const
1506 .target_addr =
1507 "\xff\xff\xff\xff\xff\xff\xff\xff"
1508 "\xff\xff\xff\xff\xff\xff\xff\xff",
1509};
1510#endif
1511
1524 uint8_t type;
1525 uint8_t length;
1526};
1527
1529#ifndef __cplusplus
1530static const struct rte_flow_item_icmp6_nd_opt
1532 .type = 0xff,
1533};
1534#endif
1535
1552
1554#ifndef __cplusplus
1555static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1557 .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1558};
1559#endif
1560
1577
1579#ifndef __cplusplus
1580static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1582 .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1583};
1584#endif
1585
1598 uint32_t data;
1599};
1600
1602#ifndef __cplusplus
1604 .data = UINT32_MAX,
1605};
1606#endif
1607
1616
1618#ifndef __cplusplus
1619static const struct rte_flow_item_gtp_psc
1621 .hdr.qfi = 0x3f,
1622};
1623#endif
1624
1639
1655
1657#ifndef __cplusplus
1658static const struct rte_flow_item_pppoe_proto_id
1660 .proto_id = RTE_BE16(0xffff),
1661};
1662#endif
1663
1673 uint32_t data;
1674 uint8_t index;
1675};
1676
1678#ifndef __cplusplus
1680 .data = 0xffffffff,
1681 .index = 0xff,
1682};
1683#endif
1684
1693
1695#ifndef __cplusplus
1697 .session_id = RTE_BE32(UINT32_MAX),
1698};
1699#endif
1700
1701
1721 uint32_t id;
1722};
1723
1725#ifndef __cplusplus
1727 .id = 0xffffffff,
1728};
1729#endif
1730
1740 uint32_t version:2;
1741 uint32_t oam_pkt:1;
1742 uint32_t reserved:1;
1743 uint32_t ttl:6;
1744 uint32_t length:6;
1745 uint32_t reserved1:4;
1746 uint32_t mdtype:4;
1747 uint32_t next_proto:8;
1748 uint32_t spi:24;
1749 uint32_t sindex:8;
1750};
1751
1753#ifndef __cplusplus
1755 .mdtype = 0xf,
1756 .next_proto = 0xff,
1757 .spi = 0xffffff,
1758 .sindex = 0xff,
1759};
1760#endif
1761
1771 uint32_t type:8;
1772 uint32_t max_resp_time:8;
1773 uint32_t checksum:16;
1774 uint32_t group_addr;
1775};
1776
1778#ifndef __cplusplus
1780 .group_addr = 0xffffffff,
1781};
1782#endif
1783
1793 uint32_t next_hdr:8;
1794 uint32_t payload_len:8;
1795 uint32_t reserved:16;
1796 uint32_t spi;
1797 uint32_t seq_num;
1798};
1799
1801#ifndef __cplusplus
1803 .spi = 0xffffffff,
1804};
1805#endif
1806
1816 uint8_t s_field;
1817 uint8_t msg_type;
1818 rte_be16_t msg_len;
1819 rte_be64_t seid;
1820};
1821
1823#ifndef __cplusplus
1825 .s_field = 0x01,
1826 .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1827};
1828#endif
1829
1839 struct rte_ecpri_combined_msg_hdr hdr;
1840};
1841
1843#ifndef __cplusplus
1845 .hdr = {
1846 .common = {
1847 .u32 = 0x0,
1848 },
1849 },
1850};
1851#endif
1852
1859 rte_be16_t option_class;
1860 uint8_t option_type;
1861 uint8_t option_len;
1862 uint32_t *data;
1863};
1864
1866#ifndef __cplusplus
1867static const struct rte_flow_item_geneve_opt
1869 .option_type = 0xff,
1870};
1871#endif
1872
1885 uint32_t level;
1886 union {
1887 __extension__
1888 struct {
1890 uint64_t packet_ok:1;
1892 uint64_t l2_ok:1;
1894 uint64_t l3_ok:1;
1896 uint64_t l4_ok:1;
1898 uint64_t l2_crc_ok:1;
1900 uint64_t ipv4_csum_ok:1;
1902 uint64_t l4_csum_ok:1;
1904 uint64_t l3_len_ok:1;
1905 uint64_t reserved:56;
1906 };
1907 uint64_t value;
1908 };
1909};
1910
1911#ifndef __cplusplus
1912static const struct rte_flow_item_integrity
1913rte_flow_item_integrity_mask = {
1914 .level = 0,
1915 .value = 0,
1916};
1917#endif
1918
1922#define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1926#define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1931#define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1936#define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1941#define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1942
1954 uint32_t flags;
1955};
1956
1958#ifndef __cplusplus
1960 .flags = 0xffffffff,
1961};
1962#endif
1963
1970 uint16_t port_id;
1971};
1972
1974#ifndef __cplusplus
1976 .port_id = 0xffff,
1977};
1978#endif
1979
1989 struct rte_l2tpv2_combined_msg_hdr hdr;
1990};
1991
1993#ifndef __cplusplus
1995 /*
1996 * flags and version bit mask
1997 * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1998 * T L x x S x O P x x x x V V V V
1999 */
2000 .hdr = {
2001 .common = {
2002 .flags_version = RTE_BE16(0xcb0f),
2003 },
2004 },
2005};
2006#endif
2007
2017 struct rte_ppp_hdr hdr;
2018};
2019
2021#ifndef __cplusplus
2023 .hdr = {
2024 .addr = 0xff,
2025 .ctrl = 0xff,
2026 .proto_id = RTE_BE16(0xffff),
2027 }
2028};
2029#endif
2030
2039
2041#ifndef __cplusplus
2043 .hdr = {
2044 .opcode = 0xff,
2045 .dst_qp = "\xff\xff\xff",
2046 },
2047};
2048#endif
2049
2085 const void *spec;
2086 const void *last;
2087 const void *mask;
2088};
2089
2107 struct rte_flow_item_flex_handle *handle;
2108 uint32_t length;
2109 const uint8_t *pattern;
2110};
2143
2174
2180__extension__
2192
2210
2260
2269
2271#ifndef __cplusplus
2275#endif
2276
2294
2296#ifndef __cplusplus
2297static const struct rte_flow_item_aggr_affinity
2301#endif
2302
2312 uint16_t tx_queue;
2313};
2314
2316#ifndef __cplusplus
2318 .tx_queue = 0xffff,
2319};
2320#endif
2321
2329 uint32_t packet_type;
2330};
2331
2333#ifndef __cplusplus
2335 .packet_type = 0xffffffff,
2336};
2337#endif
2338
2373
2381
2389
2398
2410
2422
2429
2438
2449
2458
2470
2482
2493
2501
2509
2520
2528
2536
2544
2552
2560
2568
2576
2585
2593
2602
2609
2616
2629
2642
2655
2668
2682
2696
2707
2717
2727
2740
2753
2770
2787
2804
2821
2834
2844
2857
2870
2883
2891
2902
2913
2921
2930
2938
2945
2953
2961
2971
2980
2990
2999
3009
3016
3025};
3026
3040
3053
3063 int64_t quota;
3064};
3065
3078
3091
3103 uint32_t id;
3104};
3105
3119 uint32_t group;
3120};
3121
3128 uint16_t index;
3129};
3130
3145 uint32_t timeout:24;
3146 uint32_t reserved:8;
3148 void *context;
3149};
3150
3158 uint32_t reserved:6;
3159 uint32_t aged:1;
3163};
3164
3185 uint32_t reserved:6;
3186 uint32_t timeout_valid:1;
3187 uint32_t timeout:24;
3189 uint32_t touch:1;
3190};
3191
3210 uint32_t id;
3211};
3212
3219 uint32_t reset:1;
3220 uint32_t hits_set:1;
3221 uint32_t bytes_set:1;
3222 uint32_t reserved:29;
3223 uint64_t hits;
3224 uint64_t bytes;
3225};
3226
3270 uint32_t level;
3271 uint64_t types;
3272 uint32_t key_len;
3273 uint32_t queue_num;
3274 const uint8_t *key;
3275 const uint16_t *queue;
3276};
3277
3295 uint32_t original:1;
3296 uint32_t reserved:31;
3297 uint32_t id;
3298};
3299
3312 uint32_t original:1;
3313 uint32_t reserved:31;
3314 uint32_t id;
3315};
3316
3326 uint32_t mtr_id;
3327};
3328
3362
3372
3382
3392
3402
3412
3446
3479
3500 uint8_t *data;
3501 uint8_t *preserve;
3502 size_t size;
3503};
3504
3521 uint8_t *data;
3522 size_t size;
3523};
3524
3537 rte_be32_t ipv4_addr;
3538};
3539
3552 uint8_t ipv6_addr[16];
3553};
3554
3568 uint8_t *data;
3569 size_t size;
3570 uint8_t type;
3571};
3572
3586
3599 rte_be16_t port;
3600};
3601
3608 uint8_t ttl_value;
3609};
3610
3617 uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3618};
3619
3630 uint32_t data;
3631 uint32_t mask;
3632 uint8_t index;
3633};
3634
3655 uint32_t data;
3656 uint32_t mask;
3657};
3658
3667 uint8_t dscp;
3668};
3669
3687struct rte_flow_action_handle;
3688
3706
3718
3730 uint32_t scale:4;
3734 uint32_t last_ack_seen:1;
3739 uint32_t data_unacked:1;
3744 uint32_t sent_end;
3749 uint32_t reply_end;
3751 uint32_t max_win;
3753 uint32_t max_ack;
3754};
3755
3818
3836
3849
3856 uint16_t port_id;
3857};
3858
3908
3917 union {
3918 struct {
3920 union {
3921 struct {
3956 uint8_t level;
3957 union {
3963 uint8_t tag_index;
3970 struct {
3974 uint8_t type;
3979 };
3980 };
3981 };
3982 struct rte_flow_item_flex_handle *flex_handle;
3983 };
3985 uint32_t offset;
3986 };
3993 uint8_t value[16];
3999 void *pvalue;
4000 };
4001};
4002
4011
4028
4041
4043 struct rte_flow_meter_profile *profile;
4045 struct rte_flow_meter_policy *policy;
4050};
4051
4071
4082
4096 const char *name;
4098 uint32_t size;
4100 const uint8_t *value;
4101};
4102
4118 const char *name;
4120 uint32_t args_num;
4123};
4124
4125/* Mbuf dynamic field offset for metadata. */
4126extern int32_t rte_flow_dynf_metadata_offs;
4127
4128/* Mbuf dynamic field flag mask for metadata. */
4129extern uint64_t rte_flow_dynf_metadata_mask;
4130
4131/* Mbuf dynamic field pointer for metadata. */
4132#define RTE_FLOW_DYNF_METADATA(m) \
4133 RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4134
4135/* Mbuf dynamic flags for metadata. */
4136#define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4137#define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4138
4139__rte_experimental
4140static inline uint32_t
4141rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4142{
4143 return *RTE_FLOW_DYNF_METADATA(m);
4144}
4145
4146__rte_experimental
4147static inline void
4148rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4149{
4150 *RTE_FLOW_DYNF_METADATA(m) = v;
4151}
4152
4162 const void *conf;
4163};
4164
4171struct rte_flow;
4172
4178struct rte_flow_meter_profile;
4179
4185struct rte_flow_meter_policy;
4186
4204 uint32_t ratio;
4207};
4208
4235
4249 const void *cause;
4250 const char *message;
4251};
4252
4262 union {
4263 const struct rte_flow_attr *attr_ro;
4265 };
4266 union {
4269 };
4270 union {
4273 };
4274};
4275
4420
4440__rte_experimental
4441int
4442rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4443 FILE *file, struct rte_flow_error *error);
4444
4451__rte_experimental
4452static inline int
4454{
4455 return !!rte_flow_dynf_metadata_mask;
4456}
4457
4468__rte_experimental
4469int
4471
4524int
4525rte_flow_validate(uint16_t port_id,
4526 const struct rte_flow_attr *attr,
4527 const struct rte_flow_item pattern[],
4528 const struct rte_flow_action actions[],
4529 struct rte_flow_error *error);
4530
4551struct rte_flow *
4552rte_flow_create(uint16_t port_id,
4553 const struct rte_flow_attr *attr,
4554 const struct rte_flow_item pattern[],
4555 const struct rte_flow_action actions[],
4556 struct rte_flow_error *error);
4557
4578int
4579rte_flow_destroy(uint16_t port_id,
4580 struct rte_flow *flow,
4581 struct rte_flow_error *error);
4582
4599__rte_experimental
4600int
4602 struct rte_flow *flow,
4603 const struct rte_flow_action actions[],
4604 struct rte_flow_error *error);
4605
4622int
4623rte_flow_flush(uint16_t port_id,
4624 struct rte_flow_error *error);
4625
4650int
4651rte_flow_query(uint16_t port_id,
4652 struct rte_flow *flow,
4653 const struct rte_flow_action *action,
4654 void *data,
4655 struct rte_flow_error *error);
4656
4702int
4703rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4704
4722int
4724 int code,
4725 enum rte_flow_error_type type,
4726 const void *cause,
4727 const char *message);
4728
4740
4767__rte_deprecated
4768size_t
4769rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4770 const struct rte_flow_attr *attr,
4771 const struct rte_flow_item *items,
4772 const struct rte_flow_action *actions);
4773
4814__rte_experimental
4815int
4817 void *dst,
4818 size_t size,
4819 const void *src,
4820 struct rte_flow_error *error);
4821
4850__rte_experimental
4851int
4852rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4853 uint32_t nb_contexts, struct rte_flow_error *error);
4854
4894__rte_experimental
4895int
4896rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4897 uint32_t nb_contexts, struct rte_flow_error *error);
4898
4910 uint32_t ingress:1;
4912 uint32_t egress:1;
4917 uint32_t transfer:1;
4918};
4919
4947__rte_experimental
4948struct rte_flow_action_handle *
4950 const struct rte_flow_indir_action_conf *conf,
4951 const struct rte_flow_action *action,
4952 struct rte_flow_error *error);
4953
4976__rte_experimental
4977int
4979 struct rte_flow_action_handle *handle,
4980 struct rte_flow_error *error);
4981
5015__rte_experimental
5016int
5018 struct rte_flow_action_handle *handle,
5019 const void *update,
5020 struct rte_flow_error *error);
5021
5047__rte_experimental
5048int
5050 const struct rte_flow_action_handle *handle,
5051 void *data, struct rte_flow_error *error);
5052
5053/* Tunnel has a type and the key information. */
5054struct rte_flow_tunnel {
5059 enum rte_flow_item_type type;
5060 uint64_t tun_id;
5062 union {
5063 struct {
5066 } ipv4;
5067 struct {
5068 uint8_t src_addr[16];
5069 uint8_t dst_addr[16];
5070 } ipv6;
5071 };
5072 rte_be16_t tp_src;
5073 rte_be16_t tp_dst;
5074 uint16_t tun_flags;
5076 bool is_ipv6;
5082 uint8_t tos;
5083 uint8_t ttl;
5084 uint32_t label;
5085};
5086
5090#define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5091
5095#define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5096
5100#define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5101
5112 uint64_t flags;
5113 uint32_t group_id;
5114 struct rte_flow_tunnel tunnel;
5115};
5116
5140__rte_experimental
5141int
5143 struct rte_flow_tunnel *tunnel,
5144 struct rte_flow_action **actions,
5145 uint32_t *num_of_actions,
5146 struct rte_flow_error *error);
5147
5171__rte_experimental
5172int
5173rte_flow_tunnel_match(uint16_t port_id,
5174 struct rte_flow_tunnel *tunnel,
5175 struct rte_flow_item **items,
5176 uint32_t *num_of_items,
5177 struct rte_flow_error *error);
5178
5190__rte_experimental
5191uint64_t
5193
5215__rte_experimental
5216int
5218 struct rte_mbuf *m,
5219 struct rte_flow_restore_info *info,
5220 struct rte_flow_error *error);
5221
5238__rte_experimental
5239int
5241 struct rte_flow_action *actions,
5242 uint32_t num_of_actions,
5243 struct rte_flow_error *error);
5244
5261__rte_experimental
5262int
5264 struct rte_flow_item *items,
5265 uint32_t num_of_items,
5266 struct rte_flow_error *error);
5267
5293int
5294rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5295 struct rte_flow_error *error);
5296
5315__rte_experimental
5316struct rte_flow_item_flex_handle *
5318 const struct rte_flow_item_flex_conf *conf,
5319 struct rte_flow_error *error);
5320
5335__rte_experimental
5336int
5338 const struct rte_flow_item_flex_handle *handle,
5339 struct rte_flow_error *error);
5340
5345#define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5346
5352#define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5353
5396
5408 uint32_t max_size;
5409};
5410
5432__rte_experimental
5433int
5434rte_flow_info_get(uint16_t port_id,
5435 struct rte_flow_port_info *port_info,
5436 struct rte_flow_queue_info *queue_info,
5437 struct rte_flow_error *error);
5438
5451 uint32_t nb_counters;
5461 uint32_t nb_meters;
5475 uint32_t nb_quotas;
5479 uint32_t flags;
5480};
5481
5493 uint32_t size;
5494};
5495
5527__rte_experimental
5528int
5529rte_flow_configure(uint16_t port_id,
5530 const struct rte_flow_port_attr *port_attr,
5531 uint16_t nb_queue,
5532 const struct rte_flow_queue_attr *queue_attr[],
5533 struct rte_flow_error *error);
5534
5539struct rte_flow_pattern_template;
5540
5547__extension__
5562 uint32_t ingress:1;
5564 uint32_t egress:1;
5566 uint32_t transfer:1;
5567};
5568
5596__rte_experimental
5597struct rte_flow_pattern_template *
5599 const struct rte_flow_pattern_template_attr *template_attr,
5600 const struct rte_flow_item pattern[],
5601 struct rte_flow_error *error);
5602
5623__rte_experimental
5624int
5626 struct rte_flow_pattern_template *pattern_template,
5627 struct rte_flow_error *error);
5628
5633struct rte_flow_actions_template;
5634
5641__extension__
5648 uint32_t ingress:1;
5650 uint32_t egress:1;
5652 uint32_t transfer:1;
5653};
5654
5690__rte_experimental
5691struct rte_flow_actions_template *
5693 const struct rte_flow_actions_template_attr *template_attr,
5694 const struct rte_flow_action actions[],
5695 const struct rte_flow_action masks[],
5696 struct rte_flow_error *error);
5697
5718__rte_experimental
5719int
5721 struct rte_flow_actions_template *actions_template,
5722 struct rte_flow_error *error);
5723
5728struct rte_flow_template_table;
5729
5743#define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5751#define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5770
5795
5829
5862__rte_experimental
5863struct rte_flow_template_table *
5865 const struct rte_flow_template_table_attr *table_attr,
5866 struct rte_flow_pattern_template *pattern_templates[],
5867 uint8_t nb_pattern_templates,
5868 struct rte_flow_actions_template *actions_templates[],
5869 uint8_t nb_actions_templates,
5870 struct rte_flow_error *error);
5871
5892__rte_experimental
5893int
5895 struct rte_flow_template_table *template_table,
5896 struct rte_flow_error *error);
5897
5919__rte_experimental
5920int
5922 uint32_t group_id,
5923 const struct rte_flow_group_attr *attr,
5924 const struct rte_flow_action actions[],
5925 struct rte_flow_error *error);
5926
5933__extension__
5939 uint32_t postpone:1;
5940};
5941
5978__rte_experimental
5979struct rte_flow *
5980rte_flow_async_create(uint16_t port_id,
5981 uint32_t queue_id,
5982 const struct rte_flow_op_attr *op_attr,
5983 struct rte_flow_template_table *template_table,
5984 const struct rte_flow_item pattern[],
5985 uint8_t pattern_template_index,
5986 const struct rte_flow_action actions[],
5987 uint8_t actions_template_index,
5988 void *user_data,
5989 struct rte_flow_error *error);
5990
6023__rte_experimental
6024struct rte_flow *
6026 uint32_t queue_id,
6027 const struct rte_flow_op_attr *op_attr,
6028 struct rte_flow_template_table *template_table,
6029 uint32_t rule_index,
6030 const struct rte_flow_action actions[],
6031 uint8_t actions_template_index,
6032 void *user_data,
6033 struct rte_flow_error *error);
6034
6064__rte_experimental
6065int
6066rte_flow_async_destroy(uint16_t port_id,
6067 uint32_t queue_id,
6068 const struct rte_flow_op_attr *op_attr,
6069 struct rte_flow *flow,
6070 void *user_data,
6071 struct rte_flow_error *error);
6072
6101__rte_experimental
6102int
6104 uint32_t queue_id,
6105 const struct rte_flow_op_attr *op_attr,
6106 struct rte_flow *flow,
6107 const struct rte_flow_action actions[],
6108 uint8_t actions_template_index,
6109 void *user_data,
6110 struct rte_flow_error *error);
6111
6132__rte_experimental
6133int
6134rte_flow_push(uint16_t port_id,
6135 uint32_t queue_id,
6136 struct rte_flow_error *error);
6137
6154
6161__extension__
6172
6198__rte_experimental
6199int
6200rte_flow_pull(uint16_t port_id,
6201 uint32_t queue_id,
6202 struct rte_flow_op_result res[],
6203 uint16_t n_res,
6204 struct rte_flow_error *error);
6205
6232__rte_experimental
6233struct rte_flow_action_handle *
6235 uint32_t queue_id,
6236 const struct rte_flow_op_attr *op_attr,
6237 const struct rte_flow_indir_action_conf *indir_action_conf,
6238 const struct rte_flow_action *action,
6239 void *user_data,
6240 struct rte_flow_error *error);
6241
6267__rte_experimental
6268int
6270 uint32_t queue_id,
6271 const struct rte_flow_op_attr *op_attr,
6272 struct rte_flow_action_handle *action_handle,
6273 void *user_data,
6274 struct rte_flow_error *error);
6275
6306__rte_experimental
6307int
6309 uint32_t queue_id,
6310 const struct rte_flow_op_attr *op_attr,
6311 struct rte_flow_action_handle *action_handle,
6312 const void *update,
6313 void *user_data,
6314 struct rte_flow_error *error);
6315
6350__rte_experimental
6351int
6353 uint32_t queue_id,
6354 const struct rte_flow_op_attr *op_attr,
6355 const struct rte_flow_action_handle *action_handle,
6356 void *data,
6357 void *user_data,
6358 struct rte_flow_error *error);
6359
6373
6407__rte_experimental
6408int
6410 struct rte_flow_action_handle *handle,
6411 const void *update, void *query,
6413 struct rte_flow_error *error);
6414
6450__rte_experimental
6451int
6452rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6453 const struct rte_flow_op_attr *attr,
6454 struct rte_flow_action_handle *handle,
6455 const void *update, void *query,
6457 void *user_data,
6458 struct rte_flow_error *error);
6459
6460struct rte_flow_action_list_handle;
6461
6472 struct rte_flow_action_list_handle *handle;
6481 const void **conf;
6482};
6483
6511__rte_experimental
6512struct rte_flow_action_list_handle *
6514 const
6515 struct rte_flow_indir_action_conf *conf,
6516 const struct rte_flow_action *actions,
6517 struct rte_flow_error *error);
6518
6553__rte_experimental
6554struct rte_flow_action_list_handle *
6555rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6556 const struct rte_flow_op_attr *attr,
6557 const struct rte_flow_indir_action_conf *conf,
6558 const struct rte_flow_action *actions,
6559 void *user_data,
6560 struct rte_flow_error *error);
6561
6583__rte_experimental
6584int
6586 struct rte_flow_action_list_handle *handle,
6587 struct rte_flow_error *error);
6588
6619__rte_experimental
6620int
6622 (uint16_t port_id, uint32_t queue_id,
6623 const struct rte_flow_op_attr *op_attr,
6624 struct rte_flow_action_list_handle *handle,
6625 void *user_data, struct rte_flow_error *error);
6626
6663__rte_experimental
6664int
6666 const struct rte_flow_action_list_handle *handle,
6667 const void **update, void **query,
6669 struct rte_flow_error *error);
6670
6714__rte_experimental
6715int
6716rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6717 const struct rte_flow_op_attr *attr,
6718 const struct rte_flow_action_list_handle *handle,
6719 const void **update, void **query,
6721 void *user_data,
6722 struct rte_flow_error *error);
6723
6750__rte_experimental
6751int
6752rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6753 const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6754 uint32_t *hash, struct rte_flow_error *error);
6755
6756#ifdef __cplusplus
6757}
6758#endif
6759
6760#endif /* RTE_FLOW_H_ */
#define RTE_BIT32(nr)
Definition rte_bitops.h:40
uint32_t rte_be32_t
uint64_t rte_be64_t
uint16_t rte_be16_t
rte_eth_hash_function
Definition rte_ethdev.h:456
#define RTE_ETHER_ADDR_LEN
Definition rte_ether.h:25
struct rte_ether_addr src_addr
Definition rte_ether.h:1
struct rte_ether_addr dst_addr
Definition rte_ether.h:0
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:803
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, 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_aggr_affinity rte_flow_item_aggr_affinity_mask
Definition rte_flow.h:2298
__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:4006
@ RTE_FLOW_MODIFY_SET
Definition rte_flow.h:4007
@ RTE_FLOW_MODIFY_SUB
Definition rte_flow.h:4009
@ RTE_FLOW_MODIFY_ADD
Definition rte_flow.h:4008
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition rte_flow.h:1203
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition rte_flow.h:4453
__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_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:1478
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition rte_flow.h:1355
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition rte_flow.h:1603
__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)
__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_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition rte_flow.h:1556
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition rte_flow.h:1021
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition rte_flow.h:1620
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition rte_flow.h:1109
rte_flow_quota_mode
Definition rte_flow.h:3035
@ RTE_FLOW_QUOTA_MODE_L3
Definition rte_flow.h:3038
@ RTE_FLOW_QUOTA_MODE_L2
Definition rte_flow.h:3037
@ RTE_FLOW_QUOTA_MODE_PACKET
Definition rte_flow.h:3036
rte_flow_update_quota_op
Definition rte_flow.h:3074
@ RTE_FLOW_UPDATE_QUOTA_SET
Definition rte_flow.h:3075
@ RTE_FLOW_UPDATE_QUOTA_ADD
Definition rte_flow.h:3076
__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_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition rte_flow.h:1659
rte_flow_op_status
Definition rte_flow.h:6144
@ RTE_FLOW_OP_SUCCESS
Definition rte_flow.h:6148
@ RTE_FLOW_OP_ERROR
Definition rte_flow.h:6152
static const struct rte_flow_item_quota rte_flow_item_quota_mask
Definition rte_flow.h:735
rte_flow_conntrack_tcp_last_index
Definition rte_flow.h:3710
@ RTE_FLOW_CONNTRACK_FLAG_ACK
Definition rte_flow.h:3715
@ RTE_FLOW_CONNTRACK_FLAG_SYNACK
Definition rte_flow.h:3713
@ RTE_FLOW_CONNTRACK_FLAG_FIN
Definition rte_flow.h:3714
@ RTE_FLOW_CONNTRACK_FLAG_SYN
Definition rte_flow.h:3712
@ RTE_FLOW_CONNTRACK_FLAG_RST
Definition rte_flow.h:3716
@ RTE_FLOW_CONNTRACK_FLAG_NONE
Definition rte_flow.h:3711
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition rte_flow.h:1326
__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:3692
@ RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
Definition rte_flow.h:3696
@ RTE_FLOW_CONNTRACK_STATE_SYN_RECV
Definition rte_flow.h:3694
@ RTE_FLOW_CONNTRACK_STATE_LAST_ACK
Definition rte_flow.h:3702
@ RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
Definition rte_flow.h:3698
@ RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
Definition rte_flow.h:3704
@ RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
Definition rte_flow.h:3700
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition rte_flow.h:1137
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 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:1414
__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_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 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 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:1824
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition rte_flow.h:1696
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition rte_flow.h:1679
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition rte_flow.h:1581
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition rte_flow.h:838
static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
Definition rte_flow.h:2272
rte_flow_query_update_mode
Definition rte_flow.h:6369
@ RTE_FLOW_QU_UPDATE_FIRST
Definition rte_flow.h:6371
@ RTE_FLOW_QU_QUERY_FIRST
Definition rte_flow.h:6370
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow, FILE *file, struct rte_flow_error *error)
rte_flow_table_hash_func
Definition rte_flow.h:5777
@ RTE_FLOW_TABLE_HASH_FUNC_CRC16
Definition rte_flow.h:5793
@ RTE_FLOW_TABLE_HASH_FUNC_LINEAR
Definition rte_flow.h:5785
@ RTE_FLOW_TABLE_HASH_FUNC_DEFAULT
Definition rte_flow.h:5781
@ RTE_FLOW_TABLE_HASH_FUNC_CRC32
Definition rte_flow.h:5789
__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)
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition rte_flow.h:926
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition rte_flow.h:1059
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:4281
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition rte_flow.h:4418
@ RTE_FLOW_CONV_OP_ITEM
Definition rte_flow.h:4311
@ RTE_FLOW_CONV_OP_ACTIONS
Definition rte_flow.h:4349
@ RTE_FLOW_CONV_OP_NONE
Definition rte_flow.h:4287
@ RTE_FLOW_CONV_OP_RULE
Definition rte_flow.h:4362
@ RTE_FLOW_CONV_OP_ATTR
Definition rte_flow.h:4299
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition rte_flow.h:4390
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition rte_flow.h:4404
@ RTE_FLOW_CONV_OP_PATTERN
Definition rte_flow.h:4336
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition rte_flow.h:4376
@ RTE_FLOW_CONV_OP_ACTION
Definition rte_flow.h:4323
__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_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_flow_action_type
Definition rte_flow.h:2365
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition rte_flow.h:2527
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition rte_flow.h:2575
@ RTE_FLOW_ACTION_TYPE_SKIP_CMAN
Definition rte_flow.h:2989
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition rte_flow.h:2592
@ RTE_FLOW_ACTION_TYPE_QUOTA
Definition rte_flow.h:2979
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition rte_flow.h:2769
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition rte_flow.h:2388
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition rte_flow.h:2448
@ RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
Definition rte_flow.h:2970
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition rte_flow.h:2695
@ RTE_FLOW_ACTION_TYPE_INDIRECT
Definition rte_flow.h:2920
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition rte_flow.h:2608
@ RTE_FLOW_ACTION_TYPE_VF
Definition rte_flow.h:2481
@ RTE_FLOW_ACTION_TYPE_SET_META
Definition rte_flow.h:2843
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition rte_flow.h:2706
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE
Definition rte_flow.h:3008
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition rte_flow.h:2654
@ RTE_FLOW_ACTION_TYPE_METER_MARK
Definition rte_flow.h:2960
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition rte_flow.h:2559
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition rte_flow.h:2615
@ RTE_FLOW_ACTION_TYPE_VOID
Definition rte_flow.h:2380
@ RTE_FLOW_ACTION_TYPE_AGE
Definition rte_flow.h:2882
@ RTE_FLOW_ACTION_TYPE_RSS
Definition rte_flow.h:2457
@ RTE_FLOW_ACTION_TYPE_MARK
Definition rte_flow.h:2409
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition rte_flow.h:2628
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition rte_flow.h:2519
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition rte_flow.h:2641
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH
Definition rte_flow.h:2998
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition rte_flow.h:2428
@ RTE_FLOW_ACTION_TYPE_END
Definition rte_flow.h:2372
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
Definition rte_flow.h:2856
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition rte_flow.h:2535
@ RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
Definition rte_flow.h:2944
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
Definition rte_flow.h:2869
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition rte_flow.h:2820
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition rte_flow.h:2716
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition rte_flow.h:2584
@ RTE_FLOW_ACTION_TYPE_PROG
Definition rte_flow.h:3024
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition rte_flow.h:2681
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition rte_flow.h:2492
@ RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
Definition rte_flow.h:2952
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition rte_flow.h:2601
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition rte_flow.h:2508
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition rte_flow.h:2567
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition rte_flow.h:2543
@ RTE_FLOW_ACTION_TYPE_INDIRECT_LIST
Definition rte_flow.h:3015
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition rte_flow.h:2803
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition rte_flow.h:2421
@ RTE_FLOW_ACTION_TYPE_CONNTRACK
Definition rte_flow.h:2929
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition rte_flow.h:2752
@ RTE_FLOW_ACTION_TYPE_METER_COLOR
Definition rte_flow.h:2937
@ RTE_FLOW_ACTION_TYPE_METER
Definition rte_flow.h:2500
@ RTE_FLOW_ACTION_TYPE_PF
Definition rte_flow.h:2469
@ RTE_FLOW_ACTION_TYPE_SET_TAG
Definition rte_flow.h:2833
@ RTE_FLOW_ACTION_TYPE_SHARED
Definition rte_flow.h:2901
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition rte_flow.h:2667
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition rte_flow.h:2726
@ RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
Definition rte_flow.h:2912
@ RTE_FLOW_ACTION_TYPE_DROP
Definition rte_flow.h:2437
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition rte_flow.h:2551
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition rte_flow.h:2739
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition rte_flow.h:2786
@ RTE_FLOW_ACTION_TYPE_SAMPLE
Definition rte_flow.h:2890
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition rte_flow.h:2397
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition rte_flow.h:1285
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition rte_flow.h:1182
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition rte_flow.h:1994
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition rte_flow.h:1078
static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask
Definition rte_flow.h:2042
__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)
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition rte_flow.h:986
__rte_experimental int rte_flow_dynf_metadata_register(void)
static const struct rte_flow_item_ah rte_flow_item_ah_mask
Definition rte_flow.h:1802
rte_flow_item_flex_tunnel_mode
Definition rte_flow.h:2147
@ FLEX_TUNNEL_MODE_OUTER
Definition rte_flow.h:2159
@ FLEX_TUNNEL_MODE_MULTI
Definition rte_flow.h:2168
@ FLEX_TUNNEL_MODE_INNER
Definition rte_flow.h:2163
@ FLEX_TUNNEL_MODE_SINGLE
Definition rte_flow.h:2155
@ FLEX_TUNNEL_MODE_TUNNEL
Definition rte_flow.h:2172
__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:2317
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition rte_flow.h:751
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition rte_flow.h:1531
__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:5760
@ RTE_FLOW_TABLE_INSERTION_TYPE_INDEX
Definition rte_flow.h:5768
@ RTE_FLOW_TABLE_INSERTION_TYPE_PATTERN
Definition rte_flow.h:5764
__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:2114
@ FIELD_MODE_FIXED
Definition rte_flow.h:2125
@ FIELD_MODE_DUMMY
Definition rte_flow.h:2120
@ FIELD_MODE_OFFSET
Definition rte_flow.h:2132
@ FIELD_MODE_BITMASK
Definition rte_flow.h:2141
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition rte_flow.h:1389
__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 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)
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition rte_flow.h:1040
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition rte_flow.h:1754
rte_flow_error_type
Definition rte_flow.h:4215
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition rte_flow.h:4217
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition rte_flow.h:4219
@ RTE_FLOW_ERROR_TYPE_NONE
Definition rte_flow.h:4216
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition rte_flow.h:4218
@ RTE_FLOW_ERROR_TYPE_STATE
Definition rte_flow.h:4233
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition rte_flow.h:4227
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition rte_flow.h:4222
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition rte_flow.h:4223
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition rte_flow.h:4231
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition rte_flow.h:4228
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition rte_flow.h:4226
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition rte_flow.h:4229
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition rte_flow.h:4232
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition rte_flow.h:4224
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition rte_flow.h:4221
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition rte_flow.h:4220
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition rte_flow.h:4230
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition rte_flow.h:4225
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition rte_flow.h:1505
__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 const struct rte_flow_item_any rte_flow_item_any_mask
Definition rte_flow.h:778
__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:2334
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition rte_flow.h:945
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition rte_flow.h:1779
rte_flow_quota_state
Definition rte_flow.h:717
@ RTE_FLOW_QUOTA_STATE_PASS
Definition rte_flow.h:718
@ RTE_FLOW_QUOTA_STATE_BLOCK
Definition rte_flow.h:719
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition rte_flow.h:1844
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition rte_flow.h:2022
__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:1446
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition rte_flow.h:1301
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition rte_flow.h:1726
__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:1975
__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:1251
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition rte_flow.h:1868
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:1959
__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)
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_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_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)
rte_flow_item_type
Definition rte_flow.h:156
@ 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:235
@ 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:249
@ 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:317
@ 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:277
@ 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:263
@ RTE_FLOW_ITEM_TYPE_IGMP
Definition rte_flow.h:502
@ RTE_FLOW_ITEM_TYPE_ESP
Definition rte_flow.h:351
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition rte_flow.h:298
@ 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:165
@ 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:214
@ RTE_FLOW_ITEM_TYPE_GRE_OPTION
Definition rte_flow.h:632
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition rte_flow.h:291
@ 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:193
@ RTE_FLOW_ITEM_TYPE_L2TPV2
Definition rte_flow.h:618
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition rte_flow.h:228
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition rte_flow.h:344
@ 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:185
@ 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:326
@ 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:305
@ RTE_FLOW_ITEM_TYPE_VOID
Definition rte_flow.h:175
@ 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:221
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition rte_flow.h:423
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition rte_flow.h:358
@ RTE_FLOW_ITEM_TYPE_UDP
Definition rte_flow.h:256
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition rte_flow.h:284
@ 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:242
@ 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:270
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition rte_flow.h:207
@ 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:335
__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:885
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition rte_flow.h:1162
__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:3862
@ RTE_FLOW_FIELD_IPV6_HOPLIMIT
Definition rte_flow.h:3874
@ RTE_FLOW_FIELD_IPV6_PROTO
Definition rte_flow.h:3896
@ RTE_FLOW_FIELD_METER_COLOR
Definition rte_flow.h:3895
@ RTE_FLOW_FIELD_GTP_TEID
Definition rte_flow.h:3886
@ RTE_FLOW_FIELD_MAC_DST
Definition rte_flow.h:3864
@ RTE_FLOW_FIELD_IPV6_DSCP
Definition rte_flow.h:3873
@ RTE_FLOW_FIELD_MAC_SRC
Definition rte_flow.h:3865
@ RTE_FLOW_FIELD_GENEVE_OPT_CLASS
Definition rte_flow.h:3900
@ RTE_FLOW_FIELD_TCP_PORT_SRC
Definition rte_flow.h:3877
@ RTE_FLOW_FIELD_GENEVE_OPT_TYPE
Definition rte_flow.h:3899
@ RTE_FLOW_FIELD_MPLS
Definition rte_flow.h:3902
@ RTE_FLOW_FIELD_META
Definition rte_flow.h:3889
@ RTE_FLOW_FIELD_IPV4_SRC
Definition rte_flow.h:3871
@ RTE_FLOW_FIELD_IPV4_DST
Definition rte_flow.h:3872
@ RTE_FLOW_FIELD_TAG
Definition rte_flow.h:3887
@ RTE_FLOW_FIELD_START
Definition rte_flow.h:3863
@ RTE_FLOW_FIELD_UDP_PORT_SRC
Definition rte_flow.h:3882
@ RTE_FLOW_FIELD_IPV6_SRC
Definition rte_flow.h:3875
@ RTE_FLOW_FIELD_GENEVE_OPT_DATA
Definition rte_flow.h:3901
@ RTE_FLOW_FIELD_GTP_PSC_QFI
Definition rte_flow.h:3894
@ RTE_FLOW_FIELD_FLEX_ITEM
Definition rte_flow.h:3897
@ RTE_FLOW_FIELD_IPV6_DST
Definition rte_flow.h:3876
@ RTE_FLOW_FIELD_TCP_FLAGS
Definition rte_flow.h:3881
@ RTE_FLOW_FIELD_VALUE
Definition rte_flow.h:3891
@ RTE_FLOW_FIELD_UDP_PORT_DST
Definition rte_flow.h:3883
@ RTE_FLOW_FIELD_IPV4_IHL
Definition rte_flow.h:3904
@ RTE_FLOW_FIELD_IPV4_TTL
Definition rte_flow.h:3870
@ RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN
Definition rte_flow.h:3906
@ RTE_FLOW_FIELD_MARK
Definition rte_flow.h:3888
@ RTE_FLOW_FIELD_MAC_TYPE
Definition rte_flow.h:3868
@ RTE_FLOW_FIELD_GENEVE_VNI
Definition rte_flow.h:3885
@ RTE_FLOW_FIELD_IPV6_ECN
Definition rte_flow.h:3893
@ RTE_FLOW_FIELD_TCP_DATA_OFFSET
Definition rte_flow.h:3903
@ RTE_FLOW_FIELD_IPV4_DSCP
Definition rte_flow.h:3869
@ RTE_FLOW_FIELD_VXLAN_VNI
Definition rte_flow.h:3884
@ RTE_FLOW_FIELD_POINTER
Definition rte_flow.h:3890
@ RTE_FLOW_FIELD_VLAN_TYPE
Definition rte_flow.h:3866
@ RTE_FLOW_FIELD_TCP_ACK_NUM
Definition rte_flow.h:3880
@ RTE_FLOW_FIELD_TCP_SEQ_NUM
Definition rte_flow.h:3879
@ RTE_FLOW_FIELD_IPV4_TOTAL_LEN
Definition rte_flow.h:3905
@ RTE_FLOW_FIELD_IPV4_ECN
Definition rte_flow.h:3892
@ RTE_FLOW_FIELD_HASH_RESULT
Definition rte_flow.h:3898
@ RTE_FLOW_FIELD_TCP_PORT_DST
Definition rte_flow.h:3878
@ RTE_FLOW_FIELD_VLAN_ID
Definition rte_flow.h:3867
__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)
rte_color
Definition rte_meter.h:32
@ RTE_COLORS
Definition rte_meter.h:36
struct rte_ether_addr arp_sha
Definition rte_arp.h:25
rte_be32_t spi
Definition rte_esp.h:24
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition rte_ether.h:75
struct rte_ether_addr dst_addr
Definition rte_ether.h:294
struct rte_flow_tcp_dir_param reply_dir
Definition rte_flow.h:3804
struct rte_flow_tcp_dir_param original_dir
Definition rte_flow.h:3802
enum rte_flow_conntrack_state state
Definition rte_flow.h:3796
struct rte_flow_action_list_handle * handle
Definition rte_flow.h:6472
struct rte_flow_meter_profile * profile
Definition rte_flow.h:4043
enum rte_flow_field_id field
Definition rte_flow.h:3916
struct rte_flow_action_modify_data dst
Definition rte_flow.h:4024
struct rte_flow_action_modify_data src
Definition rte_flow.h:4025
enum rte_flow_modify_op operation
Definition rte_flow.h:4023
struct rte_flow_item * definition
Definition rte_flow.h:3477
const char * name
Definition rte_flow.h:4118
const struct rte_flow_action_prog_argument * args
Definition rte_flow.h:4122
enum rte_flow_quota_mode mode
Definition rte_flow.h:3050
const uint16_t * queue
Definition rte_flow.h:3275
enum rte_eth_hash_function func
Definition rte_flow.h:3244
const uint8_t * key
Definition rte_flow.h:3274
const struct rte_flow_action * actions
Definition rte_flow.h:4206
struct rte_flow_item * definition
Definition rte_flow.h:3444
const void * conf
Definition rte_flow.h:4162
enum rte_flow_action_type type
Definition rte_flow.h:4161
uint32_t group
Definition rte_flow.h:103
uint32_t egress
Definition rte_flow.h:112
uint32_t priority
Definition rte_flow.h:104
uint32_t transfer
Definition rte_flow.h:130
uint32_t reserved
Definition rte_flow.h:131
uint32_t ingress
Definition rte_flow.h:108
struct rte_flow_action * actions
Definition rte_flow.h:4272
struct rte_flow_attr * attr
Definition rte_flow.h:4264
const struct rte_flow_action * actions_ro
Definition rte_flow.h:4271
const struct rte_flow_item * pattern_ro
Definition rte_flow.h:4267
const struct rte_flow_attr * attr_ro
Definition rte_flow.h:4263
struct rte_flow_item * pattern
Definition rte_flow.h:4268
struct rte_flow_action * actions
Definition rte_flow.h:4737
uint8_t data[]
Definition rte_flow.h:4738
struct rte_flow_attr attr
Definition rte_flow.h:4735
struct rte_flow_item * items
Definition rte_flow.h:4736
const char * message
Definition rte_flow.h:4250
enum rte_flow_error_type type
Definition rte_flow.h:4248
const void * cause
Definition rte_flow.h:4249
struct rte_arp_hdr hdr
Definition rte_flow.h:1382
struct rte_ether_addr tha
Definition rte_flow.h:1379
struct rte_ether_addr sha
Definition rte_flow.h:1377
rte_be16_t epcp_edei_in_ecid_b
Definition rte_flow.h:1127
rte_be16_t inner_type
Definition rte_flow.h:1132
rte_be16_t rsvd_grp_ecid_b
Definition rte_flow.h:1129
struct rte_esp_hdr hdr
Definition rte_flow.h:1296
uint32_t has_vlan
Definition rte_flow.h:879
rte_be16_t type
Definition rte_flow.h:875
uint32_t reserved
Definition rte_flow.h:880
struct rte_ether_addr dst
Definition rte_flow.h:873
struct rte_ether_addr src
Definition rte_flow.h:874
struct rte_flow_item_flex_field next_protocol
Definition rte_flow.h:2232
struct rte_flow_item_flex_link * output_link
Definition rte_flow.h:2256
enum rte_flow_item_flex_tunnel_mode tunnel
Definition rte_flow.h:2221
struct rte_flow_item_flex_link * input_link
Definition rte_flow.h:2248
struct rte_flow_item_flex_field next_header
Definition rte_flow.h:2227
struct rte_flow_item_flex_field * sample_data
Definition rte_flow.h:2238
enum rte_flow_item_flex_field_mode field_mode
Definition rte_flow.h:2183
const uint8_t * pattern
Definition rte_flow.h:2109
struct rte_flow_item_flex_handle * handle
Definition rte_flow.h:2107
rte_be16_t ver_opt_len_o_c_rsvd0
Definition rte_flow.h:1318
rte_be16_t protocol
Definition rte_flow.h:1319
rte_be16_t c_rsvd0_ver
Definition rte_flow.h:1197
rte_be16_t protocol
Definition rte_flow.h:1198
struct rte_gtp_psc_generic_hdr hdr
Definition rte_flow.h:1614
rte_be32_t teid
Definition rte_flow.h:1277
struct rte_gtp_hdr hdr
Definition rte_flow.h:1279
rte_be16_t msg_len
Definition rte_flow.h:1276
uint8_t v_pt_rsv_flags
Definition rte_flow.h:1274
struct rte_ib_bth hdr
Definition rte_flow.h:2037
struct rte_ether_addr sla
Definition rte_flow.h:1550
struct rte_ether_addr tla
Definition rte_flow.h:1575
struct rte_icmp_hdr hdr
Definition rte_flow.h:1016
struct rte_ipv4_hdr hdr
Definition rte_flow.h:940
struct rte_ipv6_hdr hdr
Definition rte_flow.h:961
uint32_t has_hip_ext
Definition rte_flow.h:977
uint32_t has_frag_ext
Definition rte_flow.h:967
uint32_t has_auth_ext
Definition rte_flow.h:969
uint32_t has_dest_ext
Definition rte_flow.h:973
uint32_t has_shim6_ext
Definition rte_flow.h:979
uint32_t reserved
Definition rte_flow.h:981
uint32_t has_esp_ext
Definition rte_flow.h:971
uint32_t has_route_ext
Definition rte_flow.h:965
uint32_t has_mobil_ext
Definition rte_flow.h:975
uint32_t has_hop_ext
Definition rte_flow.h:963
uint8_t label_tc_s[3]
Definition rte_flow.h:1176
rte_be16_t protocol
Definition rte_flow.h:1155
rte_be16_t c_k_s_rsvd0_ver
Definition rte_flow.h:1154
rte_be16_t length
Definition rte_flow.h:1637
rte_be16_t session_id
Definition rte_flow.h:1636
const uint8_t * pattern
Definition rte_flow.h:833
uint16_t length
Definition rte_flow.h:832
uint32_t search
Definition rte_flow.h:828
uint32_t reserved
Definition rte_flow.h:829
uint32_t relative
Definition rte_flow.h:827
struct rte_sctp_hdr hdr
Definition rte_flow.h:1073
struct rte_tcp_hdr hdr
Definition rte_flow.h:1054
struct rte_udp_hdr hdr
Definition rte_flow.h:1035
rte_be16_t tci
Definition rte_flow.h:914
rte_be16_t inner_type
Definition rte_flow.h:915
uint32_t reserved
Definition rte_flow.h:921
uint32_t has_more_vlan
Definition rte_flow.h:920
const void * spec
Definition rte_flow.h:2085
const void * mask
Definition rte_flow.h:2087
enum rte_flow_item_type type
Definition rte_flow.h:2084
const void * last
Definition rte_flow.h:2086
struct rte_flow_action_conntrack new_ct
Definition rte_flow.h:3828
uint32_t postpone
Definition rte_flow.h:5939
enum rte_flow_op_status status
Definition rte_flow.h:6166
uint32_t nb_conn_tracks
Definition rte_flow.h:5466
uint32_t nb_counters
Definition rte_flow.h:5451
uint16_t host_port_id
Definition rte_flow.h:5470
uint32_t nb_aging_objects
Definition rte_flow.h:5456
uint32_t supported_flags
Definition rte_flow.h:5394
uint32_t max_nb_quotas
Definition rte_flow.h:5390
uint32_t max_nb_conn_tracks
Definition rte_flow.h:5385
uint32_t max_nb_aging_objects
Definition rte_flow.h:5375
uint32_t max_nb_queues
Definition rte_flow.h:5365
uint32_t max_nb_meters
Definition rte_flow.h:5380
uint32_t max_nb_counters
Definition rte_flow.h:5370
uint32_t sec_since_last_hit
Definition rte_flow.h:3162
uint32_t sec_since_last_hit_valid
Definition rte_flow.h:3161
struct rte_flow_tunnel tunnel
Definition rte_flow.h:5114
enum rte_flow_table_insertion_type insertion_type
Definition rte_flow.h:5823
struct rte_flow_attr flow_attr
Definition rte_flow.h:5806
enum rte_flow_table_hash_func hash_func
Definition rte_flow.h:5827
uint32_t timeout_valid
Definition rte_flow.h:3186
struct rte_flow_action_meter_mark meter_mark
Definition rte_flow.h:4059
enum rte_flow_update_quota_op op
Definition rte_flow.h:3088
rte_be32_t teid
Definition rte_gtp.h:54
uint8_t opcode
Definition rte_ib.h:30
rte_be32_t src_addr
Definition rte_ip.h:62
uint8_t src_addr[16]
Definition rte_ip.h:531
struct rte_l2tpv2_common_hdr common
Definition rte_l2tpv2.h:221
rte_be16_t flags_version
Definition rte_l2tpv2.h:100
uint8_t addr
Definition rte_ppp.h:25
rte_be16_t src_port
Definition rte_sctp.h:29
rte_be16_t src_port
Definition rte_tcp.h:29
rte_be16_t src_port
Definition rte_udp.h:29
rte_be16_t vlan_tci
Definition rte_ether.h:305
uint8_t vni[3]
Definition rte_vxlan.h:72
uint8_t vni[3]
Definition rte_vxlan.h:43