blob: 954ec92967f9c1522645bdd8959ea5bac7115a44 [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
Neale Ranns14260392018-09-28 05:00:57 -0700123 @param stats_index - An index in the stats segment that can be used to read
124 the counters for this neighbour.
Dave Barachb5e8a772016-12-06 12:04:42 -0500125 @param is_static - [1|0] to indicate if neighbor is statically configured
126 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
127*/
128define ip_neighbor_details {
129 u32 context;
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600130 u32 sw_if_index;
Neale Ranns14260392018-09-28 05:00:57 -0700131 u32 stats_index;
Pavel Kotucek8cb07c92017-01-11 10:13:54 +0100132 u8 is_static;
Dave Barachb5e8a772016-12-06 12:04:42 -0500133 u8 is_ipv6;
134 u8 mac_address[6];
135 u8 ip_address[16];
136};
137
138/** \brief IP neighbor add / del request
139 @param client_index - opaque cookie to identify the sender
140 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -0500141 @param sw_if_index - interface used to reach neighbor
142 @param is_add - 1 to add neighbor, 0 to delete
143 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
Neale Ranns239d3fe2017-03-08 08:56:58 -0800144 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
145 @param is_static - A static neighbor Entry - there are not flushed
146 If the interface goes down.
147 @param is_no_adj_fib - Do not create a corresponding entry in the FIB
148 table for the neighbor.
Dave Barachb5e8a772016-12-06 12:04:42 -0500149 @param mac_address - l2 address of the neighbor
150 @param dst_address - ip4 or ip6 address of the neighbor
151*/
Neale Ranns14260392018-09-28 05:00:57 -0700152define ip_neighbor_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500153{
154 u32 client_index;
155 u32 context;
Dave Barachb5e8a772016-12-06 12:04:42 -0500156 u32 sw_if_index;
157 /* 1 = add, 0 = delete */
158 u8 is_add;
159 u8 is_ipv6;
160 u8 is_static;
Neale Ranns239d3fe2017-03-08 08:56:58 -0800161 u8 is_no_adj_fib;
Dave Barachb5e8a772016-12-06 12:04:42 -0500162 u8 mac_address[6];
163 u8 dst_address[16];
164};
165
Neale Ranns14260392018-09-28 05:00:57 -0700166define ip_neighbor_add_del_reply
167{
168 u32 context;
169 i32 retval;
170 u32 stats_index;
171};
172
Dave Barachb5e8a772016-12-06 12:04:42 -0500173/** \brief Set the ip flow hash config for a fib request
174 @param client_index - opaque cookie to identify the sender
175 @param context - sender context, to match reply w/ request
176 @param vrf_id - vrf/fib id
177 @param is_ipv6 - if non-zero the fib is ip6, else ip4
178 @param src - if non-zero include src in flow hash
179 @param dst - if non-zero include dst in flow hash
180 @param sport - if non-zero include sport in flow hash
181 @param dport - if non-zero include dport in flow hash
182 @param proto -if non-zero include proto in flow hash
183 @param reverse - if non-zero include reverse in flow hash
184*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400185autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500186{
187 u32 client_index;
188 u32 context;
189 u32 vrf_id;
190 u8 is_ipv6;
191 u8 src;
192 u8 dst;
193 u8 sport;
194 u8 dport;
195 u8 proto;
196 u8 reverse;
197};
198
Dave Barachb5e8a772016-12-06 12:04:42 -0500199/** \brief IPv6 router advertisement config request
200 @param client_index - opaque cookie to identify the sender
201 @param context - sender context, to match reply w/ request
202 @param suppress -
203 @param managed -
204 @param other -
205 @param ll_option -
206 @param send_unicast -
207 @param cease -
208 @param is_no -
209 @param default_router -
210 @param max_interval -
211 @param min_interval -
212 @param lifetime -
213 @param initial_count -
214 @param initial_interval -
215*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400216autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500217{
218 u32 client_index;
219 u32 context;
220 u32 sw_if_index;
221 u8 suppress;
222 u8 managed;
223 u8 other;
224 u8 ll_option;
225 u8 send_unicast;
226 u8 cease;
227 u8 is_no;
228 u8 default_router;
229 u32 max_interval;
230 u32 min_interval;
231 u32 lifetime;
232 u32 initial_count;
233 u32 initial_interval;
234};
235
Dave Barachb5e8a772016-12-06 12:04:42 -0500236/** \brief IPv6 router advertisement prefix config request
237 @param client_index - opaque cookie to identify the sender
238 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800239 @param sw_if_index - The interface the RA prefix information is for
240 @param address[] - The prefix to advertise
241 @param address_length - the prefix length
242 @param use_default - Revert to default settings
243 @param no_advertise - Do not advertise this prefix
244 @param off_link - The prefix is off link (it is not configured on the interface)
245 Configures the L-flag, When set, indicates that this
246 prefix can be used for on-link determination.
247 @param no_autoconfig - Setting for the A-flag. When
248 set indicates that this prefix can be used for
249 stateless address configuration.
250 @param no_onlink - The prefix is not on link. Make sure this is consistent
251 with the off_link parameter else YMMV
252 @param is_no - add/delete
253 @param val_lifetime - The length of time in
254 seconds (relative to the time the packet is sent)
255 that the prefix is valid for the purpose of on-link
256 determination. A value of all one bits
257 (0xffffffff) represents infinity
258 @param pref_lifetime - The length of time in
259 seconds (relative to the time the packet is sent)
260 that addresses generated from the prefix via
261 stateless address autoconfiguration remain
262 preferred [ADDRCONF]. A value of all one bits
263 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500264*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400265autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500266{
267 u32 client_index;
268 u32 context;
269 u32 sw_if_index;
270 u8 address[16];
271 u8 address_length;
272 u8 use_default;
273 u8 no_advertise;
274 u8 off_link;
275 u8 no_autoconfig;
276 u8 no_onlink;
277 u8 is_no;
278 u32 val_lifetime;
279 u32 pref_lifetime;
280};
281
Neale Ranns3f844d02017-02-18 00:03:54 -0800282/** \brief IPv6 ND proxy config
283 @param client_index - opaque cookie to identify the sender
284 @param context - sender context, to match reply w/ request
285 @param sw_if_index - The interface the host is on
286 @param address - The address of the host for which to proxy for
287 @param is_add - Adding or deleting
288*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400289autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800290{
291 u32 client_index;
292 u32 context;
293 u32 sw_if_index;
294 u8 is_del;
295 u8 address[16];
296};
297
Neale Ranns3f844d02017-02-18 00:03:54 -0800298/** \brief IPv6 ND proxy details returned after request
299 @param context - sender context, to match reply w/ request
300 @param retval - return code for the request
301*/
302define ip6nd_proxy_details
303{
Neale Ranns3f844d02017-02-18 00:03:54 -0800304 u32 context;
305 u32 sw_if_index;
306 u8 address[16];
307};
308
309/** \brief IPv6 ND proxy dump request
310 @param context - sender context, to match reply w/ request
311 @param retval - return code for the request
312 @param sw_if_index - The interface the host is on
313 @param address - The address of the host for which to proxy for
314*/
315define ip6nd_proxy_dump
316{
317 u32 client_index;
318 u32 context;
319};
320
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100321/** \brief Start / stop sending router solicitation
322 @param client_index - opaque cookie to identify the sender
323 @param context - sender context, to match reply w/ request
324 @param irt - initial retransmission time
325 @param mrt - maximum retransmission time
326 @param mrc - maximum retransmission count
327 @param mrd - maximum retransmission duration
328 @param sw_if_index - software interface index of interface
329 for sending router solicitation
330 @param stop - if non-zero then stop sending router solicitation,
331 otherwise start sending router solicitation
332*/
333autoreply define ip6nd_send_router_solicitation
334{
335 u32 client_index;
336 u32 context;
337 u32 irt;
338 u32 mrt;
339 u32 mrc;
340 u32 mrd;
341 u32 sw_if_index;
342 u8 stop;
343};
344
Dave Barachb5e8a772016-12-06 12:04:42 -0500345/** \brief IPv6 interface enable / disable request
346 @param client_index - opaque cookie to identify the sender
347 @param context - sender context, to match reply w/ request
348 @param sw_if_index - interface used to reach neighbor
349 @param enable - if non-zero enable ip6 on interface, else disable
350*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400351autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500352{
353 u32 client_index;
354 u32 context;
355 u32 sw_if_index;
356 u8 enable; /* set to true if enable */
357};
358
Dave Barachb5e8a772016-12-06 12:04:42 -0500359/** \brief IPv6 set link local address on interface request
360 @param client_index - opaque cookie to identify the sender
361 @param context - sender context, to match reply w/ request
362 @param sw_if_index - interface to set link local on
363 @param address[] - the new link local address
Dave Barachb5e8a772016-12-06 12:04:42 -0500364*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400365autoreply define sw_interface_ip6_set_link_local_address
Dave Barachb5e8a772016-12-06 12:04:42 -0500366{
367 u32 client_index;
368 u32 context;
369 u32 sw_if_index;
370 u8 address[16];
Dave Barachb5e8a772016-12-06 12:04:42 -0500371};
372
Dave Barachb5e8a772016-12-06 12:04:42 -0500373/** \brief Add / del route request
374 @param client_index - opaque cookie to identify the sender
375 @param context - sender context, to match reply w/ request
376 @param sw_if_index - software index of the new vlan's parent interface
377 @param vrf_id - fib table /vrf associated with the route
378 @param lookup_in_vrf -
379 @param classify_table_index -
Dave Barachb5e8a772016-12-06 12:04:42 -0500380 @param is_add - 1 if adding the route, 0 if deleting
381 @param is_drop - Drop the packet
382 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
383 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
384 @param is_ipv6 - 0 if an ip4 route, else ip6
Neale Ranns810086d2017-11-05 16:26:46 -0800385 @param is_local - The route will result in packets sent to VPP IP stack
386 @param is_udp_encap - The path describes a UDP-o-IP encapsulation.
Dave Barachb5e8a772016-12-06 12:04:42 -0500387 @param is_classify -
388 @param is_multipath - Set to 1 if this is a multipath route, else 0
Neale Rannsf068c3e2018-01-03 04:18:48 -0800389 @param is_dvr - Does the route resolve via a DVR interface.
Neale Ranns054c03a2017-10-13 05:15:07 -0700390 @param is_source_lookup - The the path is a deaggregate path (i.e. a lookup
391 in another table) is the lookup on the packet's
392 source address or destination.
Neale Ranns810086d2017-11-05 16:26:46 -0800393 @param next_hop_weight - Weight for Unequal cost multi-path
394 @param next_hop_preference - Path that are up that have the best preference are
395 are used for forwarding. lower value is better.
396 @param next_hop_id - Used when the path resolves via an object that has a unique
397 identifier.
Dave Barachb5e8a772016-12-06 12:04:42 -0500398 @param dst_address_length -
399 @param dst_address[16] -
400 @param next_hop_address[16] -
401 @param next_hop_n_out_labels - the number of labels in the label stack
402 @param next_hop_out_label_stack - the next-hop output label stack, outer most first
403 @param next_hop_via_label - The next-hop is a resolved via a local label
404*/
Neale Ranns008dbe12018-09-07 09:32:36 -0700405define ip_add_del_route
Dave Barachb5e8a772016-12-06 12:04:42 -0500406{
407 u32 client_index;
408 u32 context;
409 u32 next_hop_sw_if_index;
410 u32 table_id;
411 u32 classify_table_index;
412 u32 next_hop_table_id;
Neale Ranns810086d2017-11-05 16:26:46 -0800413 u32 next_hop_id;
Dave Barachb5e8a772016-12-06 12:04:42 -0500414 u8 is_add;
415 u8 is_drop;
416 u8 is_unreach;
417 u8 is_prohibit;
418 u8 is_ipv6;
419 u8 is_local;
420 u8 is_classify;
421 u8 is_multipath;
422 u8 is_resolve_host;
423 u8 is_resolve_attached;
Neale Rannsf068c3e2018-01-03 04:18:48 -0800424 u8 is_dvr;
Neale Ranns054c03a2017-10-13 05:15:07 -0700425 u8 is_source_lookup;
Neale Ranns810086d2017-11-05 16:26:46 -0800426 u8 is_udp_encap;
Dave Barachb5e8a772016-12-06 12:04:42 -0500427 u8 next_hop_weight;
Neale Ranns57b58602017-07-15 07:37:25 -0700428 u8 next_hop_preference;
Neale Ranns810086d2017-11-05 16:26:46 -0800429 u8 next_hop_proto;
Dave Barachb5e8a772016-12-06 12:04:42 -0500430 u8 dst_address_length;
431 u8 dst_address[16];
432 u8 next_hop_address[16];
433 u8 next_hop_n_out_labels;
434 u32 next_hop_via_label;
Neale Ranns31ed7442018-02-23 05:29:09 -0800435 vl_api_fib_mpls_label_t next_hop_out_label_stack[next_hop_n_out_labels];
Dave Barachb5e8a772016-12-06 12:04:42 -0500436};
437
Neale Ranns008dbe12018-09-07 09:32:36 -0700438define ip_add_del_route_reply
439{
440 u32 context;
441 i32 retval;
442 u32 stats_index;
443};
444
Neale Ranns32e1c012016-11-22 17:07:28 +0000445/** \brief Add / del route request
Ian Wells412ecd32018-10-04 12:31:11 -0700446
447 Adds a route, consisting both of the MFIB entry to match packets
448 (which may already exist) and a path to send those packets down.
449 Routes can be entered repeatedly to add multiple paths. Deletions are
450 per-path.
451
Neale Ranns32e1c012016-11-22 17:07:28 +0000452 @param client_index - opaque cookie to identify the sender
453 @param context - sender context, to match reply w/ request
Ian Wells412ecd32018-10-04 12:31:11 -0700454 @param table_id - fib table /vrf associated with the route
455 @param is_add - true if adding a route; false if deleting one
456 @param is_ipv6 - true iff all the addresses are v6
457 @param entry_flags - see fib_entry_flag_t
458 @param itf_flags - see mfib_entry_flags_t
459 @param next_hop_afi - see dpo_proto_t; the type of destination description
460 @param src_address - the source of the packet
461 @param grp_address - the group the packet is destined to
462 @param nh_address - the nexthop to forward the packet to
463 @param next_hop_sw_if_index - interface to emit packet on
464
465 BIER AFIs use the BIER imposition ID. v4 and v6 AFIs use either the
466 interface or the nexthop address.
467
468 Note that if the route is source-specific (S is supplied, not all 0s),
469 the prefix match is treated as exact (prefixlen /32 or /128).
470
471 FIXME not complete yet
Neale Ranns32e1c012016-11-22 17:07:28 +0000472*/
Neale Ranns28c142e2018-09-07 09:37:07 -0700473define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000474{
475 u32 client_index;
476 u32 context;
477 u32 next_hop_sw_if_index;
478 u32 table_id;
479 u32 entry_flags;
480 u32 itf_flags;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800481 u32 rpf_id;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700482 u32 bier_imp;
Neale Ranns32e1c012016-11-22 17:07:28 +0000483 u16 grp_address_length;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700484 u8 next_hop_afi;
Neale Ranns32e1c012016-11-22 17:07:28 +0000485 u8 is_add;
486 u8 is_ipv6;
487 u8 is_local;
488 u8 grp_address[16];
489 u8 src_address[16];
Neale Rannse821ab12017-06-01 07:45:05 -0700490 u8 nh_address[16];
Neale Ranns32e1c012016-11-22 17:07:28 +0000491};
492
Neale Ranns28c142e2018-09-07 09:37:07 -0700493define ip_mroute_add_del_reply
494{
495 u32 context;
496 i32 retval;
497 u32 stats_index;
498};
499
Neale Ranns5a8123b2017-01-26 01:18:23 -0800500/** \brief Dump IP multicast fib table
501 @param client_index - opaque cookie to identify the sender
502*/
503define ip_mfib_dump
504{
505 u32 client_index;
506 u32 context;
507};
508
509/** \brief IP Multicast FIB table response
510 @param table_id - IP fib table id
511 @address_length - mask length
512 @grp_address - Group address/prefix
513 @src_address - Source address
514 @param count - the number of fib_path in path
515 @param path - array of of fib_path structures
516*/
517manual_endian manual_print define ip_mfib_details
518{
519 u32 context;
520 u32 table_id;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800521 u32 entry_flags;
522 u32 rpf_id;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800523 u8 address_length;
524 u8 grp_address[4];
525 u8 src_address[4];
526 u32 count;
Neale Ranns28c142e2018-09-07 09:37:07 -0700527 u32 stats_index;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800528 vl_api_fib_path_t path[count];
529};
530
531/** \brief Dump IP6 multicast fib table
532 @param client_index - opaque cookie to identify the sender
533*/
534define ip6_mfib_dump
535{
536 u32 client_index;
537 u32 context;
538};
539
540/** \brief IP6 Multicast FIB table response
541 @param table_id - IP fib table id
542 @address_length - mask length
543 @grp_address - Group address/prefix
544 @src_address - Source address
545 @param count - the number of fib_path in path
546 @param path - array of of fib_path structures
547*/
548manual_endian manual_print define ip6_mfib_details
549{
550 u32 context;
551 u32 table_id;
552 u8 address_length;
553 u8 grp_address[16];
554 u8 src_address[16];
555 u32 count;
556 vl_api_fib_path_t path[count];
557};
558
Dave Barachb5e8a772016-12-06 12:04:42 -0500559define ip_address_details
560{
Dave Barachb5e8a772016-12-06 12:04:42 -0500561 u32 context;
562 u8 ip[16];
563 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600564 u32 sw_if_index;
565 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500566};
567
568define ip_address_dump
569{
570 u32 client_index;
571 u32 context;
572 u32 sw_if_index;
573 u8 is_ipv6;
574};
575
Neale Ranns9e2f9152018-05-18 02:27:10 -0700576/** \brief IP unnumbered configurations
577 @param sw_if_index The interface that has unnumbered configuration
578 @param ip_sw_if_index The IP interface that it is unnnumbered to
579*/
580define ip_unnumbered_details
581{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700582 u32 context;
583 u32 sw_if_index;
584 u32 ip_sw_if_index;
585};
586
587/** \brief Dump IP unnumbered configurations
588 @param sw_if_index ~0 for all interfaces, else the interface desired
589*/
590define ip_unnumbered_dump
591{
592 u32 client_index;
593 u32 context;
594 u32 sw_if_index;
595};
596
Dave Barachb5e8a772016-12-06 12:04:42 -0500597define ip_details
598{
Dave Barachb5e8a772016-12-06 12:04:42 -0500599 u32 context;
Ondrej Fabryb11f9032018-08-14 12:39:40 +0200600 u32 sw_if_index;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600601 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500602};
603
604define ip_dump
605{
606 u32 client_index;
607 u32 context;
608 u8 is_ipv6;
609};
610
Neale Ranns32e1c012016-11-22 17:07:28 +0000611define mfib_signal_dump
612{
613 u32 client_index;
614 u32 context;
615};
616
617define mfib_signal_details
618{
Neale Ranns32e1c012016-11-22 17:07:28 +0000619 u32 context;
620 u32 sw_if_index;
621 u32 table_id;
622 u16 grp_address_len;
623 u8 grp_address[16];
624 u8 src_address[16];
625 u16 ip_packet_len;
626 u8 ip_packet_data[256];
627};
Dave Barachb5e8a772016-12-06 12:04:42 -0500628
Neale Rannsd91c1db2017-07-31 02:30:50 -0700629/** \brief IP punt policer
630 @param client_index - opaque cookie to identify the sender
631 @param context - sender context, to match reply w/ request
632 @param is_add - 1 to add neighbor, 0 to delete
633 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
634 @param policer_index - Index of policer to use
635*/
636autoreply define ip_punt_police
637{
638 u32 client_index;
639 u32 context;
640 u32 policer_index;
641 u8 is_add;
642 u8 is_ip6;
643};
644
645/** \brief IP punt redirect
646 @param client_index - opaque cookie to identify the sender
647 @param context - sender context, to match reply w/ request
648 @param is_add - 1 to add neighbor, 0 to delete
649 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
650 @param tx_sw_if_index - the TX interface to which traffic shoulde be
651 redirected.
652 @param nh - The next-hop to redirect the traffic to.
653*/
654autoreply define ip_punt_redirect
655{
656 u32 client_index;
657 u32 context;
658 u32 rx_sw_if_index;
659 u32 tx_sw_if_index;
660 u8 is_add;
661 u8 is_ip6;
662 u8 nh[16];
663};
664
Florin Coras595992c2017-11-06 17:17:08 -0800665autoreply define ip_container_proxy_add_del
666{
667 u32 client_index;
668 u32 context;
669 u8 ip[16];
670 u8 is_ip4;
671 u8 plen;
672 u32 sw_if_index;
673 u8 is_add;
674};
675
Matus Fabian75b9f452018-10-02 23:27:21 -0700676define ip_container_proxy_dump
677{
678 u32 client_index;
679 u32 context;
680};
681
682define ip_container_proxy_details
683{
684 u32 context;
685 u32 sw_if_index;
686 vl_api_prefix_t prefix;
687};
688
Neale Rannsb8d44812017-11-10 06:53:54 -0800689/** \brief Configure IP source and L4 port-range check
690 @param client_index - opaque cookie to identify the sender
691 @param context - sender context, to match reply w/ request
692 @param is_ip6 - 1 if source address type is IPv6
693 @param is_add - 1 if add, 0 if delete
694 @param mask_length - mask length for address entry
695 @param address - array of address bytes
696 @param number_of_ranges - length of low_port and high_port arrays (must match)
697 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
698 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
699 @param vrf_id - fib table/vrf id to associate the source and port-range check with
700 @note To specify a single port set low_port and high_port entry the same
701*/
702autoreply define ip_source_and_port_range_check_add_del
703{
704 u32 client_index;
705 u32 context;
706 u8 is_ipv6;
707 u8 is_add;
708 u8 mask_length;
709 u8 address[16];
710 u8 number_of_ranges;
711 u16 low_ports[32];
712 u16 high_ports[32];
713 u32 vrf_id;
714};
715
716/** \brief Set interface source and L4 port-range request
717 @param client_index - opaque cookie to identify the sender
718 @param context - sender context, to match reply w/ request
719 @param interface_id - interface index
720 @param tcp_vrf_id - VRF associated with source and TCP port-range check
721 @param udp_vrf_id - VRF associated with source and TCP port-range check
722*/
723autoreply define ip_source_and_port_range_check_interface_add_del
724{
725 u32 client_index;
726 u32 context;
727 u8 is_add;
728 u32 sw_if_index;
729 u32 tcp_in_vrf_id;
730 u32 tcp_out_vrf_id;
731 u32 udp_in_vrf_id;
732 u32 udp_out_vrf_id;
733};
734
John Lo7f358b32018-04-28 01:19:24 -0400735/** \brief Enable/disable periodic IP neighbor scan
736 @param client_index - opaque cookie to identify the sender
737 @param context - sender context, to match reply w/ request
738 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
739 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
740 @param max_proc_time - max processing time per run in usec, 0: default to 20
741 @param max_update - max neighbor probe/delete per run, 0: default to 10
742 @param scan_int_delay - delay in msec to resume scan if exceed max proc
743 time or update, 0: default to 1
744 @param stale_threshold - threshold in minutes for neighbor deletion,
745 0: default to 4*scan_interval
746*/
747autoreply define ip_scan_neighbor_enable_disable
748{
749 u32 client_index;
750 u32 context;
751 u8 mode;
752 u8 scan_interval;
753 u8 max_proc_time;
754 u8 max_update;
755 u8 scan_int_delay;
756 u8 stale_threshold;
757};
758
John Loc7b43042018-04-13 16:46:22 -0400759/** \brief IP probe neighbor address on an interface by sending an
760 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
761 @param client_index - opaque cookie to identify the sender
762 @param context - sender context, to match reply w/ request
763 @param sw_if_index - interface index
764 @param dst_address - target IP address to send IP addr resolution request
765 @param is_ipv6 - [1|0] to indicate if address family is IPv[6|4]
766*/
767autoreply define ip_probe_neighbor
768{
769 u32 client_index;
770 u32 context;
771 u32 sw_if_index;
772 u8 dst_address[16];
773 u8 is_ipv6;
774};
775
776/** \brief Register for IP4 ARP resolution event on receing ARP reply or
777 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800778 @param client_index - opaque cookie to identify the sender
779 @param context - sender context, to match reply w/ request
780 @param enable_disable - 1 => register for events, 0 => cancel registration
781 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400782 @param address - exact IP4 address of interested arp resolution event, or
783 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800784*/
785autoreply define want_ip4_arp_events
786{
787 u32 client_index;
788 u32 context;
789 u8 enable_disable;
790 u32 pid;
791 u32 address;
792};
793
John Loc7b43042018-04-13 16:46:22 -0400794/** \brief Tell client about an IP4 ARP resolution event 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 address - the exact ip4 address of interest
798 @param pid - client pid registered to receive notification
799 @param sw_if_index - interface which received ARP packet
800 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400801 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800802*/
803define ip4_arp_event
804{
805 u32 client_index;
806 u32 address;
807 u32 pid;
808 u32 sw_if_index;
809 u8 new_mac[6];
810 u8 mac_ip;
811};
812
Marek Gradzki51e59682018-03-06 10:05:44 +0100813service {
814 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
815 events ip4_arp_event;
816};
817
John Loc7b43042018-04-13 16:46:22 -0400818/** \brief Register for IP6 ND resolution event on recieving NA reply
819 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800820 @param client_index - opaque cookie to identify the sender
821 @param context - sender context, to match reply w/ request
822 @param enable_disable - 1 => register for events, 0 => cancel registration
823 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400824 @param address - the exact IP6 address of interested ND resolution event, or
825 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800826*/
827autoreply define want_ip6_nd_events
828{
829 u32 client_index;
830 u32 context;
831 u8 enable_disable;
832 u32 pid;
833 u8 address[16];
834};
835
John Loc7b43042018-04-13 16:46:22 -0400836/** \brief Tell client about an IP6 ND resolution or
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 pid - client pid registered to receive notification
840 @param sw_if_index - interface which received ARP packet
841 @param address - the exact ip6 address of interest
842 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400843 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800844*/
845define ip6_nd_event
846{
847 u32 client_index;
848 u32 pid;
849 u32 sw_if_index;
850 u8 address[16];
851 u8 new_mac[6];
852 u8 mac_ip;
853};
854
Marek Gradzki51e59682018-03-06 10:05:44 +0100855service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100856 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
857 events ip6_ra_event;
858};
859
860/** \brief Register for ip6 router advertisement events
861 @param client_index - opaque cookie to identify the sender
862 @param context - sender context, to match reply w/ request
863 @param enable_disable - 1 => register for events, 0 => cancel registration
864 @param pid - sender's pid
865*/
866autoreply define want_ip6_ra_events
867{
868 u32 client_index;
869 u32 context;
870 u8 enable_disable;
871 u32 pid;
872};
873
874/** \brief Struct representing RA prefix info
875 @param dst_address - RA prefix info destination address
876 @param dst_address_length - RA prefix info destination address length
877 @param flags - RA prefix info flags
878 @param valid_time - RA prefix info valid time
879 @param preferred_time - RA prefix info preferred time
880*/
881typeonly define ip6_ra_prefix_info
882{
883 u8 dst_address[16];
884 u8 dst_address_length;
885 u8 flags;
886 u32 valid_time;
887 u32 preferred_time;
888};
889
890/** \brief Tell client about a router advertisement event
891 @param client_index - opaque cookie to identify the sender
892 @param pid - client pid registered to receive notification
893 @param current_hop_limit - RA current hop limit
894 @param flags - RA flags
895 @param router_lifetime_in_sec - RA lifetime in seconds
896 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
897 @param time_in_msec_between_retransmitted_neighbor_solicitations -
898 time in msec between retransmitted neighbor solicitations
899 @param n_prefixes -
900 @param prefixes -
901*/
902define ip6_ra_event
903{
904 u32 client_index;
905 u32 pid;
906 u32 sw_if_index;
907 u8 router_address[16];
908 u8 current_hop_limit;
909 u8 flags;
910 u16 router_lifetime_in_sec;
911 u32 neighbor_reachable_time_in_msec;
912 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
913 u32 n_prefixes;
914 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
915};
916
917service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100918 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
919 events ip6_nd_event;
920};
921
Neale Ranns0053de62018-05-22 08:40:52 -0700922/** \brief Proxy ARP configuration type
Neale Rannsb8d44812017-11-10 06:53:54 -0800923 @param vrf_id - VRF / Fib table ID
Neale Rannsb8d44812017-11-10 06:53:54 -0800924 @param low_address[4] - Low address of the Proxy ARP range
925 @param hi_address[4] - High address of the Proxy ARP range
926*/
Neale Ranns0053de62018-05-22 08:40:52 -0700927typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800928{
Neale Rannsb8d44812017-11-10 06:53:54 -0800929 u32 vrf_id;
Neale Rannsb8d44812017-11-10 06:53:54 -0800930 u8 low_address[4];
931 u8 hi_address[4];
932};
933
934/** \brief Proxy ARP add / del request
935 @param client_index - opaque cookie to identify the sender
936 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700937 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
938 @param proxy - Proxy configuration
939*/
940autoreply define proxy_arp_add_del
941{
942 u32 client_index;
943 u32 context;
944 u8 is_add;
945 vl_api_proxy_arp_t proxy;
946};
947
948/** \brief Proxy ARP dump request
949 */
950define proxy_arp_dump
951{
952 u32 client_index;
953 u32 context;
954};
955
956/** \brief Proxy ARP dump details reply
957 * @param proxy - Same data as used to configure
958 */
959define proxy_arp_details
960{
961 u32 context;
962 vl_api_proxy_arp_t proxy;
963};
964
965/** \brief Proxy ARP add / del interface request
966 @param client_index - opaque cookie to identify the sender
967 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800968 @param sw_if_index - Which interface to enable / disable Proxy Arp on
969 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
970*/
971autoreply define proxy_arp_intfc_enable_disable
972{
973 u32 client_index;
974 u32 context;
975 u32 sw_if_index;
976 /* 1 = on, 0 = off */
977 u8 enable_disable;
978};
979
Neale Ranns0053de62018-05-22 08:40:52 -0700980/** \brief Proxy ARP interface dump request
981 */
982define proxy_arp_intfc_dump
983{
984 u32 client_index;
985 u32 context;
986};
987
988/** \brief Proxy ARP interface dump details reply
989 * @param sw_if_index The interface on which ARP proxy is enabled.
990 */
991define proxy_arp_intfc_details
992{
993 u32 context;
994 u32 sw_if_index;
995};
996
Neale Rannsb8d44812017-11-10 06:53:54 -0800997/** \brief Reset fib table request
998 @param client_index - opaque cookie to identify the sender
999 @param context - sender context, to match reply w/ request
1000 @param vrf_id - vrf/table id of the fib table to reset
1001 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
1002*/
1003autoreply define reset_fib
1004{
1005 u32 client_index;
1006 u32 context;
1007 u32 vrf_id;
1008 u8 is_ipv6;
1009};
1010
1011/** \brief Set max allowed ARP or ip6 neighbor entries request
1012 @param client_index - opaque cookie to identify the sender
1013 @param context - sender context, to match reply w/ request
1014 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
1015 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
1016*/
1017autoreply define set_arp_neighbor_limit
1018{
1019 u32 client_index;
1020 u32 context;
1021 u8 is_ipv6;
1022 u32 arp_neighbor_limit;
1023};
1024
1025/** \brief IOAM enable : Enable in-band OAM
1026 @param id - profile id
1027 @param seqno - To enable Seqno Processing
1028 @param analyse - Enabling analysis of iOAM at decap node
1029 @param pow_enable - Proof of Work enabled or not flag
1030 @param trace_enable - iOAM Trace enabled or not flag
1031*/
1032autoreply define ioam_enable
1033{
1034 u32 client_index;
1035 u32 context;
1036 u16 id;
1037 u8 seqno;
1038 u8 analyse;
1039 u8 pot_enable;
1040 u8 trace_enable;
1041 u32 node_id;
1042};
1043
1044/** \brief iOAM disable
1045 @param client_index - opaque cookie to identify the sender
1046 @param context - sender context, to match reply w/ request
1047 @param index - MAP Domain index
1048*/
1049autoreply define ioam_disable
1050{
1051 u32 client_index;
1052 u32 context;
1053 u16 id;
1054};
1055
Klement Sekera75e7d132017-09-20 08:26:30 +02001056autoreply define ip_reassembly_set
1057{
1058 u32 client_index;
1059 u32 context;
1060 u32 timeout_ms;
1061 u32 max_reassemblies;
1062 u32 expire_walk_interval_ms;
1063 u8 is_ip6;
1064};
1065
1066define ip_reassembly_get
1067{
1068 u32 client_index;
1069 u32 context;
1070 u8 is_ip6;
1071};
1072
1073define ip_reassembly_get_reply
1074{
Klement Sekera75e7d132017-09-20 08:26:30 +02001075 u32 context;
1076 i32 retval;
1077 u32 timeout_ms;
1078 u32 max_reassemblies;
1079 u32 expire_walk_interval_ms;
1080 u8 is_ip6;
1081};
1082
Klement Sekera4c533132018-02-22 11:41:12 +01001083/** \brief Enable/disable reassembly feature
1084 @param client_index - opaque cookie to identify the sender
1085 @param context - sender context, to match reply w/ request
1086 @param sw_if_index - interface to enable/disable feature on
1087 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1088 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1089*/
1090autoreply define ip_reassembly_enable_disable
1091{
1092 u32 client_index;
1093 u32 context;
1094 u32 sw_if_index;
1095 u8 enable_ip4;
1096 u8 enable_ip6;
1097};
1098
Dave Barachb5e8a772016-12-06 12:04:42 -05001099/*
1100 * Local Variables:
1101 * eval: (c-set-style "gnu")
1102 * End:
1103 */