DPDK  19.11.10
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_arp.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_byteorder.h>
29 #include <rte_esp.h>
30 #include <rte_higig.h>
31 #include <rte_mbuf.h>
32 #include <rte_mbuf_dyn.h>
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
75 struct rte_flow_attr {
76  uint32_t group;
77  uint32_t priority;
78  uint32_t ingress:1;
79  uint32_t egress:1;
98  uint32_t transfer:1;
99  uint32_t reserved:29;
100 };
101 
128 
138 
148 
156 
166 
176 
186 
196 
203 
210 
217 
224 
231 
238 
245 
252 
259 
266 
273 
280 
287 
294 
306 
315 
324 
333 
340 
347 
354 
361 
368 
375 
382 
389 
396 
404 
412 
419 
428 
441 
450 
459 
468 
477 
484 
491 
498 
504 
513 };
514 
522  struct rte_higig2_hdr hdr;
523 };
524 
526 #ifndef __cplusplus
528  .hdr = {
529  .ppt1 = {
530  .classification = 0xffff,
531  .vid = 0xfff,
532  },
533  },
534 };
535 #endif
536 
549  uint32_t num;
550 };
551 
553 #ifndef __cplusplus
555  .num = 0x00000000,
556 };
557 #endif
558 
578  uint32_t id;
579 };
580 
582 #ifndef __cplusplus
584  .id = 0x00000000,
585 };
586 #endif
587 
609  uint32_t index;
610 };
611 
613 #ifndef __cplusplus
615  .index = 0x00000000,
616 };
617 #endif
618 
635  uint32_t id;
636 };
637 
639 #ifndef __cplusplus
641  .id = 0xffffffff,
642 };
643 #endif
644 
664  uint32_t relative:1;
665  uint32_t search:1;
666  uint32_t reserved:30;
667  int32_t offset;
668  uint16_t limit;
669  uint16_t length;
670  const uint8_t *pattern;
671 };
672 
674 #ifndef __cplusplus
676  .relative = 1,
677  .search = 1,
678  .reserved = 0x3fffffff,
679  .offset = 0xffffffff,
680  .limit = 0xffff,
681  .length = 0xffff,
682  .pattern = NULL,
683 };
684 #endif
685 
698  struct rte_ether_addr dst;
699  struct rte_ether_addr src;
701 };
702 
704 #ifndef __cplusplus
706  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
707  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
708  .type = RTE_BE16(0x0000),
709 };
710 #endif
711 
724 };
725 
727 #ifndef __cplusplus
729  .tci = RTE_BE16(0x0fff),
730  .inner_type = RTE_BE16(0x0000),
731 };
732 #endif
733 
742  struct rte_ipv4_hdr hdr;
743 };
744 
746 #ifndef __cplusplus
748  .hdr = {
749  .src_addr = RTE_BE32(0xffffffff),
750  .dst_addr = RTE_BE32(0xffffffff),
751  },
752 };
753 #endif
754 
764  struct rte_ipv6_hdr hdr;
765 };
766 
768 #ifndef __cplusplus
770  .hdr = {
771  .src_addr =
772  "\xff\xff\xff\xff\xff\xff\xff\xff"
773  "\xff\xff\xff\xff\xff\xff\xff\xff",
774  .dst_addr =
775  "\xff\xff\xff\xff\xff\xff\xff\xff"
776  "\xff\xff\xff\xff\xff\xff\xff\xff",
777  },
778 };
779 #endif
780 
787  struct rte_icmp_hdr hdr;
788 };
789 
791 #ifndef __cplusplus
793  .hdr = {
794  .icmp_type = 0xff,
795  .icmp_code = 0xff,
796  },
797 };
798 #endif
799 
806  struct rte_udp_hdr hdr;
807 };
808 
810 #ifndef __cplusplus
812  .hdr = {
813  .src_port = RTE_BE16(0xffff),
814  .dst_port = RTE_BE16(0xffff),
815  },
816 };
817 #endif
818 
825  struct rte_tcp_hdr hdr;
826 };
827 
829 #ifndef __cplusplus
831  .hdr = {
832  .src_port = RTE_BE16(0xffff),
833  .dst_port = RTE_BE16(0xffff),
834  },
835 };
836 #endif
837 
844  struct rte_sctp_hdr hdr;
845 };
846 
848 #ifndef __cplusplus
850  .hdr = {
851  .src_port = RTE_BE16(0xffff),
852  .dst_port = RTE_BE16(0xffff),
853  },
854 };
855 #endif
856 
863  uint8_t flags;
864  uint8_t rsvd0[3];
865  uint8_t vni[3];
866  uint8_t rsvd1;
867 };
868 
870 #ifndef __cplusplus
872  .vni = "\xff\xff\xff",
873 };
874 #endif
875 
892  uint8_t in_ecid_e;
893  uint8_t ecid_e;
895 };
896 
898 #ifndef __cplusplus
900  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
901 };
902 #endif
903 
918  uint8_t tni[3];
919  uint8_t flow_id;
920 };
921 
923 #ifndef __cplusplus
925  .tni = "\xff\xff\xff",
926 };
927 #endif
928 
938  uint8_t label_tc_s[3];
939  uint8_t ttl;
940 };
941 
943 #ifndef __cplusplus
945  .label_tc_s = "\xff\xff\xf0",
946 };
947 #endif
948 
961 };
962 
964 #ifndef __cplusplus
966  .protocol = RTE_BE16(0xffff),
967 };
968 #endif
969 
988  uint32_t thresh;
989 };
990 
992 #ifndef __cplusplus
994  .thresh = 0xffffffff,
995 };
996 #endif
997 
1011  uint8_t msg_type;
1014 };
1015 
1017 #ifndef __cplusplus
1019  .teid = RTE_BE32(0xffffffff),
1020 };
1021 #endif
1022 
1029  struct rte_esp_hdr hdr;
1030 };
1031 
1033 #ifndef __cplusplus
1035  .hdr = {
1036  .spi = RTE_BE32(0xffffffff),
1037  },
1038 };
1039 #endif
1040 
1053  uint8_t vni[3];
1054  uint8_t rsvd1;
1055 };
1056 
1058 #ifndef __cplusplus
1060  .vni = "\xff\xff\xff",
1061 };
1062 #endif
1063 
1070  uint8_t flags;
1071  uint8_t rsvd0[2];
1072  uint8_t protocol;
1073  uint8_t vni[3];
1074  uint8_t rsvd1;
1075 };
1076 
1078 #ifndef __cplusplus
1080  .vni = "\xff\xff\xff",
1081 };
1082 #endif
1083 
1092  uint8_t hln;
1093  uint8_t pln;
1095  struct rte_ether_addr sha;
1097  struct rte_ether_addr tha;
1099 };
1100 
1102 #ifndef __cplusplus
1103 static const struct rte_flow_item_arp_eth_ipv4
1105  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1106  .spa = RTE_BE32(0xffffffff),
1107  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1108  .tpa = RTE_BE32(0xffffffff),
1109 };
1110 #endif
1111 
1123  uint8_t next_hdr;
1124 };
1125 
1127 #ifndef __cplusplus
1128 static const
1130  .next_hdr = 0xff,
1131 };
1132 #endif
1133 
1140  uint8_t type;
1141  uint8_t code;
1142  uint16_t checksum;
1143 };
1144 
1146 #ifndef __cplusplus
1148  .type = 0xff,
1149  .code = 0xff,
1150 };
1151 #endif
1152 
1159  uint8_t type;
1160  uint8_t code;
1163  uint8_t target_addr[16];
1164 };
1165 
1167 #ifndef __cplusplus
1168 static const
1170  .target_addr =
1171  "\xff\xff\xff\xff\xff\xff\xff\xff"
1172  "\xff\xff\xff\xff\xff\xff\xff\xff",
1173 };
1174 #endif
1175 
1182  uint8_t type;
1183  uint8_t code;
1190  uint8_t target_addr[16];
1191 };
1192 
1194 #ifndef __cplusplus
1195 static const
1197  .target_addr =
1198  "\xff\xff\xff\xff\xff\xff\xff\xff"
1199  "\xff\xff\xff\xff\xff\xff\xff\xff",
1200 };
1201 #endif
1202 
1215  uint8_t type;
1216  uint8_t length;
1217 };
1218 
1220 #ifndef __cplusplus
1221 static const struct rte_flow_item_icmp6_nd_opt
1223  .type = 0xff,
1224 };
1225 #endif
1226 
1239  uint8_t type;
1240  uint8_t length;
1241  struct rte_ether_addr sla;
1242 };
1243 
1245 #ifndef __cplusplus
1246 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1248  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1249 };
1250 #endif
1251 
1264  uint8_t type;
1265  uint8_t length;
1266  struct rte_ether_addr tla;
1267 };
1268 
1270 #ifndef __cplusplus
1271 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1273  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1274 };
1275 #endif
1276 
1288  uint32_t data;
1289 };
1290 
1292 #ifndef __cplusplus
1294  .data = UINT32_MAX,
1295 };
1296 #endif
1297 
1304  uint8_t pdu_type;
1305  uint8_t qfi;
1306 };
1307 
1309 #ifndef __cplusplus
1310 static const struct rte_flow_item_gtp_psc
1312  .qfi = 0xff,
1313 };
1314 #endif
1315 
1325  uint8_t version_type;
1326  uint8_t code;
1329 };
1330 
1345 };
1346 
1348 #ifndef __cplusplus
1349 static const struct rte_flow_item_pppoe_proto_id
1351  .proto_id = RTE_BE16(0xffff),
1352 };
1353 #endif
1354 
1364  uint32_t data;
1365  uint8_t index;
1366 };
1367 
1369 #ifndef __cplusplus
1371  .data = 0xffffffff,
1372  .index = 0xff,
1373 };
1374 #endif
1375 
1395  uint32_t id;
1396 };
1397 
1399 #ifndef __cplusplus
1401  .id = 0xffffffff,
1402 };
1403 #endif
1404 
1415  uint32_t version:2;
1416  uint32_t oam_pkt:1;
1417  uint32_t reserved:1;
1418  uint32_t ttl:6;
1419  uint32_t length:6;
1420  uint32_t reserved1:4;
1421  uint32_t mdtype:4;
1422  uint32_t next_proto:8;
1423  uint32_t spi:24;
1424  uint32_t sindex:8;
1425 };
1426 
1428 #ifndef __cplusplus
1430  .mdtype = 0xf,
1431  .next_proto = 0xff,
1432  .spi = 0xffffff,
1433  .sindex = 0xff,
1434 };
1435 #endif
1436 
1447  uint32_t type:8;
1448  uint32_t max_resp_time:8;
1449  uint32_t checksum:16;
1450  uint32_t group_addr;
1451 };
1452 
1454 #ifndef __cplusplus
1456  .group_addr = 0xffffffff,
1457 };
1458 #endif
1459 
1470  uint32_t next_hdr:8;
1471  uint32_t payload_len:8;
1472  uint32_t reserved:16;
1473  uint32_t spi;
1474  uint32_t seq_num;
1475 };
1476 
1478 #ifndef __cplusplus
1480  .spi = 0xffffffff,
1481 };
1482 #endif
1483 
1519  const void *spec;
1520  const void *last;
1521  const void *mask;
1522 };
1523 
1558 
1566 
1574 
1583 
1591 
1599 
1606 
1615 
1625 
1634 
1642 
1650 
1658 
1665 
1673 
1681 
1689 
1697 
1705 
1713 
1722 
1731 
1739 
1747 
1755 
1763 
1771 
1779 
1787 
1796 
1804 
1813 
1820 
1827 
1837 
1847 
1857 
1867 
1878 
1889 
1900 
1907 
1914 
1924 
1934 
1948 
1962 
1976 
1990 
2000 
2007 };
2008 
2020  uint32_t id;
2021 };
2022 
2036  uint32_t group;
2037 };
2038 
2045  uint16_t index;
2046 };
2047 
2048 
2075  uint32_t shared:1;
2076  uint32_t reserved:31;
2077  uint32_t id;
2078 };
2079 
2086  uint32_t reset:1;
2087  uint32_t hits_set:1;
2088  uint32_t bytes_set:1;
2089  uint32_t reserved:29;
2090  uint64_t hits;
2091  uint64_t bytes;
2092 };
2093 
2098  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2107  RTE_ETH_HASH_FUNCTION_MAX,
2108 };
2109 
2153  uint32_t level;
2154  uint64_t types;
2155  uint32_t key_len;
2156  uint32_t queue_num;
2157  const uint8_t *key;
2158  const uint16_t *queue;
2159 };
2160 
2174  uint32_t original:1;
2175  uint32_t reserved:31;
2176  uint32_t id;
2177 };
2178 
2188  uint32_t original:1;
2189  uint32_t reserved:31;
2190  uint32_t index;
2191 };
2192 
2201  uint32_t original:1;
2202  uint32_t reserved:31;
2203  uint32_t id;
2204 };
2205 
2215  uint32_t mtr_id;
2216 };
2217 
2245 };
2246 
2254  uint8_t mpls_ttl;
2255 };
2256 
2264  uint8_t nw_ttl;
2265 };
2266 
2275 };
2276 
2285 };
2286 
2294  uint8_t vlan_pcp;
2295 };
2296 
2305 };
2306 
2315 };
2316 
2350 };
2351 
2384 };
2385 
2406  uint8_t *data;
2407  uint8_t *preserve;
2408  size_t size;
2409 };
2410 
2427  uint8_t *data;
2428  size_t size;
2429 };
2430 
2443  rte_be32_t ipv4_addr;
2444 };
2445 
2458  uint8_t ipv6_addr[16];
2459 };
2460 
2473  rte_be16_t port;
2474 };
2475 
2482  uint8_t ttl_value;
2483 };
2484 
2491  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2492 };
2493 
2504  uint32_t data;
2505  uint32_t mask;
2506  uint8_t index;
2507 };
2508 
2529  uint32_t data;
2530  uint32_t mask;
2531 };
2532 
2533 /* Mbuf dynamic field offset for metadata. */
2534 extern int32_t rte_flow_dynf_metadata_offs;
2535 
2536 /* Mbuf dynamic field flag mask for metadata. */
2537 extern uint64_t rte_flow_dynf_metadata_mask;
2538 
2539 /* Mbuf dynamic field pointer for metadata. */
2540 #define RTE_FLOW_DYNF_METADATA(m) \
2541  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
2542 
2543 /* Mbuf dynamic flags for metadata. */
2544 #define PKT_RX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2545 #define PKT_TX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2546 
2547 __rte_experimental
2548 static inline uint32_t
2549 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
2550 {
2551  return *RTE_FLOW_DYNF_METADATA(m);
2552 }
2553 
2554 __rte_experimental
2555 static inline void
2556 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
2557 {
2558  *RTE_FLOW_DYNF_METADATA(m) = v;
2559 }
2560 
2570  const void *conf;
2571 };
2572 
2579 struct rte_flow;
2580 
2605 };
2606 
2620  const void *cause;
2621  const char *message;
2622 };
2623 
2634  union {
2635  const struct rte_flow_attr *attr_ro;
2637  };
2638  union {
2639  const struct rte_flow_item *pattern_ro;
2641  };
2642  union {
2643  const struct rte_flow_action *actions_ro;
2645  };
2646 };
2647 
2660 
2672 
2684 
2696 
2709 
2722 
2735 
2749 
2763 
2777 
2791 };
2792 
2799 __rte_experimental
2800 static inline int
2802 {
2803  return !!rte_flow_dynf_metadata_mask;
2804 }
2805 
2816 __rte_experimental
2817 int
2819 
2872 int
2873 rte_flow_validate(uint16_t port_id,
2874  const struct rte_flow_attr *attr,
2875  const struct rte_flow_item pattern[],
2876  const struct rte_flow_action actions[],
2877  struct rte_flow_error *error);
2878 
2899 struct rte_flow *
2900 rte_flow_create(uint16_t port_id,
2901  const struct rte_flow_attr *attr,
2902  const struct rte_flow_item pattern[],
2903  const struct rte_flow_action actions[],
2904  struct rte_flow_error *error);
2905 
2926 int
2927 rte_flow_destroy(uint16_t port_id,
2928  struct rte_flow *flow,
2929  struct rte_flow_error *error);
2930 
2947 int
2948 rte_flow_flush(uint16_t port_id,
2949  struct rte_flow_error *error);
2950 
2975 int
2976 rte_flow_query(uint16_t port_id,
2977  struct rte_flow *flow,
2978  const struct rte_flow_action *action,
2979  void *data,
2980  struct rte_flow_error *error);
2981 
3023 int
3024 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
3025 
3043 int
3044 rte_flow_error_set(struct rte_flow_error *error,
3045  int code,
3046  enum rte_flow_error_type type,
3047  const void *cause,
3048  const char *message);
3049 
3055  size_t size;
3056  struct rte_flow_attr attr;
3059  uint8_t data[];
3060 };
3061 
3088 __rte_deprecated
3089 size_t
3090 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
3091  const struct rte_flow_attr *attr,
3092  const struct rte_flow_item *items,
3093  const struct rte_flow_action *actions);
3094 
3135 __rte_experimental
3136 int
3138  void *dst,
3139  size_t size,
3140  const void *src,
3141  struct rte_flow_error *error);
3142 
3143 #ifdef __cplusplus
3144 }
3145 #endif
3146 
3147 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:99
static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1247
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:959
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1051
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)
struct rte_flow_action * actions
Definition: rte_flow.h:2644
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1196
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:769
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:889
rte_be16_t protocol
Definition: rte_flow.h:1052
uint32_t num
Definition: rte_flow.h:549
struct rte_flow_attr * attr
Definition: rte_flow.h:2636
uint32_t rte_be32_t
uint32_t original
Definition: rte_flow.h:2174
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)
uint32_t group
Definition: rte_flow.h:76
struct rte_flow_item * definition
Definition: rte_flow.h:2349
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:965
rte_be16_t msg_len
Definition: rte_flow.h:1012
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1018
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:792
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1059
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2635
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:849
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
static const struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:554
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1293
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1034
struct rte_icmp_hdr hdr
Definition: rte_flow.h:787
__rte_deprecated size_t rte_flow_copy(struct rte_flow_desc *fd, size_t len, const struct rte_flow_attr *attr, const struct rte_flow_item *items, const struct rte_flow_action *actions)
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1010
struct rte_ether_addr tla
Definition: rte_flow.h:1266
rte_be16_t protocol
Definition: rte_flow.h:917
uint32_t reserved
Definition: rte_flow.h:666
rte_be32_t spi
Definition: rte_esp.h:24
static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1147
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:3058
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:742
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1400
rte_be32_t src_addr
Definition: rte_ip.h:42
static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1222
static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:614
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:871
uint8_t src_addr[16]
Definition: rte_ip.h:373
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:640
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:527
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:924
const void * mask
Definition: rte_flow.h:1521
struct rte_flow_item * pattern
Definition: rte_flow.h:2640
rte_be16_t type
Definition: rte_flow.h:700
const void * cause
Definition: rte_flow.h:2620
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:811
struct rte_esp_hdr hdr
Definition: rte_flow.h:1029
rte_flow_error_type
Definition: rte_flow.h:2587
rte_flow_conv_op
Definition: rte_flow.h:2653
rte_be16_t src_port
Definition: rte_udp.h:29
uint32_t id
Definition: rte_flow.h:578
const uint8_t * pattern
Definition: rte_flow.h:670
uint32_t search
Definition: rte_flow.h:665
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:891
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:675
uint16_t limit
Definition: rte_flow.h:668
int rte_flow_flush(uint16_t port_id, struct rte_flow_error *error)
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:944
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1169
int rte_flow_error_set(struct rte_flow_error *error, int code, enum rte_flow_error_type type, const void *cause, const char *message)
const void * conf
Definition: rte_flow.h:2570
const char * message
Definition: rte_flow.h:2621
rte_eth_hash_function
Definition: rte_flow.h:2097
uint16_t length
Definition: rte_flow.h:669
const void * last
Definition: rte_flow.h:1520
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1272
rte_be32_t teid
Definition: rte_flow.h:1013
int rte_flow_destroy(uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error)
uint32_t ingress
Definition: rte_flow.h:78
rte_be16_t tci
Definition: rte_flow.h:722
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:747
size_t size
Definition: rte_flow.h:3055
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:916
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1311
rte_be16_t length
Definition: rte_flow.h:1328
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2643
struct rte_flow_item * items
Definition: rte_flow.h:3057
rte_flow_action_type
Definition: rte_flow.h:1550
struct rte_ether_addr sla
Definition: rte_flow.h:1241
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)
struct rte_ether_addr dst
Definition: rte_flow.h:698
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1455
const void * spec
Definition: rte_flow.h:1519
uint8_t label_tc_s[3]
Definition: rte_flow.h:938
uint8_t version_type
Definition: rte_flow.h:1325
#define RTE_STD_C11
Definition: rte_common.h:40
const uint8_t * key
Definition: rte_flow.h:2157
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1104
struct rte_ether_addr sha
Definition: rte_flow.h:1095
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:705
rte_be16_t src_port
Definition: rte_tcp.h:29
uint16_t rte_be16_t
__rte_experimental int rte_flow_conv(enum rte_flow_conv_op op, void *dst, size_t size, const void *src, struct rte_flow_error *error)
uint32_t reserved
Definition: rte_flow.h:2175
__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:1479
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1370
uint32_t priority
Definition: rte_flow.h:77
static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1129
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:583
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:764
rte_be16_t protocol
Definition: rte_flow.h:960
uint32_t queue_num
Definition: rte_flow.h:2156
uint8_t tni[3]
Definition: rte_flow.h:918
struct rte_tcp_hdr hdr
Definition: rte_flow.h:825
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1350
uint32_t transfer
Definition: rte_flow.h:98
struct rte_flow_item * definition
Definition: rte_flow.h:2383
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:728
uint8_t msg_type
Definition: rte_flow.h:1011
uint32_t egress
Definition: rte_flow.h:79
static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:899
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:2801
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:830
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:993
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:723
struct rte_udp_hdr hdr
Definition: rte_flow.h:806
const uint16_t * queue
Definition: rte_flow.h:2158
rte_flow_item_type
Definition: rte_flow.h:118
uint32_t relative
Definition: rte_flow.h:664
uint8_t vni[3]
Definition: rte_flow.h:865
int32_t offset
Definition: rte_flow.h:667
rte_be16_t inner_type
Definition: rte_flow.h:894
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2639
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1079
rte_be16_t session_id
Definition: rte_flow.h:1327
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1429
struct rte_sctp_hdr hdr
Definition: rte_flow.h:844