2 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
16 option version = "3.0.0";
18 import "vnet/interface_types.api";
20 /** \brief Add/Delete classification table request
21 @param client_index - opaque cookie to identify the sender
22 @param context - sender context, to match reply w/ request
23 @param is_add- if non-zero add the table, else delete it
24 @param del_chain - if non-zero delete the whole chain of tables
25 @param table_index - if add, returns index of the created table, else specifies the table to delete
26 @param nbuckets - number of buckets when adding a table
27 @param memory_size - memory size when adding a table
28 @param match_n_vectors - number of match vectors
29 @param next_table_index - index of next table
30 @param miss_next_index - index of miss table
31 @param current_data_flag - option to use current node's packet payload
32 as the starting point from where packets are classified,
33 This option is only valid for L2/L3 input ACL for now.
34 0: by default, classify data from the buffer's start location
35 1: classify packets from VPP node’s current data pointer
36 @param current_data_offset - a signed value to shift the start location of
37 the packet to be classified
38 For example, if input IP ACL node is used, L2 header’s first byte
39 can be accessible by configuring current_data_offset to -14
40 if there is no vlan tag.
41 This is valid only if current_data_flag is set to 1.
42 @param mask_len - length of match mask, should be equal to match_n_vectors * sizeof (u32x4)
43 @param mask - match mask
45 define classify_add_del_table
51 u32 table_index [default=0xffffffff];
52 u32 nbuckets [default=2];
53 u32 memory_size [default=2097152];
54 u32 skip_n_vectors [default=0];
55 u32 match_n_vectors [default=1];
56 u32 next_table_index [default=0xffffffff];
57 u32 miss_next_index [default=0xffffffff];
58 u8 current_data_flag [default=0];
59 i16 current_data_offset [default=0];
64 /** \brief Add/Delete classification table response
65 @param context - sender context, to match reply w/ request
66 @param retval - return code for the table add/del request
67 @param new_table_index - for add, returned index of the new table
68 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
69 @param match_n_vectors -for add, returned value of match_n_vectors in table
71 define classify_add_del_table_reply
80 enum classify_action : u8
82 CLASSIFY_API_ACTION_NONE = 0,
83 CLASSIFY_API_ACTION_SET_IP4_FIB_INDEX = 1,
84 CLASSIFY_API_ACTION_SET_IP6_FIB_INDEX = 2,
85 CLASSIFY_API_ACTION_SET_METADATA = 3,
88 /** \brief Classify add / del session request
89 @param client_index - opaque cookie to identify the sender
90 @param context - sender context, to match reply w/ request
91 @param is_add - add session if non-zero, else delete
92 @param table_index - index of the table to add/del the session, required
93 @param hit_next_index - for add, hit_next_index of new session, required
94 @param opaque_index - for add, opaque_index of new session
95 @param advance -for add, advance value for session
97 0: no action (by default)
99 1: Classified IP packets will be looked up from the
100 specified ipv4 fib table (configured by metadata as VRF id).
101 Only valid for L3 input ACL node
102 2: Classified IP packets will be looked up from the
103 specified ipv6 fib table (configured by metadata as VRF id).
104 Only valid for L3 input ACL node
105 3: Classified packet will be steered to source routing policy
106 of given index (in metadata).
107 This is only valid for IPv6 packets redirected to a source
109 @param metadata - valid only if action != 0
110 VRF id if action is 1 or 2.
111 sr policy index if action is 3.
112 @param match_len - length of match, should be equal to skip_n_vectors plus match_n_vectors
113 of target table times sizeof (u32x4)
114 @param match - for add, match value for session, required,
115 needs to include bytes in front
116 with length of skip_n_vectors of target table times sizeof (u32x4)
117 (values of those bytes will be ignored)
119 autoreply define classify_add_del_session
125 u32 hit_next_index [default=0xffffffff];
126 u32 opaque_index [default=0xffffffff];
127 i32 advance [default=0];
128 vl_api_classify_action_t action [default=0];
129 u32 metadata [default=0];
134 /** \brief Set/unset policer classify interface
135 @param client_index - opaque cookie to identify the sender
136 @param context - sender context, to match reply w/ request
137 @param sw_if_index - interface to set/unset policer classify
138 @param ip4_table_index - ip4 classify table index (~0 for skip)
139 @param ip6_table_index - ip6 classify table index (~0 for skip)
140 @param l2_table_index - l2 classify table index (~0 for skip)
141 @param is_add - Set if non-zero, else unset
142 Note: User is recommended to use just one valid table_index per call.
143 (ip4_table_index, ip6_table_index, or l2_table_index)
145 autoreply define policer_classify_set_interface
149 vl_api_interface_index_t sw_if_index;
156 enum policer_classify_table : u8
158 POLICER_CLASSIFY_API_TABLE_IP4,
159 POLICER_CLASSIFY_API_TABLE_IP6,
160 POLICER_CLASSIFY_API_TABLE_L2,
164 /** \brief Get list of policer classify interfaces and tables
165 @param client_index - opaque cookie to identify the sender
166 @param context - sender context, to match reply w/ request
167 @param type - classify table type
168 @param sw_if_index - filter on sw_if_index
170 define policer_classify_dump
174 vl_api_policer_classify_table_t type;
175 vl_api_interface_index_t sw_if_index;
178 /** \brief Policer classify operational state response.
179 @param context - sender context, to match reply w/ request
180 @param sw_if_index - software interface index
181 @param table_index - classify table index
183 define policer_classify_details
186 vl_api_interface_index_t sw_if_index;
190 /** \brief Classify get table IDs request
191 @param client_index - opaque cookie to identify the sender
192 @param context - sender context, to match reply w/ request
194 define classify_table_ids
200 /** \brief Reply for classify get table IDs request
201 @param context - sender context which was passed in the request
202 @param count - number of ids returned in response
203 @param ids - array of classify table ids
205 define classify_table_ids_reply
213 /** \brief Classify table ids by interface index request
214 @param client_index - opaque cookie to identify the sender
215 @param context - sender context, to match reply w/ request
216 @param sw_if_index - index of the interface
218 define classify_table_by_interface
222 vl_api_interface_index_t sw_if_index;
225 /** \brief Reply for classify table id by interface index request
226 @param context - sender context which was passed in the request
227 @param count - number of ids returned in response
228 @param sw_if_index - index of the interface
229 @param l2_table_id - l2 classify table index
230 @param ip4_table_id - ip4 classify table index
231 @param ip6_table_id - ip6 classify table index
233 define classify_table_by_interface_reply
237 vl_api_interface_index_t sw_if_index;
243 /** \brief Classify table info
244 @param client_index - opaque cookie to identify the sender
245 @param context - sender context, to match reply w/ request
246 @param table_id - classify table index
248 define classify_table_info
255 /** \brief Reply for classify table info request
256 @param context - sender context which was passed in the request
257 @param count - number of ids returned in response
258 @param table_id - classify table index
259 @param nbuckets - number of buckets when adding a table
260 @param match_n_vectors - number of match vectors
261 @param skip_n_vectors - number of skip_n_vectors
262 @param active_sessions - number of sessions (active entries)
263 @param next_table_index - index of next table
264 @param miss_next_index - index of miss table
265 @param mask[] - match mask
267 define classify_table_info_reply
276 u32 next_table_index;
279 u8 mask[mask_length];
282 /** \brief Classify sessions dump request
283 @param client_index - opaque cookie to identify the sender
284 @param context - sender context, to match reply w/ request
285 @param table_id - classify table index
287 define classify_session_dump
294 /** \brief Reply for classify table session dump request
295 @param context - sender context which was passed in the request
296 @param count - number of ids returned in response
297 @param table_id - classify table index
298 @param hit_next_index - hit_next_index of session
299 @param opaque_index - for add, opaque_index of session
300 @param advance - advance value of session
301 @param match[] - match value for session
303 define classify_session_details
312 u8 match[match_length];
315 /** \brief Set/unset flow classify interface
316 @param client_index - opaque cookie to identify the sender
317 @param context - sender context, to match reply w/ request
318 @param sw_if_index - interface to set/unset flow classify
319 @param ip4_table_index - ip4 classify table index (~0 for skip)
320 @param ip6_table_index - ip6 classify table index (~0 for skip)
321 @param l2_table_index - l2 classify table index (~0 for skip)
322 @param is_add - Set if non-zero, else unset
323 Note: User is recommended to use just one valid table_index per call.
324 (ip4_table_index, ip6_table_index, or l2_table_index)
326 autoreply define flow_classify_set_interface {
329 vl_api_interface_index_t sw_if_index;
335 enum flow_classify_table : u8
337 FLOW_CLASSIFY_API_TABLE_IP4,
338 FLOW_CLASSIFY_API_TABLE_IP6,
341 /** \brief Get list of flow classify interfaces and tables
342 @param client_index - opaque cookie to identify the sender
343 @param context - sender context, to match reply w/ request
344 @param type - flow classify table type
345 @param sw_if_index - filter on sw_if_index
347 define flow_classify_dump {
350 vl_api_flow_classify_table_t type;
351 vl_api_interface_index_t sw_if_index;
354 /** \brief Flow classify operational state response.
355 @param context - sender context, to match reply w/ request
356 @param sw_if_index - software interface index
357 @param table_index - classify table index
359 define flow_classify_details {
361 vl_api_interface_index_t sw_if_index;
365 /** \brief Set/unset the classification table for an interface request
366 @param client_index - opaque cookie to identify the sender
367 @param context - sender context, to match reply w/ request
368 @param is_ipv6 - ipv6 if non-zero, else ipv4
369 @param sw_if_index - interface to associate with the table
370 @param table_index - index of the table, if ~0 unset the table
372 autoreply define classify_set_interface_ip_table
377 vl_api_interface_index_t sw_if_index;
378 u32 table_index; /* ~0 => off */
381 /** \brief Set/unset l2 classification tables for an interface request
382 @param client_index - opaque cookie to identify the sender
383 @param context - sender context, to match reply w/ request
384 @param sw_if_index - interface to set/unset tables for
385 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
386 @param ip6_table_index - ip6 index
387 @param other_table_index - other index
389 autoreply define classify_set_interface_l2_tables
393 vl_api_interface_index_t sw_if_index;
397 u32 other_table_index;
401 /** \brief Set/unset input ACL interface
402 @param client_index - opaque cookie to identify the sender
403 @param context - sender context, to match reply w/ request
404 @param sw_if_index - interface to set/unset input ACL
405 @param ip4_table_index - ip4 classify table index (~0 for skip)
406 @param ip6_table_index - ip6 classify table index (~0 for skip)
407 @param l2_table_index - l2 classify table index (~0 for skip)
408 @param is_add - Set input ACL if non-zero, else unset
409 Note: User is recommended to use just one valid table_index per call.
410 (ip4_table_index, ip6_table_index, or l2_table_index)
412 autoreply define input_acl_set_interface
416 vl_api_interface_index_t sw_if_index;
423 /** \brief Set/unset output ACL interface
424 @param client_index - opaque cookie to identify the sender
425 @param context - sender context, to match reply w/ request
426 @param sw_if_index - interface to set/unset output ACL
427 @param ip4_table_index - ip4 classify table index (~0 for skip)
428 @param ip6_table_index - ip6 classify table index (~0 for skip)
429 @param l2_table_index - l2 classify table index (~0 for skip)
430 @param is_add - Set output ACL if non-zero, else unset
431 Note: User is recommended to use just one valid table_index per call.
432 (ip4_table_index, ip6_table_index, or l2_table_index)
434 autoreply define output_acl_set_interface
438 vl_api_interface_index_t sw_if_index;
447 * eval: (c-set-style "gnu")