-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathacl_dp.h
268 lines (245 loc) · 4.84 KB
/
acl_dp.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
/* SPDX-License-Identifier: Apache-2.0
* Copyright(c) 2017 Intel Corporation
*/
#ifndef _ACL_DP_H_
#define _ACL_DP_H_
/**
* @file
* This file contains macros, data structure definitions and function
* prototypes of Access Control List.
*/
#include <rte_acl.h>
#include <rte_ip.h>
#include "vepc_cp_dp_api.h"
#define MAX_ACL_RULE_NUM 100000
/**
* Max pkt filter precedence.
*/
#define MAX_FILTER_PRECE 0x1fffffff
/**
* DNS filter rule precedence.
*/
#define DNS_FILTER_PRECE MAX_FILTER_PRECE
/**
* Default SDF Rule ID to DROP (initialization)
*/
#define SDF_DEFAULT_DROP_RULE_ID (MAX_ACL_RULE_NUM - 1)
/**
* Default SDF Rule ID
*/
#define SDF_DEFAULT_RULE_ID 1
/**
* Default ADC Rule ID
*/
#define ADC_DEFAULT_RULE_ID (MAX_ACL_RULE_NUM - 1)
uint64_t acl_rule_stats[MAX_ACL_RULE_NUM];
/**
* Function for SDF lookup.
*
* @param m
* pointer to pkts.
* @param nb_rx
* num. of pkts.
*
* @return
* array containing search results for each input buf
*/
uint32_t *
sdf_lookup(struct rte_mbuf **m, int nb_rx);
/**
* Function for ADC table lookup for Upsstream traffic.
*
* @param m
* pointer to pkts.
* @param nb_rx
* num. of pkts.
*
* @return
* array containing search results for each input buf
*/
uint32_t *
adc_ul_lookup(struct rte_mbuf **m, int nb_rx);
/**
* Function for ADC table lookup for Downsstream traffic.
*
* @param m
* pointer to pkts.
* @param nb_rx
* num. of pkts.
*
* @return
* array containing search results for each input buf
*/
uint32_t *
adc_dl_lookup(struct rte_mbuf **m, int nb_rx);
/**
* Get SDF ACL table base address.
*
* @return
* void
*/
void get_sdf_table_base(void **ba, void **as);
/**
* Get ADC ACL table base address.
* @param ba
* base address of acl config.
* @param as
* base address of acl search struct.
*
*/
void get_adc_table_base(void **ba, void **as);
/******************** DP SDF functions **********************/
/**
* Create SDF rules table
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param max_elements
* max number of elements in this table.
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_filter_table_create(struct dp_id dp_id, uint32_t max_elements);
/**
* Delete SDF rules table
*
* @param dp_id
* identifier which is unique across DataPlanes.
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_filter_table_delete(struct dp_id dp_id);
/**
* Add SDF rules
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param pkt_filter_entry
* sdf packet filter entry structure
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_filter_entry_add(struct dp_id dp_id, struct pkt_filter *pkt_filter);
/**
* Delete SDF rules.
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param pkt_filter_entry
* sdf packet filter entry structure
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_filter_entry_delete(struct dp_id dp_id,
struct pkt_filter *pkt_filter_entry);
/******************** DP ADC functions **********************/
/**
* Create ADC rules table
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param max_elements
* max number of elements in this table.
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_adc_filter_table_create(struct dp_id dp_id, uint32_t max_elements);
/**
* Delete ADC rules table
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param max_elements
* max number of elements in this table.
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_adc_filter_table_delete(struct dp_id dp_id);
/**
* Add ADC rules
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param pkt_filter_entry
* sdf packet filter entry structure
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_adc_filter_entry_add(struct dp_id dp_id, struct pkt_filter *pkt_filter);
/**
* Delete ADC rules.
*
* @param dp_id
* identifier which is unique across DataPlanes.
* @param pkt_filter_entry
* sdf packet filter entry structure
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_adc_filter_entry_delete(struct dp_id dp_id,
struct pkt_filter *pkt_filter_entry);
/**
* Add default SDF entry
*
* @param dp_id
* dp_id structure
* @param rule_id
* sdf rule_id
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_default_entry_add(struct dp_id dp_id, uint32_t rule_id);
/**
* Modify default SDF entry action
*
* @param dp_id
* dp_id structure
* @param rule_id
* sdf rule_id
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_sdf_default_entry_action_modify(struct dp_id dp_id, uint32_t rule_id);
/**
* Add default ADC rule
*
* @param dp_id
* identifier which is unique across DataPlanes.
*
* @return
* - 0 on success
* - -1 on failure
*/
int
dp_adc_filter_default_entry_add(struct dp_id dp_id);
#endif /* _ACL_H_ */