DPDK 22.11.7
rte_flow_classify.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2017 Intel Corporation
3 */
4
5#ifndef _RTE_FLOW_CLASSIFY_H_
6#define _RTE_FLOW_CLASSIFY_H_
7
46#include <rte_compat.h>
47#include <rte_common.h>
48#include <rte_flow.h>
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54extern int librte_flow_classify_logtype;
55
56#define RTE_FLOW_CLASSIFY_LOG(level, ...) \
57 rte_log(RTE_LOG_ ## level, \
58 librte_flow_classify_logtype, \
59 RTE_FMT("%s(): " RTE_FMT_HEAD(__VA_ARGS__,), \
60 __func__, \
61 RTE_FMT_TAIL(__VA_ARGS__,)))
62
63#ifndef RTE_FLOW_CLASSIFY_TABLE_MAX
64#define RTE_FLOW_CLASSIFY_TABLE_MAX 32
65#endif
66
68struct rte_flow_classifier;
69
71struct rte_flow_classify_rule;
72
79};
80
91
92};
93
97 const char *name;
98
102};
103
108
111
114};
115
118 uint32_t dst_ip;
119 uint32_t dst_ip_mask;
120 uint32_t src_ip;
121 uint32_t src_ip_mask;
122 uint16_t dst_port;
123 uint16_t dst_port_mask;
124 uint16_t src_port;
125 uint16_t src_port_mask;
126 uint8_t proto;
127 uint8_t proto_mask;
128};
129
138 void *stats;
139};
140
141struct rte_flow_classify_ipv4_5tuple_stats {
143 uint64_t counter1;
145 struct rte_flow_classify_ipv4_5tuple ipv4_5tuple;
146};
147
156__rte_experimental
157struct rte_flow_classifier *
159
168__rte_experimental
169int
170rte_flow_classifier_free(struct rte_flow_classifier *cls);
171
182__rte_experimental
183int
184rte_flow_classify_table_create(struct rte_flow_classifier *cls,
185 struct rte_flow_classify_table_params *params);
186
204__rte_experimental
205int
206rte_flow_classify_validate(struct rte_flow_classifier *cls,
207 const struct rte_flow_attr *attr,
208 const struct rte_flow_item pattern[],
209 const struct rte_flow_action actions[],
210 struct rte_flow_error *error);
211
231__rte_experimental
232struct rte_flow_classify_rule *
233rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,
234 const struct rte_flow_attr *attr,
235 const struct rte_flow_item pattern[],
236 const struct rte_flow_action actions[],
237 int *key_found,
238 struct rte_flow_error *error);
239
250__rte_experimental
251int
252rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls,
253 struct rte_flow_classify_rule *rule);
254
272__rte_experimental
273int
274rte_flow_classifier_query(struct rte_flow_classifier *cls,
275 struct rte_mbuf **pkts,
276 const uint16_t nb_pkts,
277 struct rte_flow_classify_rule *rule,
278 struct rte_flow_classify_stats *stats);
279
280#ifdef __cplusplus
281}
282#endif
283
284#endif /* _RTE_FLOW_CLASSIFY_H_ */
__rte_experimental struct rte_flow_classify_rule * rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], int *key_found, struct rte_flow_error *error)
__rte_experimental int rte_flow_classifier_free(struct rte_flow_classifier *cls)
rte_flow_classify_table_type
@ RTE_FLOW_CLASSIFY_TABLE_TYPE_NONE
@ RTE_FLOW_CLASSIFY_TABLE_ACL_VLAN_IP4_5TUPLE
@ RTE_FLOW_CLASSIFY_TABLE_ACL_QINQ_IP4_5TUPLE
@ RTE_FLOW_CLASSIFY_TABLE_ACL_IP4_5TUPLE
__rte_experimental int rte_flow_classifier_query(struct rte_flow_classifier *cls, struct rte_mbuf **pkts, const uint16_t nb_pkts, struct rte_flow_classify_rule *rule, struct rte_flow_classify_stats *stats)
__rte_experimental int rte_flow_classify_table_create(struct rte_flow_classifier *cls, struct rte_flow_classify_table_params *params)
__rte_experimental int rte_flow_classify_validate(struct rte_flow_classifier *cls, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error)
rte_flow_classify_rule_type
@ RTE_FLOW_CLASSIFY_RULE_TYPE_IPV4_5TUPLE
@ RTE_FLOW_CLASSIFY_RULE_TYPE_NONE
__rte_experimental struct rte_flow_classifier * rte_flow_classifier_create(struct rte_flow_classifier_params *params)
__rte_experimental int rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls, struct rte_flow_classify_rule *rule)
enum rte_flow_classify_table_type type