DPDK  20.05.0-rc0
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 
522 
529 
530 };
531 
539  struct rte_higig2_hdr hdr;
540 };
541 
543 #ifndef __cplusplus
545  .hdr = {
546  .ppt1 = {
547  .classification = 0xffff,
548  .vid = 0xfff,
549  },
550  },
551 };
552 #endif
553 
566  uint32_t num;
567 };
568 
570 #ifndef __cplusplus
572  .num = 0x00000000,
573 };
574 #endif
575 
595  uint32_t id;
596 };
597 
599 #ifndef __cplusplus
601  .id = 0x00000000,
602 };
603 #endif
604 
626  uint32_t index;
627 };
628 
630 #ifndef __cplusplus
632  .index = 0x00000000,
633 };
634 #endif
635 
652  uint32_t id;
653 };
654 
656 #ifndef __cplusplus
658  .id = 0xffffffff,
659 };
660 #endif
661 
681  uint32_t relative:1;
682  uint32_t search:1;
683  uint32_t reserved:30;
684  int32_t offset;
685  uint16_t limit;
686  uint16_t length;
687  const uint8_t *pattern;
688 };
689 
691 #ifndef __cplusplus
693  .relative = 1,
694  .search = 1,
695  .reserved = 0x3fffffff,
696  .offset = 0xffffffff,
697  .limit = 0xffff,
698  .length = 0xffff,
699  .pattern = NULL,
700 };
701 #endif
702 
715  struct rte_ether_addr dst;
716  struct rte_ether_addr src;
718 };
719 
721 #ifndef __cplusplus
723  .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff",
724  .src.addr_bytes = "\xff\xff\xff\xff\xff\xff",
725  .type = RTE_BE16(0x0000),
726 };
727 #endif
728 
741 };
742 
744 #ifndef __cplusplus
746  .tci = RTE_BE16(0x0fff),
747  .inner_type = RTE_BE16(0x0000),
748 };
749 #endif
750 
759  struct rte_ipv4_hdr hdr;
760 };
761 
763 #ifndef __cplusplus
765  .hdr = {
766  .src_addr = RTE_BE32(0xffffffff),
767  .dst_addr = RTE_BE32(0xffffffff),
768  },
769 };
770 #endif
771 
781  struct rte_ipv6_hdr hdr;
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;
1112  struct rte_ether_addr sha;
1114  struct rte_ether_addr tha;
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 
1157  uint8_t type;
1158  uint8_t code;
1159  uint16_t checksum;
1160 };
1161 
1163 #ifndef __cplusplus
1165  .type = 0xff,
1166  .code = 0xff,
1167 };
1168 #endif
1169 
1176  uint8_t type;
1177  uint8_t code;
1180  uint8_t target_addr[16];
1181 };
1182 
1184 #ifndef __cplusplus
1185 static const
1187  .target_addr =
1188  "\xff\xff\xff\xff\xff\xff\xff\xff"
1189  "\xff\xff\xff\xff\xff\xff\xff\xff",
1190 };
1191 #endif
1192 
1199  uint8_t type;
1200  uint8_t code;
1207  uint8_t target_addr[16];
1208 };
1209 
1211 #ifndef __cplusplus
1212 static const
1214  .target_addr =
1215  "\xff\xff\xff\xff\xff\xff\xff\xff"
1216  "\xff\xff\xff\xff\xff\xff\xff\xff",
1217 };
1218 #endif
1219 
1232  uint8_t type;
1233  uint8_t length;
1234 };
1235 
1237 #ifndef __cplusplus
1238 static const struct rte_flow_item_icmp6_nd_opt
1240  .type = 0xff,
1241 };
1242 #endif
1243 
1256  uint8_t type;
1257  uint8_t length;
1258  struct rte_ether_addr sla;
1259 };
1260 
1262 #ifndef __cplusplus
1263 static const struct rte_flow_item_icmp6_nd_opt_sla_eth
1265  .sla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1266 };
1267 #endif
1268 
1281  uint8_t type;
1282  uint8_t length;
1283  struct rte_ether_addr tla;
1284 };
1285 
1287 #ifndef __cplusplus
1288 static const struct rte_flow_item_icmp6_nd_opt_tla_eth
1290  .tla.addr_bytes = "\xff\xff\xff\xff\xff\xff",
1291 };
1292 #endif
1293 
1305  uint32_t data;
1306 };
1307 
1309 #ifndef __cplusplus
1311  .data = UINT32_MAX,
1312 };
1313 #endif
1314 
1321  uint8_t pdu_type;
1322  uint8_t qfi;
1323 };
1324 
1326 #ifndef __cplusplus
1327 static const struct rte_flow_item_gtp_psc
1329  .qfi = 0x3f,
1330 };
1331 #endif
1332 
1342  uint8_t version_type;
1343  uint8_t code;
1346 };
1347 
1362 };
1363 
1365 #ifndef __cplusplus
1366 static const struct rte_flow_item_pppoe_proto_id
1368  .proto_id = RTE_BE16(0xffff),
1369 };
1370 #endif
1371 
1381  uint32_t data;
1382  uint8_t index;
1383 };
1384 
1386 #ifndef __cplusplus
1388  .data = 0xffffffff,
1389  .index = 0xff,
1390 };
1391 #endif
1392 
1400 };
1401 
1403 #ifndef __cplusplus
1405  .session_id = RTE_BE32(UINT32_MAX),
1406 };
1407 #endif
1408 
1409 
1429  uint32_t id;
1430 };
1431 
1433 #ifndef __cplusplus
1435  .id = 0xffffffff,
1436 };
1437 #endif
1438 
1449  uint32_t version:2;
1450  uint32_t oam_pkt:1;
1451  uint32_t reserved:1;
1452  uint32_t ttl:6;
1453  uint32_t length:6;
1454  uint32_t reserved1:4;
1455  uint32_t mdtype:4;
1456  uint32_t next_proto:8;
1457  uint32_t spi:24;
1458  uint32_t sindex:8;
1459 };
1460 
1462 #ifndef __cplusplus
1464  .mdtype = 0xf,
1465  .next_proto = 0xff,
1466  .spi = 0xffffff,
1467  .sindex = 0xff,
1468 };
1469 #endif
1470 
1481  uint32_t type:8;
1482  uint32_t max_resp_time:8;
1483  uint32_t checksum:16;
1484  uint32_t group_addr;
1485 };
1486 
1488 #ifndef __cplusplus
1490  .group_addr = 0xffffffff,
1491 };
1492 #endif
1493 
1504  uint32_t next_hdr:8;
1505  uint32_t payload_len:8;
1506  uint32_t reserved:16;
1507  uint32_t spi;
1508  uint32_t seq_num;
1509 };
1510 
1512 #ifndef __cplusplus
1514  .spi = 0xffffffff,
1515 };
1516 #endif
1517 
1527  uint8_t s_field;
1528  uint8_t msg_type;
1529  rte_be16_t msg_len;
1530  rte_be64_t seid;
1531 };
1532 
1534 #ifndef __cplusplus
1536  .s_field = 0x01,
1537  .seid = RTE_BE64(0xffffffffffffffff),
1538 };
1539 #endif
1540 
1576  const void *spec;
1577  const void *last;
1578  const void *mask;
1579 };
1580 
1615 
1623 
1631 
1640 
1648 
1656 
1663 
1672 
1682 
1691 
1699 
1707 
1715 
1722 
1730 
1738 
1746 
1754 
1762 
1770 
1779 
1788 
1796 
1804 
1812 
1820 
1828 
1836 
1844 
1853 
1861 
1870 
1877 
1884 
1894 
1904 
1914 
1924 
1935 
1946 
1957 
1964 
1971 
1981 
1991 
2005 
2019 
2033 
2047 
2057 
2064 
2074 
2084 };
2085 
2097  uint32_t id;
2098 };
2099 
2113  uint32_t group;
2114 };
2115 
2122  uint16_t index;
2123 };
2124 
2125 
2152  uint32_t shared:1;
2153  uint32_t reserved:31;
2154  uint32_t id;
2155 };
2156 
2163  uint32_t reset:1;
2164  uint32_t hits_set:1;
2165  uint32_t bytes_set:1;
2166  uint32_t reserved:29;
2167  uint64_t hits;
2168  uint64_t bytes;
2169 };
2170 
2175  RTE_ETH_HASH_FUNCTION_DEFAULT = 0,
2184  RTE_ETH_HASH_FUNCTION_MAX,
2185 };
2186 
2230  uint32_t level;
2231  uint64_t types;
2232  uint32_t key_len;
2233  uint32_t queue_num;
2234  const uint8_t *key;
2235  const uint16_t *queue;
2236 };
2237 
2251  uint32_t original:1;
2252  uint32_t reserved:31;
2253  uint32_t id;
2254 };
2255 
2265  uint32_t original:1;
2266  uint32_t reserved:31;
2267  uint32_t index;
2268 };
2269 
2278  uint32_t original:1;
2279  uint32_t reserved:31;
2280  uint32_t id;
2281 };
2282 
2292  uint32_t mtr_id;
2293 };
2294 
2327 };
2328 
2336  uint8_t mpls_ttl;
2337 };
2338 
2346  uint8_t nw_ttl;
2347 };
2348 
2357 };
2358 
2367 };
2368 
2376  uint8_t vlan_pcp;
2377 };
2378 
2387 };
2388 
2397 };
2398 
2432 };
2433 
2466 };
2467 
2488  uint8_t *data;
2489  uint8_t *preserve;
2490  size_t size;
2491 };
2492 
2509  uint8_t *data;
2510  size_t size;
2511 };
2512 
2525  rte_be32_t ipv4_addr;
2526 };
2527 
2540  uint8_t ipv6_addr[16];
2541 };
2542 
2555  rte_be16_t port;
2556 };
2557 
2564  uint8_t ttl_value;
2565 };
2566 
2573  uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
2574 };
2575 
2586  uint32_t data;
2587  uint32_t mask;
2588  uint8_t index;
2589 };
2590 
2611  uint32_t data;
2612  uint32_t mask;
2613 };
2614 
2623  uint8_t dscp;
2624 };
2625 
2626 /* Mbuf dynamic field offset for metadata. */
2627 extern int rte_flow_dynf_metadata_offs;
2628 
2629 /* Mbuf dynamic field flag mask for metadata. */
2630 extern uint64_t rte_flow_dynf_metadata_mask;
2631 
2632 /* Mbuf dynamic field pointer for metadata. */
2633 #define RTE_FLOW_DYNF_METADATA(m) \
2634  RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
2635 
2636 /* Mbuf dynamic flags for metadata. */
2637 #define PKT_RX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2638 #define PKT_TX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
2639 
2640 __rte_experimental
2641 static inline uint32_t
2642 rte_flow_dynf_metadata_get(struct rte_mbuf *m)
2643 {
2644  return *RTE_FLOW_DYNF_METADATA(m);
2645 }
2646 
2647 __rte_experimental
2648 static inline void
2649 rte_flow_dynf_metadata_set(struct rte_mbuf *m, uint32_t v)
2650 {
2651  *RTE_FLOW_DYNF_METADATA(m) = v;
2652 }
2653 
2654 /*
2655  * Definition of a single action.
2656  *
2657  * A list of actions is terminated by a END action.
2658  *
2659  * For simple actions without a configuration object, conf remains NULL.
2660  */
2661 struct rte_flow_action {
2662  enum rte_flow_action_type type;
2663  const void *conf;
2664 };
2665 
2672 struct rte_flow;
2673 
2698 };
2699 
2713  const void *cause;
2714  const char *message;
2715 };
2716 
2727  union {
2728  const struct rte_flow_attr *attr_ro;
2730  };
2731  union {
2732  const struct rte_flow_item *pattern_ro;
2734  };
2735  union {
2736  const struct rte_flow_action *actions_ro;
2737  struct rte_flow_action *actions;
2738  };
2739 };
2740 
2753 
2765 
2777 
2789 
2802 
2815 
2828 
2842 
2856 
2870 
2884 };
2885 
2903 __rte_experimental
2904 int
2905 rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error);
2906 
2913 __rte_experimental
2914 static inline int
2916 {
2917  return !!rte_flow_dynf_metadata_mask;
2918 }
2919 
2930 __rte_experimental
2931 int
2933 
2986 int
2987 rte_flow_validate(uint16_t port_id,
2988  const struct rte_flow_attr *attr,
2989  const struct rte_flow_item pattern[],
2990  const struct rte_flow_action actions[],
2991  struct rte_flow_error *error);
2992 
3013 struct rte_flow *
3014 rte_flow_create(uint16_t port_id,
3015  const struct rte_flow_attr *attr,
3016  const struct rte_flow_item pattern[],
3017  const struct rte_flow_action actions[],
3018  struct rte_flow_error *error);
3019 
3040 int
3041 rte_flow_destroy(uint16_t port_id,
3042  struct rte_flow *flow,
3043  struct rte_flow_error *error);
3044 
3061 int
3062 rte_flow_flush(uint16_t port_id,
3063  struct rte_flow_error *error);
3064 
3089 int
3090 rte_flow_query(uint16_t port_id,
3091  struct rte_flow *flow,
3092  const struct rte_flow_action *action,
3093  void *data,
3094  struct rte_flow_error *error);
3095 
3137 int
3138 rte_flow_isolate(uint16_t port_id, int set, struct rte_flow_error *error);
3139 
3157 int
3158 rte_flow_error_set(struct rte_flow_error *error,
3159  int code,
3160  enum rte_flow_error_type type,
3161  const void *cause,
3162  const char *message);
3163 
3169  size_t size;
3170  struct rte_flow_attr attr;
3172  struct rte_flow_action *actions;
3173  uint8_t data[];
3174 };
3175 
3202 __rte_deprecated
3203 size_t
3204 rte_flow_copy(struct rte_flow_desc *fd, size_t len,
3205  const struct rte_flow_attr *attr,
3206  const struct rte_flow_item *items,
3207  const struct rte_flow_action *actions);
3208 
3249 __rte_experimental
3250 int
3252  void *dst,
3253  size_t size,
3254  const void *src,
3255  struct rte_flow_error *error);
3256 
3257 #ifdef __cplusplus
3258 }
3259 #endif
3260 
3261 #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:1264
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
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:2737
static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
Definition: rte_flow.h:1213
static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
Definition: rte_flow.h:786
rte_be16_t epcp_edei_in_ecid_b
Definition: rte_flow.h:906
rte_be16_t protocol
Definition: rte_flow.h:1069
static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
Definition: rte_flow.h:1535
uint32_t num
Definition: rte_flow.h:566
struct rte_flow_attr * attr
Definition: rte_flow.h:2729
uint32_t rte_be32_t
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:2431
static const struct rte_flow_item_gre rte_flow_item_gre_mask
Definition: rte_flow.h:982
rte_be16_t msg_len
Definition: rte_flow.h:1029
static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
Definition: rte_flow.h:1035
static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
Definition: rte_flow.h:809
#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:1076
const struct rte_flow_attr * attr_ro
Definition: rte_flow.h:2728
static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
Definition: rte_flow.h:866
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:571
static const struct rte_flow_item_meta rte_flow_item_meta_mask
Definition: rte_flow.h:1310
static const struct rte_flow_item_esp rte_flow_item_esp_mask
Definition: rte_flow.h:1051
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)
uint8_t v_pt_rsv_flags
Definition: rte_flow.h:1027
struct rte_ether_addr tla
Definition: rte_flow.h:1283
rte_be16_t protocol
Definition: rte_flow.h:934
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:1164
rte_be16_t src_port
Definition: rte_sctp.h:29
struct rte_flow_action * actions
Definition: rte_flow.h:3172
struct rte_ipv4_hdr hdr
Definition: rte_flow.h:759
static const struct rte_flow_item_mark rte_flow_item_mark_mask
Definition: rte_flow.h:1434
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:1239
static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask
Definition: rte_flow.h:631
static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
Definition: rte_flow.h:888
uint8_t src_addr[16]
Definition: rte_ip.h:363
static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
Definition: rte_flow.h:657
static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
Definition: rte_flow.h:544
static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
Definition: rte_flow.h:941
uint64_t rte_be64_t
const void * mask
Definition: rte_flow.h:1578
struct rte_flow_item * pattern
Definition: rte_flow.h:2733
rte_be16_t type
Definition: rte_flow.h:717
const void * cause
Definition: rte_flow.h:2713
static const struct rte_flow_item_udp rte_flow_item_udp_mask
Definition: rte_flow.h:828
struct rte_esp_hdr hdr
Definition: rte_flow.h:1046
rte_flow_error_type
Definition: rte_flow.h:2680
rte_flow_conv_op
Definition: rte_flow.h:2746
rte_be16_t src_port
Definition: rte_udp.h:29
uint32_t id
Definition: rte_flow.h:595
const uint8_t * pattern
Definition: rte_flow.h:687
rte_be16_t rsvd_grp_ecid_b
Definition: rte_flow.h:908
static const struct rte_flow_item_raw rte_flow_item_raw_mask
Definition: rte_flow.h:692
uint16_t limit
Definition: rte_flow.h:685
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:961
static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
Definition: rte_flow.h:1186
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:2714
rte_eth_hash_function
Definition: rte_flow.h:2174
uint16_t length
Definition: rte_flow.h:686
const void * last
Definition: rte_flow.h:1577
static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
Definition: rte_flow.h:1289
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
rte_be16_t tci
Definition: rte_flow.h:739
static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
Definition: rte_flow.h:764
size_t size
Definition: rte_flow.h:3169
rte_be16_t c_k_s_rsvd0_ver
Definition: rte_flow.h:933
static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
Definition: rte_flow.h:1328
rte_be16_t length
Definition: rte_flow.h:1345
const struct rte_flow_action * actions_ro
Definition: rte_flow.h:2736
struct rte_flow_item * items
Definition: rte_flow.h:3171
rte_flow_action_type
Definition: rte_flow.h:1607
struct rte_ether_addr sla
Definition: rte_flow.h:1258
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:715
static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
Definition: rte_flow.h:1404
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
Definition: rte_flow.h:1489
const void * spec
Definition: rte_flow.h:1576
uint8_t label_tc_s[3]
Definition: rte_flow.h:955
uint8_t version_type
Definition: rte_flow.h:1342
#define RTE_STD_C11
Definition: rte_common.h:40
const uint8_t * key
Definition: rte_flow.h:2234
static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
Definition: rte_flow.h:1121
struct rte_ether_addr sha
Definition: rte_flow.h:1112
static const struct rte_flow_item_eth rte_flow_item_eth_mask
Definition: rte_flow.h:722
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)
__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:1513
static const struct rte_flow_item_tag rte_flow_item_tag_mask
Definition: rte_flow.h:1387
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:1146
static const struct rte_flow_item_vf rte_flow_item_vf_mask
Definition: rte_flow.h:600
struct rte_ipv6_hdr hdr
Definition: rte_flow.h:781
rte_be16_t protocol
Definition: rte_flow.h:977
uint32_t queue_num
Definition: rte_flow.h:2233
uint8_t tni[3]
Definition: rte_flow.h:935
struct rte_tcp_hdr hdr
Definition: rte_flow.h:842
static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
Definition: rte_flow.h:1367
__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:2465
static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
Definition: rte_flow.h:745
uint8_t msg_type
Definition: rte_flow.h:1028
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:916
static __rte_experimental int rte_flow_dynf_metadata_avail(void)
Definition: rte_flow.h:2915
static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
Definition: rte_flow.h:847
static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
Definition: rte_flow.h:1010
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]
Definition: rte_ether.h:61
rte_be16_t inner_type
Definition: rte_flow.h:740
struct rte_udp_hdr hdr
Definition: rte_flow.h:823
const uint16_t * queue
Definition: rte_flow.h:2235
rte_flow_item_type
Definition: rte_flow.h:118
uint32_t relative
Definition: rte_flow.h:681
uint8_t vni[3]
Definition: rte_flow.h:882
int32_t offset
Definition: rte_flow.h:684
rte_be16_t inner_type
Definition: rte_flow.h:911
const struct rte_flow_item * pattern_ro
Definition: rte_flow.h:2732
static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
Definition: rte_flow.h:1096
rte_be16_t session_id
Definition: rte_flow.h:1344
static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
Definition: rte_flow.h:1463
struct rte_sctp_hdr hdr
Definition: rte_flow.h:861