DPDK  19.11.3
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 
403 
411 
419 
426 
435 
448 
457 
466 
475 
484 
491 
498 
505 
511 
520 };
521 
529  struct rte_higig2_hdr hdr;
530 };
531 
533 #ifndef __cplusplus
535  .hdr = {
536  .ppt1 = {
537  .classification = 0xffff,
538  .vid = 0xfff,
539  },
540  },
541 };
542 #endif
543 
556  uint32_t num;
557 };
558 
560 #ifndef __cplusplus
562  .num = 0x00000000,
563 };
564 #endif
565 
585  uint32_t id;
586 };
587 
589 #ifndef __cplusplus
591  .id = 0x00000000,
592 };
593 #endif
594 
616  uint32_t index;
617 };
618 
620 #ifndef __cplusplus
622  .index = 0x00000000,
623 };
624 #endif
625 
642  uint32_t id;
643 };
644 
646 #ifndef __cplusplus
648  .id = 0xffffffff,
649 };
650 #endif
651 
671  uint32_t relative:1;
672  uint32_t search:1;
673  uint32_t reserved:30;
674  int32_t offset;
675  uint16_t limit;
676  uint16_t length;
677  const uint8_t *pattern;
678 };
679 
681 #ifndef __cplusplus
683  .relative = 1,
684  .search = 1,
685  .reserved = 0x3fffffff,
686  .offset = 0xffffffff,
687  .limit = 0xffff,
688  .length = 0xffff,
689  .pattern = NULL,
690 };
691 #endif
692 
714 };
715 
717 #ifndef __cplusplus
719  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
720  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
721  .type = RTE_BE16(0x0000),
722 };
723 #endif
724 
739 };
740 
742 #ifndef __cplusplus
744  .tci = RTE_BE16(0x0fff),
745  .inner_type = RTE_BE16(0x0000),
746 };
747 #endif
748 
757  struct rte_ipv4_hdr hdr;
758 };
759 
761 #ifndef __cplusplus
763  .hdr = {
764  .src_addr = RTE_BE32(0xffffffff),
765  .dst_addr = RTE_BE32(0xffffffff),
766  },
767 };
768 #endif
769 
779  struct rte_ipv6_hdr hdr;
780  uint32_t is_frag:1;
781  uint32_t reserved:31;
782 };
783 
785 #ifndef __cplusplus
787  .hdr = {
788  .src_addr =
789  "\xff\xff\xff\xff\xff\xff\xff\xff"
790  "\xff\xff\xff\xff\xff\xff\xff\xff",
791  .dst_addr =
792  "\xff\xff\xff\xff\xff\xff\xff\xff"
793  "\xff\xff\xff\xff\xff\xff\xff\xff",
794  },
795 };
796 #endif
797 
804  struct rte_icmp_hdr hdr;
805 };
806 
808 #ifndef __cplusplus
810  .hdr = {
811  .icmp_type = 0xff,
812  .icmp_code = 0xff,
813  },
814 };
815 #endif
816 
823  struct rte_udp_hdr hdr;
824 };
825 
827 #ifndef __cplusplus
829  .hdr = {
830  .src_port = RTE_BE16(0xffff),
831  .dst_port = RTE_BE16(0xffff),
832  },
833 };
834 #endif
835 
842  struct rte_tcp_hdr hdr;
843 };
844 
846 #ifndef __cplusplus
848  .hdr = {
849  .src_port = RTE_BE16(0xffff),
850  .dst_port = RTE_BE16(0xffff),
851  },
852 };
853 #endif
854 
861  struct rte_sctp_hdr hdr;
862 };
863 
865 #ifndef __cplusplus
867  .hdr = {
868  .src_port = RTE_BE16(0xffff),
869  .dst_port = RTE_BE16(0xffff),
870  },
871 };
872 #endif
873 
880  uint8_t flags;
881  uint8_t rsvd0[3];
882  uint8_t vni[3];
883  uint8_t rsvd1;
884 };
885 
887 #ifndef __cplusplus
889  .vni = "\xff\xff\xff",
890 };
891 #endif
892 
909  uint8_t in_ecid_e;
910  uint8_t ecid_e;
912 };
913 
915 #ifndef __cplusplus
917  .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
918 };
919 #endif
920 
935  uint8_t tni[3];
936  uint8_t flow_id;
937 };
938 
940 #ifndef __cplusplus
942  .tni = "\xff\xff\xff",
943 };
944 #endif
945 
955  uint8_t label_tc_s[3];
956  uint8_t ttl;
957 };
958 
960 #ifndef __cplusplus
962  .label_tc_s = "\xff\xff\xf0",
963 };
964 #endif
965 
978 };
979 
981 #ifndef __cplusplus
983  .protocol = RTE_BE16(0xffff),
984 };
985 #endif
986 
1005  uint32_t thresh;
1006 };
1007 
1009 #ifndef __cplusplus
1011  .thresh = 0xffffffff,
1012 };
1013 #endif
1014 
1028  uint8_t msg_type;
1031 };
1032 
1034 #ifndef __cplusplus
1036  .teid = RTE_BE32(0xffffffff),
1037 };
1038 #endif
1039 
1046  struct rte_esp_hdr hdr;
1047 };
1048 
1050 #ifndef __cplusplus
1052  .hdr = {
1053  .spi = RTE_BE32(0xffffffff),
1054  },
1055 };
1056 #endif
1057 
1070  uint8_t vni[3];
1071  uint8_t rsvd1;
1072 };
1073 
1075 #ifndef __cplusplus
1077  .vni = "\xff\xff\xff",
1078 };
1079 #endif
1080 
1087  uint8_t flags;
1088  uint8_t rsvd0[2];
1089  uint8_t protocol;
1090  uint8_t vni[3];
1091  uint8_t rsvd1;
1092 };
1093 
1095 #ifndef __cplusplus
1097  .vni = "\xff\xff\xff",
1098 };
1099 #endif
1100 
1109  uint8_t hln;
1110  uint8_t pln;
1116 };
1117 
1119 #ifndef __cplusplus
1120 static const struct rte_flow_item_arp_eth_ipv4
1122  .sha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1123  .spa = RTE_BE32(0xffffffff),
1124  .tha.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1125  .tpa = RTE_BE32(0xffffffff),
1126 };
1127 #endif
1128 
1140  uint8_t next_hdr;
1141 };
1142 
1144 #ifndef __cplusplus
1145 static const
1147  .next_hdr = 0xff,
1148 };
1149 #endif
1150 
1162  struct rte_ipv6_fragment_ext hdr;
1163 };
1164 
1171  uint8_t type;
1172  uint8_t code;
1173  uint16_t checksum;
1174 };
1175 
1177 #ifndef __cplusplus
1179  .type = 0xff,
1180  .code = 0xff,
1181 };
1182 #endif
1183 
1190  uint8_t type;
1191  uint8_t code;
1194  uint8_t target_addr[16];
1195 };
1196 
1198 #ifndef __cplusplus
1199 static const
1201  .target_addr =
1202  "\xff\xff\xff\xff\xff\xff\xff\xff"
1203  "\xff\xff\xff\xff\xff\xff\xff\xff",
1204 };
1205 #endif
1206 
1213  uint8_t type;
1214  uint8_t code;
1221  uint8_t target_addr[16];
1222 };
1223 
1225 #ifndef __cplusplus
1226 static const
1228  .target_addr =
1229  "\xff\xff\xff\xff\xff\xff\xff\xff"
1230  "\xff\xff\xff\xff\xff\xff\xff\xff",
1231 };
1232 #endif
1233 
1246  uint8_t type;
1247  uint8_t length;
1248 };
1249 
1251 #ifndef __cplusplus
1252 static const struct rte_flow_item_icmp6_nd_opt
1254  .type = 0xff,
1255 };
1256 #endif
1257 
1270  uint8_t type;
1271  uint8_t length;
1273 };
1274 
1276 #ifndef __cplusplus
1277 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1279  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1280 };
1281 #endif
1282 
1295  uint8_t type;
1296  uint8_t length;
1298 };
1299 
1301 #ifndef __cplusplus
1302 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1304  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1305 };
1306 #endif
1307 
1319  uint32_t data;
1320 };
1321 
1323 #ifndef __cplusplus
1325  .data = UINT32_MAX,
1326 };
1327 #endif
1328 
1335  uint8_t pdu_type;
1336  uint8_t qfi;
1337 };
1338 
1340 #ifndef __cplusplus
1341 static const struct rte_flow_item_gtp_psc
1343  .qfi = 0x3f,
1344 };
1345 #endif
1346 
1356  uint8_t version_type;
1357  uint8_t code;
1360 };
1361 
1376 };
1377 
1379 #ifndef __cplusplus
1380 static const struct rte_flow_item_pppoe_proto_id
1382  .proto_id = RTE_BE16(0xffff),
1383 };
1384 #endif
1385 
1395  uint32_t data;
1396  uint8_t index;
1397 };
1398 
1400 #ifndef __cplusplus
1402  .data = 0xffffffff,
1403  .index = 0xff,
1404 };
1405 #endif
1406 
1426  uint32_t id;
1427 };
1428 
1430 #ifndef __cplusplus
1432  .id = 0xffffffff,
1433 };
1434 #endif
1435 
1446  uint32_t version:2;
1447  uint32_t oam_pkt:1;
1448  uint32_t reserved:1;
1449  uint32_t ttl:6;
1450  uint32_t length:6;
1451  uint32_t reserved1:4;
1452  uint32_t mdtype:4;
1453  uint32_t next_proto:8;
1454  uint32_t spi:24;
1455  uint32_t sindex:8;
1456 };
1457 
1459 #ifndef __cplusplus
1461  .mdtype = 0xf,
1462  .next_proto = 0xff,
1463  .spi = 0xffffff,
1464  .sindex = 0xff,
1465 };
1466 #endif
1467 
1478  uint32_t type:8;
1479  uint32_t max_resp_time:8;
1480  uint32_t checksum:16;
1481  uint32_t group_addr;
1482 };
1483 
1485 #ifndef __cplusplus
1487  .group_addr = 0xffffffff,
1488 };
1489 #endif
1490 
1501  uint32_t next_hdr:8;
1502  uint32_t payload_len:8;
1503  uint32_t reserved:16;
1504  uint32_t spi;
1505  uint32_t seq_num;
1506 };
1507 
1509 #ifndef __cplusplus
1511  .spi = 0xffffffff,
1512 };
1513 #endif
1514 
1550  const void *spec;
1551  const void *last;
1552  const void *mask;
1553 };
1554 
1589 
1597 
1605 
1614 
1622 
1630 
1637 
1646 
1656 
1665 
1673 
1681 
1689 
1696 
1704 
1712 
1720 
1728 
1736 
1744 
1753 
1762 
1770 
1778 
1786 
1794 
1802 
1810 
1818 
1827 
1835 
1844 
1851 
1858 
1868 
1878 
1888 
1898 
1909 
1920 
1931 
1938 
1945 
1955 
1965 
1979 
1993 
2007 
2021 
2031 
2038 
2048 
2058 
2068 
2076 };
2077 
2089  uint32_t id;
2090 };
2091 
2105  uint32_t group;
2106 };
2107 
2114  uint16_t index;
2115 };
2116 
2131  uint32_t timeout:24;
2132  uint32_t reserved:8;
2133  void *context;
2135 };
2136 
2163  uint32_t shared:1;
2164  uint32_t reserved:31;
2165  uint32_t id;
2166 };
2167 
2174  uint32_t reset:1;
2175  uint32_t hits_set:1;
2176  uint32_t bytes_set:1;
2177  uint32_t reserved:29;
2178  uint64_t hits;
2179  uint64_t bytes;
2180 };
2181 
2186  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2195  RTE_ETH_HASH_FUNCTION_MAX,
2196 };
2197 
2241  uint32_t level;
2242  uint64_t types;
2243  uint32_t key_len;
2244  uint32_t queue_num;
2245  const uint8_t *key;
2246  const uint16_t *queue;
2247 };
2248 
2262  uint32_t original:1;
2263  uint32_t reserved:31;
2264  uint32_t id;
2265 };
2266 
2276  uint32_t original:1;
2277  uint32_t reserved:31;
2278  uint32_t index;
2279 };
2280 
2289  uint32_t original:1;
2290  uint32_t reserved:31;
2291  uint32_t id;
2292 };
2293 
2303  uint32_t mtr_id;
2304 };
2305 
2333 };
2334 
2342  uint8_t mpls_ttl;
2343 };
2344 
2352  uint8_t nw_ttl;
2353 };
2354 
2363 };
2364 
2373 };
2374 
2382  uint8_t vlan_pcp;
2383 };
2384 
2393 };
2394 
2403 };
2404 
2438 };
2439 
2472 };
2473 
2494  uint8_t *data;
2495  uint8_t *preserve;
2496  size_t size;
2497 };
2498 
2515  uint8_t *data;
2516  size_t size;
2517 };
2518 
2531  rte_be32_t ipv4_addr;
2532 };
2533 
2546  uint8_t ipv6_addr[16];
2547 };
2548 
2561  rte_be16_t port;
2562 };
2563 
2570  uint8_t ttl_value;
2571 };
2572 
2579  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2580 };
2581 
2592  uint32_t data;
2593  uint32_t mask;
2594  uint8_t index;
2595 };
2596 
2617  uint32_t data;
2618  uint32_t mask;
2619 };
2620 
2629  uint8_t dscp;
2630 };
2631 
2632 /* Mbuf dynamic field offset for metadata. */
2633 extern int32_t rte_flow_dynf_metadata_offs;
2634 
2635 /* Mbuf dynamic field flag mask for metadata. */
2636 extern uint64_t rte_flow_dynf_metadata_mask;
2637 
2638 /* Mbuf dynamic field pointer for metadata. */
2639 #define RTE_FLOW_DYNF_METADATA(m) \
2640  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
2641 
2642 /* Mbuf dynamic flags for metadata. */
2643 #define PKT_RX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2644 #define PKT_TX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2645 
2646 __rte_experimental
2647 static inline uint32_t
2648 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
2649 {
2650  return *RTE_FLOW_DYNF_METADATA(m);
2651 }
2652 
2653 __rte_experimental
2654 static inline void
2655 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
2656 {
2657  *RTE_FLOW_DYNF_METADATA(m) = v;
2658 }
2659 
2660 /*
2661  * Definition of a single action.
2662  *
2663  * A list of actions is terminated by a END action.
2664  *
2665  * For simple actions without a configuration object, conf remains NULL.
2666  */
2667 struct rte_flow_action {
2668  enum rte_flow_action_type type;
2669  const void *conf;
2670 };
2671 
2678 struct rte_flow;
2679 
2697  uint32_t ratio;
2698  const struct rte_flow_action *actions;
2700 };
2701 
2726 };
2727 
2741  const void *cause;
2742  const char *message;
2743 };
2744 
2755  union {
2756  const struct rte_flow_attr *attr_ro;
2758  };
2759  union {
2760  const struct rte_flow_item *pattern_ro;
2762  };
2763  union {
2764  const struct rte_flow_action *actions_ro;
2765  struct rte_flow_action *actions;
2766  };
2767 };
2768 
2781 
2793 
2805 
2817 
2830 
2843 
2856 
2870 
2884 
2898 
2912 };
2913 
2931 __rte_experimental
2932 int
2933 rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error);
2934 
2941 __rte_experimental
2942 static inline int
2944 {
2945  return !!rte_flow_dynf_metadata_mask;
2946 }
2947 
2958 __rte_experimental
2959 int
2961 
3014 int
3015 rte_flow_validate(uint16_t port_id,
3016  const struct rte_flow_attr *attr,
3017  const struct rte_flow_item pattern[],
3018  const struct rte_flow_action actions[],
3019  struct rte_flow_error *error);
3020 
3041 struct rte_flow *
3042 rte_flow_create(uint16_t port_id,
3043  const struct rte_flow_attr *attr,
3044  const struct rte_flow_item pattern[],
3045  const struct rte_flow_action actions[],
3046  struct rte_flow_error *error);
3047 
3068 int
3069 rte_flow_destroy(uint16_t port_id,
3070  struct rte_flow *flow,
3071  struct rte_flow_error *error);
3072 
3089 int
3090 rte_flow_flush(uint16_t port_id,
3091  struct rte_flow_error *error);
3092 
3117 int
3118 rte_flow_query(uint16_t port_id,
3119  struct rte_flow *flow,
3120  const struct rte_flow_action *action,
3121  void *data,
3122  struct rte_flow_error *error);
3123 
3165 int
3166 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
3167 
3185 int
3186 rte_flow_error_set(struct rte_flow_error *error,
3187  int code,
3188  enum rte_flow_error_type type,
3189  const void *cause,
3190  const char *message);
3191 
3197  size_t size;
3200  struct rte_flow_action *actions;
3201  uint8_t data[];
3202 };
3203 
3230 __rte_deprecated
3231 size_t
3232 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
3233  const struct rte_flow_attr *attr,
3234  const struct rte_flow_item *items,
3235  const struct rte_flow_action *actions);
3236 
3277 __rte_experimental
3278 int
3280  void *dst,
3281  size_t size,
3282  const void *src,
3283  struct rte_flow_error *error);
3284 
3313 __rte_experimental
3314 int
3315 rte_flow_get_aged_flows(uint16_t port_id, void **contexts,
3316  uint32_t nb_contexts, struct rte_flow_error *error);
3317 
3318 #ifdef __cplusplus
3319 }
3320 #endif
3321 
3322 #endif /* RTE_FLOW_H_ */
uint32_t reserved
Definition: rte_flow.h:99
rte_be16_t c_rsvd0_ver
Definition: rte_flow.h:976
rte_be16_t ver_opt_len_o_c_rsvd0
Definition: rte_flow.h:1068
uint32_t reserved
Definition: rte_flow.h:781
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:2765
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:906
static struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1401
rte_be16_t protocol
Definition: rte_flow.h:1069
uint32_t num
Definition: rte_flow.h:556
struct rte_flow_attr * attr
Definition: rte_flow.h:2757
static struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1486
static struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:647
uint32_t rte_be32_t
uint32_t original
Definition: rte_flow.h:2262
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:2437
static struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:786
static struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1460
static struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:534
struct rte_flow_attr attr
Definition: rte_flow.h:3198
rte_be16_t msg_len
Definition: rte_flow.h:1029
static struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1051
static struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:682
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
static struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1096
int rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error)
static struct rte_flow_item_mpls rte_flow_item_mpls_mask
Definition: rte_flow.h:961
static struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:982
struct rte_icmp_hdr hdr
Definition: rte_flow.h:804
__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 struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1303
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1027
struct rte_ether_addr tla
Definition: rte_flow.h:1297
rte_be16_t protocol
Definition: rte_flow.h:934
uint32_t reserved
Definition: rte_flow.h:673
rte_be32_t spi
Definition: rte_esp.h:24
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:3200
uint8_t data[]
Definition: rte_flow.h:3201
struct rte_ether_addr tha
Definition: rte_flow.h:1114
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:757
static struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
Definition: rte_flow.h:1178
static struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1342
static struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:809
static struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1035
rte_be32_t src_addr
Definition: rte_ip.h:42
struct rte_flow_action * actions
Definition: rte_flow.h:2698
static struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:828
static struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:621
uint8_t src_addr[16]
Definition: rte_ip.h:363
static struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1381
static struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1431
static struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:762
static struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
Definition: rte_flow.h:1253
const void * mask
Definition: rte_flow.h:1552
struct rte_flow_item * pattern
Definition: rte_flow.h:2761
static struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1227
enum rte_eth_hash_function func
Definition: rte_flow.h:2215
rte_be16_t type
Definition: rte_flow.h:713
enum rte_flow_error_type type
Definition: rte_flow.h:2740
const void * cause
Definition: rte_flow.h:2741
struct rte_esp_hdr hdr
Definition: rte_flow.h:1046
rte_flow_error_type
Definition: rte_flow.h:2708
rte_flow_conv_op
Definition: rte_flow.h:2774
rte_be16_t src_port
Definition: rte_udp.h:29
static struct rte_flow_item_geneve rte_flow_item_geneve_mask
Definition: rte_flow.h:1076
uint32_t id
Definition: rte_flow.h:585
const uint8_t * pattern
Definition: rte_flow.h:677
static struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:866
uint32_t search
Definition: rte_flow.h:672
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:908
uint16_t limit
Definition: rte_flow.h:675
static struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:590
int rte_flow_flush(uint16_t port_id, struct rte_flow_error *error)
static struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:941
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 char * message
Definition: rte_flow.h:2742
rte_eth_hash_function
Definition: rte_flow.h:2185
uint16_t length
Definition: rte_flow.h:676
const void * last
Definition: rte_flow.h:1551
rte_be32_t teid
Definition: rte_flow.h:1030
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
enum rte_flow_item_type type
Definition: rte_flow.h:1549
rte_be16_t tci
Definition: rte_flow.h:737
uint32_t is_frag
Definition: rte_flow.h:780
size_t size
Definition: rte_flow.h:3197
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:933
rte_be16_t length
Definition: rte_flow.h:1359
struct rte_flow_item * items
Definition: rte_flow.h:3199
__rte_experimental int rte_flow_get_aged_flows(uint16_t port_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error)
rte_flow_action_type
Definition: rte_flow.h:1581
struct rte_ether_addr sla
Definition: rte_flow.h:1272
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:711
static struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:718
const void * spec
Definition: rte_flow.h:1550
uint8_t label_tc_s[3]
Definition: rte_flow.h:955
uint8_t version_type
Definition: rte_flow.h:1356
#define RTE_STD_C11
Definition: rte_common.h:40
static struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1010
const uint8_t * key
Definition: rte_flow.h:2245
struct rte_ether_addr sha
Definition: rte_flow.h:1112
rte_be16_t src_port
Definition: rte_tcp.h:29
static struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1121
struct rte_flow_action * actions_ro
Definition: rte_flow.h:2764
static struct rte_flow_item_any rte_flow_item_any_mask
Definition: rte_flow.h:561
uint16_t rte_be16_t
struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2760
__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:2263
__rte_experimental int rte_flow_dynf_metadata_register(void)
uint32_t priority
Definition: rte_flow.h:77
struct rte_ether_addr src
Definition: rte_flow.h:712
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:779
rte_be16_t protocol
Definition: rte_flow.h:977
static struct rte_flow_item_ah rte_flow_item_ah_mask
Definition: rte_flow.h:1510
uint32_t queue_num
Definition: rte_flow.h:2244
uint8_t tni[3]
Definition: rte_flow.h:935
struct rte_tcp_hdr hdr
Definition: rte_flow.h:842
static struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:743
__rte_experimental int rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error)
uint32_t transfer
Definition: rte_flow.h:98
struct rte_flow_item * definition
Definition: rte_flow.h:2471
uint8_t msg_type
Definition: rte_flow.h:1028
static struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:847
uint32_t egress
Definition: rte_flow.h:79
static struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
Definition: rte_flow.h:1146
static struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
Definition: rte_flow.h:916
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:2943
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:738
uint8_t rsvd0[3]
Definition: rte_flow.h:881
struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2756
static struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1324
struct rte_udp_hdr hdr
Definition: rte_flow.h:823
static struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
Definition: rte_flow.h:1278
const uint16_t * queue
Definition: rte_flow.h:2246
static struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1200
rte_flow_item_type
Definition: rte_flow.h:118
uint32_t relative
Definition: rte_flow.h:671
uint8_t vni[3]
Definition: rte_flow.h:882
int32_t offset
Definition: rte_flow.h:674
rte_be16_t inner_type
Definition: rte_flow.h:911
static struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:888
rte_be16_t session_id
Definition: rte_flow.h:1358
struct rte_sctp_hdr hdr
Definition: rte_flow.h:861