blob: 0bdd1529b2063b72c7cf68e0368bcbf4c56c3dc4 [file] [log] [blame]
Neale Ranns008dbe12018-09-07 09:32:36 -07001/* Hey Emacs use -*- mode: C -*- */
Dave Barachb5e8a772016-12-06 12:04:42 -05002/*
Neale Ranns008dbe12018-09-07 09:32:36 -07003 * Copyright (c) 2018 Cisco and/or its affiliates.
Dave Barachb5e8a772016-12-06 12:04:42 -05004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/** \file
18
19 This file defines vpp IP control-plane API messages which are generally
20 called through a shared memory interface.
21*/
22
Neale Ranns097fa662018-05-01 05:17:55 -070023option version = "3.0.0";
24
Neale Ranns31ed7442018-02-23 05:29:09 -080025import "vnet/fib/fib_types.api";
Neale Rannsde5b08f2018-08-29 06:37:18 -070026import "vnet/ethernet/ethernet_types.api";
Neale Ranns097fa662018-05-01 05:17:55 -070027import "vnet/mfib/mfib_types.api";
Ole Troan668605f2019-12-09 16:08:27 +010028import "vnet/interface_types.api";
Dave Barach0d056e52017-09-28 15:11:16 -040029
Neale Ranns097fa662018-05-01 05:17:55 -070030/** \brief An IP table
Neale Ranns28ab9cc2017-08-14 07:18:42 -070031 @param is_ipv6 - V4 or V6 table
32 @param table_id - table ID associated with the route
Ole Troan75761b92019-09-11 17:49:08 +020033 This table ID will apply to both the unicats
Neale Ranns28ab9cc2017-08-14 07:18:42 -070034 and mlticast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070035 @param name - A client provided name/tag for the table. If this is
36 not set by the client, then VPP will generate something
37 meaningfull.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070038*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -040039typedef ip_table
Neale Ranns097fa662018-05-01 05:17:55 -070040{
41 u32 table_id;
Ole Troan668605f2019-12-09 16:08:27 +010042 bool is_ip6;
43 string name[64];
Neale Ranns097fa662018-05-01 05:17:55 -070044};
45
46/** \brief Add / del table request
47 A table can be added multiple times, but need be deleted only once.
48 @param client_index - opaque cookie to identify the sender
49 @param context - sender context, to match reply w/ request
50*/
Neale Ranns28ab9cc2017-08-14 07:18:42 -070051autoreply define ip_table_add_del
52{
53 u32 client_index;
54 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +010055 bool is_add;
Neale Ranns097fa662018-05-01 05:17:55 -070056 vl_api_ip_table_t table;
Neale Ranns28ab9cc2017-08-14 07:18:42 -070057};
58
Neale Ranns097fa662018-05-01 05:17:55 -070059/** \brief Dump IP all fib tables
Dave Barachb5e8a772016-12-06 12:04:42 -050060 @param client_index - opaque cookie to identify the sender
Neale Ranns097fa662018-05-01 05:17:55 -070061 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -050062*/
Neale Ranns097fa662018-05-01 05:17:55 -070063define ip_table_dump
Dave Barachb5e8a772016-12-06 12:04:42 -050064{
65 u32 client_index;
66 u32 context;
67};
68
Neale Ranns9db6ada2019-11-08 12:42:31 +000069/** \brief IP table replace being
70
71 The use-case is that, for some unspecified reason, the control plane
72 has a very different set of entries it wants in the table than VPP
73 currently has. The CP would thus like to 'replace' VPP's current table
74 only by specifying what the new set of entries shall be, i.e. it is not
75 going to delete anything that already eixts.
76 the CP delcartes the start of this procedure with this begin_replace
77 API Call, and when it has populated all the entries it wants, it calls
78 the below end_replace API. From this point on it is of coursce free
79 to add and delete entries as usual.
80 The underlying mechanism by which VPP implements this replace is
81 purposefully left unspecified.
82
83 @param client_index - opaque cookie to identify the sender
84 @param context - sender context, to match reply w/ request
85 @param table - The table to resync
86*/
87autoreply define ip_table_replace_begin
88{
89 u32 client_index;
90 u32 context;
91 vl_api_ip_table_t table;
92};
93
94/** \brief IP table replace end
95
96 see replace start/
97
98 @param client_index - opaque cookie to identify the sender
99 @param context - sender context, to match reply w/ request
100 @param table - The table that has converged
101*/
102autoreply define ip_table_replace_end
103{
104 u32 client_index;
105 u32 context;
106 vl_api_ip_table_t table;
107};
108
109/** \brief IP table flush
110 Flush a table of all routes
111 @param client_index - opaque cookie to identify the sender
112 @param context - sender context, to match reply w/ request
113 @param table - The table to flush
114*/
115autoreply define ip_table_flush
116{
117 u32 client_index;
118 u32 context;
119 vl_api_ip_table_t table;
120};
121
Dave Barachb5e8a772016-12-06 12:04:42 -0500122/** \brief IP FIB table response
Neale Ranns097fa662018-05-01 05:17:55 -0700123 @param context - sender context
124 @param table - description of the table
Dave Barachb5e8a772016-12-06 12:04:42 -0500125*/
Neale Ranns097fa662018-05-01 05:17:55 -0700126manual_endian manual_print define ip_table_details
Dave Barachb5e8a772016-12-06 12:04:42 -0500127{
128 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700129 vl_api_ip_table_t table;
Dave Barachb5e8a772016-12-06 12:04:42 -0500130};
131
Neale Ranns097fa662018-05-01 05:17:55 -0700132/** \brief An IP route
133 @param table_id The IP table the route is in
134 @param stats_index The index of the route in the stats segment
135 @param prefix the prefix for the route
136 @param n_paths The number of paths the route has
137 @param paths The paths of the route
Dave Barachb5e8a772016-12-06 12:04:42 -0500138*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400139typedef ip_route
Neale Ranns097fa662018-05-01 05:17:55 -0700140{
141 u32 table_id;
142 u32 stats_index;
143 vl_api_prefix_t prefix;
144 u8 n_paths;
145 vl_api_fib_path_t paths[n_paths];
146};
147
148/** \brief Add / del route request
149 @param client_index - opaque cookie to identify the sender
150 @param context - sender context, to match reply w/ request
151 @param is_multipath - Set to 1 if these paths will be added/removed
152 to/from the existing set, or 0 to replace
153 the existing set.
154 is_add=0 & is_multipath=0 implies delete all paths
155 @param is_add - Are the paths being added or removed
156*/
157define ip_route_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500158{
159 u32 client_index;
160 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100161 bool is_add;
162 bool is_multipath;
Neale Ranns097fa662018-05-01 05:17:55 -0700163 vl_api_ip_route_t route;
Dave Barachb5e8a772016-12-06 12:04:42 -0500164};
Neale Ranns097fa662018-05-01 05:17:55 -0700165define ip_route_add_del_reply
Dave Barachb5e8a772016-12-06 12:04:42 -0500166{
167 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700168 i32 retval;
Neale Ranns008dbe12018-09-07 09:32:36 -0700169 u32 stats_index;
Neale Ranns097fa662018-05-01 05:17:55 -0700170};
171
172/** \brief Dump IP routes from a table
173 @param client_index - opaque cookie to identify the sender
174 @param table - The table from which to dump routes (ony ID an AF are needed)
175*/
176define ip_route_dump
177{
178 u32 client_index;
179 u32 context;
180 vl_api_ip_table_t table;
181};
182
183/** \brief IP FIB table entry response
184 @param route The route entry in the table
185*/
186manual_endian manual_print define ip_route_details
187{
188 u32 context;
189 vl_api_ip_route_t route;
Dave Barachb5e8a772016-12-06 12:04:42 -0500190};
191
Neale Ranns37029302018-08-10 05:30:06 -0700192/** \brief IP neighbor flags
193 @param is_static - A static neighbor Entry - there are not flushed
194 If the interface goes down.
195 @param is_no_fib_entry - Do not create a corresponding entry in the FIB
196 table for the neighbor.
197*/
198enum ip_neighbor_flags
199{
200 IP_API_NEIGHBOR_FLAG_NONE = 0,
201 IP_API_NEIGHBOR_FLAG_STATIC = 0x1,
202 IP_API_NEIGHBOR_FLAG_NO_FIB_ENTRY = 0x2,
Neale Ranns37029302018-08-10 05:30:06 -0700203};
204
205/** \brief IP neighbor
206 @param sw_if_index - interface used to reach neighbor
207 @param mac_address - l2 address of the neighbor
208 @param ip_address - ip4 or ip6 address of the neighbor
209 @param flags - flags for the nieghbor
210*/
211typedef ip_neighbor {
Ole Troan668605f2019-12-09 16:08:27 +0100212 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700213 vl_api_ip_neighbor_flags_t flags;
214 vl_api_mac_address_t mac_address;
215 vl_api_address_t ip_address;
216};
217
218/** \brief IP neighbor add / del request
219 @param client_index - opaque cookie to identify the sender
220 @param context - sender context, to match reply w/ request
221 @param is_add - 1 to add neighbor, 0 to delete
222 @param neighbor - the neighor to add/remove
223*/
224define ip_neighbor_add_del
225{
226 u32 client_index;
227 u32 context;
228 /* 1 = add, 0 = delete */
Ole Troan668605f2019-12-09 16:08:27 +0100229 bool is_add;
Neale Ranns37029302018-08-10 05:30:06 -0700230 vl_api_ip_neighbor_t neighbor;
231};
232define ip_neighbor_add_del_reply
233{
234 u32 context;
235 i32 retval;
236 u32 stats_index;
237};
238
Dave Barachb5e8a772016-12-06 12:04:42 -0500239/** \brief Dump IP neighboors
240 @param client_index - opaque cookie to identify the sender
241 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600242 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500243 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
244*/
245define ip_neighbor_dump
246{
Neale Ranns37029302018-08-10 05:30:06 -0700247 u32 client_index;
248 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100249 vl_api_interface_index_t sw_if_index;
250 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500251};
252
253/** \brief IP neighboors dump response
254 @param context - sender context which was passed in the request
Neale Ranns37029302018-08-10 05:30:06 -0700255 @param neighbour - the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500256*/
257define ip_neighbor_details {
Dave Barachb5e8a772016-12-06 12:04:42 -0500258 u32 context;
Neale Ranns37029302018-08-10 05:30:06 -0700259 vl_api_ip_neighbor_t neighbor;
Neale Ranns14260392018-09-28 05:00:57 -0700260};
261
Dave Barachb5e8a772016-12-06 12:04:42 -0500262/** \brief Set the ip flow hash config for a fib request
263 @param client_index - opaque cookie to identify the sender
264 @param context - sender context, to match reply w/ request
265 @param vrf_id - vrf/fib id
266 @param is_ipv6 - if non-zero the fib is ip6, else ip4
267 @param src - if non-zero include src in flow hash
268 @param dst - if non-zero include dst in flow hash
269 @param sport - if non-zero include sport in flow hash
270 @param dport - if non-zero include dport in flow hash
271 @param proto -if non-zero include proto in flow hash
272 @param reverse - if non-zero include reverse in flow hash
Mohsin Kazmi2af0e3a2018-11-20 11:11:12 +0100273 @param symmetric - if non-zero include symmetry in flow hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500274*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400275autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500276{
277 u32 client_index;
278 u32 context;
279 u32 vrf_id;
Ole Troan668605f2019-12-09 16:08:27 +0100280 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500281 u8 src;
282 u8 dst;
283 u8 sport;
284 u8 dport;
285 u8 proto;
286 u8 reverse;
Mohsin Kazmi2af0e3a2018-11-20 11:11:12 +0100287 u8 symmetric;
Dave Barachb5e8a772016-12-06 12:04:42 -0500288};
289
Dave Barachb5e8a772016-12-06 12:04:42 -0500290/** \brief IPv6 router advertisement config request
291 @param client_index - opaque cookie to identify the sender
292 @param context - sender context, to match reply w/ request
293 @param suppress -
294 @param managed -
295 @param other -
296 @param ll_option -
297 @param send_unicast -
298 @param cease -
299 @param is_no -
300 @param default_router -
301 @param max_interval -
302 @param min_interval -
303 @param lifetime -
304 @param initial_count -
305 @param initial_interval -
306*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400307autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500308{
309 u32 client_index;
310 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100311 vl_api_interface_index_t sw_if_index;
Dave Barachb5e8a772016-12-06 12:04:42 -0500312 u8 suppress;
313 u8 managed;
314 u8 other;
315 u8 ll_option;
316 u8 send_unicast;
317 u8 cease;
Ole Troan668605f2019-12-09 16:08:27 +0100318 bool is_no;
Dave Barachb5e8a772016-12-06 12:04:42 -0500319 u8 default_router;
320 u32 max_interval;
321 u32 min_interval;
322 u32 lifetime;
323 u32 initial_count;
324 u32 initial_interval;
325};
326
Dave Barachb5e8a772016-12-06 12:04:42 -0500327/** \brief IPv6 router advertisement prefix config request
328 @param client_index - opaque cookie to identify the sender
329 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800330 @param sw_if_index - The interface the RA prefix information is for
Neale Ranns37029302018-08-10 05:30:06 -0700331 @param prefix - The prefix to advertise
Neale Ranns87df12d2017-02-18 08:16:41 -0800332 @param use_default - Revert to default settings
333 @param no_advertise - Do not advertise this prefix
334 @param off_link - The prefix is off link (it is not configured on the interface)
335 Configures the L-flag, When set, indicates that this
336 prefix can be used for on-link determination.
337 @param no_autoconfig - Setting for the A-flag. When
338 set indicates that this prefix can be used for
339 stateless address configuration.
340 @param no_onlink - The prefix is not on link. Make sure this is consistent
341 with the off_link parameter else YMMV
342 @param is_no - add/delete
343 @param val_lifetime - The length of time in
344 seconds (relative to the time the packet is sent)
345 that the prefix is valid for the purpose of on-link
346 determination. A value of all one bits
347 (0xffffffff) represents infinity
348 @param pref_lifetime - The length of time in
349 seconds (relative to the time the packet is sent)
350 that addresses generated from the prefix via
351 stateless address autoconfiguration remain
352 preferred [ADDRCONF]. A value of all one bits
353 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500354*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400355autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500356{
357 u32 client_index;
358 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100359 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700360 vl_api_prefix_t prefix;
Ole Troan668605f2019-12-09 16:08:27 +0100361 bool use_default;
362 bool no_advertise;
363 bool off_link;
364 bool no_autoconfig;
365 bool no_onlink;
366 bool is_no;
Dave Barachb5e8a772016-12-06 12:04:42 -0500367 u32 val_lifetime;
368 u32 pref_lifetime;
369};
370
Neale Ranns3f844d02017-02-18 00:03:54 -0800371/** \brief IPv6 ND proxy config
372 @param client_index - opaque cookie to identify the sender
373 @param context - sender context, to match reply w/ request
374 @param sw_if_index - The interface the host is on
375 @param address - The address of the host for which to proxy for
376 @param is_add - Adding or deleting
377*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400378autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800379{
380 u32 client_index;
381 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100382 vl_api_interface_index_t sw_if_index;
383 bool is_del;
Neale Ranns37029302018-08-10 05:30:06 -0700384 vl_api_ip6_address_t ip;
Neale Ranns3f844d02017-02-18 00:03:54 -0800385};
386
Neale Ranns3f844d02017-02-18 00:03:54 -0800387/** \brief IPv6 ND proxy details returned after request
388 @param context - sender context, to match reply w/ request
389 @param retval - return code for the request
390*/
391define ip6nd_proxy_details
392{
Neale Ranns3f844d02017-02-18 00:03:54 -0800393 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100394 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700395 vl_api_ip6_address_t ip;
Neale Ranns3f844d02017-02-18 00:03:54 -0800396};
397
398/** \brief IPv6 ND proxy dump request
399 @param context - sender context, to match reply w/ request
400 @param retval - return code for the request
401 @param sw_if_index - The interface the host is on
402 @param address - The address of the host for which to proxy for
403*/
404define ip6nd_proxy_dump
405{
406 u32 client_index;
407 u32 context;
408};
409
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100410/** \brief Start / stop sending router solicitation
411 @param client_index - opaque cookie to identify the sender
412 @param context - sender context, to match reply w/ request
413 @param irt - initial retransmission time
414 @param mrt - maximum retransmission time
415 @param mrc - maximum retransmission count
416 @param mrd - maximum retransmission duration
417 @param sw_if_index - software interface index of interface
418 for sending router solicitation
419 @param stop - if non-zero then stop sending router solicitation,
420 otherwise start sending router solicitation
421*/
422autoreply define ip6nd_send_router_solicitation
423{
424 u32 client_index;
425 u32 context;
426 u32 irt;
427 u32 mrt;
428 u32 mrc;
429 u32 mrd;
430 u32 sw_if_index;
Ole Troan668605f2019-12-09 16:08:27 +0100431 bool stop;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100432};
433
Dave Barachb5e8a772016-12-06 12:04:42 -0500434/** \brief IPv6 interface enable / disable request
435 @param client_index - opaque cookie to identify the sender
436 @param context - sender context, to match reply w/ request
437 @param sw_if_index - interface used to reach neighbor
438 @param enable - if non-zero enable ip6 on interface, else disable
439*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400440autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500441{
442 u32 client_index;
443 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100444 vl_api_interface_index_t sw_if_index;
445 bool enable; /* set to true if enable */
Dave Barachb5e8a772016-12-06 12:04:42 -0500446};
447
Neale Ranns097fa662018-05-01 05:17:55 -0700448/** \brief IPv6 set link local address on interface request
Dave Barachb5e8a772016-12-06 12:04:42 -0500449 @param client_index - opaque cookie to identify the sender
450 @param context - sender context, to match reply w/ request
Neale Ranns097fa662018-05-01 05:17:55 -0700451 @param sw_if_index - interface to set link local on
452 @param address[] - the new link local address
Dave Barachb5e8a772016-12-06 12:04:42 -0500453*/
Neale Ranns097fa662018-05-01 05:17:55 -0700454autoreply define sw_interface_ip6_set_link_local_address
Dave Barachb5e8a772016-12-06 12:04:42 -0500455{
456 u32 client_index;
457 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100458 vl_api_interface_index_t sw_if_index;
459 vl_api_ip6_address_t address;
Dave Barachb5e8a772016-12-06 12:04:42 -0500460};
461
Neale Ranns097fa662018-05-01 05:17:55 -0700462/** \brief Dump IP multicast fib table
463 @param client_index - opaque cookie to identify the sender
464*/
465define ip_mtable_dump
Neale Ranns008dbe12018-09-07 09:32:36 -0700466{
Neale Ranns097fa662018-05-01 05:17:55 -0700467 u32 client_index;
Neale Ranns008dbe12018-09-07 09:32:36 -0700468 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700469};
470define ip_mtable_details
471{
472 u32 client_index;
473 u32 context;
474 vl_api_ip_table_t table;
Neale Ranns008dbe12018-09-07 09:32:36 -0700475};
476
Neale Ranns32e1c012016-11-22 17:07:28 +0000477/** \brief Add / del route request
Ian Wells412ecd32018-10-04 12:31:11 -0700478
479 Adds a route, consisting both of the MFIB entry to match packets
480 (which may already exist) and a path to send those packets down.
481 Routes can be entered repeatedly to add multiple paths. Deletions are
482 per-path.
483
Neale Ranns32e1c012016-11-22 17:07:28 +0000484 @param client_index - opaque cookie to identify the sender
485 @param context - sender context, to match reply w/ request
Ian Wells412ecd32018-10-04 12:31:11 -0700486 @param table_id - fib table /vrf associated with the route
487 @param is_add - true if adding a route; false if deleting one
488 @param is_ipv6 - true iff all the addresses are v6
489 @param entry_flags - see fib_entry_flag_t
490 @param itf_flags - see mfib_entry_flags_t
491 @param next_hop_afi - see dpo_proto_t; the type of destination description
492 @param src_address - the source of the packet
493 @param grp_address - the group the packet is destined to
494 @param nh_address - the nexthop to forward the packet to
495 @param next_hop_sw_if_index - interface to emit packet on
496
497 BIER AFIs use the BIER imposition ID. v4 and v6 AFIs use either the
498 interface or the nexthop address.
499
500 Note that if the route is source-specific (S is supplied, not all 0s),
501 the prefix match is treated as exact (prefixlen /32 or /128).
502
503 FIXME not complete yet
Neale Ranns32e1c012016-11-22 17:07:28 +0000504*/
Neale Ranns097fa662018-05-01 05:17:55 -0700505typedef ip_mroute
506{
507 u32 table_id;
508 u32 entry_flags;
509 u32 rpf_id;
510 vl_api_mprefix_t prefix;
511 u8 n_paths;
512 vl_api_mfib_path_t paths[n_paths];
513};
514
Neale Ranns28c142e2018-09-07 09:37:07 -0700515define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000516{
517 u32 client_index;
518 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100519 bool is_add;
520 bool is_multipath;
Neale Ranns097fa662018-05-01 05:17:55 -0700521 vl_api_ip_mroute_t route;
Neale Ranns32e1c012016-11-22 17:07:28 +0000522};
Neale Ranns28c142e2018-09-07 09:37:07 -0700523define ip_mroute_add_del_reply
524{
525 u32 context;
526 i32 retval;
527 u32 stats_index;
528};
529
Neale Ranns5a8123b2017-01-26 01:18:23 -0800530/** \brief Dump IP multicast fib table
Neale Ranns097fa662018-05-01 05:17:55 -0700531 @param table - The table from which to dump routes (ony ID an AF are needed)
Neale Ranns5a8123b2017-01-26 01:18:23 -0800532*/
Neale Ranns097fa662018-05-01 05:17:55 -0700533define ip_mroute_dump
Neale Ranns5a8123b2017-01-26 01:18:23 -0800534{
535 u32 client_index;
536 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700537 vl_api_ip_table_t table;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800538};
539
Neale Ranns097fa662018-05-01 05:17:55 -0700540/** \brief IP Multicast Route Details
541 @param route - Details of the route
Neale Ranns5a8123b2017-01-26 01:18:23 -0800542*/
Neale Ranns097fa662018-05-01 05:17:55 -0700543manual_endian manual_print define ip_mroute_details
Neale Ranns5a8123b2017-01-26 01:18:23 -0800544{
545 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700546 vl_api_ip_mroute_t route;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800547};
548
Dave Barachb5e8a772016-12-06 12:04:42 -0500549define ip_address_details
550{
Dave Barachb5e8a772016-12-06 12:04:42 -0500551 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100552 vl_api_interface_index_t sw_if_index;
Ole Troan75761b92019-09-11 17:49:08 +0200553 vl_api_address_with_prefix_t prefix;
Dave Barachb5e8a772016-12-06 12:04:42 -0500554};
555
556define ip_address_dump
557{
558 u32 client_index;
559 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100560 vl_api_interface_index_t sw_if_index;
561 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500562};
563
Neale Ranns9e2f9152018-05-18 02:27:10 -0700564/** \brief IP unnumbered configurations
565 @param sw_if_index The interface that has unnumbered configuration
566 @param ip_sw_if_index The IP interface that it is unnnumbered to
567*/
568define ip_unnumbered_details
569{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700570 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100571 vl_api_interface_index_t sw_if_index;
572 vl_api_interface_index_t ip_sw_if_index;
Neale Ranns9e2f9152018-05-18 02:27:10 -0700573};
574
575/** \brief Dump IP unnumbered configurations
576 @param sw_if_index ~0 for all interfaces, else the interface desired
577*/
578define ip_unnumbered_dump
579{
580 u32 client_index;
581 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100582 vl_api_interface_index_t sw_if_index;
Neale Ranns9e2f9152018-05-18 02:27:10 -0700583};
584
Dave Barachb5e8a772016-12-06 12:04:42 -0500585define ip_details
586{
Dave Barachb5e8a772016-12-06 12:04:42 -0500587 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100588 vl_api_interface_index_t sw_if_index;
589 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500590};
591
592define ip_dump
593{
594 u32 client_index;
595 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100596 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500597};
598
Neale Ranns32e1c012016-11-22 17:07:28 +0000599define mfib_signal_dump
600{
601 u32 client_index;
602 u32 context;
603};
604
605define mfib_signal_details
606{
Neale Ranns32e1c012016-11-22 17:07:28 +0000607 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100608 vl_api_interface_index_t sw_if_index;
Neale Ranns32e1c012016-11-22 17:07:28 +0000609 u32 table_id;
Neale Ranns097fa662018-05-01 05:17:55 -0700610 vl_api_mprefix_t prefix;
Neale Ranns32e1c012016-11-22 17:07:28 +0000611 u16 ip_packet_len;
612 u8 ip_packet_data[256];
613};
Dave Barachb5e8a772016-12-06 12:04:42 -0500614
Neale Rannsd91c1db2017-07-31 02:30:50 -0700615/** \brief IP punt policer
616 @param client_index - opaque cookie to identify the sender
617 @param context - sender context, to match reply w/ request
618 @param is_add - 1 to add neighbor, 0 to delete
619 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
620 @param policer_index - Index of policer to use
621*/
622autoreply define ip_punt_police
623{
624 u32 client_index;
625 u32 context;
626 u32 policer_index;
Ole Troan668605f2019-12-09 16:08:27 +0100627 bool is_add;
628 bool is_ip6;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700629};
630
Pavel Kotucek609e1212018-11-27 09:59:44 +0100631/** \brief Punt redirect type
Neale Ranns47527b22018-11-16 00:53:53 -0800632 @param rx_sw_if_index - specify the original RX interface of traffic
633 that should be redirected. ~0 means any interface.
Neale Rannsd91c1db2017-07-31 02:30:50 -0700634 @param tx_sw_if_index - the TX interface to which traffic shoulde be
635 redirected.
Pavel Kotucek609e1212018-11-27 09:59:44 +0100636 @param nh - the next-hop to redirect the traffic to.
637 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
638*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400639typedef punt_redirect
Pavel Kotucek609e1212018-11-27 09:59:44 +0100640{
Ole Troan668605f2019-12-09 16:08:27 +0100641 vl_api_interface_index_t rx_sw_if_index;
642 vl_api_interface_index_t tx_sw_if_index;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100643 vl_api_address_t nh;
644};
645
646/** \brief IP punt redirect
647 @param client_index - opaque cookie to identify the sender
648 @param context - sender context, to match reply w/ request
649 @param punt - punt definition
650 @param is_add - 1 to add neighbor, 0 to delete
Neale Rannsd91c1db2017-07-31 02:30:50 -0700651*/
652autoreply define ip_punt_redirect
653{
654 u32 client_index;
655 u32 context;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100656 vl_api_punt_redirect_t punt;
Ole Troan668605f2019-12-09 16:08:27 +0100657 bool is_add;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100658};
659
660define ip_punt_redirect_dump
661{
662 u32 client_index;
663 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100664 vl_api_interface_index_t sw_if_index;
665 bool is_ipv6;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100666};
667
668define ip_punt_redirect_details
669{
670 u32 context;
671 vl_api_punt_redirect_t punt;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700672};
673
Florin Coras595992c2017-11-06 17:17:08 -0800674autoreply define ip_container_proxy_add_del
675{
676 u32 client_index;
677 u32 context;
Neale Ranns37029302018-08-10 05:30:06 -0700678 vl_api_prefix_t pfx;
Ole Troan668605f2019-12-09 16:08:27 +0100679 vl_api_interface_index_t sw_if_index;
680 bool is_add;
Florin Coras595992c2017-11-06 17:17:08 -0800681};
682
Matus Fabian75b9f452018-10-02 23:27:21 -0700683define ip_container_proxy_dump
684{
685 u32 client_index;
686 u32 context;
687};
688
689define ip_container_proxy_details
690{
691 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100692 vl_api_interface_index_t sw_if_index;
Matus Fabian75b9f452018-10-02 23:27:21 -0700693 vl_api_prefix_t prefix;
694};
695
Neale Rannsb8d44812017-11-10 06:53:54 -0800696/** \brief Configure IP source and L4 port-range check
697 @param client_index - opaque cookie to identify the sender
698 @param context - sender context, to match reply w/ request
699 @param is_ip6 - 1 if source address type is IPv6
700 @param is_add - 1 if add, 0 if delete
Neale Ranns37029302018-08-10 05:30:06 -0700701 @param ip - prefix to match
Neale Rannsb8d44812017-11-10 06:53:54 -0800702 @param number_of_ranges - length of low_port and high_port arrays (must match)
703 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
704 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
705 @param vrf_id - fib table/vrf id to associate the source and port-range check with
706 @note To specify a single port set low_port and high_port entry the same
707*/
708autoreply define ip_source_and_port_range_check_add_del
709{
710 u32 client_index;
711 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100712 bool is_add;
Neale Ranns37029302018-08-10 05:30:06 -0700713 vl_api_prefix_t prefix;
Neale Rannsb8d44812017-11-10 06:53:54 -0800714 u8 number_of_ranges;
715 u16 low_ports[32];
716 u16 high_ports[32];
717 u32 vrf_id;
718};
719
720/** \brief Set interface source and L4 port-range request
721 @param client_index - opaque cookie to identify the sender
722 @param context - sender context, to match reply w/ request
723 @param interface_id - interface index
724 @param tcp_vrf_id - VRF associated with source and TCP port-range check
725 @param udp_vrf_id - VRF associated with source and TCP port-range check
726*/
727autoreply define ip_source_and_port_range_check_interface_add_del
728{
729 u32 client_index;
730 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100731 bool is_add;
732 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800733 u32 tcp_in_vrf_id;
734 u32 tcp_out_vrf_id;
735 u32 udp_in_vrf_id;
736 u32 udp_out_vrf_id;
737};
738
Chore3460b012018-11-28 10:53:11 +0330739/** \brief Set interface source check request
740 @param client_index - opaque cookie to identify the sender
741 @param context - sender context, to match reply w/ request
742 @param is_add - add or del
743 @param loose - strict or loose
744 @param sw_if_index - interface index
745*/
746autoreply define ip_source_check_interface_add_del
747{
748 u32 client_index;
749 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100750 bool is_add;
Chore3460b012018-11-28 10:53:11 +0330751 u8 loose;
Ole Troan668605f2019-12-09 16:08:27 +0100752 vl_api_interface_index_t sw_if_index;
Chore3460b012018-11-28 10:53:11 +0330753};
754
John Lo7f358b32018-04-28 01:19:24 -0400755/** \brief Enable/disable periodic IP neighbor scan
756 @param client_index - opaque cookie to identify the sender
757 @param context - sender context, to match reply w/ request
758 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
759 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
760 @param max_proc_time - max processing time per run in usec, 0: default to 20
761 @param max_update - max neighbor probe/delete per run, 0: default to 10
762 @param scan_int_delay - delay in msec to resume scan if exceed max proc
763 time or update, 0: default to 1
764 @param stale_threshold - threshold in minutes for neighbor deletion,
765 0: default to 4*scan_interval
766*/
767autoreply define ip_scan_neighbor_enable_disable
768{
769 u32 client_index;
770 u32 context;
771 u8 mode;
772 u8 scan_interval;
773 u8 max_proc_time;
774 u8 max_update;
775 u8 scan_int_delay;
776 u8 stale_threshold;
777};
778
John Loc7b43042018-04-13 16:46:22 -0400779/** \brief IP probe neighbor address on an interface by sending an
780 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
781 @param client_index - opaque cookie to identify the sender
782 @param context - sender context, to match reply w/ request
783 @param sw_if_index - interface index
Neale Ranns37029302018-08-10 05:30:06 -0700784 @param dst - target IP address to send IP addr resolution request
John Loc7b43042018-04-13 16:46:22 -0400785*/
786autoreply define ip_probe_neighbor
787{
788 u32 client_index;
789 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100790 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700791 vl_api_address_t dst;
John Loc7b43042018-04-13 16:46:22 -0400792};
793
794/** \brief Register for IP4 ARP resolution event on receing ARP reply or
795 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800796 @param client_index - opaque cookie to identify the sender
797 @param context - sender context, to match reply w/ request
798 @param enable_disable - 1 => register for events, 0 => cancel registration
799 @param pid - sender's pid
Neale Ranns37029302018-08-10 05:30:06 -0700800 @param ip - exact IP4 address of interested arp resolution event, or
801 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800802*/
803autoreply define want_ip4_arp_events
804{
805 u32 client_index;
806 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100807 bool enable_disable;
Neale Rannsb8d44812017-11-10 06:53:54 -0800808 u32 pid;
Neale Ranns37029302018-08-10 05:30:06 -0700809 vl_api_ip4_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800810};
811
John Loc7b43042018-04-13 16:46:22 -0400812/** \brief Tell client about an IP4 ARP resolution event or
813 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800814 @param client_index - opaque cookie to identify the sender
Neale Ranns37029302018-08-10 05:30:06 -0700815 @param ip - the exact ip4 address of interest
Neale Rannsb8d44812017-11-10 06:53:54 -0800816 @param pid - client pid registered to receive notification
817 @param sw_if_index - interface which received ARP packet
Neale Ranns37029302018-08-10 05:30:06 -0700818 @param mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400819 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800820*/
821define ip4_arp_event
822{
823 u32 client_index;
Neale Ranns37029302018-08-10 05:30:06 -0700824 vl_api_ip4_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800825 u32 pid;
Ole Troan668605f2019-12-09 16:08:27 +0100826 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700827 vl_api_mac_address_t mac;
Neale Rannsb8d44812017-11-10 06:53:54 -0800828 u8 mac_ip;
829};
830
Marek Gradzki51e59682018-03-06 10:05:44 +0100831service {
832 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
833 events ip4_arp_event;
834};
835
John Loc7b43042018-04-13 16:46:22 -0400836/** \brief Register for IP6 ND resolution event on recieving NA reply
837 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800838 @param client_index - opaque cookie to identify the sender
839 @param context - sender context, to match reply w/ request
840 @param enable_disable - 1 => register for events, 0 => cancel registration
841 @param pid - sender's pid
Neale Ranns37029302018-08-10 05:30:06 -0700842 @param ip - the exact IP6 address of interested ND resolution event, or
843 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800844*/
845autoreply define want_ip6_nd_events
846{
847 u32 client_index;
848 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100849 bool enable_disable;
Neale Rannsb8d44812017-11-10 06:53:54 -0800850 u32 pid;
Neale Ranns37029302018-08-10 05:30:06 -0700851 vl_api_ip6_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800852};
853
John Loc7b43042018-04-13 16:46:22 -0400854/** \brief Tell client about an IP6 ND resolution or
855 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800856 @param client_index - opaque cookie to identify the sender
857 @param pid - client pid registered to receive notification
858 @param sw_if_index - interface which received ARP packet
Neale Ranns37029302018-08-10 05:30:06 -0700859 @param ip - the exact ip6 address of interest
Neale Rannsb8d44812017-11-10 06:53:54 -0800860 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400861 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800862*/
863define ip6_nd_event
864{
865 u32 client_index;
866 u32 pid;
Ole Troan668605f2019-12-09 16:08:27 +0100867 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700868 vl_api_ip6_address_t ip;
869 vl_api_mac_address_t mac;
Neale Rannsb8d44812017-11-10 06:53:54 -0800870 u8 mac_ip;
871};
872
Marek Gradzki51e59682018-03-06 10:05:44 +0100873service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100874 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
875 events ip6_ra_event;
876};
877
878/** \brief Register for ip6 router advertisement events
879 @param client_index - opaque cookie to identify the sender
880 @param context - sender context, to match reply w/ request
881 @param enable_disable - 1 => register for events, 0 => cancel registration
882 @param pid - sender's pid
883*/
884autoreply define want_ip6_ra_events
885{
886 u32 client_index;
887 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100888 bool enable_disable;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100889 u32 pid;
890};
891
892/** \brief Struct representing RA prefix info
Neale Ranns37029302018-08-10 05:30:06 -0700893 @param prefix - RA prefix info destination address
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100894 @param flags - RA prefix info flags
895 @param valid_time - RA prefix info valid time
896 @param preferred_time - RA prefix info preferred time
897*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400898typedef ip6_ra_prefix_info
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100899{
Neale Ranns37029302018-08-10 05:30:06 -0700900 vl_api_prefix_t prefix;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100901 u8 flags;
902 u32 valid_time;
903 u32 preferred_time;
904};
905
906/** \brief Tell client about a router advertisement event
907 @param client_index - opaque cookie to identify the sender
908 @param pid - client pid registered to receive notification
909 @param current_hop_limit - RA current hop limit
910 @param flags - RA flags
911 @param router_lifetime_in_sec - RA lifetime in seconds
Neale Ranns37029302018-08-10 05:30:06 -0700912 @param router_addr - The router's address
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100913 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
914 @param time_in_msec_between_retransmitted_neighbor_solicitations -
915 time in msec between retransmitted neighbor solicitations
916 @param n_prefixes -
917 @param prefixes -
918*/
919define ip6_ra_event
920{
921 u32 client_index;
922 u32 pid;
Ole Troan668605f2019-12-09 16:08:27 +0100923 vl_api_interface_index_t sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700924 vl_api_ip6_address_t router_addr;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100925 u8 current_hop_limit;
926 u8 flags;
927 u16 router_lifetime_in_sec;
928 u32 neighbor_reachable_time_in_msec;
929 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
930 u32 n_prefixes;
931 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
932};
933
934service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100935 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
936 events ip6_nd_event;
937};
938
Neale Ranns0053de62018-05-22 08:40:52 -0700939/** \brief Proxy ARP configuration type
Neale Ranns37029302018-08-10 05:30:06 -0700940 @param table_id - VRF / Fib table ID
941 @param low - Low address of the Proxy ARP range
942 @param hi - High address of the Proxy ARP range
Neale Rannsb8d44812017-11-10 06:53:54 -0800943*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400944typedef proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800945{
Neale Ranns37029302018-08-10 05:30:06 -0700946 u32 table_id;
947 vl_api_ip4_address_t low;
948 vl_api_ip4_address_t hi;
Neale Rannsb8d44812017-11-10 06:53:54 -0800949};
950
951/** \brief Proxy ARP add / del request
952 @param client_index - opaque cookie to identify the sender
953 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700954 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
955 @param proxy - Proxy configuration
956*/
957autoreply define proxy_arp_add_del
958{
959 u32 client_index;
960 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100961 bool is_add;
Neale Ranns0053de62018-05-22 08:40:52 -0700962 vl_api_proxy_arp_t proxy;
963};
964
965/** \brief Proxy ARP dump request
966 */
967define proxy_arp_dump
968{
969 u32 client_index;
970 u32 context;
971};
972
973/** \brief Proxy ARP dump details reply
974 * @param proxy - Same data as used to configure
975 */
976define proxy_arp_details
977{
978 u32 context;
979 vl_api_proxy_arp_t proxy;
980};
981
982/** \brief Proxy ARP add / del interface request
983 @param client_index - opaque cookie to identify the sender
984 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800985 @param sw_if_index - Which interface to enable / disable Proxy Arp on
986 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
987*/
988autoreply define proxy_arp_intfc_enable_disable
989{
990 u32 client_index;
991 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100992 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800993 /* 1 = on, 0 = off */
Ole Troan668605f2019-12-09 16:08:27 +0100994 bool enable_disable;
Neale Rannsb8d44812017-11-10 06:53:54 -0800995};
996
Neale Ranns0053de62018-05-22 08:40:52 -0700997/** \brief Proxy ARP interface dump request
998 */
999define proxy_arp_intfc_dump
1000{
1001 u32 client_index;
1002 u32 context;
1003};
1004
1005/** \brief Proxy ARP interface dump details reply
1006 * @param sw_if_index The interface on which ARP proxy is enabled.
1007 */
1008define proxy_arp_intfc_details
1009{
1010 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +01001011 vl_api_interface_index_t sw_if_index;
Neale Ranns0053de62018-05-22 08:40:52 -07001012};
1013
Neale Rannsb8d44812017-11-10 06:53:54 -08001014/** \brief Set max allowed ARP or ip6 neighbor entries request
1015 @param client_index - opaque cookie to identify the sender
1016 @param context - sender context, to match reply w/ request
1017 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
1018 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
1019*/
1020autoreply define set_arp_neighbor_limit
1021{
1022 u32 client_index;
1023 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +01001024 bool is_ipv6;
Neale Rannsb8d44812017-11-10 06:53:54 -08001025 u32 arp_neighbor_limit;
1026};
1027
1028/** \brief IOAM enable : Enable in-band OAM
1029 @param id - profile id
1030 @param seqno - To enable Seqno Processing
1031 @param analyse - Enabling analysis of iOAM at decap node
Ole Troan668605f2019-12-09 16:08:27 +01001032 @param pot_enable - Proof of Work enabled or not flag
Neale Rannsb8d44812017-11-10 06:53:54 -08001033 @param trace_enable - iOAM Trace enabled or not flag
1034*/
1035autoreply define ioam_enable
1036{
1037 u32 client_index;
1038 u32 context;
1039 u16 id;
1040 u8 seqno;
1041 u8 analyse;
1042 u8 pot_enable;
1043 u8 trace_enable;
1044 u32 node_id;
1045};
1046
1047/** \brief iOAM disable
1048 @param client_index - opaque cookie to identify the sender
1049 @param context - sender context, to match reply w/ request
1050 @param index - MAP Domain index
1051*/
1052autoreply define ioam_disable
1053{
1054 u32 client_index;
1055 u32 context;
1056 u16 id;
1057};
1058
Klement Sekerade34c352019-06-25 11:19:22 +00001059enum ip_reass_type
1060{
1061 IP_REASS_TYPE_FULL = 0,
1062 IP_REASS_TYPE_SHALLOW_VIRTUAL = 0x1,
1063};
1064
Klement Sekera75e7d132017-09-20 08:26:30 +02001065autoreply define ip_reassembly_set
1066{
1067 u32 client_index;
1068 u32 context;
1069 u32 timeout_ms;
1070 u32 max_reassemblies;
Klement Sekera3a343d42019-05-16 14:35:46 +02001071 u32 max_reassembly_length;
Klement Sekera75e7d132017-09-20 08:26:30 +02001072 u32 expire_walk_interval_ms;
Ole Troan668605f2019-12-09 16:08:27 +01001073 bool is_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +00001074 vl_api_ip_reass_type_t type;
Klement Sekera75e7d132017-09-20 08:26:30 +02001075};
1076
1077define ip_reassembly_get
1078{
1079 u32 client_index;
1080 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +01001081 bool is_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +00001082 vl_api_ip_reass_type_t type;
Klement Sekera75e7d132017-09-20 08:26:30 +02001083};
1084
1085define ip_reassembly_get_reply
1086{
Klement Sekera75e7d132017-09-20 08:26:30 +02001087 u32 context;
1088 i32 retval;
1089 u32 timeout_ms;
1090 u32 max_reassemblies;
Klement Sekera3a343d42019-05-16 14:35:46 +02001091 u32 max_reassembly_length;
Klement Sekera75e7d132017-09-20 08:26:30 +02001092 u32 expire_walk_interval_ms;
Ole Troan668605f2019-12-09 16:08:27 +01001093 bool is_ip6;
Klement Sekera75e7d132017-09-20 08:26:30 +02001094};
1095
Klement Sekera4c533132018-02-22 11:41:12 +01001096/** \brief Enable/disable reassembly feature
1097 @param client_index - opaque cookie to identify the sender
1098 @param context - sender context, to match reply w/ request
1099 @param sw_if_index - interface to enable/disable feature on
1100 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1101 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1102*/
1103autoreply define ip_reassembly_enable_disable
1104{
1105 u32 client_index;
1106 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +01001107 vl_api_interface_index_t sw_if_index;
1108 bool enable_ip4;
1109 bool enable_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +00001110 vl_api_ip_reass_type_t type;
Klement Sekera4c533132018-02-22 11:41:12 +01001111};
1112
Dave Barachb5e8a772016-12-06 12:04:42 -05001113/*
1114 * Local Variables:
1115 * eval: (c-set-style "gnu")
1116 * End:
1117 */