DPDK 23.11.5
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 = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
887 .hdr.src_addr.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
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
941};
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 = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
989 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
990 .dst_addr = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
991 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
992 },
993};
994#endif
995
1005 struct rte_ipv6_routing_ext hdr;
1006};
1007
1015};
1016
1018#ifndef __cplusplus
1020 .hdr = {
1021 .icmp_type = 0xff,
1022 .icmp_code = 0xff,
1023 },
1024};
1025#endif
1026
1034};
1035
1037#ifndef __cplusplus
1039 .hdr = {
1040 .src_port = RTE_BE16(0xffff),
1041 .dst_port = RTE_BE16(0xffff),
1042 },
1043};
1044#endif
1045
1053};
1054
1056#ifndef __cplusplus
1058 .hdr = {
1059 .src_port = RTE_BE16(0xffff),
1060 .dst_port = RTE_BE16(0xffff),
1061 },
1062};
1063#endif
1064
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 union {
1091 struct {
1092 /*
1093 * These fields are retained for compatibility.
1094 * Please switch to the new header field below.
1095 */
1096 uint8_t flags;
1097 uint8_t rsvd0[3];
1098 uint8_t vni[3];
1099 uint8_t rsvd1;
1100 };
1101 struct rte_vxlan_hdr hdr;
1102 };
1103};
1104
1106#ifndef __cplusplus
1108 .hdr.vni = { 0xff, 0xff, 0xff },
1109};
1110#endif
1111
1128 uint8_t in_ecid_e;
1129 uint8_t ecid_e;
1131};
1132
1134#ifndef __cplusplus
1136 .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1137};
1138#endif
1139
1154 uint8_t tni[3];
1155 uint8_t flow_id;
1156};
1157
1159#ifndef __cplusplus
1161 .tni = { 0xff, 0xff, 0xff },
1162};
1163#endif
1164
1174 uint8_t label_tc_s[3];
1175 uint8_t ttl;
1176};
1177
1179#ifndef __cplusplus
1181 .label_tc_s = { 0xff, 0xff, 0xf0 },
1182};
1183#endif
1184
1197};
1198
1200#ifndef __cplusplus
1202 .protocol = RTE_BE16(0xffff),
1203};
1204#endif
1205
1212 struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1213 struct rte_gre_hdr_opt_key key;
1214 struct rte_gre_hdr_opt_sequence sequence;
1215};
1216
1223 struct rte_macsec_hdr macsec_hdr;
1224};
1225
1244 uint32_t thresh;
1245};
1246
1248#ifndef __cplusplus
1250 .thresh = 0xffffffff,
1251};
1252#endif
1253
1260 union {
1261 struct {
1262 /*
1263 * These are old fields kept for compatibility.
1264 * Please prefer hdr field below.
1265 */
1273 uint8_t msg_type;
1276 };
1278 };
1279};
1280
1282#ifndef __cplusplus
1284 .hdr.teid = RTE_BE32(UINT32_MAX),
1285};
1286#endif
1287
1295};
1296
1298#ifndef __cplusplus
1300 .hdr = {
1301 .spi = RTE_BE32(0xffffffff),
1302 },
1303};
1304#endif
1305
1318 uint8_t vni[3];
1319 uint8_t rsvd1;
1320};
1321
1323#ifndef __cplusplus
1325 .vni = { 0xff, 0xff, 0xff },
1326};
1327#endif
1328
1335 union {
1336 struct {
1337 /*
1338 * These are old fields kept for compatibility.
1339 * Please prefer hdr field below.
1340 */
1341 uint8_t flags;
1342 uint8_t rsvd0[2];
1343 uint8_t protocol;
1344 uint8_t vni[3];
1345 uint8_t rsvd1;
1346 };
1347 struct rte_vxlan_gpe_hdr hdr;
1348 };
1349};
1350
1352#ifndef __cplusplus
1354 .hdr.vni = { 0xff, 0xff, 0xff },
1355};
1356#endif
1357
1364 union {
1365 struct {
1366 /*
1367 * These are old fields kept for compatibility.
1368 * Please prefer hdr field below.
1369 */
1372 uint8_t hln;
1373 uint8_t pln;
1379 };
1381 };
1382};
1383
1385#ifndef __cplusplus
1386static const struct rte_flow_item_arp_eth_ipv4
1388 .hdr.arp_data.arp_sha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1389 .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
1390 .hdr.arp_data.arp_tha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1391 .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
1392};
1393#endif
1394
1406 uint8_t next_hdr;
1407};
1408
1410#ifndef __cplusplus
1411static const
1413 .next_hdr = 0xff,
1414};
1415#endif
1416
1428 struct rte_ipv6_fragment_ext hdr;
1429};
1430
1437 uint8_t type;
1438 uint8_t code;
1439 uint16_t checksum;
1440};
1441
1443#ifndef __cplusplus
1445 .type = 0xff,
1446 .code = 0xff,
1447};
1448#endif
1449
1457 struct rte_icmp_echo_hdr hdr;
1458};
1459
1466 uint8_t type;
1467 uint8_t code;
1470 uint8_t target_addr[16];
1471};
1472
1474#ifndef __cplusplus
1475static const
1477 .target_addr = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1478 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1479};
1480#endif
1481
1488 uint8_t type;
1489 uint8_t code;
1496 uint8_t target_addr[16];
1497};
1498
1500#ifndef __cplusplus
1501static const
1503 .target_addr = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1504 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1505};
1506#endif
1507
1520 uint8_t type;
1521 uint8_t length;
1522};
1523
1525#ifndef __cplusplus
1526static const struct rte_flow_item_icmp6_nd_opt
1528 .type = 0xff,
1529};
1530#endif
1531
1544 uint8_t type;
1545 uint8_t length;
1547};
1548
1550#ifndef __cplusplus
1551static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1553 .sla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1554};
1555#endif
1556
1569 uint8_t type;
1570 uint8_t length;
1572};
1573
1575#ifndef __cplusplus
1576static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1578 .tla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1579};
1580#endif
1581
1594 uint32_t data;
1595};
1596
1598#ifndef __cplusplus
1600 .data = UINT32_MAX,
1601};
1602#endif
1603
1611};
1612
1614#ifndef __cplusplus
1615static const struct rte_flow_item_gtp_psc
1617 .hdr.qfi = 0x3f,
1618};
1619#endif
1620
1631 uint8_t code;
1634};
1635
1650};
1651
1653#ifndef __cplusplus
1654static const struct rte_flow_item_pppoe_proto_id
1656 .proto_id = RTE_BE16(0xffff),
1657};
1658#endif
1659
1669 uint32_t data;
1670 uint8_t index;
1671};
1672
1674#ifndef __cplusplus
1676 .data = 0xffffffff,
1677 .index = 0xff,
1678};
1679#endif
1680
1688};
1689
1691#ifndef __cplusplus
1693 .session_id = RTE_BE32(UINT32_MAX),
1694};
1695#endif
1696
1697
1717 uint32_t id;
1718};
1719
1721#ifndef __cplusplus
1723 .id = 0xffffffff,
1724};
1725#endif
1726
1736 uint32_t version:2;
1737 uint32_t oam_pkt:1;
1738 uint32_t reserved:1;
1739 uint32_t ttl:6;
1740 uint32_t length:6;
1741 uint32_t reserved1:4;
1742 uint32_t mdtype:4;
1743 uint32_t next_proto:8;
1744 uint32_t spi:24;
1745 uint32_t sindex:8;
1746};
1747
1749#ifndef __cplusplus
1751 .mdtype = 0xf,
1752 .next_proto = 0xff,
1753 .spi = 0xffffff,
1754 .sindex = 0xff,
1755};
1756#endif
1757
1767 uint32_t type:8;
1768 uint32_t max_resp_time:8;
1769 uint32_t checksum:16;
1770 uint32_t group_addr;
1771};
1772
1774#ifndef __cplusplus
1776 .group_addr = 0xffffffff,
1777};
1778#endif
1779
1789 uint32_t next_hdr:8;
1790 uint32_t payload_len:8;
1791 uint32_t reserved:16;
1792 uint32_t spi;
1793 uint32_t seq_num;
1794};
1795
1797#ifndef __cplusplus
1799 .spi = 0xffffffff,
1800};
1801#endif
1802
1812 uint8_t s_field;
1813 uint8_t msg_type;
1814 rte_be16_t msg_len;
1815 rte_be64_t seid;
1816};
1817
1819#ifndef __cplusplus
1821 .s_field = 0x01,
1822 .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1823};
1824#endif
1825
1835 struct rte_ecpri_combined_msg_hdr hdr;
1836};
1837
1839#ifndef __cplusplus
1841 .hdr = {
1842 .common = {
1843 .u32 = 0x0,
1844 },
1845 },
1846};
1847#endif
1848
1855 rte_be16_t option_class;
1856 uint8_t option_type;
1857 uint8_t option_len;
1858 uint32_t *data;
1859};
1860
1862#ifndef __cplusplus
1863static const struct rte_flow_item_geneve_opt
1865 .option_type = 0xff,
1866};
1867#endif
1868
1881 uint32_t level;
1882 union {
1883 __extension__
1884 struct {
1886 uint64_t packet_ok:1;
1888 uint64_t l2_ok:1;
1890 uint64_t l3_ok:1;
1892 uint64_t l4_ok:1;
1894 uint64_t l2_crc_ok:1;
1896 uint64_t ipv4_csum_ok:1;
1898 uint64_t l4_csum_ok:1;
1900 uint64_t l3_len_ok:1;
1901 uint64_t reserved:56;
1902 };
1903 uint64_t value;
1904 };
1905};
1906
1907#ifndef __cplusplus
1908static const struct rte_flow_item_integrity
1909rte_flow_item_integrity_mask = {
1910 .level = 0,
1911 .value = 0,
1912};
1913#endif
1914
1918#define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1922#define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1927#define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1932#define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1937#define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1938
1950 uint32_t flags;
1951};
1952
1954#ifndef __cplusplus
1956 .flags = 0xffffffff,
1957};
1958#endif
1959
1966 uint16_t port_id;
1967};
1968
1970#ifndef __cplusplus
1972 .port_id = 0xffff,
1973};
1974#endif
1975
1985 struct rte_l2tpv2_combined_msg_hdr hdr;
1986};
1987
1989#ifndef __cplusplus
1991 /*
1992 * flags and version bit mask
1993 * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1994 * T L x x S x O P x x x x V V V V
1995 */
1996 .hdr = {
1997 .common = {
1998 .flags_version = RTE_BE16(0xcb0f),
1999 },
2000 },
2001};
2002#endif
2003
2013 struct rte_ppp_hdr hdr;
2014};
2015
2017#ifndef __cplusplus
2019 .hdr = {
2020 .addr = 0xff,
2021 .ctrl = 0xff,
2022 .proto_id = RTE_BE16(0xffff),
2023 }
2024};
2025#endif
2026
2034};
2035
2037#ifndef __cplusplus
2039 .hdr = {
2040 .opcode = 0xff,
2041 .dst_qp = { 0xff, 0xff, 0xff },
2042 },
2043};
2044#endif
2045
2081 const void *spec;
2082 const void *last;
2083 const void *mask;
2084};
2085
2103 struct rte_flow_item_flex_handle *handle;
2104 uint32_t length;
2105 const uint8_t *pattern;
2106};
2138};
2139
2169};
2170
2176__extension__
2180 uint32_t field_size;
2181 int32_t field_base;
2182 uint32_t offset_base;
2183 uint32_t offset_mask;
2185 uint32_t field_id:16;
2186 uint32_t reserved:16;
2187};
2188
2204 uint32_t next;
2205};
2206
2236 uint32_t nb_samples;
2246 uint32_t nb_inputs;
2254 uint32_t nb_outputs;
2255};
2256
2264};
2265
2267#ifndef __cplusplus
2269 .color = RTE_COLORS,
2270};
2271#endif
2272
2288 uint8_t affinity;
2289};
2290
2292#ifndef __cplusplus
2293static const struct rte_flow_item_aggr_affinity
2295 .affinity = 0xff,
2296};
2297#endif
2298
2308 uint16_t tx_queue;
2309};
2310
2312#ifndef __cplusplus
2314 .tx_queue = 0xffff,
2315};
2316#endif
2317
2325 uint32_t packet_type;
2326};
2327
2329#ifndef __cplusplus
2331 .packet_type = 0xffffffff,
2332};
2333#endif
2334
2369
2377
2385
2394
2406
2418
2425
2434
2445
2454
2466
2478
2489
2497
2505
2516
2524
2532
2540
2548
2556
2564
2572
2581
2589
2598
2605
2612
2625
2638
2651
2664
2678
2692
2703
2713
2723
2736
2749
2766
2783
2800
2817
2830
2840
2853
2866
2879
2887
2898
2909
2917
2926
2934
2941
2949
2957
2967
2976
2986
2995
3005
3012
3021};
3022
3035};
3036
3047 int64_t quota;
3048};
3049
3059 int64_t quota;
3060};
3061
3073};
3074
3085 int64_t quota;
3086};
3087
3099 uint32_t id;
3100};
3101
3115 uint32_t group;
3116};
3117
3124 uint16_t index;
3125};
3126
3141 uint32_t timeout:24;
3142 uint32_t reserved:8;
3144 void *context;
3145};
3146
3154 uint32_t reserved:6;
3155 uint32_t aged:1;
3159};
3160
3181 uint32_t reserved:6;
3182 uint32_t timeout_valid:1;
3183 uint32_t timeout:24;
3185 uint32_t touch:1;
3186};
3187
3206 uint32_t id;
3207};
3208
3215 uint32_t reset:1;
3216 uint32_t hits_set:1;
3217 uint32_t bytes_set:1;
3218 uint32_t reserved:29;
3219 uint64_t hits;
3220 uint64_t bytes;
3221};
3222
3266 uint32_t level;
3267 uint64_t types;
3268 uint32_t key_len;
3269 uint32_t queue_num;
3270 const uint8_t *key;
3271 const uint16_t *queue;
3272};
3273
3291 uint32_t original:1;
3292 uint32_t reserved:31;
3293 uint32_t id;
3294};
3295
3308 uint32_t original:1;
3309 uint32_t reserved:31;
3310 uint32_t id;
3311};
3312
3322 uint32_t mtr_id;
3323};
3324
3357};
3358
3367};
3368
3377};
3378
3386 uint8_t vlan_pcp;
3387};
3388
3397};
3398
3407};
3408
3441};
3442
3474};
3475
3496 uint8_t *data;
3497 uint8_t *preserve;
3498 size_t size;
3499};
3500
3517 uint8_t *data;
3518 size_t size;
3519};
3520
3533 rte_be32_t ipv4_addr;
3534};
3535
3548 uint8_t ipv6_addr[16];
3549};
3550
3564 uint8_t *data;
3565 size_t size;
3566 uint8_t type;
3567};
3568
3580 uint8_t type;
3581};
3582
3595 rte_be16_t port;
3596};
3597
3604 uint8_t ttl_value;
3605};
3606
3613 uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3614};
3615
3626 uint32_t data;
3627 uint32_t mask;
3628 uint8_t index;
3629};
3630
3651 uint32_t data;
3652 uint32_t mask;
3653};
3654
3663 uint8_t dscp;
3664};
3665
3683struct rte_flow_action_handle;
3684
3701};
3702
3713};
3714
3726 uint32_t scale:4;
3730 uint32_t last_ack_seen:1;
3735 uint32_t data_unacked:1;
3740 uint32_t sent_end;
3745 uint32_t reply_end;
3747 uint32_t max_win;
3749 uint32_t max_ack;
3750};
3751
3764 uint16_t peer_port;
3777 uint32_t enable:1;
3781 uint32_t selective_ack:1;
3788 uint32_t last_direction:1;
3790 uint32_t liberal_mode:1;
3802 uint16_t last_window;
3803 enum rte_flow_conntrack_tcp_last_index last_index;
3805 uint32_t last_seq;
3807 uint32_t last_ack;
3812 uint32_t last_end;
3813};
3814
3826 uint32_t direction:1;
3828 uint32_t state:1;
3830 uint32_t reserved:30;
3831};
3832
3844};
3845
3852 uint16_t port_id;
3853};
3854
3904
3913 union {
3914 struct {
3916 union {
3917 struct {
3952 uint8_t level;
3953 union {
3959 uint8_t tag_index;
3966 struct {
3970 uint8_t type;
3975 };
3976 };
3977 };
3978 struct rte_flow_item_flex_handle *flex_handle;
3979 };
3981 uint32_t offset;
3982 };
3989 uint8_t value[16];
3995 void *pvalue;
3996 };
3997};
3998
4006};
4007
4022 uint32_t width;
4023};
4024
4037
4039 struct rte_flow_meter_profile *profile;
4041 struct rte_flow_meter_policy *policy;
4046};
4047
4057 uint32_t profile_valid:1;
4059 uint32_t policy_valid:1;
4063 uint32_t state_valid:1;
4065 uint32_t reserved:28;
4066};
4067
4077};
4078
4092 const char *name;
4094 uint32_t size;
4096 const uint8_t *value;
4097};
4098
4114 const char *name;
4116 uint32_t args_num;
4119};
4120
4121/* Mbuf dynamic field offset for metadata. */
4122extern int32_t rte_flow_dynf_metadata_offs;
4123
4124/* Mbuf dynamic field flag mask for metadata. */
4125extern uint64_t rte_flow_dynf_metadata_mask;
4126
4127/* Mbuf dynamic field pointer for metadata. */
4128#define RTE_FLOW_DYNF_METADATA(m) \
4129 RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
4130
4131/* Mbuf dynamic flags for metadata. */
4132#define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
4133#define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
4134
4135__rte_experimental
4136static inline uint32_t
4137rte_flow_dynf_metadata_get(struct rte_mbuf *m)
4138{
4139 return *RTE_FLOW_DYNF_METADATA(m);
4140}
4141
4142__rte_experimental
4143static inline void
4144rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
4145{
4146 *RTE_FLOW_DYNF_METADATA(m) = v;
4147}
4148
4158 const void *conf;
4159};
4160
4167struct rte_flow;
4168
4174struct rte_flow_meter_profile;
4175
4181struct rte_flow_meter_policy;
4182
4200 uint32_t ratio;
4203};
4204
4230};
4231
4245 const void *cause;
4246 const char *message;
4247};
4248
4258 union {
4259 const struct rte_flow_attr *attr_ro;
4261 };
4262 union {
4265 };
4266 union {
4269 };
4270};
4271
4284
4296
4308
4320
4333
4346
4359
4373
4387
4401
4415};
4416
4436__rte_experimental
4437int
4438rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
4439 FILE *file, struct rte_flow_error *error);
4440
4447__rte_experimental
4448static inline int
4450{
4451 return !!rte_flow_dynf_metadata_mask;
4452}
4453
4464__rte_experimental
4465int
4467
4520int
4521rte_flow_validate(uint16_t port_id,
4522 const struct rte_flow_attr *attr,
4523 const struct rte_flow_item pattern[],
4524 const struct rte_flow_action actions[],
4525 struct rte_flow_error *error);
4526
4547struct rte_flow *
4548rte_flow_create(uint16_t port_id,
4549 const struct rte_flow_attr *attr,
4550 const struct rte_flow_item pattern[],
4551 const struct rte_flow_action actions[],
4552 struct rte_flow_error *error);
4553
4574int
4575rte_flow_destroy(uint16_t port_id,
4576 struct rte_flow *flow,
4577 struct rte_flow_error *error);
4578
4595__rte_experimental
4596int
4598 struct rte_flow *flow,
4599 const struct rte_flow_action actions[],
4600 struct rte_flow_error *error);
4601
4618int
4619rte_flow_flush(uint16_t port_id,
4620 struct rte_flow_error *error);
4621
4646int
4647rte_flow_query(uint16_t port_id,
4648 struct rte_flow *flow,
4649 const struct rte_flow_action *action,
4650 void *data,
4651 struct rte_flow_error *error);
4652
4698int
4699rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4700
4718int
4720 int code,
4721 enum rte_flow_error_type type,
4722 const void *cause,
4723 const char *message);
4724
4730 size_t size;
4734 uint8_t data[];
4735};
4736
4763__rte_deprecated
4764size_t
4765rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4766 const struct rte_flow_attr *attr,
4767 const struct rte_flow_item *items,
4768 const struct rte_flow_action *actions);
4769
4810__rte_experimental
4811int
4813 void *dst,
4814 size_t size,
4815 const void *src,
4816 struct rte_flow_error *error);
4817
4846__rte_experimental
4847int
4848rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4849 uint32_t nb_contexts, struct rte_flow_error *error);
4850
4890__rte_experimental
4891int
4892rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4893 uint32_t nb_contexts, struct rte_flow_error *error);
4894
4906 uint32_t ingress:1;
4908 uint32_t egress:1;
4913 uint32_t transfer:1;
4914};
4915
4943__rte_experimental
4944struct rte_flow_action_handle *
4946 const struct rte_flow_indir_action_conf *conf,
4947 const struct rte_flow_action *action,
4948 struct rte_flow_error *error);
4949
4972__rte_experimental
4973int
4975 struct rte_flow_action_handle *handle,
4976 struct rte_flow_error *error);
4977
5011__rte_experimental
5012int
5014 struct rte_flow_action_handle *handle,
5015 const void *update,
5016 struct rte_flow_error *error);
5017
5043__rte_experimental
5044int
5046 const struct rte_flow_action_handle *handle,
5047 void *data, struct rte_flow_error *error);
5048
5049/* Tunnel has a type and the key information. */
5050struct rte_flow_tunnel {
5055 enum rte_flow_item_type type;
5056 uint64_t tun_id;
5058 union {
5059 struct {
5062 } ipv4;
5063 struct {
5064 uint8_t src_addr[16];
5065 uint8_t dst_addr[16];
5066 } ipv6;
5067 };
5068 rte_be16_t tp_src;
5069 rte_be16_t tp_dst;
5070 uint16_t tun_flags;
5072 bool is_ipv6;
5078 uint8_t tos;
5079 uint8_t ttl;
5080 uint32_t label;
5081};
5082
5086#define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
5087
5091#define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
5092
5096#define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
5097
5108 uint64_t flags;
5109 uint32_t group_id;
5110 struct rte_flow_tunnel tunnel;
5111};
5112
5136__rte_experimental
5137int
5139 struct rte_flow_tunnel *tunnel,
5140 struct rte_flow_action **actions,
5141 uint32_t *num_of_actions,
5142 struct rte_flow_error *error);
5143
5167__rte_experimental
5168int
5169rte_flow_tunnel_match(uint16_t port_id,
5170 struct rte_flow_tunnel *tunnel,
5171 struct rte_flow_item **items,
5172 uint32_t *num_of_items,
5173 struct rte_flow_error *error);
5174
5186__rte_experimental
5187uint64_t
5189
5211__rte_experimental
5212int
5214 struct rte_mbuf *m,
5215 struct rte_flow_restore_info *info,
5216 struct rte_flow_error *error);
5217
5234__rte_experimental
5235int
5237 struct rte_flow_action *actions,
5238 uint32_t num_of_actions,
5239 struct rte_flow_error *error);
5240
5257__rte_experimental
5258int
5260 struct rte_flow_item *items,
5261 uint32_t num_of_items,
5262 struct rte_flow_error *error);
5263
5289int
5290rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
5291 struct rte_flow_error *error);
5292
5311__rte_experimental
5312struct rte_flow_item_flex_handle *
5314 const struct rte_flow_item_flex_conf *conf,
5315 struct rte_flow_error *error);
5316
5331__rte_experimental
5332int
5334 const struct rte_flow_item_flex_handle *handle,
5335 struct rte_flow_error *error);
5336
5341#define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
5342
5348#define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT RTE_BIT32(1)
5349
5391};
5392
5404 uint32_t max_size;
5405};
5406
5428__rte_experimental
5429int
5430rte_flow_info_get(uint16_t port_id,
5431 struct rte_flow_port_info *port_info,
5432 struct rte_flow_queue_info *queue_info,
5433 struct rte_flow_error *error);
5434
5447 uint32_t nb_counters;
5457 uint32_t nb_meters;
5471 uint32_t nb_quotas;
5475 uint32_t flags;
5476};
5477
5489 uint32_t size;
5490};
5491
5523__rte_experimental
5524int
5525rte_flow_configure(uint16_t port_id,
5526 const struct rte_flow_port_attr *port_attr,
5527 uint16_t nb_queue,
5528 const struct rte_flow_queue_attr *queue_attr[],
5529 struct rte_flow_error *error);
5530
5535struct rte_flow_pattern_template;
5536
5543__extension__
5558 uint32_t ingress:1;
5560 uint32_t egress:1;
5562 uint32_t transfer:1;
5563};
5564
5592__rte_experimental
5593struct rte_flow_pattern_template *
5595 const struct rte_flow_pattern_template_attr *template_attr,
5596 const struct rte_flow_item pattern[],
5597 struct rte_flow_error *error);
5598
5619__rte_experimental
5620int
5622 struct rte_flow_pattern_template *pattern_template,
5623 struct rte_flow_error *error);
5624
5629struct rte_flow_actions_template;
5630
5637__extension__
5644 uint32_t ingress:1;
5646 uint32_t egress:1;
5648 uint32_t transfer:1;
5649};
5650
5686__rte_experimental
5687struct rte_flow_actions_template *
5689 const struct rte_flow_actions_template_attr *template_attr,
5690 const struct rte_flow_action actions[],
5691 const struct rte_flow_action masks[],
5692 struct rte_flow_error *error);
5693
5714__rte_experimental
5715int
5717 struct rte_flow_actions_template *actions_template,
5718 struct rte_flow_error *error);
5719
5724struct rte_flow_template_table;
5725
5739#define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG RTE_BIT32(0)
5747#define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG RTE_BIT32(1)
5765};
5766
5790};
5791
5806 uint32_t nb_flows;
5815 uint32_t specialize;
5824};
5825
5858__rte_experimental
5859struct rte_flow_template_table *
5861 const struct rte_flow_template_table_attr *table_attr,
5862 struct rte_flow_pattern_template *pattern_templates[],
5863 uint8_t nb_pattern_templates,
5864 struct rte_flow_actions_template *actions_templates[],
5865 uint8_t nb_actions_templates,
5866 struct rte_flow_error *error);
5867
5888__rte_experimental
5889int
5891 struct rte_flow_template_table *template_table,
5892 struct rte_flow_error *error);
5893
5915__rte_experimental
5916int
5918 uint32_t group_id,
5919 const struct rte_flow_group_attr *attr,
5920 const struct rte_flow_action actions[],
5921 struct rte_flow_error *error);
5922
5929__extension__
5935 uint32_t postpone:1;
5936};
5937
5974__rte_experimental
5975struct rte_flow *
5976rte_flow_async_create(uint16_t port_id,
5977 uint32_t queue_id,
5978 const struct rte_flow_op_attr *op_attr,
5979 struct rte_flow_template_table *template_table,
5980 const struct rte_flow_item pattern[],
5981 uint8_t pattern_template_index,
5982 const struct rte_flow_action actions[],
5983 uint8_t actions_template_index,
5984 void *user_data,
5985 struct rte_flow_error *error);
5986
6019__rte_experimental
6020struct rte_flow *
6022 uint32_t queue_id,
6023 const struct rte_flow_op_attr *op_attr,
6024 struct rte_flow_template_table *template_table,
6025 uint32_t rule_index,
6026 const struct rte_flow_action actions[],
6027 uint8_t actions_template_index,
6028 void *user_data,
6029 struct rte_flow_error *error);
6030
6060__rte_experimental
6061int
6062rte_flow_async_destroy(uint16_t port_id,
6063 uint32_t queue_id,
6064 const struct rte_flow_op_attr *op_attr,
6065 struct rte_flow *flow,
6066 void *user_data,
6067 struct rte_flow_error *error);
6068
6097__rte_experimental
6098int
6100 uint32_t queue_id,
6101 const struct rte_flow_op_attr *op_attr,
6102 struct rte_flow *flow,
6103 const struct rte_flow_action actions[],
6104 uint8_t actions_template_index,
6105 void *user_data,
6106 struct rte_flow_error *error);
6107
6128__rte_experimental
6129int
6130rte_flow_push(uint16_t port_id,
6131 uint32_t queue_id,
6132 struct rte_flow_error *error);
6133
6149};
6150
6157__extension__
6167};
6168
6194__rte_experimental
6195int
6196rte_flow_pull(uint16_t port_id,
6197 uint32_t queue_id,
6198 struct rte_flow_op_result res[],
6199 uint16_t n_res,
6200 struct rte_flow_error *error);
6201
6228__rte_experimental
6229struct rte_flow_action_handle *
6231 uint32_t queue_id,
6232 const struct rte_flow_op_attr *op_attr,
6233 const struct rte_flow_indir_action_conf *indir_action_conf,
6234 const struct rte_flow_action *action,
6235 void *user_data,
6236 struct rte_flow_error *error);
6237
6263__rte_experimental
6264int
6266 uint32_t queue_id,
6267 const struct rte_flow_op_attr *op_attr,
6268 struct rte_flow_action_handle *action_handle,
6269 void *user_data,
6270 struct rte_flow_error *error);
6271
6302__rte_experimental
6303int
6305 uint32_t queue_id,
6306 const struct rte_flow_op_attr *op_attr,
6307 struct rte_flow_action_handle *action_handle,
6308 const void *update,
6309 void *user_data,
6310 struct rte_flow_error *error);
6311
6346__rte_experimental
6347int
6349 uint32_t queue_id,
6350 const struct rte_flow_op_attr *op_attr,
6351 const struct rte_flow_action_handle *action_handle,
6352 void *data,
6353 void *user_data,
6354 struct rte_flow_error *error);
6355
6368};
6369
6403__rte_experimental
6404int
6406 struct rte_flow_action_handle *handle,
6407 const void *update, void *query,
6409 struct rte_flow_error *error);
6410
6446__rte_experimental
6447int
6448rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,
6449 const struct rte_flow_op_attr *attr,
6450 struct rte_flow_action_handle *handle,
6451 const void *update, void *query,
6453 void *user_data,
6454 struct rte_flow_error *error);
6455
6456struct rte_flow_action_list_handle;
6457
6468 struct rte_flow_action_list_handle *handle;
6477 const void **conf;
6478};
6479
6507__rte_experimental
6508struct rte_flow_action_list_handle *
6510 const
6511 struct rte_flow_indir_action_conf *conf,
6512 const struct rte_flow_action *actions,
6513 struct rte_flow_error *error);
6514
6549__rte_experimental
6550struct rte_flow_action_list_handle *
6551rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,
6552 const struct rte_flow_op_attr *attr,
6553 const struct rte_flow_indir_action_conf *conf,
6554 const struct rte_flow_action *actions,
6555 void *user_data,
6556 struct rte_flow_error *error);
6557
6579__rte_experimental
6580int
6582 struct rte_flow_action_list_handle *handle,
6583 struct rte_flow_error *error);
6584
6615__rte_experimental
6616int
6618 (uint16_t port_id, uint32_t queue_id,
6619 const struct rte_flow_op_attr *op_attr,
6620 struct rte_flow_action_list_handle *handle,
6621 void *user_data, struct rte_flow_error *error);
6622
6659__rte_experimental
6660int
6662 const struct rte_flow_action_list_handle *handle,
6663 const void **update, void **query,
6665 struct rte_flow_error *error);
6666
6710__rte_experimental
6711int
6712rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_id,
6713 const struct rte_flow_op_attr *attr,
6714 const struct rte_flow_action_list_handle *handle,
6715 const void **update, void **query,
6717 void *user_data,
6718 struct rte_flow_error *error);
6719
6746__rte_experimental
6747int
6748rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table,
6749 const struct rte_flow_item pattern[], uint8_t pattern_template_index,
6750 uint32_t *hash, struct rte_flow_error *error);
6751
6752#ifdef __cplusplus
6753}
6754#endif
6755
6756#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:2294
__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:4002
@ RTE_FLOW_MODIFY_SET
Definition: rte_flow.h:4003
@ RTE_FLOW_MODIFY_SUB
Definition: rte_flow.h:4005
@ RTE_FLOW_MODIFY_ADD
Definition: rte_flow.h:4004
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1201
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:4449
__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:1476
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1353
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1599
__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:1552
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:1019
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1616
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:1107
rte_flow_quota_mode
Definition: rte_flow.h:3031
@ RTE_FLOW_QUOTA_MODE_L3
Definition: rte_flow.h:3034
@ RTE_FLOW_QUOTA_MODE_L2
Definition: rte_flow.h:3033
@ RTE_FLOW_QUOTA_MODE_PACKET
Definition: rte_flow.h:3032
rte_flow_update_quota_op
Definition: rte_flow.h:3070
@ RTE_FLOW_UPDATE_QUOTA_SET
Definition: rte_flow.h:3071
@ RTE_FLOW_UPDATE_QUOTA_ADD
Definition: rte_flow.h:3072
__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:1655
rte_flow_op_status
Definition: rte_flow.h:6140
@ RTE_FLOW_OP_SUCCESS
Definition: rte_flow.h:6144
@ RTE_FLOW_OP_ERROR
Definition: rte_flow.h:6148
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:3706
@ RTE_FLOW_CONNTRACK_FLAG_ACK
Definition: rte_flow.h:3711
@ RTE_FLOW_CONNTRACK_FLAG_SYNACK
Definition: rte_flow.h:3709
@ RTE_FLOW_CONNTRACK_FLAG_FIN
Definition: rte_flow.h:3710
@ RTE_FLOW_CONNTRACK_FLAG_SYN
Definition: rte_flow.h:3708
@ RTE_FLOW_CONNTRACK_FLAG_RST
Definition: rte_flow.h:3712
@ RTE_FLOW_CONNTRACK_FLAG_NONE
Definition: rte_flow.h:3707
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1324
__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:3688
@ RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
Definition: rte_flow.h:3692
@ RTE_FLOW_CONNTRACK_STATE_SYN_RECV
Definition: rte_flow.h:3690
@ RTE_FLOW_CONNTRACK_STATE_LAST_ACK
Definition: rte_flow.h:3698
@ RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
Definition: rte_flow.h:3694
@ RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
Definition: rte_flow.h:3700
@ RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
Definition: rte_flow.h:3696
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1135
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:1412
__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:1820
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1692
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1675
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1577
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:2268
rte_flow_query_update_mode
Definition: rte_flow.h:6365
@ RTE_FLOW_QU_UPDATE_FIRST
Definition: rte_flow.h:6367
@ RTE_FLOW_QU_QUERY_FIRST
Definition: rte_flow.h:6366
__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:5773
@ RTE_FLOW_TABLE_HASH_FUNC_CRC16
Definition: rte_flow.h:5789
@ RTE_FLOW_TABLE_HASH_FUNC_LINEAR
Definition: rte_flow.h:5781
@ RTE_FLOW_TABLE_HASH_FUNC_DEFAULT
Definition: rte_flow.h:5777
@ RTE_FLOW_TABLE_HASH_FUNC_CRC32
Definition: rte_flow.h:5785
__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:1057
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:4277
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:4414
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:4307
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:4345
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:4283
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:4358
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:4295
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:4386
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:4400
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:4332
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:4372
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:4319
__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:2361
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:2523
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:2571
@ RTE_FLOW_ACTION_TYPE_SKIP_CMAN
Definition: rte_flow.h:2985
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:2588
@ RTE_FLOW_ACTION_TYPE_QUOTA
Definition: rte_flow.h:2975
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition: rte_flow.h:2765
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:2384
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:2444
@ RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
Definition: rte_flow.h:2966
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:2691
@ RTE_FLOW_ACTION_TYPE_INDIRECT
Definition: rte_flow.h:2916
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:2604
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:2477
@ RTE_FLOW_ACTION_TYPE_SET_META
Definition: rte_flow.h:2839
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:2702
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE
Definition: rte_flow.h:3004
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:2650
@ RTE_FLOW_ACTION_TYPE_METER_MARK
Definition: rte_flow.h:2956
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:2555
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:2611
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:2376
@ RTE_FLOW_ACTION_TYPE_AGE
Definition: rte_flow.h:2878
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:2453
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:2405
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:2624
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:2515
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:2637
@ RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH
Definition: rte_flow.h:2994
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:2424
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:2368
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
Definition: rte_flow.h:2852
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:2531
@ RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:2940
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
Definition: rte_flow.h:2865
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition: rte_flow.h:2816
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:2712
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:2580
@ RTE_FLOW_ACTION_TYPE_PROG
Definition: rte_flow.h:3020
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:2677
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:2488
@ RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:2948
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:2597
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:2504
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:2563
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:2539
@ RTE_FLOW_ACTION_TYPE_INDIRECT_LIST
Definition: rte_flow.h:3011
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition: rte_flow.h:2799
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:2417
@ RTE_FLOW_ACTION_TYPE_CONNTRACK
Definition: rte_flow.h:2925
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:2748
@ RTE_FLOW_ACTION_TYPE_METER_COLOR
Definition: rte_flow.h:2933
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:2496
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:2465
@ RTE_FLOW_ACTION_TYPE_SET_TAG
Definition: rte_flow.h:2829
@ RTE_FLOW_ACTION_TYPE_SHARED
Definition: rte_flow.h:2897
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:2663
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:2722
@ RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
Definition: rte_flow.h:2908
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:2433
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:2547
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:2735
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition: rte_flow.h:2782
@ RTE_FLOW_ACTION_TYPE_SAMPLE
Definition: rte_flow.h:2886
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:2393
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1283
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:1180
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition: rte_flow.h:1990
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:1076
static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask
Definition: rte_flow.h:2038
__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:1798
rte_flow_item_flex_tunnel_mode
Definition: rte_flow.h:2143
@ FLEX_TUNNEL_MODE_OUTER
Definition: rte_flow.h:2155
@ FLEX_TUNNEL_MODE_MULTI
Definition: rte_flow.h:2164
@ FLEX_TUNNEL_MODE_INNER
Definition: rte_flow.h:2159
@ FLEX_TUNNEL_MODE_SINGLE
Definition: rte_flow.h:2151
@ FLEX_TUNNEL_MODE_TUNNEL
Definition: rte_flow.h:2168
__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:2313
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:1527
__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:5756
@ RTE_FLOW_TABLE_INSERTION_TYPE_INDEX
Definition: rte_flow.h:5764
@ RTE_FLOW_TABLE_INSERTION_TYPE_PATTERN
Definition: rte_flow.h:5760
__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:2110
@ FIELD_MODE_FIXED
Definition: rte_flow.h:2121
@ FIELD_MODE_DUMMY
Definition: rte_flow.h:2116
@ FIELD_MODE_OFFSET
Definition: rte_flow.h:2128
@ FIELD_MODE_BITMASK
Definition: rte_flow.h:2137
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1387
__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:1038
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1750
rte_flow_error_type
Definition: rte_flow.h:4211
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:4213
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:4215
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:4212
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:4214
@ RTE_FLOW_ERROR_TYPE_STATE
Definition: rte_flow.h:4229
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:4223
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:4218
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:4219
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:4227
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:4224
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:4222
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:4225
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:4228
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:4220
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:4217
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:4216
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:4226
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:4221
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1502
__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:2330
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:1775
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:1840
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:2018
__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:1444
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1299
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1722
__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:1971
__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:1249
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1864
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:1955
__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:1160
__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:3858
@ RTE_FLOW_FIELD_IPV6_HOPLIMIT
Definition: rte_flow.h:3870
@ RTE_FLOW_FIELD_IPV6_PROTO
Definition: rte_flow.h:3892
@ RTE_FLOW_FIELD_METER_COLOR
Definition: rte_flow.h:3891
@ RTE_FLOW_FIELD_GTP_TEID
Definition: rte_flow.h:3882
@ RTE_FLOW_FIELD_MAC_DST
Definition: rte_flow.h:3860
@ RTE_FLOW_FIELD_IPV6_DSCP
Definition: rte_flow.h:3869
@ RTE_FLOW_FIELD_MAC_SRC
Definition: rte_flow.h:3861
@ RTE_FLOW_FIELD_GENEVE_OPT_CLASS
Definition: rte_flow.h:3896
@ RTE_FLOW_FIELD_TCP_PORT_SRC
Definition: rte_flow.h:3873
@ RTE_FLOW_FIELD_GENEVE_OPT_TYPE
Definition: rte_flow.h:3895
@ RTE_FLOW_FIELD_MPLS
Definition: rte_flow.h:3898
@ RTE_FLOW_FIELD_META
Definition: rte_flow.h:3885
@ RTE_FLOW_FIELD_IPV4_SRC
Definition: rte_flow.h:3867
@ RTE_FLOW_FIELD_IPV4_DST
Definition: rte_flow.h:3868
@ RTE_FLOW_FIELD_TAG
Definition: rte_flow.h:3883
@ RTE_FLOW_FIELD_START
Definition: rte_flow.h:3859
@ RTE_FLOW_FIELD_UDP_PORT_SRC
Definition: rte_flow.h:3878
@ RTE_FLOW_FIELD_IPV6_SRC
Definition: rte_flow.h:3871
@ RTE_FLOW_FIELD_GENEVE_OPT_DATA
Definition: rte_flow.h:3897
@ RTE_FLOW_FIELD_GTP_PSC_QFI
Definition: rte_flow.h:3890
@ RTE_FLOW_FIELD_FLEX_ITEM
Definition: rte_flow.h:3893
@ RTE_FLOW_FIELD_IPV6_DST
Definition: rte_flow.h:3872
@ RTE_FLOW_FIELD_TCP_FLAGS
Definition: rte_flow.h:3877
@ RTE_FLOW_FIELD_VALUE
Definition: rte_flow.h:3887
@ RTE_FLOW_FIELD_UDP_PORT_DST
Definition: rte_flow.h:3879
@ RTE_FLOW_FIELD_IPV4_IHL
Definition: rte_flow.h:3900
@ RTE_FLOW_FIELD_IPV4_TTL
Definition: rte_flow.h:3866
@ RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN
Definition: rte_flow.h:3902
@ RTE_FLOW_FIELD_MARK
Definition: rte_flow.h:3884
@ RTE_FLOW_FIELD_MAC_TYPE
Definition: rte_flow.h:3864
@ RTE_FLOW_FIELD_GENEVE_VNI
Definition: rte_flow.h:3881
@ RTE_FLOW_FIELD_IPV6_ECN
Definition: rte_flow.h:3889
@ RTE_FLOW_FIELD_TCP_DATA_OFFSET
Definition: rte_flow.h:3899
@ RTE_FLOW_FIELD_IPV4_DSCP
Definition: rte_flow.h:3865
@ RTE_FLOW_FIELD_VXLAN_VNI
Definition: rte_flow.h:3880
@ RTE_FLOW_FIELD_POINTER
Definition: rte_flow.h:3886
@ RTE_FLOW_FIELD_VLAN_TYPE
Definition: rte_flow.h:3862
@ RTE_FLOW_FIELD_TCP_ACK_NUM
Definition: rte_flow.h:3876
@ RTE_FLOW_FIELD_TCP_SEQ_NUM
Definition: rte_flow.h:3875
@ RTE_FLOW_FIELD_IPV4_TOTAL_LEN
Definition: rte_flow.h:3901
@ RTE_FLOW_FIELD_IPV4_ECN
Definition: rte_flow.h:3888
@ RTE_FLOW_FIELD_HASH_RESULT
Definition: rte_flow.h:3894
@ RTE_FLOW_FIELD_TCP_PORT_DST
Definition: rte_flow.h:3874
@ RTE_FLOW_FIELD_VLAN_ID
Definition: rte_flow.h:3863
__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 u32
Definition: rte_ecpri.h:71
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:3800
struct rte_flow_tcp_dir_param original_dir
Definition: rte_flow.h:3798
enum rte_flow_conntrack_state state
Definition: rte_flow.h:3792
struct rte_flow_action_list_handle * handle
Definition: rte_flow.h:6468
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:4039
enum rte_flow_field_id field
Definition: rte_flow.h:3912
struct rte_flow_action_modify_data dst
Definition: rte_flow.h:4020
struct rte_flow_action_modify_data src
Definition: rte_flow.h:4021
enum rte_flow_modify_op operation
Definition: rte_flow.h:4019
struct rte_flow_item * definition
Definition: rte_flow.h:3473
const char * name
Definition: rte_flow.h:4114
const struct rte_flow_action_prog_argument * args
Definition: rte_flow.h:4118
enum rte_flow_quota_mode mode
Definition: rte_flow.h:3046
const uint16_t * queue
Definition: rte_flow.h:3271
enum rte_eth_hash_function func
Definition: rte_flow.h:3240
const uint8_t * key
Definition: rte_flow.h:3270
uint32_t queue_num
Definition: rte_flow.h:3269
const struct rte_flow_action * actions
Definition: rte_flow.h:4202
uint32_t original
Definition: rte_flow.h:3291
uint32_t reserved
Definition: rte_flow.h:3292
struct rte_flow_item * definition
Definition: rte_flow.h:3440
const void * conf
Definition: rte_flow.h:4158
enum rte_flow_action_type type
Definition: rte_flow.h:4157
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:4268
struct rte_flow_attr * attr
Definition: rte_flow.h:4260
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:4267
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:4263
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:4259
struct rte_flow_item * pattern
Definition: rte_flow.h:4264
struct rte_flow_action * actions
Definition: rte_flow.h:4733
uint8_t data[]
Definition: rte_flow.h:4734
struct rte_flow_attr attr
Definition: rte_flow.h:4731
struct rte_flow_item * items
Definition: rte_flow.h:4732
size_t size
Definition: rte_flow.h:4730
const char * message
Definition: rte_flow.h:4246
enum rte_flow_error_type type
Definition: rte_flow.h:4244
const void * cause
Definition: rte_flow.h:4245
uint32_t num
Definition: rte_flow.h:773
struct rte_arp_hdr hdr
Definition: rte_flow.h:1380
struct rte_ether_addr tha
Definition: rte_flow.h:1377
struct rte_ether_addr sha
Definition: rte_flow.h:1375
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1125
rte_be16_t inner_type
Definition: rte_flow.h:1130
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1127
struct rte_esp_hdr hdr
Definition: rte_flow.h:1294
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:2228
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2252
enum rte_flow_item_flex_tunnel_mode tunnel
Definition: rte_flow.h:2217
struct rte_flow_item_flex_link * input_link
Definition: rte_flow.h:2244
struct rte_flow_item_flex_field next_header
Definition: rte_flow.h:2223
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2234
enum rte_flow_item_flex_field_mode field_mode
Definition: rte_flow.h:2179
const uint8_t * pattern
Definition: rte_flow.h:2105
struct rte_flow_item_flex_handle * handle
Definition: rte_flow.h:2103
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1316
rte_be16_t protocol
Definition: rte_flow.h:1317
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1195
rte_be16_t protocol
Definition: rte_flow.h:1196
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1610
rte_be32_t teid
Definition: rte_flow.h:1275
struct rte_gtp_hdr hdr
Definition: rte_flow.h:1277
rte_be16_t msg_len
Definition: rte_flow.h:1274
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1272
uint8_t msg_type
Definition: rte_flow.h:1273
struct rte_ib_bth hdr
Definition: rte_flow.h:2033
struct rte_ether_addr sla
Definition: rte_flow.h:1546
struct rte_ether_addr tla
Definition: rte_flow.h:1571
struct rte_icmp_hdr hdr
Definition: rte_flow.h:1014
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
enum rte_color color
Definition: rte_flow.h:2263
uint8_t label_tc_s[3]
Definition: rte_flow.h:1174
uint8_t tni[3]
Definition: rte_flow.h:1154
rte_be16_t protocol
Definition: rte_flow.h:1153
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1152
uint8_t version_type
Definition: rte_flow.h:1630
rte_be16_t length
Definition: rte_flow.h:1633
rte_be16_t session_id
Definition: rte_flow.h:1632
uint32_t packet_type
Definition: rte_flow.h:2325
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
int32_t offset
Definition: rte_flow.h:830
uint32_t reserved
Definition: rte_flow.h:829
uint16_t limit
Definition: rte_flow.h:831
uint32_t relative
Definition: rte_flow.h:827
struct rte_sctp_hdr hdr
Definition: rte_flow.h:1071
struct rte_tcp_hdr hdr
Definition: rte_flow.h:1052
struct rte_udp_hdr hdr
Definition: rte_flow.h:1033
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
uint8_t vni[3]
Definition: rte_flow.h:1098
uint8_t rsvd0[3]
Definition: rte_flow.h:1097
const void * spec
Definition: rte_flow.h:2081
const void * mask
Definition: rte_flow.h:2083
enum rte_flow_item_type type
Definition: rte_flow.h:2080
const void * last
Definition: rte_flow.h:2082
struct rte_flow_action_conntrack new_ct
Definition: rte_flow.h:3824
uint32_t postpone
Definition: rte_flow.h:5935
enum rte_flow_op_status status
Definition: rte_flow.h:6162
uint32_t nb_conn_tracks
Definition: rte_flow.h:5462
uint32_t nb_counters
Definition: rte_flow.h:5447
uint16_t host_port_id
Definition: rte_flow.h:5466
uint32_t nb_aging_objects
Definition: rte_flow.h:5452
uint32_t nb_meters
Definition: rte_flow.h:5457
uint32_t nb_quotas
Definition: rte_flow.h:5471
uint32_t supported_flags
Definition: rte_flow.h:5390
uint32_t max_nb_quotas
Definition: rte_flow.h:5386
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:5381
uint32_t max_nb_aging_objects
Definition: rte_flow.h:5371
uint32_t max_nb_queues
Definition: rte_flow.h:5361
uint32_t max_nb_meters
Definition: rte_flow.h:5376
uint32_t max_nb_counters
Definition: rte_flow.h:5366
uint32_t sec_since_last_hit
Definition: rte_flow.h:3158
uint32_t sec_since_last_hit_valid
Definition: rte_flow.h:3157
uint32_t reserved
Definition: rte_flow.h:3154
struct rte_flow_tunnel tunnel
Definition: rte_flow.h:5110
uint32_t close_initiated
Definition: rte_flow.h:3728
enum rte_flow_table_insertion_type insertion_type
Definition: rte_flow.h:5819
struct rte_flow_attr flow_attr
Definition: rte_flow.h:5802
enum rte_flow_table_hash_func hash_func
Definition: rte_flow.h:5823
uint32_t timeout_valid
Definition: rte_flow.h:3182
struct rte_flow_action_meter_mark meter_mark
Definition: rte_flow.h:4055
enum rte_flow_update_quota_op op
Definition: rte_flow.h:3084
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:533
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