DPDK 22.11.0-rc2
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_common.h>
21#include <rte_ether.h>
22#include <rte_icmp.h>
23#include <rte_ip.h>
24#include <rte_sctp.h>
25#include <rte_tcp.h>
26#include <rte_udp.h>
27#include <rte_vxlan.h>
28#include <rte_esp.h>
29#include <rte_higig.h>
30#include <rte_ecpri.h>
31#include <rte_bitops.h>
32#include <rte_mbuf_dyn.h>
33#include <rte_meter.h>
34#include <rte_gtp.h>
35#include <rte_l2tpv2.h>
36#include <rte_ppp.h>
37#include <rte_gre.h>
38#include <rte_macsec.h>
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44#define RTE_FLOW_LOG(level, ...) \
45 rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, "" __VA_ARGS__)
46
88 uint32_t group;
89 uint32_t priority;
93 uint32_t ingress:1;
97 uint32_t egress:1;
115 uint32_t transfer:1;
116 uint32_t reserved:29;
117};
118
145
155
165
173
187
194
201
208
215
222
229
236
243
250
257
264
271
278
285
297
306
315
324
331
338
345
352
359
366
373
380
387
395
403
410
419
432
441
450
459
468
475
482
489
495
504
513
520
529
536
543
554
563
572
582
591
598
605
612
619
626};
627
635 struct rte_higig2_hdr hdr;
636};
637
639#ifndef __cplusplus
641 .hdr = {
642 .ppt1 = {
643 .classification = 0xffff,
644 .vid = 0xfff,
645 },
646 },
647};
648#endif
649
662 uint32_t num;
663};
664
666#ifndef __cplusplus
668 .num = 0x00000000,
669};
670#endif
671
687 uint32_t id;
688};
689
691#ifndef __cplusplus
693 .id = 0xffffffff,
694};
695#endif
696
716 uint32_t relative:1;
717 uint32_t search:1;
718 uint32_t reserved:30;
719 int32_t offset;
720 uint16_t limit;
721 uint16_t length;
722 const uint8_t *pattern;
723};
724
726#ifndef __cplusplus
728 .relative = 1,
729 .search = 1,
730 .reserved = 0x3fffffff,
731 .offset = 0xffffffff,
732 .limit = 0xffff,
733 .length = 0xffff,
734 .pattern = NULL,
735};
736#endif
737
757 union {
758 struct {
759 /*
760 * These fields are retained for compatibility.
761 * Please switch to the new header field below.
762 */
766 };
767 struct rte_ether_hdr hdr;
768 };
769 uint32_t has_vlan:1;
770 uint32_t reserved:31;
771};
772
774#ifndef __cplusplus
776 .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
777 .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff",
778 .hdr.ether_type = RTE_BE16(0x0000),
779};
780#endif
781
799 union {
800 struct {
801 /*
802 * These fields are retained for compatibility.
803 * Please switch to the new header field below.
804 */
807 };
808 struct rte_vlan_hdr hdr;
809 };
811 uint32_t has_more_vlan:1;
812 uint32_t reserved:31;
813};
814
816#ifndef __cplusplus
818 .hdr.vlan_tci = RTE_BE16(0x0fff),
819 .hdr.eth_proto = RTE_BE16(0x0000),
820};
821#endif
822
832};
833
835#ifndef __cplusplus
837 .hdr = {
838 .src_addr = RTE_BE32(0xffffffff),
839 .dst_addr = RTE_BE32(0xffffffff),
840 },
841};
842#endif
843
854 uint32_t has_hop_ext:1;
856 uint32_t has_route_ext:1;
858 uint32_t has_frag_ext:1;
860 uint32_t has_auth_ext:1;
862 uint32_t has_esp_ext:1;
864 uint32_t has_dest_ext:1;
866 uint32_t has_mobil_ext:1;
868 uint32_t has_hip_ext:1;
870 uint32_t has_shim6_ext:1;
872 uint32_t reserved:23;
873};
874
876#ifndef __cplusplus
878 .hdr = {
879 .src_addr =
880 "\xff\xff\xff\xff\xff\xff\xff\xff"
881 "\xff\xff\xff\xff\xff\xff\xff\xff",
882 .dst_addr =
883 "\xff\xff\xff\xff\xff\xff\xff\xff"
884 "\xff\xff\xff\xff\xff\xff\xff\xff",
885 },
886};
887#endif
888
896};
897
899#ifndef __cplusplus
901 .hdr = {
902 .icmp_type = 0xff,
903 .icmp_code = 0xff,
904 },
905};
906#endif
907
915};
916
918#ifndef __cplusplus
920 .hdr = {
921 .src_port = RTE_BE16(0xffff),
922 .dst_port = RTE_BE16(0xffff),
923 },
924};
925#endif
926
934};
935
937#ifndef __cplusplus
939 .hdr = {
940 .src_port = RTE_BE16(0xffff),
941 .dst_port = RTE_BE16(0xffff),
942 },
943};
944#endif
945
953};
954
956#ifndef __cplusplus
958 .hdr = {
959 .src_port = RTE_BE16(0xffff),
960 .dst_port = RTE_BE16(0xffff),
961 },
962};
963#endif
964
972 union {
973 struct {
974 /*
975 * These fields are retained for compatibility.
976 * Please switch to the new header field below.
977 */
978 uint8_t flags;
979 uint8_t rsvd0[3];
980 uint8_t vni[3];
981 uint8_t rsvd1;
982 };
983 struct rte_vxlan_hdr hdr;
984 };
985};
986
988#ifndef __cplusplus
990 .hdr.vx_vni = RTE_BE32(0xffffff00), /* (0xffffff << 8) */
991};
992#endif
993
1010 uint8_t in_ecid_e;
1011 uint8_t ecid_e;
1013};
1014
1016#ifndef __cplusplus
1018 .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
1019};
1020#endif
1021
1036 uint8_t tni[3];
1037 uint8_t flow_id;
1038};
1039
1041#ifndef __cplusplus
1043 .tni = "\xff\xff\xff",
1044};
1045#endif
1046
1056 uint8_t label_tc_s[3];
1057 uint8_t ttl;
1058};
1059
1061#ifndef __cplusplus
1063 .label_tc_s = "\xff\xff\xf0",
1064};
1065#endif
1066
1079};
1080
1082#ifndef __cplusplus
1084 .protocol = RTE_BE16(0xffff),
1085};
1086#endif
1087
1094 struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
1095 struct rte_gre_hdr_opt_key key;
1096 struct rte_gre_hdr_opt_sequence sequence;
1097};
1098
1105 struct rte_macsec_hdr macsec_hdr;
1106};
1107
1126 uint32_t thresh;
1127};
1128
1130#ifndef __cplusplus
1132 .thresh = 0xffffffff,
1133};
1134#endif
1135
1149 uint8_t msg_type;
1152};
1153
1155#ifndef __cplusplus
1157 .teid = RTE_BE32(0xffffffff),
1158};
1159#endif
1160
1168};
1169
1171#ifndef __cplusplus
1173 .hdr = {
1174 .spi = RTE_BE32(0xffffffff),
1175 },
1176};
1177#endif
1178
1191 uint8_t vni[3];
1192 uint8_t rsvd1;
1193};
1194
1196#ifndef __cplusplus
1198 .vni = "\xff\xff\xff",
1199};
1200#endif
1201
1208 uint8_t flags;
1209 uint8_t rsvd0[2];
1210 uint8_t protocol;
1211 uint8_t vni[3];
1212 uint8_t rsvd1;
1213};
1214
1216#ifndef __cplusplus
1218 .vni = "\xff\xff\xff",
1219};
1220#endif
1221
1230 uint8_t hln;
1231 uint8_t pln;
1237};
1238
1240#ifndef __cplusplus
1241static const struct rte_flow_item_arp_eth_ipv4
1243 .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1244 .spa = RTE_BE32(0xffffffff),
1245 .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1246 .tpa = RTE_BE32(0xffffffff),
1247};
1248#endif
1249
1261 uint8_t next_hdr;
1262};
1263
1265#ifndef __cplusplus
1266static const
1268 .next_hdr = 0xff,
1269};
1270#endif
1271
1283 struct rte_ipv6_fragment_ext hdr;
1284};
1285
1292 uint8_t type;
1293 uint8_t code;
1294 uint16_t checksum;
1295};
1296
1298#ifndef __cplusplus
1300 .type = 0xff,
1301 .code = 0xff,
1302};
1303#endif
1304
1311 uint8_t type;
1312 uint8_t code;
1315 uint8_t target_addr[16];
1316};
1317
1319#ifndef __cplusplus
1320static const
1322 .target_addr =
1323 "\xff\xff\xff\xff\xff\xff\xff\xff"
1324 "\xff\xff\xff\xff\xff\xff\xff\xff",
1325};
1326#endif
1327
1334 uint8_t type;
1335 uint8_t code;
1342 uint8_t target_addr[16];
1343};
1344
1346#ifndef __cplusplus
1347static const
1349 .target_addr =
1350 "\xff\xff\xff\xff\xff\xff\xff\xff"
1351 "\xff\xff\xff\xff\xff\xff\xff\xff",
1352};
1353#endif
1354
1367 uint8_t type;
1368 uint8_t length;
1369};
1370
1372#ifndef __cplusplus
1373static const struct rte_flow_item_icmp6_nd_opt
1375 .type = 0xff,
1376};
1377#endif
1378
1391 uint8_t type;
1392 uint8_t length;
1394};
1395
1397#ifndef __cplusplus
1398static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1400 .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1401};
1402#endif
1403
1416 uint8_t type;
1417 uint8_t length;
1419};
1420
1422#ifndef __cplusplus
1423static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1425 .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1426};
1427#endif
1428
1441 uint32_t data;
1442};
1443
1445#ifndef __cplusplus
1447 .data = UINT32_MAX,
1448};
1449#endif
1450
1458};
1459
1461#ifndef __cplusplus
1462static const struct rte_flow_item_gtp_psc
1464 .hdr.qfi = 0x3f,
1465};
1466#endif
1467
1478 uint8_t code;
1481};
1482
1497};
1498
1500#ifndef __cplusplus
1501static const struct rte_flow_item_pppoe_proto_id
1503 .proto_id = RTE_BE16(0xffff),
1504};
1505#endif
1506
1516 uint32_t data;
1517 uint8_t index;
1518};
1519
1521#ifndef __cplusplus
1523 .data = 0xffffffff,
1524 .index = 0xff,
1525};
1526#endif
1527
1535};
1536
1538#ifndef __cplusplus
1540 .session_id = RTE_BE32(UINT32_MAX),
1541};
1542#endif
1543
1544
1564 uint32_t id;
1565};
1566
1568#ifndef __cplusplus
1570 .id = 0xffffffff,
1571};
1572#endif
1573
1584 uint32_t version:2;
1585 uint32_t oam_pkt:1;
1586 uint32_t reserved:1;
1587 uint32_t ttl:6;
1588 uint32_t length:6;
1589 uint32_t reserved1:4;
1590 uint32_t mdtype:4;
1591 uint32_t next_proto:8;
1592 uint32_t spi:24;
1593 uint32_t sindex:8;
1594};
1595
1597#ifndef __cplusplus
1599 .mdtype = 0xf,
1600 .next_proto = 0xff,
1601 .spi = 0xffffff,
1602 .sindex = 0xff,
1603};
1604#endif
1605
1616 uint32_t type:8;
1617 uint32_t max_resp_time:8;
1618 uint32_t checksum:16;
1619 uint32_t group_addr;
1620};
1621
1623#ifndef __cplusplus
1625 .group_addr = 0xffffffff,
1626};
1627#endif
1628
1639 uint32_t next_hdr:8;
1640 uint32_t payload_len:8;
1641 uint32_t reserved:16;
1642 uint32_t spi;
1643 uint32_t seq_num;
1644};
1645
1647#ifndef __cplusplus
1649 .spi = 0xffffffff,
1650};
1651#endif
1652
1662 uint8_t s_field;
1663 uint8_t msg_type;
1664 rte_be16_t msg_len;
1665 rte_be64_t seid;
1666};
1667
1669#ifndef __cplusplus
1671 .s_field = 0x01,
1672 .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
1673};
1674#endif
1675
1685 struct rte_ecpri_combined_msg_hdr hdr;
1686};
1687
1689#ifndef __cplusplus
1691 .hdr = {
1692 .common = {
1693 .u32 = 0x0,
1694 },
1695 },
1696};
1697#endif
1698
1705 rte_be16_t option_class;
1706 uint8_t option_type;
1707 uint8_t option_len;
1708 uint32_t *data;
1709};
1710
1712#ifndef __cplusplus
1713static const struct rte_flow_item_geneve_opt
1715 .option_type = 0xff,
1716};
1717#endif
1718
1731 uint32_t level;
1733 union {
1734 __extension__
1735 struct {
1737 uint64_t packet_ok:1;
1739 uint64_t l2_ok:1;
1741 uint64_t l3_ok:1;
1743 uint64_t l4_ok:1;
1745 uint64_t l2_crc_ok:1;
1747 uint64_t ipv4_csum_ok:1;
1749 uint64_t l4_csum_ok:1;
1751 uint64_t l3_len_ok:1;
1752 uint64_t reserved:56;
1753 };
1754 uint64_t value;
1755 };
1756};
1757
1758#ifndef __cplusplus
1759static const struct rte_flow_item_integrity
1760rte_flow_item_integrity_mask = {
1761 .level = 0,
1762 .value = 0,
1763};
1764#endif
1765
1769#define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0)
1773#define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1)
1778#define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2)
1783#define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3)
1788#define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4)
1789
1801 uint32_t flags;
1802};
1803
1805#ifndef __cplusplus
1807 .flags = 0xffffffff,
1808};
1809#endif
1810
1817 uint16_t port_id;
1818};
1819
1821#ifndef __cplusplus
1823 .port_id = 0xffff,
1824};
1825#endif
1826
1836 struct rte_l2tpv2_combined_msg_hdr hdr;
1837};
1838
1840#ifndef __cplusplus
1842 /*
1843 * flags and version bit mask
1844 * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1845 * T L x x S x O P x x x x V V V V
1846 */
1847 .hdr = {
1848 .common = {
1849 .flags_version = RTE_BE16(0xcb0f),
1850 },
1851 },
1852};
1853#endif
1854
1864 struct rte_ppp_hdr hdr;
1865};
1866
1868#ifndef __cplusplus
1870 .hdr = {
1871 .addr = 0xff,
1872 .ctrl = 0xff,
1873 .proto_id = RTE_BE16(0xffff),
1874 }
1875};
1876#endif
1877
1913 const void *spec;
1914 const void *last;
1915 const void *mask;
1916};
1917
1935 struct rte_flow_item_flex_handle *handle;
1936 uint32_t length;
1937 const uint8_t *pattern;
1938};
1970};
1971
2001};
2002
2008__extension__
2012 uint32_t field_size;
2013 int32_t field_base;
2014 uint32_t offset_base;
2015 uint32_t offset_mask;
2017 uint32_t field_id:16;
2018 uint32_t reserved:16;
2019};
2020
2036 uint32_t next;
2037};
2038
2068 uint32_t nb_samples;
2078 uint32_t nb_inputs;
2086 uint32_t nb_outputs;
2087};
2088
2096};
2097
2099#ifndef __cplusplus
2101 .color = RTE_COLORS,
2102};
2103#endif
2104
2139
2147
2155
2164
2176
2188
2195
2204
2215
2224
2236
2248
2259
2267
2275
2286
2294
2302
2310
2318
2326
2334
2342
2351
2359
2368
2375
2382
2395
2408
2421
2434
2448
2462
2473
2483
2493
2506
2519
2536
2553
2570
2587
2600
2610
2623
2636
2649
2657
2668
2679
2687
2696
2704
2711
2719
2727
2738};
2739
2751 uint32_t id;
2752};
2753
2767 uint32_t group;
2768};
2769
2776 uint16_t index;
2777};
2778
2793 uint32_t timeout:24;
2794 uint32_t reserved:8;
2796 void *context;
2797};
2798
2806 uint32_t reserved:6;
2807 uint32_t aged:1;
2811};
2812
2833 uint32_t reserved:6;
2834 uint32_t timeout_valid:1;
2835 uint32_t timeout:24;
2837 uint32_t touch:1;
2838};
2839
2858 uint32_t id;
2859};
2860
2867 uint32_t reset:1;
2868 uint32_t hits_set:1;
2869 uint32_t bytes_set:1;
2870 uint32_t reserved:29;
2871 uint64_t hits;
2872 uint64_t bytes;
2873};
2874
2879 RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2888 RTE_ETH_HASH_FUNCTION_MAX,
2889};
2890
2934 uint32_t level;
2935 uint64_t types;
2936 uint32_t key_len;
2937 uint32_t queue_num;
2938 const uint8_t *key;
2939 const uint16_t *queue;
2940};
2941
2959 uint32_t original:1;
2960 uint32_t reserved:31;
2961 uint32_t id;
2962};
2963
2976 uint32_t original:1;
2977 uint32_t reserved:31;
2978 uint32_t id;
2979};
2980
2990 uint32_t mtr_id;
2991};
2992
3025};
3026
3035};
3036
3045};
3046
3054 uint8_t vlan_pcp;
3055};
3056
3065};
3066
3075};
3076
3110};
3111
3144};
3145
3166 uint8_t *data;
3167 uint8_t *preserve;
3168 size_t size;
3169};
3170
3187 uint8_t *data;
3188 size_t size;
3189};
3190
3203 rte_be32_t ipv4_addr;
3204};
3205
3218 uint8_t ipv6_addr[16];
3219};
3220
3233 rte_be16_t port;
3234};
3235
3242 uint8_t ttl_value;
3243};
3244
3251 uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
3252};
3253
3264 uint32_t data;
3265 uint32_t mask;
3266 uint8_t index;
3267};
3268
3289 uint32_t data;
3290 uint32_t mask;
3291};
3292
3301 uint8_t dscp;
3302};
3303
3321struct rte_flow_action_handle;
3322
3339};
3340
3351};
3352
3364 uint32_t scale:4;
3368 uint32_t last_ack_seen:1;
3373 uint32_t data_unacked:1;
3378 uint32_t sent_end;
3383 uint32_t reply_end;
3385 uint32_t max_win;
3387 uint32_t max_ack;
3388};
3389
3402 uint16_t peer_port;
3415 uint32_t enable:1;
3419 uint32_t selective_ack:1;
3426 uint32_t last_direction:1;
3428 uint32_t liberal_mode:1;
3440 uint16_t last_window;
3441 enum rte_flow_conntrack_tcp_last_index last_index;
3443 uint32_t last_seq;
3445 uint32_t last_ack;
3450 uint32_t last_end;
3451};
3452
3464 uint32_t direction:1;
3466 uint32_t state:1;
3468 uint32_t reserved:30;
3469};
3470
3482};
3483
3490 uint16_t port_id;
3491};
3492
3530};
3531
3541 union {
3542 struct {
3544 uint32_t level;
3546 uint32_t offset;
3547 };
3554 uint8_t value[16];
3560 void *pvalue;
3561 };
3562};
3563
3571};
3572
3587 uint32_t width;
3588};
3589
3602
3604 struct rte_flow_meter_profile *profile;
3606 struct rte_flow_meter_policy *policy;
3613};
3614
3625 uint32_t profile_valid:1;
3627 uint32_t policy_valid:1;
3633 uint32_t state_valid:1;
3635 uint32_t reserved:27;
3636};
3637
3638/* Mbuf dynamic field offset for metadata. */
3639extern int32_t rte_flow_dynf_metadata_offs;
3640
3641/* Mbuf dynamic field flag mask for metadata. */
3642extern uint64_t rte_flow_dynf_metadata_mask;
3643
3644/* Mbuf dynamic field pointer for metadata. */
3645#define RTE_FLOW_DYNF_METADATA(m) \
3646 RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
3647
3648/* Mbuf dynamic flags for metadata. */
3649#define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
3650#define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
3651
3652__rte_experimental
3653static inline uint32_t
3654rte_flow_dynf_metadata_get(struct rte_mbuf *m)
3655{
3656 return *RTE_FLOW_DYNF_METADATA(m);
3657}
3658
3659__rte_experimental
3660static inline void
3661rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
3662{
3663 *RTE_FLOW_DYNF_METADATA(m) = v;
3664}
3665
3675 const void *conf;
3676};
3677
3684struct rte_flow;
3685
3691struct rte_flow_meter_profile;
3692
3698struct rte_flow_meter_policy;
3699
3717 uint32_t ratio;
3720};
3721
3747};
3748
3762 const void *cause;
3763 const char *message;
3764};
3765
3776 union {
3777 const struct rte_flow_attr *attr_ro;
3779 };
3780 union {
3783 };
3784 union {
3787 };
3788};
3789
3802
3814
3826
3838
3851
3864
3877
3891
3905
3919
3933};
3934
3954__rte_experimental
3955int
3956rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow,
3957 FILE *file, struct rte_flow_error *error);
3958
3965__rte_experimental
3966static inline int
3968{
3969 return !!rte_flow_dynf_metadata_mask;
3970}
3971
3982__rte_experimental
3983int
3985
4038int
4039rte_flow_validate(uint16_t port_id,
4040 const struct rte_flow_attr *attr,
4041 const struct rte_flow_item pattern[],
4042 const struct rte_flow_action actions[],
4043 struct rte_flow_error *error);
4044
4065struct rte_flow *
4066rte_flow_create(uint16_t port_id,
4067 const struct rte_flow_attr *attr,
4068 const struct rte_flow_item pattern[],
4069 const struct rte_flow_action actions[],
4070 struct rte_flow_error *error);
4071
4092int
4093rte_flow_destroy(uint16_t port_id,
4094 struct rte_flow *flow,
4095 struct rte_flow_error *error);
4096
4113int
4114rte_flow_flush(uint16_t port_id,
4115 struct rte_flow_error *error);
4116
4141int
4142rte_flow_query(uint16_t port_id,
4143 struct rte_flow *flow,
4144 const struct rte_flow_action *action,
4145 void *data,
4146 struct rte_flow_error *error);
4147
4193int
4194rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
4195
4213int
4215 int code,
4216 enum rte_flow_error_type type,
4217 const void *cause,
4218 const char *message);
4219
4225 size_t size;
4229 uint8_t data[];
4230};
4231
4258__rte_deprecated
4259size_t
4260rte_flow_copy(struct rte_flow_desc *fd, size_t len,
4261 const struct rte_flow_attr *attr,
4262 const struct rte_flow_item *items,
4263 const struct rte_flow_action *actions);
4264
4305__rte_experimental
4306int
4308 void *dst,
4309 size_t size,
4310 const void *src,
4311 struct rte_flow_error *error);
4312
4341__rte_experimental
4342int
4343rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
4344 uint32_t nb_contexts, struct rte_flow_error *error);
4345
4385__rte_experimental
4386int
4387rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts,
4388 uint32_t nb_contexts, struct rte_flow_error *error);
4389
4401 uint32_t ingress:1;
4403 uint32_t egress:1;
4408 uint32_t transfer:1;
4409};
4410
4438__rte_experimental
4439struct rte_flow_action_handle *
4441 const struct rte_flow_indir_action_conf *conf,
4442 const struct rte_flow_action *action,
4443 struct rte_flow_error *error);
4444
4467__rte_experimental
4468int
4470 struct rte_flow_action_handle *handle,
4471 struct rte_flow_error *error);
4472
4506__rte_experimental
4507int
4509 struct rte_flow_action_handle *handle,
4510 const void *update,
4511 struct rte_flow_error *error);
4512
4538__rte_experimental
4539int
4541 const struct rte_flow_action_handle *handle,
4542 void *data, struct rte_flow_error *error);
4543
4544/* Tunnel has a type and the key information. */
4545struct rte_flow_tunnel {
4550 enum rte_flow_item_type type;
4551 uint64_t tun_id;
4554 union {
4555 struct {
4558 } ipv4;
4559 struct {
4560 uint8_t src_addr[16];
4561 uint8_t dst_addr[16];
4562 } ipv6;
4563 };
4564 rte_be16_t tp_src;
4565 rte_be16_t tp_dst;
4566 uint16_t tun_flags;
4568 bool is_ipv6;
4574 uint8_t tos;
4575 uint8_t ttl;
4576 uint32_t label;
4577};
4578
4582#define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0)
4583
4587#define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1)
4588
4592#define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2)
4593
4604 uint64_t flags;
4605 uint32_t group_id;
4606 struct rte_flow_tunnel tunnel;
4607};
4608
4632__rte_experimental
4633int
4635 struct rte_flow_tunnel *tunnel,
4636 struct rte_flow_action **actions,
4637 uint32_t *num_of_actions,
4638 struct rte_flow_error *error);
4639
4663__rte_experimental
4664int
4665rte_flow_tunnel_match(uint16_t port_id,
4666 struct rte_flow_tunnel *tunnel,
4667 struct rte_flow_item **items,
4668 uint32_t *num_of_items,
4669 struct rte_flow_error *error);
4670
4691__rte_experimental
4692int
4694 struct rte_mbuf *m,
4695 struct rte_flow_restore_info *info,
4696 struct rte_flow_error *error);
4697
4714__rte_experimental
4715int
4717 struct rte_flow_action *actions,
4718 uint32_t num_of_actions,
4719 struct rte_flow_error *error);
4720
4737__rte_experimental
4738int
4740 struct rte_flow_item *items,
4741 uint32_t num_of_items,
4742 struct rte_flow_error *error);
4743
4769int
4770rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
4771 struct rte_flow_error *error);
4772
4791__rte_experimental
4792struct rte_flow_item_flex_handle *
4794 const struct rte_flow_item_flex_conf *conf,
4795 struct rte_flow_error *error);
4796
4811__rte_experimental
4812int
4814 const struct rte_flow_item_flex_handle *handle,
4815 struct rte_flow_error *error);
4816
4821#define RTE_FLOW_PORT_FLAG_STRICT_QUEUE RTE_BIT32(0)
4822
4860};
4861
4874 uint32_t max_size;
4875};
4876
4898__rte_experimental
4899int
4900rte_flow_info_get(uint16_t port_id,
4901 struct rte_flow_port_info *port_info,
4902 struct rte_flow_queue_info *queue_info,
4903 struct rte_flow_error *error);
4904
4918 uint32_t nb_counters;
4928 uint32_t nb_meters;
4937 uint32_t flags;
4938};
4939
4952 uint32_t size;
4953};
4954
4986__rte_experimental
4987int
4988rte_flow_configure(uint16_t port_id,
4989 const struct rte_flow_port_attr *port_attr,
4990 uint16_t nb_queue,
4991 const struct rte_flow_queue_attr *queue_attr[],
4992 struct rte_flow_error *error);
4993
4998struct rte_flow_pattern_template;
4999
5006__extension__
5021 uint32_t ingress:1;
5023 uint32_t egress:1;
5025 uint32_t transfer:1;
5026};
5027
5055__rte_experimental
5056struct rte_flow_pattern_template *
5058 const struct rte_flow_pattern_template_attr *template_attr,
5059 const struct rte_flow_item pattern[],
5060 struct rte_flow_error *error);
5061
5082__rte_experimental
5083int
5085 struct rte_flow_pattern_template *pattern_template,
5086 struct rte_flow_error *error);
5087
5092struct rte_flow_actions_template;
5093
5100__extension__
5107 uint32_t ingress:1;
5109 uint32_t egress:1;
5111 uint32_t transfer:1;
5112};
5113
5149__rte_experimental
5150struct rte_flow_actions_template *
5152 const struct rte_flow_actions_template_attr *template_attr,
5153 const struct rte_flow_action actions[],
5154 const struct rte_flow_action masks[],
5155 struct rte_flow_error *error);
5156
5177__rte_experimental
5178int
5180 struct rte_flow_actions_template *actions_template,
5181 struct rte_flow_error *error);
5182
5187struct rte_flow_template_table;
5188
5203 uint32_t nb_flows;
5204};
5205
5238__rte_experimental
5239struct rte_flow_template_table *
5241 const struct rte_flow_template_table_attr *table_attr,
5242 struct rte_flow_pattern_template *pattern_templates[],
5243 uint8_t nb_pattern_templates,
5244 struct rte_flow_actions_template *actions_templates[],
5245 uint8_t nb_actions_templates,
5246 struct rte_flow_error *error);
5247
5268__rte_experimental
5269int
5271 struct rte_flow_template_table *template_table,
5272 struct rte_flow_error *error);
5273
5280__extension__
5286 uint32_t postpone:1;
5287};
5288
5325__rte_experimental
5326struct rte_flow *
5327rte_flow_async_create(uint16_t port_id,
5328 uint32_t queue_id,
5329 const struct rte_flow_op_attr *op_attr,
5330 struct rte_flow_template_table *template_table,
5331 const struct rte_flow_item pattern[],
5332 uint8_t pattern_template_index,
5333 const struct rte_flow_action actions[],
5334 uint8_t actions_template_index,
5335 void *user_data,
5336 struct rte_flow_error *error);
5337
5367__rte_experimental
5368int
5369rte_flow_async_destroy(uint16_t port_id,
5370 uint32_t queue_id,
5371 const struct rte_flow_op_attr *op_attr,
5372 struct rte_flow *flow,
5373 void *user_data,
5374 struct rte_flow_error *error);
5375
5396__rte_experimental
5397int
5398rte_flow_push(uint16_t port_id,
5399 uint32_t queue_id,
5400 struct rte_flow_error *error);
5401
5417};
5418
5425__extension__
5435};
5436
5462__rte_experimental
5463int
5464rte_flow_pull(uint16_t port_id,
5465 uint32_t queue_id,
5466 struct rte_flow_op_result res[],
5467 uint16_t n_res,
5468 struct rte_flow_error *error);
5469
5496__rte_experimental
5497struct rte_flow_action_handle *
5499 uint32_t queue_id,
5500 const struct rte_flow_op_attr *op_attr,
5501 const struct rte_flow_indir_action_conf *indir_action_conf,
5502 const struct rte_flow_action *action,
5503 void *user_data,
5504 struct rte_flow_error *error);
5505
5531__rte_experimental
5532int
5534 uint32_t queue_id,
5535 const struct rte_flow_op_attr *op_attr,
5536 struct rte_flow_action_handle *action_handle,
5537 void *user_data,
5538 struct rte_flow_error *error);
5539
5570__rte_experimental
5571int
5573 uint32_t queue_id,
5574 const struct rte_flow_op_attr *op_attr,
5575 struct rte_flow_action_handle *action_handle,
5576 const void *update,
5577 void *user_data,
5578 struct rte_flow_error *error);
5579
5614__rte_experimental
5615int
5617 uint32_t queue_id,
5618 const struct rte_flow_op_attr *op_attr,
5619 const struct rte_flow_action_handle *action_handle,
5620 void *data,
5621 void *user_data,
5622 struct rte_flow_error *error);
5623
5624#ifdef __cplusplus
5625}
5626#endif
5627
5628#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:692
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:3567
@ RTE_FLOW_MODIFY_SET
Definition: rte_flow.h:3568
@ RTE_FLOW_MODIFY_SUB
Definition: rte_flow.h:3570
@ RTE_FLOW_MODIFY_ADD
Definition: rte_flow.h:3569
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:1083
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:3967
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1321
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1217
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1446
__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:1399
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:900
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1463
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:989
__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:1502
rte_flow_op_status
Definition: rte_flow.h:5408
@ RTE_FLOW_OP_SUCCESS
Definition: rte_flow.h:5412
@ RTE_FLOW_OP_ERROR
Definition: rte_flow.h:5416
rte_flow_conntrack_tcp_last_index
Definition: rte_flow.h:3344
@ RTE_FLOW_CONNTRACK_FLAG_ACK
Definition: rte_flow.h:3349
@ RTE_FLOW_CONNTRACK_FLAG_SYNACK
Definition: rte_flow.h:3347
@ RTE_FLOW_CONNTRACK_FLAG_FIN
Definition: rte_flow.h:3348
@ RTE_FLOW_CONNTRACK_FLAG_SYN
Definition: rte_flow.h:3346
@ RTE_FLOW_CONNTRACK_FLAG_RST
Definition: rte_flow.h:3350
@ RTE_FLOW_CONNTRACK_FLAG_NONE
Definition: rte_flow.h:3345
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1197
rte_flow_conntrack_state
Definition: rte_flow.h:3326
@ RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
Definition: rte_flow.h:3330
@ RTE_FLOW_CONNTRACK_STATE_SYN_RECV
Definition: rte_flow.h:3328
@ RTE_FLOW_CONNTRACK_STATE_LAST_ACK
Definition: rte_flow.h:3336
@ RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
Definition: rte_flow.h:3332
@ RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
Definition: rte_flow.h:3338
@ RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
Definition: rte_flow.h:3334
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:1017
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:1267
__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:1670
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1539
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1522
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1424
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:727
static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
Definition: rte_flow.h:2100
__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:817
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:938
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:3795
@ RTE_FLOW_CONV_OP_ACTION_NAME_PTR
Definition: rte_flow.h:3932
@ RTE_FLOW_CONV_OP_ITEM
Definition: rte_flow.h:3825
@ RTE_FLOW_CONV_OP_ACTIONS
Definition: rte_flow.h:3863
@ RTE_FLOW_CONV_OP_NONE
Definition: rte_flow.h:3801
@ RTE_FLOW_CONV_OP_RULE
Definition: rte_flow.h:3876
@ RTE_FLOW_CONV_OP_ATTR
Definition: rte_flow.h:3813
@ RTE_FLOW_CONV_OP_ACTION_NAME
Definition: rte_flow.h:3904
@ RTE_FLOW_CONV_OP_ITEM_NAME_PTR
Definition: rte_flow.h:3918
@ RTE_FLOW_CONV_OP_PATTERN
Definition: rte_flow.h:3850
@ RTE_FLOW_CONV_OP_ITEM_NAME
Definition: rte_flow.h:3890
@ RTE_FLOW_CONV_OP_ACTION
Definition: rte_flow.h:3837
__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:2131
@ RTE_FLOW_ACTION_TYPE_OF_POP_VLAN
Definition: rte_flow.h:2293
@ RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
Definition: rte_flow.h:2341
@ RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP
Definition: rte_flow.h:2358
@ RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
Definition: rte_flow.h:2535
@ RTE_FLOW_ACTION_TYPE_PASSTHRU
Definition: rte_flow.h:2154
@ RTE_FLOW_ACTION_TYPE_COUNT
Definition: rte_flow.h:2214
@ RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
Definition: rte_flow.h:2737
@ RTE_FLOW_ACTION_TYPE_SET_TP_DST
Definition: rte_flow.h:2461
@ RTE_FLOW_ACTION_TYPE_INDIRECT
Definition: rte_flow.h:2686
@ RTE_FLOW_ACTION_TYPE_RAW_ENCAP
Definition: rte_flow.h:2374
@ RTE_FLOW_ACTION_TYPE_VF
Definition: rte_flow.h:2247
@ RTE_FLOW_ACTION_TYPE_SET_META
Definition: rte_flow.h:2609
@ RTE_FLOW_ACTION_TYPE_MAC_SWAP
Definition: rte_flow.h:2472
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
Definition: rte_flow.h:2420
@ RTE_FLOW_ACTION_TYPE_METER_MARK
Definition: rte_flow.h:2726
@ RTE_FLOW_ACTION_TYPE_OF_POP_MPLS
Definition: rte_flow.h:2325
@ RTE_FLOW_ACTION_TYPE_RAW_DECAP
Definition: rte_flow.h:2381
@ RTE_FLOW_ACTION_TYPE_VOID
Definition: rte_flow.h:2146
@ RTE_FLOW_ACTION_TYPE_AGE
Definition: rte_flow.h:2648
@ RTE_FLOW_ACTION_TYPE_RSS
Definition: rte_flow.h:2223
@ RTE_FLOW_ACTION_TYPE_MARK
Definition: rte_flow.h:2175
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
Definition: rte_flow.h:2394
@ RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL
Definition: rte_flow.h:2285
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
Definition: rte_flow.h:2407
@ RTE_FLOW_ACTION_TYPE_QUEUE
Definition: rte_flow.h:2194
@ RTE_FLOW_ACTION_TYPE_END
Definition: rte_flow.h:2138
@ RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
Definition: rte_flow.h:2622
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN
Definition: rte_flow.h:2301
@ RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:2710
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
Definition: rte_flow.h:2635
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
Definition: rte_flow.h:2586
@ RTE_FLOW_ACTION_TYPE_DEC_TTL
Definition: rte_flow.h:2482
@ RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
Definition: rte_flow.h:2350
@ RTE_FLOW_ACTION_TYPE_SET_TP_SRC
Definition: rte_flow.h:2447
@ RTE_FLOW_ACTION_TYPE_PORT_ID
Definition: rte_flow.h:2258
@ RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:2718
@ RTE_FLOW_ACTION_TYPE_NVGRE_DECAP
Definition: rte_flow.h:2367
@ RTE_FLOW_ACTION_TYPE_SECURITY
Definition: rte_flow.h:2274
@ RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS
Definition: rte_flow.h:2333
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID
Definition: rte_flow.h:2309
@ RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
Definition: rte_flow.h:2569
@ RTE_FLOW_ACTION_TYPE_FLAG
Definition: rte_flow.h:2187
@ RTE_FLOW_ACTION_TYPE_CONNTRACK
Definition: rte_flow.h:2695
@ RTE_FLOW_ACTION_TYPE_SET_MAC_DST
Definition: rte_flow.h:2518
@ RTE_FLOW_ACTION_TYPE_METER_COLOR
Definition: rte_flow.h:2703
@ RTE_FLOW_ACTION_TYPE_METER
Definition: rte_flow.h:2266
@ RTE_FLOW_ACTION_TYPE_PF
Definition: rte_flow.h:2235
@ RTE_FLOW_ACTION_TYPE_SET_TAG
Definition: rte_flow.h:2599
@ RTE_FLOW_ACTION_TYPE_SHARED
Definition: rte_flow.h:2667
@ RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
Definition: rte_flow.h:2433
@ RTE_FLOW_ACTION_TYPE_SET_TTL
Definition: rte_flow.h:2492
@ RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
Definition: rte_flow.h:2678
@ RTE_FLOW_ACTION_TYPE_DROP
Definition: rte_flow.h:2203
@ RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP
Definition: rte_flow.h:2317
@ RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
Definition: rte_flow.h:2505
@ RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
Definition: rte_flow.h:2552
@ RTE_FLOW_ACTION_TYPE_SAMPLE
Definition: rte_flow.h:2656
@ RTE_FLOW_ACTION_TYPE_JUMP
Definition: rte_flow.h:2163
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1156
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:1062
static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
Definition: rte_flow.h:1841
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:957
__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:877
__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:1648
rte_flow_item_flex_tunnel_mode
Definition: rte_flow.h:1975
@ FLEX_TUNNEL_MODE_OUTER
Definition: rte_flow.h:1987
@ FLEX_TUNNEL_MODE_MULTI
Definition: rte_flow.h:1996
@ FLEX_TUNNEL_MODE_INNER
Definition: rte_flow.h:1991
@ FLEX_TUNNEL_MODE_SINGLE
Definition: rte_flow.h:1983
@ FLEX_TUNNEL_MODE_TUNNEL
Definition: rte_flow.h:2000
__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:640
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1374
__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:1942
@ FIELD_MODE_FIXED
Definition: rte_flow.h:1953
@ FIELD_MODE_DUMMY
Definition: rte_flow.h:1948
@ FIELD_MODE_OFFSET
Definition: rte_flow.h:1960
@ FIELD_MODE_BITMASK
Definition: rte_flow.h:1969
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1242
__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:919
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1598
rte_flow_error_type
Definition: rte_flow.h:3728
@ RTE_FLOW_ERROR_TYPE_UNSPECIFIED
Definition: rte_flow.h:3730
@ RTE_FLOW_ERROR_TYPE_ATTR_GROUP
Definition: rte_flow.h:3732
@ RTE_FLOW_ERROR_TYPE_NONE
Definition: rte_flow.h:3729
@ RTE_FLOW_ERROR_TYPE_HANDLE
Definition: rte_flow.h:3731
@ RTE_FLOW_ERROR_TYPE_STATE
Definition: rte_flow.h:3746
@ RTE_FLOW_ERROR_TYPE_ITEM_LAST
Definition: rte_flow.h:3740
@ RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
Definition: rte_flow.h:3735
@ RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
Definition: rte_flow.h:3736
@ RTE_FLOW_ERROR_TYPE_ACTION_CONF
Definition: rte_flow.h:3744
@ RTE_FLOW_ERROR_TYPE_ITEM_MASK
Definition: rte_flow.h:3741
@ RTE_FLOW_ERROR_TYPE_ITEM_SPEC
Definition: rte_flow.h:3739
@ RTE_FLOW_ERROR_TYPE_ITEM
Definition: rte_flow.h:3742
@ RTE_FLOW_ERROR_TYPE_ACTION
Definition: rte_flow.h:3745
@ RTE_FLOW_ERROR_TYPE_ATTR
Definition: rte_flow.h:3737
@ RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
Definition: rte_flow.h:3734
@ RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
Definition: rte_flow.h:3733
@ RTE_FLOW_ERROR_TYPE_ACTION_NUM
Definition: rte_flow.h:3743
@ RTE_FLOW_ERROR_TYPE_ITEM_NUM
Definition: rte_flow.h:3738
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1348
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:667
__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:836
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1624
static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
Definition: rte_flow.h:1690
static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
Definition: rte_flow.h:1869
__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:1299
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1172
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1569
__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:1822
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1131
static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
Definition: rte_flow.h:1714
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:1806
__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:2878
@ RTE_ETH_HASH_FUNCTION_SIMPLE_XOR
Definition: rte_flow.h:2881
@ RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ
Definition: rte_flow.h:2887
@ RTE_ETH_HASH_FUNCTION_TOEPLITZ
Definition: rte_flow.h:2880
__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:135
@ RTE_FLOW_ITEM_TYPE_AH
Definition: rte_flow.h:488
@ RTE_FLOW_ITEM_TYPE_L2TPV3OIP
Definition: rte_flow.h:512
@ RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID
Definition: rte_flow.h:467
@ RTE_FLOW_ITEM_TYPE_IPV4
Definition: rte_flow.h:214
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT
Definition: rte_flow.h:386
@ RTE_FLOW_ITEM_TYPE_METER_COLOR
Definition: rte_flow.h:625
@ RTE_FLOW_ITEM_TYPE_ICMP
Definition: rte_flow.h:228
@ RTE_FLOW_ITEM_TYPE_META
Definition: rte_flow.h:418
@ RTE_FLOW_ITEM_TYPE_FUZZY
Definition: rte_flow.h:296
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS
Definition: rte_flow.h:372
@ RTE_FLOW_ITEM_TYPE_GRE_KEY
Definition: rte_flow.h:431
@ RTE_FLOW_ITEM_TYPE_VXLAN
Definition: rte_flow.h:256
@ RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR
Definition: rte_flow.h:571
@ RTE_FLOW_ITEM_TYPE_INTEGRITY
Definition: rte_flow.h:553
@ RTE_FLOW_ITEM_TYPE_VXLAN_GPE
Definition: rte_flow.h:344
@ RTE_FLOW_ITEM_TYPE_TCP
Definition: rte_flow.h:242
@ RTE_FLOW_ITEM_TYPE_IGMP
Definition: rte_flow.h:481
@ RTE_FLOW_ITEM_TYPE_ESP
Definition: rte_flow.h:330
@ RTE_FLOW_ITEM_TYPE_MPLS
Definition: rte_flow.h:277
@ RTE_FLOW_ITEM_TYPE_PFCP
Definition: rte_flow.h:519
@ RTE_FLOW_ITEM_TYPE_HIGIG2
Definition: rte_flow.h:494
@ RTE_FLOW_ITEM_TYPE_END
Definition: rte_flow.h:144
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH
Definition: rte_flow.h:394
@ RTE_FLOW_ITEM_TYPE_RAW
Definition: rte_flow.h:193
@ RTE_FLOW_ITEM_TYPE_GRE_OPTION
Definition: rte_flow.h:611
@ RTE_FLOW_ITEM_TYPE_NVGRE
Definition: rte_flow.h:270
@ RTE_FLOW_ITEM_TYPE_GENEVE_OPT
Definition: rte_flow.h:542
@ RTE_FLOW_ITEM_TYPE_IPV6_EXT
Definition: rte_flow.h:358
@ RTE_FLOW_ITEM_TYPE_ANY
Definition: rte_flow.h:172
@ RTE_FLOW_ITEM_TYPE_L2TPV2
Definition: rte_flow.h:597
@ RTE_FLOW_ITEM_TYPE_VLAN
Definition: rte_flow.h:207
@ RTE_FLOW_ITEM_TYPE_GTPU
Definition: rte_flow.h:323
@ RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4
Definition: rte_flow.h:351
@ RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT
Definition: rte_flow.h:535
@ RTE_FLOW_ITEM_TYPE_INVERT
Definition: rte_flow.h:164
@ RTE_FLOW_ITEM_TYPE_CONNTRACK
Definition: rte_flow.h:562
@ RTE_FLOW_ITEM_TYPE_MACSEC
Definition: rte_flow.h:618
@ RTE_FLOW_ITEM_TYPE_TAG
Definition: rte_flow.h:503
@ RTE_FLOW_ITEM_TYPE_GTP
Definition: rte_flow.h:305
@ RTE_FLOW_ITEM_TYPE_FLEX
Definition: rte_flow.h:590
@ RTE_FLOW_ITEM_TYPE_ICMP6
Definition: rte_flow.h:365
@ RTE_FLOW_ITEM_TYPE_PPPOED
Definition: rte_flow.h:458
@ RTE_FLOW_ITEM_TYPE_GRE
Definition: rte_flow.h:284
@ RTE_FLOW_ITEM_TYPE_VOID
Definition: rte_flow.h:154
@ RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
Definition: rte_flow.h:581
@ RTE_FLOW_ITEM_TYPE_ETH
Definition: rte_flow.h:200
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH
Definition: rte_flow.h:402
@ RTE_FLOW_ITEM_TYPE_GENEVE
Definition: rte_flow.h:337
@ RTE_FLOW_ITEM_TYPE_UDP
Definition: rte_flow.h:235
@ RTE_FLOW_ITEM_TYPE_E_TAG
Definition: rte_flow.h:263
@ RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA
Definition: rte_flow.h:379
@ RTE_FLOW_ITEM_TYPE_MARK
Definition: rte_flow.h:409
@ RTE_FLOW_ITEM_TYPE_IPV6
Definition: rte_flow.h:221
@ RTE_FLOW_ITEM_TYPE_PPP
Definition: rte_flow.h:604
@ RTE_FLOW_ITEM_TYPE_NSH
Definition: rte_flow.h:474
@ RTE_FLOW_ITEM_TYPE_GTP_PSC
Definition: rte_flow.h:440
@ RTE_FLOW_ITEM_TYPE_SCTP
Definition: rte_flow.h:249
@ RTE_FLOW_ITEM_TYPE_PORT_ID
Definition: rte_flow.h:186
@ RTE_FLOW_ITEM_TYPE_ECPRI
Definition: rte_flow.h:528
@ RTE_FLOW_ITEM_TYPE_PPPOES
Definition: rte_flow.h:449
@ RTE_FLOW_ITEM_TYPE_GTPC
Definition: rte_flow.h:314
__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:775
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:1042
__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:3496
@ RTE_FLOW_FIELD_IPV6_HOPLIMIT
Definition: rte_flow.h:3508
@ RTE_FLOW_FIELD_METER_COLOR
Definition: rte_flow.h:3529
@ RTE_FLOW_FIELD_GTP_TEID
Definition: rte_flow.h:3520
@ RTE_FLOW_FIELD_MAC_DST
Definition: rte_flow.h:3498
@ RTE_FLOW_FIELD_IPV6_DSCP
Definition: rte_flow.h:3507
@ RTE_FLOW_FIELD_MAC_SRC
Definition: rte_flow.h:3499
@ RTE_FLOW_FIELD_TCP_PORT_SRC
Definition: rte_flow.h:3511
@ RTE_FLOW_FIELD_META
Definition: rte_flow.h:3523
@ RTE_FLOW_FIELD_IPV4_SRC
Definition: rte_flow.h:3505
@ RTE_FLOW_FIELD_IPV4_DST
Definition: rte_flow.h:3506
@ RTE_FLOW_FIELD_TAG
Definition: rte_flow.h:3521
@ RTE_FLOW_FIELD_START
Definition: rte_flow.h:3497
@ RTE_FLOW_FIELD_UDP_PORT_SRC
Definition: rte_flow.h:3516
@ RTE_FLOW_FIELD_IPV6_SRC
Definition: rte_flow.h:3509
@ RTE_FLOW_FIELD_GTP_PSC_QFI
Definition: rte_flow.h:3528
@ RTE_FLOW_FIELD_IPV6_DST
Definition: rte_flow.h:3510
@ RTE_FLOW_FIELD_TCP_FLAGS
Definition: rte_flow.h:3515
@ RTE_FLOW_FIELD_VALUE
Definition: rte_flow.h:3525
@ RTE_FLOW_FIELD_UDP_PORT_DST
Definition: rte_flow.h:3517
@ RTE_FLOW_FIELD_IPV4_TTL
Definition: rte_flow.h:3504
@ RTE_FLOW_FIELD_MARK
Definition: rte_flow.h:3522
@ RTE_FLOW_FIELD_MAC_TYPE
Definition: rte_flow.h:3502
@ RTE_FLOW_FIELD_GENEVE_VNI
Definition: rte_flow.h:3519
@ RTE_FLOW_FIELD_IPV6_ECN
Definition: rte_flow.h:3527
@ RTE_FLOW_FIELD_IPV4_DSCP
Definition: rte_flow.h:3503
@ RTE_FLOW_FIELD_VXLAN_VNI
Definition: rte_flow.h:3518
@ RTE_FLOW_FIELD_POINTER
Definition: rte_flow.h:3524
@ RTE_FLOW_FIELD_VLAN_TYPE
Definition: rte_flow.h:3500
@ RTE_FLOW_FIELD_TCP_ACK_NUM
Definition: rte_flow.h:3514
@ RTE_FLOW_FIELD_TCP_SEQ_NUM
Definition: rte_flow.h:3513
@ RTE_FLOW_FIELD_IPV4_ECN
Definition: rte_flow.h:3526
@ RTE_FLOW_FIELD_TCP_PORT_DST
Definition: rte_flow.h:3512
@ RTE_FLOW_FIELD_VLAN_ID
Definition: rte_flow.h:3501
rte_color
Definition: rte_meter.h:36
@ RTE_COLORS
Definition: rte_meter.h:40
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:3438
struct rte_flow_tcp_dir_param original_dir
Definition: rte_flow.h:3436
enum rte_flow_conntrack_state state
Definition: rte_flow.h:3430
enum rte_color init_color
Definition: rte_flow.h:3610
struct rte_flow_meter_profile * profile
Definition: rte_flow.h:3604
enum rte_flow_field_id field
Definition: rte_flow.h:3539
struct rte_flow_action_modify_data dst
Definition: rte_flow.h:3585
struct rte_flow_action_modify_data src
Definition: rte_flow.h:3586
enum rte_flow_modify_op operation
Definition: rte_flow.h:3584
struct rte_flow_item * definition
Definition: rte_flow.h:3143
const uint16_t * queue
Definition: rte_flow.h:2939
enum rte_eth_hash_function func
Definition: rte_flow.h:2908
const uint8_t * key
Definition: rte_flow.h:2938
uint32_t queue_num
Definition: rte_flow.h:2937
const struct rte_flow_action * actions
Definition: rte_flow.h:3719
uint32_t original
Definition: rte_flow.h:2959
uint32_t reserved
Definition: rte_flow.h:2960
struct rte_flow_item * definition
Definition: rte_flow.h:3109
const void * conf
Definition: rte_flow.h:3675
enum rte_flow_action_type type
Definition: rte_flow.h:3674
uint32_t group
Definition: rte_flow.h:88
uint32_t egress
Definition: rte_flow.h:97
uint32_t priority
Definition: rte_flow.h:89
uint32_t transfer
Definition: rte_flow.h:115
uint32_t reserved
Definition: rte_flow.h:116
uint32_t ingress
Definition: rte_flow.h:93
struct rte_flow_action * actions
Definition: rte_flow.h:3786
struct rte_flow_attr * attr
Definition: rte_flow.h:3778
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:3785
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:3781
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:3777
struct rte_flow_item * pattern
Definition: rte_flow.h:3782
struct rte_flow_action * actions
Definition: rte_flow.h:4228
uint8_t data[]
Definition: rte_flow.h:4229
struct rte_flow_attr attr
Definition: rte_flow.h:4226
struct rte_flow_item * items
Definition: rte_flow.h:4227
size_t size
Definition: rte_flow.h:4225
const char * message
Definition: rte_flow.h:3763
enum rte_flow_error_type type
Definition: rte_flow.h:3761
const void * cause
Definition: rte_flow.h:3762
uint32_t num
Definition: rte_flow.h:662
struct rte_ether_addr tha
Definition: rte_flow.h:1235
struct rte_ether_addr sha
Definition: rte_flow.h:1233
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:1007
rte_be16_t inner_type
Definition: rte_flow.h:1012
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:1009
struct rte_esp_hdr hdr
Definition: rte_flow.h:1167
uint32_t has_vlan
Definition: rte_flow.h:769
rte_be16_t type
Definition: rte_flow.h:765
uint32_t reserved
Definition: rte_flow.h:770
struct rte_ether_addr dst
Definition: rte_flow.h:763
struct rte_ether_addr src
Definition: rte_flow.h:764
struct rte_flow_item_flex_field next_protocol
Definition: rte_flow.h:2060
struct rte_flow_item_flex_link * output_link
Definition: rte_flow.h:2084
enum rte_flow_item_flex_tunnel_mode tunnel
Definition: rte_flow.h:2049
struct rte_flow_item_flex_link * input_link
Definition: rte_flow.h:2076
struct rte_flow_item_flex_field next_header
Definition: rte_flow.h:2055
struct rte_flow_item_flex_field * sample_data
Definition: rte_flow.h:2066
enum rte_flow_item_flex_field_mode field_mode
Definition: rte_flow.h:2011
const uint8_t * pattern
Definition: rte_flow.h:1937
struct rte_flow_item_flex_handle * handle
Definition: rte_flow.h:1935
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1189
rte_be16_t protocol
Definition: rte_flow.h:1190
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:1077
rte_be16_t protocol
Definition: rte_flow.h:1078
struct rte_gtp_psc_generic_hdr hdr
Definition: rte_flow.h:1457
rte_be32_t teid
Definition: rte_flow.h:1151
rte_be16_t msg_len
Definition: rte_flow.h:1150
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1148
uint8_t msg_type
Definition: rte_flow.h:1149
struct rte_ether_addr sla
Definition: rte_flow.h:1393
struct rte_ether_addr tla
Definition: rte_flow.h:1418
struct rte_icmp_hdr hdr
Definition: rte_flow.h:895
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:831
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:852
uint32_t has_hip_ext
Definition: rte_flow.h:868
uint32_t has_frag_ext
Definition: rte_flow.h:858
uint32_t has_auth_ext
Definition: rte_flow.h:860
uint32_t has_dest_ext
Definition: rte_flow.h:864
uint32_t has_shim6_ext
Definition: rte_flow.h:870
uint32_t reserved
Definition: rte_flow.h:872
uint32_t has_esp_ext
Definition: rte_flow.h:862
uint32_t has_route_ext
Definition: rte_flow.h:856
uint32_t has_mobil_ext
Definition: rte_flow.h:866
uint32_t has_hop_ext
Definition: rte_flow.h:854
enum rte_color color
Definition: rte_flow.h:2095
uint8_t label_tc_s[3]
Definition: rte_flow.h:1056
uint8_t tni[3]
Definition: rte_flow.h:1036
rte_be16_t protocol
Definition: rte_flow.h:1035
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:1034
uint8_t version_type
Definition: rte_flow.h:1477
rte_be16_t length
Definition: rte_flow.h:1480
rte_be16_t session_id
Definition: rte_flow.h:1479
const uint8_t * pattern
Definition: rte_flow.h:722
uint16_t length
Definition: rte_flow.h:721
uint32_t search
Definition: rte_flow.h:717
int32_t offset
Definition: rte_flow.h:719
uint32_t reserved
Definition: rte_flow.h:718
uint16_t limit
Definition: rte_flow.h:720
uint32_t relative
Definition: rte_flow.h:716
struct rte_sctp_hdr hdr
Definition: rte_flow.h:952
struct rte_tcp_hdr hdr
Definition: rte_flow.h:933
struct rte_udp_hdr hdr
Definition: rte_flow.h:914
rte_be16_t tci
Definition: rte_flow.h:805
rte_be16_t inner_type
Definition: rte_flow.h:806
uint32_t reserved
Definition: rte_flow.h:812
uint32_t has_more_vlan
Definition: rte_flow.h:811
uint8_t vni[3]
Definition: rte_flow.h:980
uint8_t rsvd0[3]
Definition: rte_flow.h:979
const void * spec
Definition: rte_flow.h:1913
const void * mask
Definition: rte_flow.h:1915
enum rte_flow_item_type type
Definition: rte_flow.h:1912
const void * last
Definition: rte_flow.h:1914
struct rte_flow_action_conntrack new_ct
Definition: rte_flow.h:3462
uint32_t postpone
Definition: rte_flow.h:5286
enum rte_flow_op_status status
Definition: rte_flow.h:5430
uint32_t nb_conn_tracks
Definition: rte_flow.h:4933
uint32_t nb_counters
Definition: rte_flow.h:4918
uint32_t nb_aging_objects
Definition: rte_flow.h:4923
uint32_t nb_meters
Definition: rte_flow.h:4928
uint32_t supported_flags
Definition: rte_flow.h:4859
uint32_t max_nb_conn_tracks
Definition: rte_flow.h:4855
uint32_t max_nb_aging_objects
Definition: rte_flow.h:4845
uint32_t max_nb_queues
Definition: rte_flow.h:4835
uint32_t max_nb_meters
Definition: rte_flow.h:4850
uint32_t max_nb_counters
Definition: rte_flow.h:4840
uint32_t sec_since_last_hit
Definition: rte_flow.h:2810
uint32_t sec_since_last_hit_valid
Definition: rte_flow.h:2809
uint32_t reserved
Definition: rte_flow.h:2806
struct rte_flow_tunnel tunnel
Definition: rte_flow.h:4606
uint32_t close_initiated
Definition: rte_flow.h:3366
struct rte_flow_attr flow_attr
Definition: rte_flow.h:5199
uint32_t timeout_valid
Definition: rte_flow.h:2834
struct rte_flow_action_meter_mark meter_mark
Definition: rte_flow.h:3623
rte_be32_t src_addr
Definition: rte_ip.h:62
uint8_t src_addr[16]
Definition: rte_ip.h:539
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