DPDK 22.11.4
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_icmp.h>
24#include <rte_ip.h>
25#include <rte_sctp.h>
26#include <rte_tcp.h>
27#include <rte_udp.h>
28#include <rte_vxlan.h>
29#include <rte_esp.h>
30#include <rte_higig.h>
31#include <rte_ecpri.h>
32#include <rte_bitops.h>
33#include <rte_mbuf_dyn.h>
34#include <rte_meter.h>
35#include <rte_gtp.h>
36#include <rte_l2tpv2.h>
37#include <rte_ppp.h>
38#include <rte_gre.h>
39#include <rte_macsec.h>
40
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45#define RTE_FLOW_LOG(level, ...) \
46 rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, "" __VA_ARGS__)
47
89 uint32_t group;
90 uint32_t priority;
94 uint32_t ingress:1;
98 uint32_t egress:1;
116 uint32_t transfer:1;
117 uint32_t reserved:29;
118};
119
146
156
166
174
188
195
202
209
216
223
230
237
244
251
258
265
272
279
286
298
307
316
325
332
339
346
353
360
367
374
381
388
396
404
411
420
433
442
451
460
469
476
483
490
496
505
514
521
530
537
544
555
564
573
583
592
599
606
613
620
627};
628
636 struct rte_higig2_hdr hdr;
637};
638
640#ifndef __cplusplus
642 .hdr = {
643 .ppt1 = {
644 .classification = 0xffff,
645 .vid = 0xfff,
646 },
647 },
648};
649#endif
650
663 uint32_t num;
664};
665
667#ifndef __cplusplus
669 .num = 0x00000000,
670};
671#endif
672
688 uint32_t id;
689};
690
692#ifndef __cplusplus
694 .id = 0xffffffff,
695};
696#endif
697
717 uint32_t relative:1;
718 uint32_t search:1;
719 uint32_t reserved:30;
720 int32_t offset;
721 uint16_t limit;
722 uint16_t length;
723 const uint8_t *pattern;
724};
725
727#ifndef __cplusplus
729 .relative = 1,
730 .search = 1,
731 .reserved = 0x3fffffff,
732 .offset = 0xffffffff,
733 .limit = 0xffff,
734 .length = 0xffff,
735 .pattern = NULL,
736};
737#endif
738
758 union {
759 struct {
760 /*
761 * These fields are retained for compatibility.
762 * Please switch to the new header field below.
763 */
767 };
768 struct rte_ether_hdr hdr;
769 };
770 uint32_t has_vlan:1;
771 uint32_t reserved:31;
772};
773
775#ifndef __cplusplus
777 .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
778 .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
779 .hdr.ether_type = RTE_BE16(0x0000),
780};
781#endif
782
800 union {
801 struct {
802 /*
803 * These fields are retained for compatibility.
804 * Please switch to the new header field below.
805 */
808 };
809 struct rte_vlan_hdr hdr;
810 };
812 uint32_t has_more_vlan:1;
813 uint32_t reserved:31;
814};
815
817#ifndef __cplusplus
819 .hdr.vlan_tci = RTE_BE16(0x0fff),
820 .hdr.eth_proto = RTE_BE16(0x0000),
821};
822#endif
823
833};
834
836#ifndef __cplusplus
838 .hdr = {
839 .src_addr = RTE_BE32(0xffffffff),
840 .dst_addr = RTE_BE32(0xffffffff),
841 },
842};
843#endif
844
855 uint32_t has_hop_ext:1;
857 uint32_t has_route_ext:1;
859 uint32_t has_frag_ext:1;
861 uint32_t has_auth_ext:1;
863 uint32_t has_esp_ext:1;
865 uint32_t has_dest_ext:1;
867 uint32_t has_mobil_ext:1;
869 uint32_t has_hip_ext:1;
871 uint32_t has_shim6_ext:1;
873 uint32_t reserved:23;
874};
875
877#ifndef __cplusplus
879 .hdr = {
880 .src_addr =
881 "\xff\xff\xff\xff\xff\xff\xff\xff"
882 "\xff\xff\xff\xff\xff\xff\xff\xff",
883 .dst_addr =
884 "\xff\xff\xff\xff\xff\xff\xff\xff"
885 "\xff\xff\xff\xff\xff\xff\xff\xff",
886 },
887};
888#endif
889
897};
898
900#ifndef __cplusplus
902 .hdr = {
903 .icmp_type = 0xff,
904 .icmp_code = 0xff,
905 },
906};
907#endif
908
916};
917
919#ifndef __cplusplus
921 .hdr = {
922 .src_port = RTE_BE16(0xffff),
923 .dst_port = RTE_BE16(0xffff),
924 },
925};
926#endif
927
935};
936
938#ifndef __cplusplus
940 .hdr = {
941 .src_port = RTE_BE16(0xffff),
942 .dst_port = RTE_BE16(0xffff),
943 },
944};
945#endif
946
954};
955
957#ifndef __cplusplus
959 .hdr = {
960 .src_port = RTE_BE16(0xffff),
961 .dst_port = RTE_BE16(0xffff),
962 },
963};
964#endif
965
973 union {
974 struct {
975 /*
976 * These fields are retained for compatibility.
977 * Please switch to the new header field below.
978 */
979 uint8_t flags;
980 uint8_t rsvd0[3];
981 uint8_t vni[3];
982 uint8_t rsvd1;
983 };
984 struct rte_vxlan_hdr hdr;
985 };
986};
987
989#ifndef __cplusplus
991 .hdr.vx_vni = RTE_BE32(0xffffff00), /* (0xffffff << 8) */
992};
993#endif
994
1011 uint8_t in_ecid_e;
1012 uint8_t ecid_e;
1014};
1015
1017#ifndef __cplusplus
1019 .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1020};
1021#endif
1022
1037 uint8_t tni[3];
1038 uint8_t flow_id;
1039};
1040
1042#ifndef __cplusplus
1044 .tni = "\xff\xff\xff",
1045};
1046#endif
1047
1057 uint8_t label_tc_s[3];
1058 uint8_t ttl;
1059};
1060
1062#ifndef __cplusplus
1064 .label_tc_s = "\xff\xff\xf0",
1065};
1066#endif
1067
1080};
1081
1083#ifndef __cplusplus
1085 .protocol = RTE_BE16(0xffff),
1086};
1087#endif
1088
1095 struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1096 struct rte_gre_hdr_opt_key key;
1097 struct rte_gre_hdr_opt_sequence sequence;
1098};
1099
1106 struct rte_macsec_hdr macsec_hdr;
1107};
1108
1127 uint32_t thresh;
1128};
1129
1131#ifndef __cplusplus
1133 .thresh = 0xffffffff,
1134};
1135#endif
1136
1150 uint8_t msg_type;
1153};
1154
1156#ifndef __cplusplus
1158 .teid = RTE_BE32(0xffffffff),
1159};
1160#endif
1161
1169};
1170
1172#ifndef __cplusplus
1174 .hdr = {
1175 .spi = RTE_BE32(0xffffffff),
1176 },
1177};
1178#endif
1179
1192 uint8_t vni[3];
1193 uint8_t rsvd1;
1194};
1195
1197#ifndef __cplusplus
1199 .vni = "\xff\xff\xff",
1200};
1201#endif
1202
1209 uint8_t flags;
1210 uint8_t rsvd0[2];
1211 uint8_t protocol;
1212 uint8_t vni[3];
1213 uint8_t rsvd1;
1214};
1215
1217#ifndef __cplusplus
1219 .vni = "\xff\xff\xff",
1220};
1221#endif
1222
1231 uint8_t hln;
1232 uint8_t pln;
1238};
1239
1241#ifndef __cplusplus
1242static const struct rte_flow_item_arp_eth_ipv4
1244 .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1245 .spa = RTE_BE32(0xffffffff),
1246 .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1247 .tpa = RTE_BE32(0xffffffff),
1248};
1249#endif
1250
1262 uint8_t next_hdr;
1263};
1264
1266#ifndef __cplusplus
1267static const
1269 .next_hdr = 0xff,
1270};
1271#endif
1272
1284 struct rte_ipv6_fragment_ext hdr;
1285};
1286
1293 uint8_t type;
1294 uint8_t code;
1295 uint16_t checksum;
1296};
1297
1299#ifndef __cplusplus
1301 .type = 0xff,
1302 .code = 0xff,
1303};
1304#endif
1305
1312 uint8_t type;
1313 uint8_t code;
1316 uint8_t target_addr[16];
1317};
1318
1320#ifndef __cplusplus
1321static const
1323 .target_addr =
1324 "\xff\xff\xff\xff\xff\xff\xff\xff"
1325 "\xff\xff\xff\xff\xff\xff\xff\xff",
1326};
1327#endif
1328
1335 uint8_t type;
1336 uint8_t code;
1343 uint8_t target_addr[16];
1344};
1345
1347#ifndef __cplusplus
1348static const
1350 .target_addr =
1351 "\xff\xff\xff\xff\xff\xff\xff\xff"
1352 "\xff\xff\xff\xff\xff\xff\xff\xff",
1353};
1354#endif
1355
1368 uint8_t type;
1369 uint8_t length;
1370};
1371
1373#ifndef __cplusplus
1374static const struct rte_flow_item_icmp6_nd_opt
1376 .type = 0xff,
1377};
1378#endif
1379
1392 uint8_t type;
1393 uint8_t length;
1395};
1396
1398#ifndef __cplusplus
1399static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1401 .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1402};
1403#endif
1404
1417 uint8_t type;
1418 uint8_t length;
1420};
1421
1423#ifndef __cplusplus
1424static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1426 .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1427};
1428#endif
1429
1442 uint32_t data;
1443};
1444
1446#ifndef __cplusplus
1448 .data = UINT32_MAX,
1449};
1450#endif
1451
1459};
1460
1462#ifndef __cplusplus
1463static const struct rte_flow_item_gtp_psc
1465 .hdr.qfi = 0x3f,
1466};
1467#endif
1468
1479 uint8_t code;
1482};
1483
1498};
1499
1501#ifndef __cplusplus
1502static const struct rte_flow_item_pppoe_proto_id
1504 .proto_id = RTE_BE16(0xffff),
1505};
1506#endif
1507
1517 uint32_t data;
1518 uint8_t index;
1519};
1520
1522#ifndef __cplusplus
1524 .data = 0xffffffff,
1525 .index = 0xff,
1526};
1527#endif
1528
1536};
1537
1539#ifndef __cplusplus
1541 .session_id = RTE_BE32(UINT32_MAX),
1542};
1543#endif
1544
1545
1565 uint32_t id;
1566};
1567
1569#ifndef __cplusplus
1571 .id = 0xffffffff,
1572};
1573#endif
1574
1585 uint32_t version:2;
1586 uint32_t oam_pkt:1;
1587 uint32_t reserved:1;
1588 uint32_t ttl:6;
1589 uint32_t length:6;
1590 uint32_t reserved1:4;
1591 uint32_t mdtype:4;
1592 uint32_t next_proto:8;
1593 uint32_t spi:24;
1594 uint32_t sindex:8;
1595};
1596
1598#ifndef __cplusplus
1600 .mdtype = 0xf,
1601 .next_proto = 0xff,
1602 .spi = 0xffffff,
1603 .sindex = 0xff,
1604};
1605#endif
1606
1617 uint32_t type:8;
1618 uint32_t max_resp_time:8;
1619 uint32_t checksum:16;
1620 uint32_t group_addr;
1621};
1622
1624#ifndef __cplusplus
1626 .group_addr = 0xffffffff,
1627};
1628#endif
1629
1640 uint32_t next_hdr:8;
1641 uint32_t payload_len:8;
1642 uint32_t reserved:16;
1643 uint32_t spi;
1644 uint32_t seq_num;
1645};
1646
1648#ifndef __cplusplus
1650 .spi = 0xffffffff,
1651};
1652#endif
1653
1663 uint8_t s_field;
1664 uint8_t msg_type;
1665 rte_be16_t msg_len;
1666 rte_be64_t seid;
1667};
1668
1670#ifndef __cplusplus
1672 .s_field = 0x01,
1673 .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1674};
1675#endif
1676
1686 struct rte_ecpri_combined_msg_hdr hdr;
1687};
1688
1690#ifndef __cplusplus
1692 .hdr = {
1693 .common = {
1694 .u32 = 0x0,
1695 },
1696 },
1697};
1698#endif
1699
1706 rte_be16_t option_class;
1707 uint8_t option_type;
1708 uint8_t option_len;
1709 uint32_t *data;
1710};
1711
1713#ifndef __cplusplus
1714static const struct rte_flow_item_geneve_opt
1716 .option_type = 0xff,
1717};
1718#endif
1719
1732 uint32_t level;
1734 union {
1735 __extension__
1736 struct {
1738 uint64_t packet_ok:1;
1740 uint64_t l2_ok:1;
1742 uint64_t l3_ok:1;
1744 uint64_t l4_ok:1;
1746 uint64_t l2_crc_ok:1;
1748 uint64_t ipv4_csum_ok:1;
1750 uint64_t l4_csum_ok:1;
1752 uint64_t l3_len_ok:1;
1753 uint64_t reserved:56;
1754 };
1755 uint64_t value;
1756 };
1757};
1758
1759#ifndef __cplusplus
1760static const struct rte_flow_item_integrity
1761rte_flow_item_integrity_mask = {
1762 .level = 0,
1763 .value = 0,
1764};
1765#endif
1766
1770#define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1774#define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1779#define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1784#define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1789#define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1790
1802 uint32_t flags;
1803};
1804
1806#ifndef __cplusplus
1808 .flags = 0xffffffff,
1809};
1810#endif
1811
1818 uint16_t port_id;
1819};
1820
1822#ifndef __cplusplus
1824 .port_id = 0xffff,
1825};
1826#endif
1827
1837 struct rte_l2tpv2_combined_msg_hdr hdr;
1838};
1839
1841#ifndef __cplusplus
1843 /*
1844 * flags and version bit mask
1845 * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1846 * T L x x S x O P x x x x V V V V
1847 */
1848 .hdr = {
1849 .common = {
1850 .flags_version = RTE_BE16(0xcb0f),
1851 },
1852 },
1853};
1854#endif
1855
1865 struct rte_ppp_hdr hdr;
1866};
1867
1869#ifndef __cplusplus
1871 .hdr = {
1872 .addr = 0xff,
1873 .ctrl = 0xff,
1874 .proto_id = RTE_BE16(0xffff),
1875 }
1876};
1877#endif
1878
1914 const void *spec;
1915 const void *last;
1916 const void *mask;
1917};
1918
1936 struct rte_flow_item_flex_handle *handle;
1937 uint32_t length;
1938 const uint8_t *pattern;
1939};
1971};
1972
2002};
2003
2009__extension__
2013 uint32_t field_size;
2014 int32_t field_base;
2015 uint32_t offset_base;
2016 uint32_t offset_mask;
2018 uint32_t field_id:16;
2019 uint32_t reserved:16;
2020};
2021
2037 uint32_t next;
2038};
2039
2069 uint32_t nb_samples;
2079 uint32_t nb_inputs;
2087 uint32_t nb_outputs;
2088};
2089
2097};
2098
2100#ifndef __cplusplus
2102 .color = RTE_COLORS,
2103};
2104#endif
2105
2140
2148
2156
2165
2177
2189
2196
2205
2216
2225
2237
2249
2260
2268
2276
2287
2295
2303
2311
2319
2327
2335
2343
2352
2360
2369
2376
2383
2396
2409
2422
2435
2449
2463
2474
2484
2494
2507
2520
2537
2554
2571
2588
2601
2611
2624
2637
2650
2658
2669
2680
2688
2697
2705
2712
2720
2728
2739};
2740
2752 uint32_t id;
2753};
2754
2768 uint32_t group;
2769};
2770
2777 uint16_t index;
2778};
2779
2794 uint32_t timeout:24;
2795 uint32_t reserved:8;
2797 void *context;
2798};
2799
2807 uint32_t reserved:6;
2808 uint32_t aged:1;
2812};
2813
2834 uint32_t reserved:6;
2835 uint32_t timeout_valid:1;
2836 uint32_t timeout:24;
2838 uint32_t touch:1;
2839};
2840
2859 uint32_t id;
2860};
2861
2868 uint32_t reset:1;
2869 uint32_t hits_set:1;
2870 uint32_t bytes_set:1;
2871 uint32_t reserved:29;
2872 uint64_t hits;
2873 uint64_t bytes;
2874};
2875
2880 RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2889 RTE_ETH_HASH_FUNCTION_MAX,
2890};
2891
2935 uint32_t level;
2936 uint64_t types;
2937 uint32_t key_len;
2938 uint32_t queue_num;
2939 const uint8_t *key;
2940 const uint16_t *queue;
2941};
2942
2960 uint32_t original:1;
2961 uint32_t reserved:31;
2962 uint32_t id;
2963};
2964
2977 uint32_t original:1;
2978 uint32_t reserved:31;
2979 uint32_t id;
2980};
2981
2991 uint32_t mtr_id;
2992};
2993
3026};
3027
3036};
3037
3046};
3047
3055 uint8_t vlan_pcp;
3056};
3057
3066};
3067
3076};
3077
3111};
3112
3145};
3146
3167 uint8_t *data;
3168 uint8_t *preserve;
3169 size_t size;
3170};
3171
3188 uint8_t *data;
3189 size_t size;
3190};
3191
3204 rte_be32_t ipv4_addr;
3205};
3206
3219 uint8_t ipv6_addr[16];
3220};
3221
3234 rte_be16_t port;
3235};
3236
3243 uint8_t ttl_value;
3244};
3245
3252 uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3253};
3254
3265 uint32_t data;
3266 uint32_t mask;
3267 uint8_t index;
3268};
3269
3290 uint32_t data;
3291 uint32_t mask;
3292};
3293
3302 uint8_t dscp;
3303};
3304
3322struct rte_flow_action_handle;
3323
3340};
3341
3352};
3353
3365 uint32_t scale:4;
3369 uint32_t last_ack_seen:1;
3374 uint32_t data_unacked:1;
3379 uint32_t sent_end;
3384 uint32_t reply_end;
3386 uint32_t max_win;
3388 uint32_t max_ack;
3389};
3390
3403 uint16_t peer_port;
3416 uint32_t enable:1;
3420 uint32_t selective_ack:1;
3427 uint32_t last_direction:1;
3429 uint32_t liberal_mode:1;
3441 uint16_t last_window;
3442 enum rte_flow_conntrack_tcp_last_index last_index;
3444 uint32_t last_seq;
3446 uint32_t last_ack;
3451 uint32_t last_end;
3452};
3453
3465 uint32_t direction:1;
3467 uint32_t state:1;
3469 uint32_t reserved:30;
3470};
3471
3483};
3484
3491 uint16_t port_id;
3492};
3493
3531};
3532
3542 union {
3543 struct {
3545 uint32_t level;
3547 uint32_t offset;
3548 };
3555 uint8_t value[16];
3561 void *pvalue;
3562 };
3563};
3564
3572};
3573
3588 uint32_t width;
3589};
3590
3603
3605 struct rte_flow_meter_profile *profile;
3607 struct rte_flow_meter_policy *policy;
3614};
3615
3626 uint32_t profile_valid:1;
3628 uint32_t policy_valid:1;
3634 uint32_t state_valid:1;
3636 uint32_t reserved:27;
3637};
3638
3639/* Mbuf dynamic field offset for metadata. */
3640extern int32_t rte_flow_dynf_metadata_offs;
3641
3642/* Mbuf dynamic field flag mask for metadata. */
3643extern uint64_t rte_flow_dynf_metadata_mask;
3644
3645/* Mbuf dynamic field pointer for metadata. */
3646#define RTE_FLOW_DYNF_METADATA(m) \
3647 RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
3648
3649/* Mbuf dynamic flags for metadata. */
3650#define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
3651#define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
3652
3653__rte_experimental
3654static inline uint32_t
3655rte_flow_dynf_metadata_get(struct rte_mbuf *m)
3656{
3657 return *RTE_FLOW_DYNF_METADATA(m);
3658}
3659
3660__rte_experimental
3661static inline void
3662rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
3663{
3664 *RTE_FLOW_DYNF_METADATA(m) = v;
3665}
3666
3676 const void *conf;
3677};
3678
3685struct rte_flow;
3686
3692struct rte_flow_meter_profile;
3693
3699struct rte_flow_meter_policy;
3700
3718 uint32_t ratio;
3721};
3722
3748};
3749
3763 const void *cause;
3764 const char *message;
3765};
3766
3777 union {
3778 const struct rte_flow_attr *attr_ro;
3780 };
3781 union {
3784 };
3785 union {
3788 };
3789};
3790
3803
3815
3827
3839
3852
3865
3878
3892
3906
3920
3934};
3935
3955__rte_experimental
3956int
3957rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
3958 FILE *file, struct rte_flow_error *error);
3959
3966__rte_experimental
3967static inline int
3969{
3970 return !!rte_flow_dynf_metadata_mask;
3971}
3972
3983__rte_experimental
3984int
3986
4039int
4040rte_flow_validate(uint16_t port_id,
4041 const struct rte_flow_attr *attr,
4042 const struct rte_flow_item pattern[],
4043 const struct rte_flow_action actions[],
4044 struct rte_flow_error *error);
4045
4066struct rte_flow *
4067rte_flow_create(uint16_t port_id,
4068 const struct rte_flow_attr *attr,
4069 const struct rte_flow_item pattern[],
4070 const struct rte_flow_action actions[],
4071 struct rte_flow_error *error);
4072
4093int
4094rte_flow_destroy(uint16_t port_id,
4095 struct rte_flow *flow,
4096 struct rte_flow_error *error);
4097
4114int
4115rte_flow_flush(uint16_t port_id,
4116 struct rte_flow_error *error);
4117
4142int
4143rte_flow_query(uint16_t port_id,
4144 struct rte_flow *flow,
4145 const struct rte_flow_action *action,
4146 void *data,
4147 struct rte_flow_error *error);
4148
4194int
4195rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4196
4214int
4216 int code,
4217 enum rte_flow_error_type type,
4218 const void *cause,
4219 const char *message);
4220
4226 size_t size;
4230 uint8_t data[];
4231};
4232
4259__rte_deprecated
4260size_t
4261rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4262 const struct rte_flow_attr *attr,
4263 const struct rte_flow_item *items,
4264 const struct rte_flow_action *actions);
4265
4306__rte_experimental
4307int
4309 void *dst,
4310 size_t size,
4311 const void *src,
4312 struct rte_flow_error *error);
4313
4342__rte_experimental
4343int
4344rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4345 uint32_t nb_contexts, struct rte_flow_error *error);
4346
4386__rte_experimental
4387int
4388rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4389 uint32_t nb_contexts, struct rte_flow_error *error);
4390
4402 uint32_t ingress:1;
4404 uint32_t egress:1;
4409 uint32_t transfer:1;
4410};
4411
4439__rte_experimental
4440struct rte_flow_action_handle *
4442 const struct rte_flow_indir_action_conf *conf,
4443 const struct rte_flow_action *action,
4444 struct rte_flow_error *error);
4445
4468__rte_experimental
4469int
4471 struct rte_flow_action_handle *handle,
4472 struct rte_flow_error *error);
4473
4507__rte_experimental
4508int
4510 struct rte_flow_action_handle *handle,
4511 const void *update,
4512 struct rte_flow_error *error);
4513
4539__rte_experimental
4540int
4542 const struct rte_flow_action_handle *handle,
4543 void *data, struct rte_flow_error *error);
4544
4545/* Tunnel has a type and the key information. */
4546struct rte_flow_tunnel {
4551 enum rte_flow_item_type type;
4552 uint64_t tun_id;
4555 union {
4556 struct {
4559 } ipv4;
4560 struct {
4561 uint8_t src_addr[16];
4562 uint8_t dst_addr[16];
4563 } ipv6;
4564 };
4565 rte_be16_t tp_src;
4566 rte_be16_t tp_dst;
4567 uint16_t tun_flags;
4569 bool is_ipv6;
4575 uint8_t tos;
4576 uint8_t ttl;
4577 uint32_t label;
4578};
4579
4583#define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
4584
4588#define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
4589
4593#define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
4594
4605 uint64_t flags;
4606 uint32_t group_id;
4607 struct rte_flow_tunnel tunnel;
4608};
4609
4633__rte_experimental
4634int
4636 struct rte_flow_tunnel *tunnel,
4637 struct rte_flow_action **actions,
4638 uint32_t *num_of_actions,
4639 struct rte_flow_error *error);
4640
4664__rte_experimental
4665int
4666rte_flow_tunnel_match(uint16_t port_id,
4667 struct rte_flow_tunnel *tunnel,
4668 struct rte_flow_item **items,
4669 uint32_t *num_of_items,
4670 struct rte_flow_error *error);
4671
4692__rte_experimental
4693int
4695 struct rte_mbuf *m,
4696 struct rte_flow_restore_info *info,
4697 struct rte_flow_error *error);
4698
4715__rte_experimental
4716int
4718 struct rte_flow_action *actions,
4719 uint32_t num_of_actions,
4720 struct rte_flow_error *error);
4721
4738__rte_experimental
4739int
4741 struct rte_flow_item *items,
4742 uint32_t num_of_items,
4743 struct rte_flow_error *error);
4744
4770int
4771rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
4772 struct rte_flow_error *error);
4773
4792__rte_experimental
4793struct rte_flow_item_flex_handle *
4795 const struct rte_flow_item_flex_conf *conf,
4796 struct rte_flow_error *error);
4797
4812__rte_experimental
4813int
4815 const struct rte_flow_item_flex_handle *handle,
4816 struct rte_flow_error *error);
4817
4822#define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
4823
4861};
4862
4875 uint32_t max_size;
4876};
4877
4899__rte_experimental
4900int
4901rte_flow_info_get(uint16_t port_id,
4902 struct rte_flow_port_info *port_info,
4903 struct rte_flow_queue_info *queue_info,
4904 struct rte_flow_error *error);
4905
4919 uint32_t nb_counters;
4929 uint32_t nb_meters;
4938 uint32_t flags;
4939};
4940
4953 uint32_t size;
4954};
4955
4987__rte_experimental
4988int
4989rte_flow_configure(uint16_t port_id,
4990 const struct rte_flow_port_attr *port_attr,
4991 uint16_t nb_queue,
4992 const struct rte_flow_queue_attr *queue_attr[],
4993 struct rte_flow_error *error);
4994
4999struct rte_flow_pattern_template;
5000
5007__extension__
5022 uint32_t ingress:1;
5024 uint32_t egress:1;
5026 uint32_t transfer:1;
5027};
5028
5056__rte_experimental
5057struct rte_flow_pattern_template *
5059 const struct rte_flow_pattern_template_attr *template_attr,
5060 const struct rte_flow_item pattern[],
5061 struct rte_flow_error *error);
5062
5083__rte_experimental
5084int
5086 struct rte_flow_pattern_template *pattern_template,
5087 struct rte_flow_error *error);
5088
5093struct rte_flow_actions_template;
5094
5101__extension__
5108 uint32_t ingress:1;
5110 uint32_t egress:1;
5112 uint32_t transfer:1;
5113};
5114
5150__rte_experimental
5151struct rte_flow_actions_template *
5153 const struct rte_flow_actions_template_attr *template_attr,
5154 const struct rte_flow_action actions[],
5155 const struct rte_flow_action masks[],
5156 struct rte_flow_error *error);
5157
5178__rte_experimental
5179int
5181 struct rte_flow_actions_template *actions_template,
5182 struct rte_flow_error *error);
5183
5188struct rte_flow_template_table;
5189
5204 uint32_t nb_flows;
5205};
5206
5239__rte_experimental
5240struct rte_flow_template_table *
5242 const struct rte_flow_template_table_attr *table_attr,
5243 struct rte_flow_pattern_template *pattern_templates[],
5244 uint8_t nb_pattern_templates,
5245 struct rte_flow_actions_template *actions_templates[],
5246 uint8_t nb_actions_templates,
5247 struct rte_flow_error *error);
5248
5269__rte_experimental
5270int
5272 struct rte_flow_template_table *template_table,
5273 struct rte_flow_error *error);
5274
5281__extension__
5287 uint32_t postpone:1;
5288};
5289
5326__rte_experimental
5327struct rte_flow *
5328rte_flow_async_create(uint16_t port_id,
5329 uint32_t queue_id,
5330 const struct rte_flow_op_attr *op_attr,
5331 struct rte_flow_template_table *template_table,
5332 const struct rte_flow_item pattern[],
5333 uint8_t pattern_template_index,
5334 const struct rte_flow_action actions[],
5335 uint8_t actions_template_index,
5336 void *user_data,
5337 struct rte_flow_error *error);
5338
5368__rte_experimental
5369int
5370rte_flow_async_destroy(uint16_t port_id,
5371 uint32_t queue_id,
5372 const struct rte_flow_op_attr *op_attr,
5373 struct rte_flow *flow,
5374 void *user_data,
5375 struct rte_flow_error *error);
5376
5397__rte_experimental
5398int
5399rte_flow_push(uint16_t port_id,
5400 uint32_t queue_id,
5401 struct rte_flow_error *error);
5402
5418};
5419
5426__extension__
5436};
5437
5463__rte_experimental
5464int
5465rte_flow_pull(uint16_t port_id,
5466 uint32_t queue_id,
5467 struct rte_flow_op_result res[],
5468 uint16_t n_res,
5469 struct rte_flow_error *error);
5470
5497__rte_experimental
5498struct rte_flow_action_handle *
5500 uint32_t queue_id,
5501 const struct rte_flow_op_attr *op_attr,
5502 const struct rte_flow_indir_action_conf *indir_action_conf,
5503 const struct rte_flow_action *action,
5504 void *user_data,
5505 struct rte_flow_error *error);
5506
5532__rte_experimental
5533int
5535 uint32_t queue_id,
5536 const struct rte_flow_op_attr *op_attr,
5537 struct rte_flow_action_handle *action_handle,
5538 void *user_data,
5539 struct rte_flow_error *error);
5540
5571__rte_experimental
5572int
5574 uint32_t queue_id,
5575 const struct rte_flow_op_attr *op_attr,
5576 struct rte_flow_action_handle *action_handle,
5577 const void *update,
5578 void *user_data,
5579 struct rte_flow_error *error);
5580
5615__rte_experimental
5616int
5618 uint32_t queue_id,
5619 const struct rte_flow_op_attr *op_attr,
5620 const struct rte_flow_action_handle *action_handle,
5621 void *data,
5622 void *user_data,
5623 struct rte_flow_error *error);
5624
5625#ifdef __cplusplus
5626}
5627#endif
5628
5629#endif /* RTE_FLOW_H_ */
#define RTE_BIT32(nr)
Definition: rte_bitops.h:38
uint32_t rte_be32_t
uint64_t rte_be64_t
uint16_t rte_be16_t
#define RTE_STD_C11
Definition: rte_common.h:39
#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:693
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)
__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:3568
@ RTE_FLOW_MODIFY_SET
Definition: rte_flow.h:3569
@ RTE_FLOW_MODIFY_SUB
Definition: rte_flow.h:3571
@ RTE_FLOW_MODIFY_ADD
Definition: rte_flow.h:3570
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1084
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:3968
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1322
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1218
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1447
__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:1400
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:901
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1464
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:990
__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:1503
rte_flow_op_status
Definition: rte_flow.h:5409
@ RTE_FLOW_OP_SUCCESS
Definition: rte_flow.h:5413
@ RTE_FLOW_OP_ERROR
Definition: rte_flow.h:5417
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3345
@ RTE_FLOW_CONNTRACK_FLAG_ACK
Definition: rte_flow.h:3350
@ RTE_FLOW_CONNTRACK_FLAG_SYNACK
Definition: rte_flow.h:3348
@ RTE_FLOW_CONNTRACK_FLAG_FIN
Definition: rte_flow.h:3349
@ RTE_FLOW_CONNTRACK_FLAG_SYN
Definition: rte_flow.h:3347
@ RTE_FLOW_CONNTRACK_FLAG_RST
Definition: rte_flow.h:3351
@ RTE_FLOW_CONNTRACK_FLAG_NONE
Definition: rte_flow.h:3346
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1198
rte_flow_conntrack_state
Definition: rte_flow.h:3327
@ RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
Definition: rte_flow.h:3331
@ RTE_FLOW_CONNTRACK_STATE_SYN_RECV
Definition: rte_flow.h:3329
@ RTE_FLOW_CONNTRACK_STATE_LAST_ACK
Definition: rte_flow.h:3337
@ RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
Definition: rte_flow.h:3333
@ RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
Definition: rte_flow.h:3339
@ RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
Definition: rte_flow.h:3335
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1018
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)
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1268
__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:1671
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1540
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1523
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1425
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:728
static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
Definition: rte_flow.h:2101
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow, FILE *file, struct rte_flow_error *error)
__rte_experimental struct rte_flow_template_table * rte_flow_template_table_create(uint16_t port_id, const struct rte_flow_template_table_attr *table_attr, struct rte_flow_pattern_template *pattern_templates[], uint8_t nb_pattern_templates, struct rte_flow_actions_template *actions_templates[], uint8_t nb_actions_templates, struct rte_flow_error *error)
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:818
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:939
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:3796
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:3933
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:3826
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:3864
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:3802
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:3877
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:3814
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:3905
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:3919
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:3851
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:3891
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:3838
__rte_experimental int rte_flow_flex_item_release(uint16_t port_id, const struct rte_flow_item_flex_handle *handle, struct rte_flow_error *error)
__rte_experimental int rte_flow_get_restore_info(uint16_t port_id, struct rte_mbuf *m, struct rte_flow_restore_info *info, struct rte_flow_error *error)
rte_flow_action_type
Definition: rte_flow.h:2132
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:2294
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:2342
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:2359
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition: rte_flow.h:2536
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:2155
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:2215
@ RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
Definition: rte_flow.h:2738
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:2462
@ RTE_FLOW_ACTION_TYPE_INDIRECT
Definition: rte_flow.h:2687
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:2375
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:2248
@ RTE_FLOW_ACTION_TYPE_SET_META
Definition: rte_flow.h:2610
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:2473
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:2421
@ RTE_FLOW_ACTION_TYPE_METER_MARK
Definition: rte_flow.h:2727
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:2326
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:2382
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:2147
@ RTE_FLOW_ACTION_TYPE_AGE
Definition: rte_flow.h:2649
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:2224
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:2176
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:2395
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:2286
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:2408
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:2195
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:2139
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
Definition: rte_flow.h:2623
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:2302
@ RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:2711
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
Definition: rte_flow.h:2636
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition: rte_flow.h:2587
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:2483
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:2351
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:2448
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:2259
@ RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:2719
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:2368
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:2275
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:2334
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:2310
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition: rte_flow.h:2570
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:2188
@ RTE_FLOW_ACTION_TYPE_CONNTRACK
Definition: rte_flow.h:2696
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:2519
@ RTE_FLOW_ACTION_TYPE_METER_COLOR
Definition: rte_flow.h:2704
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:2267
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:2236
@ RTE_FLOW_ACTION_TYPE_SET_TAG
Definition: rte_flow.h:2600
@ RTE_FLOW_ACTION_TYPE_SHARED
Definition: rte_flow.h:2668
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:2434
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:2493
@ RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
Definition: rte_flow.h:2679
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:2204
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:2318
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:2506
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition: rte_flow.h:2553
@ RTE_FLOW_ACTION_TYPE_SAMPLE
Definition: rte_flow.h:2657
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:2164
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1157
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:1063
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition: rte_flow.h:1842
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:958
__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:878
__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:1649
rte_flow_item_flex_tunnel_mode
Definition: rte_flow.h:1976
@ FLEX_TUNNEL_MODE_OUTER
Definition: rte_flow.h:1988
@ FLEX_TUNNEL_MODE_MULTI
Definition: rte_flow.h:1997
@ FLEX_TUNNEL_MODE_INNER
Definition: rte_flow.h:1992
@ FLEX_TUNNEL_MODE_SINGLE
Definition: rte_flow.h:1984
@ FLEX_TUNNEL_MODE_TUNNEL
Definition: rte_flow.h:2001
__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_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:641
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1375
__rte_experimental int rte_flow_push(uint16_t port_id, uint32_t queue_id, struct rte_flow_error *error)
__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:1943
@ FIELD_MODE_FIXED
Definition: rte_flow.h:1954
@ FIELD_MODE_DUMMY
Definition: rte_flow.h:1949
@ FIELD_MODE_OFFSET
Definition: rte_flow.h:1961
@ FIELD_MODE_BITMASK
Definition: rte_flow.h:1970
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1243
__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)
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:920
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1599
rte_flow_error_type
Definition: rte_flow.h:3729
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:3731
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:3733
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:3730
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:3732
@ RTE_FLOW_ERROR_TYPE_STATE
Definition: rte_flow.h:3747
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:3741
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:3736
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:3737
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:3745
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:3742
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:3740
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:3743
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:3746
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:3738
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:3735
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:3734
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:3744
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:3739
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1349
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:668
__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_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:837
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1625
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1691
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:1870
__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:1300
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1173
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1570
__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:1823
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1132
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1715
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:1807
__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_action_handle_destroy(uint16_t port_id, struct rte_flow_action_handle *handle, struct rte_flow_error *error)
rte_eth_hash_function
Definition: rte_flow.h:2879
@ RTE_ETH_HASH_FUNCTION_SIMPLE_XOR
Definition: rte_flow.h:2882
@ RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ
Definition: rte_flow.h:2888
@ RTE_ETH_HASH_FUNCTION_TOEPLITZ
Definition: rte_flow.h:2881
__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:136
@ RTE_FLOW_ITEM_TYPE_AH
Definition: rte_flow.h:489
@ RTE_FLOW_ITEM_TYPE_L2TPV3OIP
Definition: rte_flow.h:513
@ RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID
Definition: rte_flow.h:468
@ RTE_FLOW_ITEM_TYPE_IPV4
Definition: rte_flow.h:215
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT
Definition: rte_flow.h:387
@ RTE_FLOW_ITEM_TYPE_METER_COLOR
Definition: rte_flow.h:626
@ RTE_FLOW_ITEM_TYPE_ICMP
Definition: rte_flow.h:229
@ RTE_FLOW_ITEM_TYPE_META
Definition: rte_flow.h:419
@ RTE_FLOW_ITEM_TYPE_FUZZY
Definition: rte_flow.h:297
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS
Definition: rte_flow.h:373
@ RTE_FLOW_ITEM_TYPE_GRE_KEY
Definition: rte_flow.h:432
@ RTE_FLOW_ITEM_TYPE_VXLAN
Definition: rte_flow.h:257
@ RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:572
@ RTE_FLOW_ITEM_TYPE_INTEGRITY
Definition: rte_flow.h:554
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:345
@ RTE_FLOW_ITEM_TYPE_TCP
Definition: rte_flow.h:243
@ RTE_FLOW_ITEM_TYPE_IGMP
Definition: rte_flow.h:482
@ RTE_FLOW_ITEM_TYPE_ESP
Definition: rte_flow.h:331
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition: rte_flow.h:278
@ RTE_FLOW_ITEM_TYPE_PFCP
Definition: rte_flow.h:520
@ RTE_FLOW_ITEM_TYPE_HIGIG2
Definition: rte_flow.h:495
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:145
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH
Definition: rte_flow.h:395
@ RTE_FLOW_ITEM_TYPE_RAW
Definition: rte_flow.h:194
@ RTE_FLOW_ITEM_TYPE_GRE_OPTION
Definition: rte_flow.h:612
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition: rte_flow.h:271
@ RTE_FLOW_ITEM_TYPE_GENEVE_OPT
Definition: rte_flow.h:543
@ RTE_FLOW_ITEM_TYPE_IPV6_EXT
Definition: rte_flow.h:359
@ RTE_FLOW_ITEM_TYPE_ANY
Definition: rte_flow.h:173
@ RTE_FLOW_ITEM_TYPE_L2TPV2
Definition: rte_flow.h:598
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition: rte_flow.h:208
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition: rte_flow.h:324
@ RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4
Definition: rte_flow.h:352
@ RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT
Definition: rte_flow.h:536
@ RTE_FLOW_ITEM_TYPE_INVERT
Definition: rte_flow.h:165
@ RTE_FLOW_ITEM_TYPE_CONNTRACK
Definition: rte_flow.h:563
@ RTE_FLOW_ITEM_TYPE_MACSEC
Definition: rte_flow.h:619
@ RTE_FLOW_ITEM_TYPE_TAG
Definition: rte_flow.h:504
@ RTE_FLOW_ITEM_TYPE_GTP
Definition: rte_flow.h:306
@ RTE_FLOW_ITEM_TYPE_FLEX
Definition: rte_flow.h:591
@ RTE_FLOW_ITEM_TYPE_ICMP6
Definition: rte_flow.h:366
@ RTE_FLOW_ITEM_TYPE_PPPOED
Definition: rte_flow.h:459
@ RTE_FLOW_ITEM_TYPE_GRE
Definition: rte_flow.h:285
@ RTE_FLOW_ITEM_TYPE_VOID
Definition: rte_flow.h:155
@ RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:582
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:201
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition: rte_flow.h:403
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition: rte_flow.h:338
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:236
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition: rte_flow.h:264
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA
Definition: rte_flow.h:380
@ RTE_FLOW_ITEM_TYPE_MARK
Definition: rte_flow.h:410
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:222
@ RTE_FLOW_ITEM_TYPE_PPP
Definition: rte_flow.h:605
@ RTE_FLOW_ITEM_TYPE_NSH
Definition: rte_flow.h:475
@ RTE_FLOW_ITEM_TYPE_GTP_PSC
Definition: rte_flow.h:441
@ RTE_FLOW_ITEM_TYPE_SCTP
Definition: rte_flow.h:250
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition: rte_flow.h:187
@ RTE_FLOW_ITEM_TYPE_ECPRI
Definition: rte_flow.h:529
@ RTE_FLOW_ITEM_TYPE_PPPOES
Definition: rte_flow.h:450
@ RTE_FLOW_ITEM_TYPE_GTPC
Definition: rte_flow.h:315
__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:776
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1043
__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_flow_field_id
Definition: rte_flow.h:3497
@ RTE_FLOW_FIELD_IPV6_HOPLIMIT
Definition: rte_flow.h:3509
@ RTE_FLOW_FIELD_METER_COLOR
Definition: rte_flow.h:3530
@ RTE_FLOW_FIELD_GTP_TEID
Definition: rte_flow.h:3521
@ RTE_FLOW_FIELD_MAC_DST
Definition: rte_flow.h:3499
@ RTE_FLOW_FIELD_IPV6_DSCP
Definition: rte_flow.h:3508
@ RTE_FLOW_FIELD_MAC_SRC
Definition: rte_flow.h:3500
@ RTE_FLOW_FIELD_TCP_PORT_SRC
Definition: rte_flow.h:3512
@ RTE_FLOW_FIELD_META
Definition: rte_flow.h:3524
@ RTE_FLOW_FIELD_IPV4_SRC
Definition: rte_flow.h:3506
@ RTE_FLOW_FIELD_IPV4_DST
Definition: rte_flow.h:3507
@ RTE_FLOW_FIELD_TAG
Definition: rte_flow.h:3522
@ RTE_FLOW_FIELD_START
Definition: rte_flow.h:3498
@ RTE_FLOW_FIELD_UDP_PORT_SRC
Definition: rte_flow.h:3517
@ RTE_FLOW_FIELD_IPV6_SRC
Definition: rte_flow.h:3510
@ RTE_FLOW_FIELD_GTP_PSC_QFI
Definition: rte_flow.h:3529
@ RTE_FLOW_FIELD_IPV6_DST
Definition: rte_flow.h:3511
@ RTE_FLOW_FIELD_TCP_FLAGS
Definition: rte_flow.h:3516
@ RTE_FLOW_FIELD_VALUE
Definition: rte_flow.h:3526
@ RTE_FLOW_FIELD_UDP_PORT_DST
Definition: rte_flow.h:3518
@ RTE_FLOW_FIELD_IPV4_TTL
Definition: rte_flow.h:3505
@ RTE_FLOW_FIELD_MARK
Definition: rte_flow.h:3523
@ RTE_FLOW_FIELD_MAC_TYPE
Definition: rte_flow.h:3503
@ RTE_FLOW_FIELD_GENEVE_VNI
Definition: rte_flow.h:3520
@ RTE_FLOW_FIELD_IPV6_ECN
Definition: rte_flow.h:3528
@ RTE_FLOW_FIELD_IPV4_DSCP
Definition: rte_flow.h:3504
@ RTE_FLOW_FIELD_VXLAN_VNI
Definition: rte_flow.h:3519
@ RTE_FLOW_FIELD_POINTER
Definition: rte_flow.h:3525
@ RTE_FLOW_FIELD_VLAN_TYPE
Definition: rte_flow.h:3501
@ RTE_FLOW_FIELD_TCP_ACK_NUM
Definition: rte_flow.h:3515
@ RTE_FLOW_FIELD_TCP_SEQ_NUM
Definition: rte_flow.h:3514
@ RTE_FLOW_FIELD_IPV4_ECN
Definition: rte_flow.h:3527
@ RTE_FLOW_FIELD_TCP_PORT_DST
Definition: rte_flow.h:3513
@ RTE_FLOW_FIELD_VLAN_ID
Definition: rte_flow.h:3502
rte_color
Definition: rte_meter.h:35
@ RTE_COLORS
Definition: rte_meter.h:39
rte_be32_t u32
Definition: rte_ecpri.h:72
rte_be32_t spi
Definition: rte_esp.h:24
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
struct rte_ether_addr dst_addr
Definition: rte_ether.h:274
struct rte_flow_tcp_dir_param reply_dir
Definition: rte_flow.h:3439
struct rte_flow_tcp_dir_param original_dir
Definition: rte_flow.h:3437
enum rte_flow_conntrack_state state
Definition: rte_flow.h:3431
enum rte_color init_color
Definition: rte_flow.h:3611
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:3605
enum rte_flow_field_id field
Definition: rte_flow.h:3540
struct rte_flow_action_modify_data dst
Definition: rte_flow.h:3586
struct rte_flow_action_modify_data src
Definition: rte_flow.h:3587
enum rte_flow_modify_op operation
Definition: rte_flow.h:3585
struct rte_flow_item * definition
Definition: rte_flow.h:3144
const uint16_t * queue
Definition: rte_flow.h:2940
enum rte_eth_hash_function func
Definition: rte_flow.h:2909
const uint8_t * key
Definition: rte_flow.h:2939
uint32_t queue_num
Definition: rte_flow.h:2938
const struct rte_flow_action * actions
Definition: rte_flow.h:3720
uint32_t original
Definition: rte_flow.h:2960
uint32_t reserved
Definition: rte_flow.h:2961
struct rte_flow_item * definition
Definition: rte_flow.h:3110
const void * conf
Definition: rte_flow.h:3676
enum rte_flow_action_type type
Definition: rte_flow.h:3675
uint32_t group
Definition: rte_flow.h:89
uint32_t egress
Definition: rte_flow.h:98
uint32_t priority
Definition: rte_flow.h:90
uint32_t transfer
Definition: rte_flow.h:116
uint32_t reserved
Definition: rte_flow.h:117
uint32_t ingress
Definition: rte_flow.h:94
struct rte_flow_action * actions
Definition: rte_flow.h:3787
struct rte_flow_attr * attr
Definition: rte_flow.h:3779
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:3786
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:3782
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:3778
struct rte_flow_item * pattern
Definition: rte_flow.h:3783
struct rte_flow_action * actions
Definition: rte_flow.h:4229
uint8_t data[]
Definition: rte_flow.h:4230
struct rte_flow_attr attr
Definition: rte_flow.h:4227
struct rte_flow_item * items
Definition: rte_flow.h:4228
size_t size
Definition: rte_flow.h:4226
const char * message
Definition: rte_flow.h:3764
enum rte_flow_error_type type
Definition: rte_flow.h:3762
const void * cause
Definition: rte_flow.h:3763
uint32_t num
Definition: rte_flow.h:663
struct rte_ether_addr tha
Definition: rte_flow.h:1236
struct rte_ether_addr sha
Definition: rte_flow.h:1234
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1008
rte_be16_t inner_type
Definition: rte_flow.h:1013
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1010
struct rte_esp_hdr hdr
Definition: rte_flow.h:1168
uint32_t has_vlan
Definition: rte_flow.h:770
rte_be16_t type
Definition: rte_flow.h:766
uint32_t reserved
Definition: rte_flow.h:771
struct rte_ether_addr dst
Definition: rte_flow.h:764
struct rte_ether_addr src
Definition: rte_flow.h:765
struct rte_flow_item_flex_field next_protocol
Definition: rte_flow.h:2061
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2085
enum rte_flow_item_flex_tunnel_mode tunnel
Definition: rte_flow.h:2050
struct rte_flow_item_flex_link * input_link
Definition: rte_flow.h:2077
struct rte_flow_item_flex_field next_header
Definition: rte_flow.h:2056
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2067
enum rte_flow_item_flex_field_mode field_mode
Definition: rte_flow.h:2012
const uint8_t * pattern
Definition: rte_flow.h:1938
struct rte_flow_item_flex_handle * handle
Definition: rte_flow.h:1936
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1190
rte_be16_t protocol
Definition: rte_flow.h:1191
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1078
rte_be16_t protocol
Definition: rte_flow.h:1079
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1458
rte_be32_t teid
Definition: rte_flow.h:1152
rte_be16_t msg_len
Definition: rte_flow.h:1151
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1149
uint8_t msg_type
Definition: rte_flow.h:1150
struct rte_ether_addr sla
Definition: rte_flow.h:1394
struct rte_ether_addr tla
Definition: rte_flow.h:1419
struct rte_icmp_hdr hdr
Definition: rte_flow.h:896
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:832
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:853
uint32_t has_hip_ext
Definition: rte_flow.h:869
uint32_t has_frag_ext
Definition: rte_flow.h:859
uint32_t has_auth_ext
Definition: rte_flow.h:861
uint32_t has_dest_ext
Definition: rte_flow.h:865
uint32_t has_shim6_ext
Definition: rte_flow.h:871
uint32_t reserved
Definition: rte_flow.h:873
uint32_t has_esp_ext
Definition: rte_flow.h:863
uint32_t has_route_ext
Definition: rte_flow.h:857
uint32_t has_mobil_ext
Definition: rte_flow.h:867
uint32_t has_hop_ext
Definition: rte_flow.h:855
enum rte_color color
Definition: rte_flow.h:2096
uint8_t label_tc_s[3]
Definition: rte_flow.h:1057
uint8_t tni[3]
Definition: rte_flow.h:1037
rte_be16_t protocol
Definition: rte_flow.h:1036
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1035
uint8_t version_type
Definition: rte_flow.h:1478
rte_be16_t length
Definition: rte_flow.h:1481
rte_be16_t session_id
Definition: rte_flow.h:1480
const uint8_t * pattern
Definition: rte_flow.h:723
uint16_t length
Definition: rte_flow.h:722
uint32_t search
Definition: rte_flow.h:718
int32_t offset
Definition: rte_flow.h:720
uint32_t reserved
Definition: rte_flow.h:719
uint16_t limit
Definition: rte_flow.h:721
uint32_t relative
Definition: rte_flow.h:717
struct rte_sctp_hdr hdr
Definition: rte_flow.h:953
struct rte_tcp_hdr hdr
Definition: rte_flow.h:934
struct rte_udp_hdr hdr
Definition: rte_flow.h:915
rte_be16_t tci
Definition: rte_flow.h:806
rte_be16_t inner_type
Definition: rte_flow.h:807
uint32_t reserved
Definition: rte_flow.h:813
uint32_t has_more_vlan
Definition: rte_flow.h:812
uint8_t vni[3]
Definition: rte_flow.h:981
uint8_t rsvd0[3]
Definition: rte_flow.h:980
const void * spec
Definition: rte_flow.h:1914
const void * mask
Definition: rte_flow.h:1916
enum rte_flow_item_type type
Definition: rte_flow.h:1913
const void * last
Definition: rte_flow.h:1915
struct rte_flow_action_conntrack new_ct
Definition: rte_flow.h:3463
uint32_t postpone
Definition: rte_flow.h:5287
enum rte_flow_op_status status
Definition: rte_flow.h:5431
uint32_t nb_conn_tracks
Definition: rte_flow.h:4934
uint32_t nb_counters
Definition: rte_flow.h:4919
uint32_t nb_aging_objects
Definition: rte_flow.h:4924
uint32_t nb_meters
Definition: rte_flow.h:4929
uint32_t supported_flags
Definition: rte_flow.h:4860
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:4856
uint32_t max_nb_aging_objects
Definition: rte_flow.h:4846
uint32_t max_nb_queues
Definition: rte_flow.h:4836
uint32_t max_nb_meters
Definition: rte_flow.h:4851
uint32_t max_nb_counters
Definition: rte_flow.h:4841
uint32_t sec_since_last_hit
Definition: rte_flow.h:2811
uint32_t sec_since_last_hit_valid
Definition: rte_flow.h:2810
uint32_t reserved
Definition: rte_flow.h:2807
struct rte_flow_tunnel tunnel
Definition: rte_flow.h:4607
uint32_t close_initiated
Definition: rte_flow.h:3367
struct rte_flow_attr flow_attr
Definition: rte_flow.h:5200
uint32_t timeout_valid
Definition: rte_flow.h:2835
struct rte_flow_action_meter_mark meter_mark
Definition: rte_flow.h:3624
rte_be32_t src_addr
Definition: rte_ip.h:63
uint8_t src_addr[16]
Definition: rte_ip.h:540
struct rte_l2tpv2_common_hdr common
Definition: rte_l2tpv2.h:223
rte_be16_t flags_version
Definition: rte_l2tpv2.h:101
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:285
rte_be32_t vx_vni
Definition: rte_vxlan.h:35