blob: 71ad1c189c10197c19d88f4a05a9b16a62895132 [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
Marek Gradzki7eaaf742018-05-25 15:50:05 +020023option version = "1.3.0";
Neale Ranns947ea622018-06-07 23:48:20 -070024import "vnet/ip/ip_types.api";
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";
Dave Barach0d056e52017-09-28 15:11:16 -040027
Neale Ranns28ab9cc2017-08-14 07:18:42 -070028/** \brief Add / del table request
29 A table can be added multiple times, but need be deleted only once.
30 @param client_index - opaque cookie to identify the sender
31 @param context - sender context, to match reply w/ request
32 @param is_ipv6 - V4 or V6 table
33 @param table_id - table ID associated with the route
34 This table ID will apply to both the unicats
35 and mlticast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070036 @param name - A client provided name/tag for the table. If this is
37 not set by the client, then VPP will generate something
38 meaningfull.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070039*/
40autoreply define ip_table_add_del
41{
42 u32 client_index;
43 u32 context;
44 u32 table_id;
45 u8 is_ipv6;
46 u8 is_add;
Neale Ranns2297af02017-09-12 09:45:04 -070047 u8 name[64];
Neale Ranns28ab9cc2017-08-14 07:18:42 -070048};
49
Dave Barachb5e8a772016-12-06 12:04:42 -050050/** \brief Dump IP fib table
51 @param client_index - opaque cookie to identify the sender
52*/
53define ip_fib_dump
54{
55 u32 client_index;
56 u32 context;
57};
58
Dave Barachb5e8a772016-12-06 12:04:42 -050059/** \brief IP FIB table response
60 @param table_id - IP fib table id
61 @address_length - mask length
62 @address - ip4 prefix
63 @param count - the number of fib_path in path
64 @param path - array of of fib_path structures
65*/
66manual_endian manual_print define ip_fib_details
67{
68 u32 context;
69 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070070 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050071 u8 address_length;
72 u8 address[4];
73 u32 count;
Neale Ranns008dbe12018-09-07 09:32:36 -070074 u32 stats_index;
Dave Barachb5e8a772016-12-06 12:04:42 -050075 vl_api_fib_path_t path[count];
76};
77
78/** \brief Dump IP6 fib table
79 @param client_index - opaque cookie to identify the sender
80*/
81define ip6_fib_dump
82{
83 u32 client_index;
84 u32 context;
85};
86
Neale Ranns2297af02017-09-12 09:45:04 -070087/** \brief IP6 FIB table entry response
Dave Barachb5e8a772016-12-06 12:04:42 -050088 @param table_id - IP6 fib table id
Neale Ranns2297af02017-09-12 09:45:04 -070089 @param address_length - mask length
90 @param address - ip6 prefix
Dave Barachb5e8a772016-12-06 12:04:42 -050091 @param count - the number of fib_path in path
92 @param path - array of of fib_path structures
93*/
94manual_endian manual_print define ip6_fib_details
95{
96 u32 context;
97 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070098 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050099 u8 address_length;
100 u8 address[16];
101 u32 count;
Neale Ranns008dbe12018-09-07 09:32:36 -0700102 u32 stats_index;
Dave Barachb5e8a772016-12-06 12:04:42 -0500103 vl_api_fib_path_t path[count];
104};
105
106/** \brief Dump IP neighboors
107 @param client_index - opaque cookie to identify the sender
108 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600109 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500110 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
111*/
112define ip_neighbor_dump
113{
114 u32 client_index;
115 u32 context;
116 u32 sw_if_index;
117 u8 is_ipv6;
118};
119
120/** \brief IP neighboors dump response
121 @param context - sender context which was passed in the request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600122 @param sw_if_index - The interface used to reach the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500123 @param is_static - [1|0] to indicate if neighbor is statically configured
124 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
125*/
126define ip_neighbor_details {
127 u32 context;
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600128 u32 sw_if_index;
Pavel Kotucek8cb07c92017-01-11 10:13:54 +0100129 u8 is_static;
Dave Barachb5e8a772016-12-06 12:04:42 -0500130 u8 is_ipv6;
131 u8 mac_address[6];
132 u8 ip_address[16];
133};
134
135/** \brief IP neighbor add / del request
136 @param client_index - opaque cookie to identify the sender
137 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -0500138 @param sw_if_index - interface used to reach neighbor
139 @param is_add - 1 to add neighbor, 0 to delete
140 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
Neale Ranns239d3fe2017-03-08 08:56:58 -0800141 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
142 @param is_static - A static neighbor Entry - there are not flushed
143 If the interface goes down.
144 @param is_no_adj_fib - Do not create a corresponding entry in the FIB
145 table for the neighbor.
Dave Barachb5e8a772016-12-06 12:04:42 -0500146 @param mac_address - l2 address of the neighbor
147 @param dst_address - ip4 or ip6 address of the neighbor
148*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400149autoreply define ip_neighbor_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500150{
151 u32 client_index;
152 u32 context;
Dave Barachb5e8a772016-12-06 12:04:42 -0500153 u32 sw_if_index;
154 /* 1 = add, 0 = delete */
155 u8 is_add;
156 u8 is_ipv6;
157 u8 is_static;
Neale Ranns239d3fe2017-03-08 08:56:58 -0800158 u8 is_no_adj_fib;
Dave Barachb5e8a772016-12-06 12:04:42 -0500159 u8 mac_address[6];
160 u8 dst_address[16];
161};
162
Dave Barachb5e8a772016-12-06 12:04:42 -0500163/** \brief Set the ip flow hash config for a fib request
164 @param client_index - opaque cookie to identify the sender
165 @param context - sender context, to match reply w/ request
166 @param vrf_id - vrf/fib id
167 @param is_ipv6 - if non-zero the fib is ip6, else ip4
168 @param src - if non-zero include src in flow hash
169 @param dst - if non-zero include dst in flow hash
170 @param sport - if non-zero include sport in flow hash
171 @param dport - if non-zero include dport in flow hash
172 @param proto -if non-zero include proto in flow hash
173 @param reverse - if non-zero include reverse in flow hash
174*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400175autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500176{
177 u32 client_index;
178 u32 context;
179 u32 vrf_id;
180 u8 is_ipv6;
181 u8 src;
182 u8 dst;
183 u8 sport;
184 u8 dport;
185 u8 proto;
186 u8 reverse;
187};
188
Dave Barachb5e8a772016-12-06 12:04:42 -0500189/** \brief IPv6 router advertisement config request
190 @param client_index - opaque cookie to identify the sender
191 @param context - sender context, to match reply w/ request
192 @param suppress -
193 @param managed -
194 @param other -
195 @param ll_option -
196 @param send_unicast -
197 @param cease -
198 @param is_no -
199 @param default_router -
200 @param max_interval -
201 @param min_interval -
202 @param lifetime -
203 @param initial_count -
204 @param initial_interval -
205*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400206autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500207{
208 u32 client_index;
209 u32 context;
210 u32 sw_if_index;
211 u8 suppress;
212 u8 managed;
213 u8 other;
214 u8 ll_option;
215 u8 send_unicast;
216 u8 cease;
217 u8 is_no;
218 u8 default_router;
219 u32 max_interval;
220 u32 min_interval;
221 u32 lifetime;
222 u32 initial_count;
223 u32 initial_interval;
224};
225
Dave Barachb5e8a772016-12-06 12:04:42 -0500226/** \brief IPv6 router advertisement prefix config request
227 @param client_index - opaque cookie to identify the sender
228 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800229 @param sw_if_index - The interface the RA prefix information is for
230 @param address[] - The prefix to advertise
231 @param address_length - the prefix length
232 @param use_default - Revert to default settings
233 @param no_advertise - Do not advertise this prefix
234 @param off_link - The prefix is off link (it is not configured on the interface)
235 Configures the L-flag, When set, indicates that this
236 prefix can be used for on-link determination.
237 @param no_autoconfig - Setting for the A-flag. When
238 set indicates that this prefix can be used for
239 stateless address configuration.
240 @param no_onlink - The prefix is not on link. Make sure this is consistent
241 with the off_link parameter else YMMV
242 @param is_no - add/delete
243 @param val_lifetime - The length of time in
244 seconds (relative to the time the packet is sent)
245 that the prefix is valid for the purpose of on-link
246 determination. A value of all one bits
247 (0xffffffff) represents infinity
248 @param pref_lifetime - The length of time in
249 seconds (relative to the time the packet is sent)
250 that addresses generated from the prefix via
251 stateless address autoconfiguration remain
252 preferred [ADDRCONF]. A value of all one bits
253 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500254*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400255autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500256{
257 u32 client_index;
258 u32 context;
259 u32 sw_if_index;
260 u8 address[16];
261 u8 address_length;
262 u8 use_default;
263 u8 no_advertise;
264 u8 off_link;
265 u8 no_autoconfig;
266 u8 no_onlink;
267 u8 is_no;
268 u32 val_lifetime;
269 u32 pref_lifetime;
270};
271
Neale Ranns3f844d02017-02-18 00:03:54 -0800272/** \brief IPv6 ND proxy config
273 @param client_index - opaque cookie to identify the sender
274 @param context - sender context, to match reply w/ request
275 @param sw_if_index - The interface the host is on
276 @param address - The address of the host for which to proxy for
277 @param is_add - Adding or deleting
278*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400279autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800280{
281 u32 client_index;
282 u32 context;
283 u32 sw_if_index;
284 u8 is_del;
285 u8 address[16];
286};
287
Neale Ranns3f844d02017-02-18 00:03:54 -0800288/** \brief IPv6 ND proxy details returned after request
289 @param context - sender context, to match reply w/ request
290 @param retval - return code for the request
291*/
292define ip6nd_proxy_details
293{
Neale Ranns3f844d02017-02-18 00:03:54 -0800294 u32 context;
295 u32 sw_if_index;
296 u8 address[16];
297};
298
299/** \brief IPv6 ND proxy dump request
300 @param context - sender context, to match reply w/ request
301 @param retval - return code for the request
302 @param sw_if_index - The interface the host is on
303 @param address - The address of the host for which to proxy for
304*/
305define ip6nd_proxy_dump
306{
307 u32 client_index;
308 u32 context;
309};
310
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100311/** \brief Start / stop sending router solicitation
312 @param client_index - opaque cookie to identify the sender
313 @param context - sender context, to match reply w/ request
314 @param irt - initial retransmission time
315 @param mrt - maximum retransmission time
316 @param mrc - maximum retransmission count
317 @param mrd - maximum retransmission duration
318 @param sw_if_index - software interface index of interface
319 for sending router solicitation
320 @param stop - if non-zero then stop sending router solicitation,
321 otherwise start sending router solicitation
322*/
323autoreply define ip6nd_send_router_solicitation
324{
325 u32 client_index;
326 u32 context;
327 u32 irt;
328 u32 mrt;
329 u32 mrc;
330 u32 mrd;
331 u32 sw_if_index;
332 u8 stop;
333};
334
Dave Barachb5e8a772016-12-06 12:04:42 -0500335/** \brief IPv6 interface enable / disable request
336 @param client_index - opaque cookie to identify the sender
337 @param context - sender context, to match reply w/ request
338 @param sw_if_index - interface used to reach neighbor
339 @param enable - if non-zero enable ip6 on interface, else disable
340*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400341autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500342{
343 u32 client_index;
344 u32 context;
345 u32 sw_if_index;
346 u8 enable; /* set to true if enable */
347};
348
Dave Barachb5e8a772016-12-06 12:04:42 -0500349/** \brief IPv6 set link local address on interface request
350 @param client_index - opaque cookie to identify the sender
351 @param context - sender context, to match reply w/ request
352 @param sw_if_index - interface to set link local on
353 @param address[] - the new link local address
Dave Barachb5e8a772016-12-06 12:04:42 -0500354*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400355autoreply define sw_interface_ip6_set_link_local_address
Dave Barachb5e8a772016-12-06 12:04:42 -0500356{
357 u32 client_index;
358 u32 context;
359 u32 sw_if_index;
360 u8 address[16];
Dave Barachb5e8a772016-12-06 12:04:42 -0500361};
362
Dave Barachb5e8a772016-12-06 12:04:42 -0500363/** \brief Add / del route request
364 @param client_index - opaque cookie to identify the sender
365 @param context - sender context, to match reply w/ request
366 @param sw_if_index - software index of the new vlan's parent interface
367 @param vrf_id - fib table /vrf associated with the route
368 @param lookup_in_vrf -
369 @param classify_table_index -
Dave Barachb5e8a772016-12-06 12:04:42 -0500370 @param is_add - 1 if adding the route, 0 if deleting
371 @param is_drop - Drop the packet
372 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
373 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
374 @param is_ipv6 - 0 if an ip4 route, else ip6
Neale Ranns810086d2017-11-05 16:26:46 -0800375 @param is_local - The route will result in packets sent to VPP IP stack
376 @param is_udp_encap - The path describes a UDP-o-IP encapsulation.
Dave Barachb5e8a772016-12-06 12:04:42 -0500377 @param is_classify -
378 @param is_multipath - Set to 1 if this is a multipath route, else 0
Neale Rannsf068c3e2018-01-03 04:18:48 -0800379 @param is_dvr - Does the route resolve via a DVR interface.
Neale Ranns054c03a2017-10-13 05:15:07 -0700380 @param is_source_lookup - The the path is a deaggregate path (i.e. a lookup
381 in another table) is the lookup on the packet's
382 source address or destination.
Neale Ranns810086d2017-11-05 16:26:46 -0800383 @param next_hop_weight - Weight for Unequal cost multi-path
384 @param next_hop_preference - Path that are up that have the best preference are
385 are used for forwarding. lower value is better.
386 @param next_hop_id - Used when the path resolves via an object that has a unique
387 identifier.
Dave Barachb5e8a772016-12-06 12:04:42 -0500388 @param dst_address_length -
389 @param dst_address[16] -
390 @param next_hop_address[16] -
391 @param next_hop_n_out_labels - the number of labels in the label stack
392 @param next_hop_out_label_stack - the next-hop output label stack, outer most first
393 @param next_hop_via_label - The next-hop is a resolved via a local label
394*/
Neale Ranns008dbe12018-09-07 09:32:36 -0700395define ip_add_del_route
Dave Barachb5e8a772016-12-06 12:04:42 -0500396{
397 u32 client_index;
398 u32 context;
399 u32 next_hop_sw_if_index;
400 u32 table_id;
401 u32 classify_table_index;
402 u32 next_hop_table_id;
Neale Ranns810086d2017-11-05 16:26:46 -0800403 u32 next_hop_id;
Dave Barachb5e8a772016-12-06 12:04:42 -0500404 u8 is_add;
405 u8 is_drop;
406 u8 is_unreach;
407 u8 is_prohibit;
408 u8 is_ipv6;
409 u8 is_local;
410 u8 is_classify;
411 u8 is_multipath;
412 u8 is_resolve_host;
413 u8 is_resolve_attached;
Neale Rannsf068c3e2018-01-03 04:18:48 -0800414 u8 is_dvr;
Neale Ranns054c03a2017-10-13 05:15:07 -0700415 u8 is_source_lookup;
Neale Ranns810086d2017-11-05 16:26:46 -0800416 u8 is_udp_encap;
Dave Barachb5e8a772016-12-06 12:04:42 -0500417 u8 next_hop_weight;
Neale Ranns57b58602017-07-15 07:37:25 -0700418 u8 next_hop_preference;
Neale Ranns810086d2017-11-05 16:26:46 -0800419 u8 next_hop_proto;
Dave Barachb5e8a772016-12-06 12:04:42 -0500420 u8 dst_address_length;
421 u8 dst_address[16];
422 u8 next_hop_address[16];
423 u8 next_hop_n_out_labels;
424 u32 next_hop_via_label;
Neale Ranns31ed7442018-02-23 05:29:09 -0800425 vl_api_fib_mpls_label_t next_hop_out_label_stack[next_hop_n_out_labels];
Dave Barachb5e8a772016-12-06 12:04:42 -0500426};
427
Neale Ranns008dbe12018-09-07 09:32:36 -0700428define ip_add_del_route_reply
429{
430 u32 context;
431 i32 retval;
432 u32 stats_index;
433};
434
Neale Ranns32e1c012016-11-22 17:07:28 +0000435/** \brief Add / del route request
436 @param client_index - opaque cookie to identify the sender
437 @param context - sender context, to match reply w/ request
438 @param sw_if_index - software index of the new vlan's parent interface
439 @param vrf_id - fib table /vrf associated with the route
Neale Rannsd792d9c2017-10-21 10:53:20 -0700440 @param next_hop_afi - Use dpo_proto_t
Neale Ranns32e1c012016-11-22 17:07:28 +0000441 FIXME
442*/
Neale Ranns28c142e2018-09-07 09:37:07 -0700443define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000444{
445 u32 client_index;
446 u32 context;
447 u32 next_hop_sw_if_index;
448 u32 table_id;
449 u32 entry_flags;
450 u32 itf_flags;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800451 u32 rpf_id;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700452 u32 bier_imp;
Neale Ranns32e1c012016-11-22 17:07:28 +0000453 u16 grp_address_length;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700454 u8 next_hop_afi;
Neale Ranns32e1c012016-11-22 17:07:28 +0000455 u8 is_add;
456 u8 is_ipv6;
457 u8 is_local;
458 u8 grp_address[16];
459 u8 src_address[16];
Neale Rannse821ab12017-06-01 07:45:05 -0700460 u8 nh_address[16];
Neale Ranns32e1c012016-11-22 17:07:28 +0000461};
462
Neale Ranns28c142e2018-09-07 09:37:07 -0700463define ip_mroute_add_del_reply
464{
465 u32 context;
466 i32 retval;
467 u32 stats_index;
468};
469
Neale Ranns5a8123b2017-01-26 01:18:23 -0800470/** \brief Dump IP multicast fib table
471 @param client_index - opaque cookie to identify the sender
472*/
473define ip_mfib_dump
474{
475 u32 client_index;
476 u32 context;
477};
478
479/** \brief IP Multicast FIB table response
480 @param table_id - IP fib table id
481 @address_length - mask length
482 @grp_address - Group address/prefix
483 @src_address - Source address
484 @param count - the number of fib_path in path
485 @param path - array of of fib_path structures
486*/
487manual_endian manual_print define ip_mfib_details
488{
489 u32 context;
490 u32 table_id;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800491 u32 entry_flags;
492 u32 rpf_id;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800493 u8 address_length;
494 u8 grp_address[4];
495 u8 src_address[4];
496 u32 count;
Neale Ranns28c142e2018-09-07 09:37:07 -0700497 u32 stats_index;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800498 vl_api_fib_path_t path[count];
499};
500
501/** \brief Dump IP6 multicast fib table
502 @param client_index - opaque cookie to identify the sender
503*/
504define ip6_mfib_dump
505{
506 u32 client_index;
507 u32 context;
508};
509
510/** \brief IP6 Multicast FIB table response
511 @param table_id - IP fib table id
512 @address_length - mask length
513 @grp_address - Group address/prefix
514 @src_address - Source address
515 @param count - the number of fib_path in path
516 @param path - array of of fib_path structures
517*/
518manual_endian manual_print define ip6_mfib_details
519{
520 u32 context;
521 u32 table_id;
522 u8 address_length;
523 u8 grp_address[16];
524 u8 src_address[16];
525 u32 count;
526 vl_api_fib_path_t path[count];
527};
528
Dave Barachb5e8a772016-12-06 12:04:42 -0500529define ip_address_details
530{
Dave Barachb5e8a772016-12-06 12:04:42 -0500531 u32 context;
532 u8 ip[16];
533 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600534 u32 sw_if_index;
535 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500536};
537
538define ip_address_dump
539{
540 u32 client_index;
541 u32 context;
542 u32 sw_if_index;
543 u8 is_ipv6;
544};
545
Neale Ranns9e2f9152018-05-18 02:27:10 -0700546/** \brief IP unnumbered configurations
547 @param sw_if_index The interface that has unnumbered configuration
548 @param ip_sw_if_index The IP interface that it is unnnumbered to
549*/
550define ip_unnumbered_details
551{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700552 u32 context;
553 u32 sw_if_index;
554 u32 ip_sw_if_index;
555};
556
557/** \brief Dump IP unnumbered configurations
558 @param sw_if_index ~0 for all interfaces, else the interface desired
559*/
560define ip_unnumbered_dump
561{
562 u32 client_index;
563 u32 context;
564 u32 sw_if_index;
565};
566
Dave Barachb5e8a772016-12-06 12:04:42 -0500567define ip_details
568{
Dave Barachb5e8a772016-12-06 12:04:42 -0500569 u32 context;
Ondrej Fabryb11f9032018-08-14 12:39:40 +0200570 u32 sw_if_index;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600571 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500572};
573
574define ip_dump
575{
576 u32 client_index;
577 u32 context;
578 u8 is_ipv6;
579};
580
Neale Ranns32e1c012016-11-22 17:07:28 +0000581define mfib_signal_dump
582{
583 u32 client_index;
584 u32 context;
585};
586
587define mfib_signal_details
588{
Neale Ranns32e1c012016-11-22 17:07:28 +0000589 u32 context;
590 u32 sw_if_index;
591 u32 table_id;
592 u16 grp_address_len;
593 u8 grp_address[16];
594 u8 src_address[16];
595 u16 ip_packet_len;
596 u8 ip_packet_data[256];
597};
Dave Barachb5e8a772016-12-06 12:04:42 -0500598
Neale Rannsd91c1db2017-07-31 02:30:50 -0700599/** \brief IP punt policer
600 @param client_index - opaque cookie to identify the sender
601 @param context - sender context, to match reply w/ request
602 @param is_add - 1 to add neighbor, 0 to delete
603 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
604 @param policer_index - Index of policer to use
605*/
606autoreply define ip_punt_police
607{
608 u32 client_index;
609 u32 context;
610 u32 policer_index;
611 u8 is_add;
612 u8 is_ip6;
613};
614
615/** \brief IP punt redirect
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 tx_sw_if_index - the TX interface to which traffic shoulde be
621 redirected.
622 @param nh - The next-hop to redirect the traffic to.
623*/
624autoreply define ip_punt_redirect
625{
626 u32 client_index;
627 u32 context;
628 u32 rx_sw_if_index;
629 u32 tx_sw_if_index;
630 u8 is_add;
631 u8 is_ip6;
632 u8 nh[16];
633};
634
Florin Coras595992c2017-11-06 17:17:08 -0800635autoreply define ip_container_proxy_add_del
636{
637 u32 client_index;
638 u32 context;
639 u8 ip[16];
640 u8 is_ip4;
641 u8 plen;
642 u32 sw_if_index;
643 u8 is_add;
644};
645
Neale Rannsb8d44812017-11-10 06:53:54 -0800646/** \brief Configure IP source and L4 port-range check
647 @param client_index - opaque cookie to identify the sender
648 @param context - sender context, to match reply w/ request
649 @param is_ip6 - 1 if source address type is IPv6
650 @param is_add - 1 if add, 0 if delete
651 @param mask_length - mask length for address entry
652 @param address - array of address bytes
653 @param number_of_ranges - length of low_port and high_port arrays (must match)
654 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
655 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
656 @param vrf_id - fib table/vrf id to associate the source and port-range check with
657 @note To specify a single port set low_port and high_port entry the same
658*/
659autoreply define ip_source_and_port_range_check_add_del
660{
661 u32 client_index;
662 u32 context;
663 u8 is_ipv6;
664 u8 is_add;
665 u8 mask_length;
666 u8 address[16];
667 u8 number_of_ranges;
668 u16 low_ports[32];
669 u16 high_ports[32];
670 u32 vrf_id;
671};
672
673/** \brief Set interface source and L4 port-range request
674 @param client_index - opaque cookie to identify the sender
675 @param context - sender context, to match reply w/ request
676 @param interface_id - interface index
677 @param tcp_vrf_id - VRF associated with source and TCP port-range check
678 @param udp_vrf_id - VRF associated with source and TCP port-range check
679*/
680autoreply define ip_source_and_port_range_check_interface_add_del
681{
682 u32 client_index;
683 u32 context;
684 u8 is_add;
685 u32 sw_if_index;
686 u32 tcp_in_vrf_id;
687 u32 tcp_out_vrf_id;
688 u32 udp_in_vrf_id;
689 u32 udp_out_vrf_id;
690};
691
John Lo7f358b32018-04-28 01:19:24 -0400692/** \brief Enable/disable periodic IP neighbor scan
693 @param client_index - opaque cookie to identify the sender
694 @param context - sender context, to match reply w/ request
695 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
696 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
697 @param max_proc_time - max processing time per run in usec, 0: default to 20
698 @param max_update - max neighbor probe/delete per run, 0: default to 10
699 @param scan_int_delay - delay in msec to resume scan if exceed max proc
700 time or update, 0: default to 1
701 @param stale_threshold - threshold in minutes for neighbor deletion,
702 0: default to 4*scan_interval
703*/
704autoreply define ip_scan_neighbor_enable_disable
705{
706 u32 client_index;
707 u32 context;
708 u8 mode;
709 u8 scan_interval;
710 u8 max_proc_time;
711 u8 max_update;
712 u8 scan_int_delay;
713 u8 stale_threshold;
714};
715
John Loc7b43042018-04-13 16:46:22 -0400716/** \brief IP probe neighbor address on an interface by sending an
717 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
718 @param client_index - opaque cookie to identify the sender
719 @param context - sender context, to match reply w/ request
720 @param sw_if_index - interface index
721 @param dst_address - target IP address to send IP addr resolution request
722 @param is_ipv6 - [1|0] to indicate if address family is IPv[6|4]
723*/
724autoreply define ip_probe_neighbor
725{
726 u32 client_index;
727 u32 context;
728 u32 sw_if_index;
729 u8 dst_address[16];
730 u8 is_ipv6;
731};
732
733/** \brief Register for IP4 ARP resolution event on receing ARP reply or
734 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800735 @param client_index - opaque cookie to identify the sender
736 @param context - sender context, to match reply w/ request
737 @param enable_disable - 1 => register for events, 0 => cancel registration
738 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400739 @param address - exact IP4 address of interested arp resolution event, or
740 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800741*/
742autoreply define want_ip4_arp_events
743{
744 u32 client_index;
745 u32 context;
746 u8 enable_disable;
747 u32 pid;
748 u32 address;
749};
750
John Loc7b43042018-04-13 16:46:22 -0400751/** \brief Tell client about an IP4 ARP resolution event or
752 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800753 @param client_index - opaque cookie to identify the sender
754 @param address - the exact ip4 address of interest
755 @param pid - client pid registered to receive notification
756 @param sw_if_index - interface which received ARP packet
757 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400758 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800759*/
760define ip4_arp_event
761{
762 u32 client_index;
763 u32 address;
764 u32 pid;
765 u32 sw_if_index;
766 u8 new_mac[6];
767 u8 mac_ip;
768};
769
Marek Gradzki51e59682018-03-06 10:05:44 +0100770service {
771 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
772 events ip4_arp_event;
773};
774
John Loc7b43042018-04-13 16:46:22 -0400775/** \brief Register for IP6 ND resolution event on recieving NA reply
776 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800777 @param client_index - opaque cookie to identify the sender
778 @param context - sender context, to match reply w/ request
779 @param enable_disable - 1 => register for events, 0 => cancel registration
780 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400781 @param address - the exact IP6 address of interested ND resolution event, or
782 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800783*/
784autoreply define want_ip6_nd_events
785{
786 u32 client_index;
787 u32 context;
788 u8 enable_disable;
789 u32 pid;
790 u8 address[16];
791};
792
John Loc7b43042018-04-13 16:46:22 -0400793/** \brief Tell client about an IP6 ND resolution or
794 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800795 @param client_index - opaque cookie to identify the sender
796 @param pid - client pid registered to receive notification
797 @param sw_if_index - interface which received ARP packet
798 @param address - the exact ip6 address of interest
799 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400800 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800801*/
802define ip6_nd_event
803{
804 u32 client_index;
805 u32 pid;
806 u32 sw_if_index;
807 u8 address[16];
808 u8 new_mac[6];
809 u8 mac_ip;
810};
811
Marek Gradzki51e59682018-03-06 10:05:44 +0100812service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100813 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
814 events ip6_ra_event;
815};
816
817/** \brief Register for ip6 router advertisement events
818 @param client_index - opaque cookie to identify the sender
819 @param context - sender context, to match reply w/ request
820 @param enable_disable - 1 => register for events, 0 => cancel registration
821 @param pid - sender's pid
822*/
823autoreply define want_ip6_ra_events
824{
825 u32 client_index;
826 u32 context;
827 u8 enable_disable;
828 u32 pid;
829};
830
831/** \brief Struct representing RA prefix info
832 @param dst_address - RA prefix info destination address
833 @param dst_address_length - RA prefix info destination address length
834 @param flags - RA prefix info flags
835 @param valid_time - RA prefix info valid time
836 @param preferred_time - RA prefix info preferred time
837*/
838typeonly define ip6_ra_prefix_info
839{
840 u8 dst_address[16];
841 u8 dst_address_length;
842 u8 flags;
843 u32 valid_time;
844 u32 preferred_time;
845};
846
847/** \brief Tell client about a router advertisement event
848 @param client_index - opaque cookie to identify the sender
849 @param pid - client pid registered to receive notification
850 @param current_hop_limit - RA current hop limit
851 @param flags - RA flags
852 @param router_lifetime_in_sec - RA lifetime in seconds
853 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
854 @param time_in_msec_between_retransmitted_neighbor_solicitations -
855 time in msec between retransmitted neighbor solicitations
856 @param n_prefixes -
857 @param prefixes -
858*/
859define ip6_ra_event
860{
861 u32 client_index;
862 u32 pid;
863 u32 sw_if_index;
864 u8 router_address[16];
865 u8 current_hop_limit;
866 u8 flags;
867 u16 router_lifetime_in_sec;
868 u32 neighbor_reachable_time_in_msec;
869 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
870 u32 n_prefixes;
871 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
872};
873
874service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100875 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
876 events ip6_nd_event;
877};
878
Neale Ranns0053de62018-05-22 08:40:52 -0700879/** \brief Proxy ARP configuration type
Neale Rannsb8d44812017-11-10 06:53:54 -0800880 @param vrf_id - VRF / Fib table ID
Neale Rannsb8d44812017-11-10 06:53:54 -0800881 @param low_address[4] - Low address of the Proxy ARP range
882 @param hi_address[4] - High address of the Proxy ARP range
883*/
Neale Ranns0053de62018-05-22 08:40:52 -0700884typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800885{
Neale Rannsb8d44812017-11-10 06:53:54 -0800886 u32 vrf_id;
Neale Rannsb8d44812017-11-10 06:53:54 -0800887 u8 low_address[4];
888 u8 hi_address[4];
889};
890
891/** \brief Proxy ARP add / del request
892 @param client_index - opaque cookie to identify the sender
893 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700894 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
895 @param proxy - Proxy configuration
896*/
897autoreply define proxy_arp_add_del
898{
899 u32 client_index;
900 u32 context;
901 u8 is_add;
902 vl_api_proxy_arp_t proxy;
903};
904
905/** \brief Proxy ARP dump request
906 */
907define proxy_arp_dump
908{
909 u32 client_index;
910 u32 context;
911};
912
913/** \brief Proxy ARP dump details reply
914 * @param proxy - Same data as used to configure
915 */
916define proxy_arp_details
917{
918 u32 context;
919 vl_api_proxy_arp_t proxy;
920};
921
922/** \brief Proxy ARP add / del interface request
923 @param client_index - opaque cookie to identify the sender
924 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800925 @param sw_if_index - Which interface to enable / disable Proxy Arp on
926 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
927*/
928autoreply define proxy_arp_intfc_enable_disable
929{
930 u32 client_index;
931 u32 context;
932 u32 sw_if_index;
933 /* 1 = on, 0 = off */
934 u8 enable_disable;
935};
936
Neale Ranns0053de62018-05-22 08:40:52 -0700937/** \brief Proxy ARP interface dump request
938 */
939define proxy_arp_intfc_dump
940{
941 u32 client_index;
942 u32 context;
943};
944
945/** \brief Proxy ARP interface dump details reply
946 * @param sw_if_index The interface on which ARP proxy is enabled.
947 */
948define proxy_arp_intfc_details
949{
950 u32 context;
951 u32 sw_if_index;
952};
953
Neale Rannsb8d44812017-11-10 06:53:54 -0800954/** \brief Reset fib table request
955 @param client_index - opaque cookie to identify the sender
956 @param context - sender context, to match reply w/ request
957 @param vrf_id - vrf/table id of the fib table to reset
958 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
959*/
960autoreply define reset_fib
961{
962 u32 client_index;
963 u32 context;
964 u32 vrf_id;
965 u8 is_ipv6;
966};
967
968/** \brief Set max allowed ARP or ip6 neighbor entries request
969 @param client_index - opaque cookie to identify the sender
970 @param context - sender context, to match reply w/ request
971 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
972 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
973*/
974autoreply define set_arp_neighbor_limit
975{
976 u32 client_index;
977 u32 context;
978 u8 is_ipv6;
979 u32 arp_neighbor_limit;
980};
981
982/** \brief IOAM enable : Enable in-band OAM
983 @param id - profile id
984 @param seqno - To enable Seqno Processing
985 @param analyse - Enabling analysis of iOAM at decap node
986 @param pow_enable - Proof of Work enabled or not flag
987 @param trace_enable - iOAM Trace enabled or not flag
988*/
989autoreply define ioam_enable
990{
991 u32 client_index;
992 u32 context;
993 u16 id;
994 u8 seqno;
995 u8 analyse;
996 u8 pot_enable;
997 u8 trace_enable;
998 u32 node_id;
999};
1000
1001/** \brief iOAM disable
1002 @param client_index - opaque cookie to identify the sender
1003 @param context - sender context, to match reply w/ request
1004 @param index - MAP Domain index
1005*/
1006autoreply define ioam_disable
1007{
1008 u32 client_index;
1009 u32 context;
1010 u16 id;
1011};
1012
Klement Sekera75e7d132017-09-20 08:26:30 +02001013autoreply define ip_reassembly_set
1014{
1015 u32 client_index;
1016 u32 context;
1017 u32 timeout_ms;
1018 u32 max_reassemblies;
1019 u32 expire_walk_interval_ms;
1020 u8 is_ip6;
1021};
1022
1023define ip_reassembly_get
1024{
1025 u32 client_index;
1026 u32 context;
1027 u8 is_ip6;
1028};
1029
1030define ip_reassembly_get_reply
1031{
Klement Sekera75e7d132017-09-20 08:26:30 +02001032 u32 context;
1033 i32 retval;
1034 u32 timeout_ms;
1035 u32 max_reassemblies;
1036 u32 expire_walk_interval_ms;
1037 u8 is_ip6;
1038};
1039
Klement Sekera4c533132018-02-22 11:41:12 +01001040/** \brief Enable/disable reassembly feature
1041 @param client_index - opaque cookie to identify the sender
1042 @param context - sender context, to match reply w/ request
1043 @param sw_if_index - interface to enable/disable feature on
1044 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1045 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1046*/
1047autoreply define ip_reassembly_enable_disable
1048{
1049 u32 client_index;
1050 u32 context;
1051 u32 sw_if_index;
1052 u8 enable_ip4;
1053 u8 enable_ip6;
1054};
1055
Dave Barachb5e8a772016-12-06 12:04:42 -05001056/*
1057 * Local Variables:
1058 * eval: (c-set-style "gnu")
1059 * End:
1060 */