blob: b67e2e5f0c857bcb15fd2495723714ebb9d17195 [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 Ranns37029302018-08-10 05:30:06 -070023option version = "2.0.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
Neale Ranns37029302018-08-10 05:30:06 -0700106/** \brief IP neighbor flags
107 @param is_static - A static neighbor Entry - there are not flushed
108 If the interface goes down.
109 @param is_no_fib_entry - Do not create a corresponding entry in the FIB
110 table for the neighbor.
111*/
112enum ip_neighbor_flags
113{
114 IP_API_NEIGHBOR_FLAG_NONE = 0,
115 IP_API_NEIGHBOR_FLAG_STATIC = 0x1,
116 IP_API_NEIGHBOR_FLAG_NO_FIB_ENTRY = 0x2,
117 IP_API_NEIGHBOR_FLAG_FIX_ME_OLE = 0x3,
118};
119
120/** \brief IP neighbor
121 @param sw_if_index - interface used to reach neighbor
122 @param mac_address - l2 address of the neighbor
123 @param ip_address - ip4 or ip6 address of the neighbor
124 @param flags - flags for the nieghbor
125*/
126typedef ip_neighbor {
127 u32 sw_if_index;
128 vl_api_ip_neighbor_flags_t flags;
129 vl_api_mac_address_t mac_address;
130 vl_api_address_t ip_address;
131};
132
133/** \brief IP neighbor add / del request
134 @param client_index - opaque cookie to identify the sender
135 @param context - sender context, to match reply w/ request
136 @param is_add - 1 to add neighbor, 0 to delete
137 @param neighbor - the neighor to add/remove
138*/
139define ip_neighbor_add_del
140{
141 u32 client_index;
142 u32 context;
143 /* 1 = add, 0 = delete */
144 u8 is_add;
145 vl_api_ip_neighbor_t neighbor;
146};
147define ip_neighbor_add_del_reply
148{
149 u32 context;
150 i32 retval;
151 u32 stats_index;
152};
153
Dave Barachb5e8a772016-12-06 12:04:42 -0500154/** \brief Dump IP neighboors
155 @param client_index - opaque cookie to identify the sender
156 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600157 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500158 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
159*/
160define ip_neighbor_dump
161{
Neale Ranns37029302018-08-10 05:30:06 -0700162 u32 client_index;
163 u32 context;
164 u32 sw_if_index;
165 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500166};
167
168/** \brief IP neighboors dump response
169 @param context - sender context which was passed in the request
Neale Ranns37029302018-08-10 05:30:06 -0700170 @param neighbour - the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500171*/
172define ip_neighbor_details {
Dave Barachb5e8a772016-12-06 12:04:42 -0500173 u32 context;
Neale Ranns37029302018-08-10 05:30:06 -0700174 vl_api_ip_neighbor_t neighbor;
Neale Ranns14260392018-09-28 05:00:57 -0700175};
176
Dave Barachb5e8a772016-12-06 12:04:42 -0500177/** \brief Set the ip flow hash config for a fib request
178 @param client_index - opaque cookie to identify the sender
179 @param context - sender context, to match reply w/ request
180 @param vrf_id - vrf/fib id
181 @param is_ipv6 - if non-zero the fib is ip6, else ip4
182 @param src - if non-zero include src in flow hash
183 @param dst - if non-zero include dst in flow hash
184 @param sport - if non-zero include sport in flow hash
185 @param dport - if non-zero include dport in flow hash
186 @param proto -if non-zero include proto in flow hash
187 @param reverse - if non-zero include reverse in flow hash
Mohsin Kazmi2af0e3a2018-11-20 11:11:12 +0100188 @param symmetric - if non-zero include symmetry in flow hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500189*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400190autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500191{
192 u32 client_index;
193 u32 context;
194 u32 vrf_id;
195 u8 is_ipv6;
196 u8 src;
197 u8 dst;
198 u8 sport;
199 u8 dport;
200 u8 proto;
201 u8 reverse;
Mohsin Kazmi2af0e3a2018-11-20 11:11:12 +0100202 u8 symmetric;
Dave Barachb5e8a772016-12-06 12:04:42 -0500203};
204
Dave Barachb5e8a772016-12-06 12:04:42 -0500205/** \brief IPv6 router advertisement config request
206 @param client_index - opaque cookie to identify the sender
207 @param context - sender context, to match reply w/ request
208 @param suppress -
209 @param managed -
210 @param other -
211 @param ll_option -
212 @param send_unicast -
213 @param cease -
214 @param is_no -
215 @param default_router -
216 @param max_interval -
217 @param min_interval -
218 @param lifetime -
219 @param initial_count -
220 @param initial_interval -
221*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400222autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500223{
224 u32 client_index;
225 u32 context;
226 u32 sw_if_index;
227 u8 suppress;
228 u8 managed;
229 u8 other;
230 u8 ll_option;
231 u8 send_unicast;
232 u8 cease;
233 u8 is_no;
234 u8 default_router;
235 u32 max_interval;
236 u32 min_interval;
237 u32 lifetime;
238 u32 initial_count;
239 u32 initial_interval;
240};
241
Dave Barachb5e8a772016-12-06 12:04:42 -0500242/** \brief IPv6 router advertisement prefix config request
243 @param client_index - opaque cookie to identify the sender
244 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800245 @param sw_if_index - The interface the RA prefix information is for
Neale Ranns37029302018-08-10 05:30:06 -0700246 @param prefix - The prefix to advertise
Neale Ranns87df12d2017-02-18 08:16:41 -0800247 @param use_default - Revert to default settings
248 @param no_advertise - Do not advertise this prefix
249 @param off_link - The prefix is off link (it is not configured on the interface)
250 Configures the L-flag, When set, indicates that this
251 prefix can be used for on-link determination.
252 @param no_autoconfig - Setting for the A-flag. When
253 set indicates that this prefix can be used for
254 stateless address configuration.
255 @param no_onlink - The prefix is not on link. Make sure this is consistent
256 with the off_link parameter else YMMV
257 @param is_no - add/delete
258 @param val_lifetime - The length of time in
259 seconds (relative to the time the packet is sent)
260 that the prefix is valid for the purpose of on-link
261 determination. A value of all one bits
262 (0xffffffff) represents infinity
263 @param pref_lifetime - The length of time in
264 seconds (relative to the time the packet is sent)
265 that addresses generated from the prefix via
266 stateless address autoconfiguration remain
267 preferred [ADDRCONF]. A value of all one bits
268 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500269*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400270autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500271{
272 u32 client_index;
273 u32 context;
274 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700275 vl_api_prefix_t prefix;
Dave Barachb5e8a772016-12-06 12:04:42 -0500276 u8 use_default;
277 u8 no_advertise;
278 u8 off_link;
279 u8 no_autoconfig;
280 u8 no_onlink;
281 u8 is_no;
282 u32 val_lifetime;
283 u32 pref_lifetime;
284};
285
Neale Ranns3f844d02017-02-18 00:03:54 -0800286/** \brief IPv6 ND proxy config
287 @param client_index - opaque cookie to identify the sender
288 @param context - sender context, to match reply w/ request
289 @param sw_if_index - The interface the host is on
290 @param address - The address of the host for which to proxy for
291 @param is_add - Adding or deleting
292*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400293autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800294{
295 u32 client_index;
296 u32 context;
297 u32 sw_if_index;
298 u8 is_del;
Neale Ranns37029302018-08-10 05:30:06 -0700299 vl_api_ip6_address_t ip;
Neale Ranns3f844d02017-02-18 00:03:54 -0800300};
301
Neale Ranns3f844d02017-02-18 00:03:54 -0800302/** \brief IPv6 ND proxy details returned after request
303 @param context - sender context, to match reply w/ request
304 @param retval - return code for the request
305*/
306define ip6nd_proxy_details
307{
Neale Ranns3f844d02017-02-18 00:03:54 -0800308 u32 context;
309 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700310 vl_api_ip6_address_t ip;
Neale Ranns3f844d02017-02-18 00:03:54 -0800311};
312
313/** \brief IPv6 ND proxy dump request
314 @param context - sender context, to match reply w/ request
315 @param retval - return code for the request
316 @param sw_if_index - The interface the host is on
317 @param address - The address of the host for which to proxy for
318*/
319define ip6nd_proxy_dump
320{
321 u32 client_index;
322 u32 context;
323};
324
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100325/** \brief Start / stop sending router solicitation
326 @param client_index - opaque cookie to identify the sender
327 @param context - sender context, to match reply w/ request
328 @param irt - initial retransmission time
329 @param mrt - maximum retransmission time
330 @param mrc - maximum retransmission count
331 @param mrd - maximum retransmission duration
332 @param sw_if_index - software interface index of interface
333 for sending router solicitation
334 @param stop - if non-zero then stop sending router solicitation,
335 otherwise start sending router solicitation
336*/
337autoreply define ip6nd_send_router_solicitation
338{
339 u32 client_index;
340 u32 context;
341 u32 irt;
342 u32 mrt;
343 u32 mrc;
344 u32 mrd;
345 u32 sw_if_index;
346 u8 stop;
347};
348
Dave Barachb5e8a772016-12-06 12:04:42 -0500349/** \brief IPv6 interface enable / disable 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 used to reach neighbor
353 @param enable - if non-zero enable ip6 on interface, else disable
354*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400355autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500356{
357 u32 client_index;
358 u32 context;
359 u32 sw_if_index;
360 u8 enable; /* set to true if enable */
361};
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
Ian Wells412ecd32018-10-04 12:31:11 -0700436
437 Adds a route, consisting both of the MFIB entry to match packets
438 (which may already exist) and a path to send those packets down.
439 Routes can be entered repeatedly to add multiple paths. Deletions are
440 per-path.
441
Neale Ranns32e1c012016-11-22 17:07:28 +0000442 @param client_index - opaque cookie to identify the sender
443 @param context - sender context, to match reply w/ request
Ian Wells412ecd32018-10-04 12:31:11 -0700444 @param table_id - fib table /vrf associated with the route
445 @param is_add - true if adding a route; false if deleting one
446 @param is_ipv6 - true iff all the addresses are v6
447 @param entry_flags - see fib_entry_flag_t
448 @param itf_flags - see mfib_entry_flags_t
449 @param next_hop_afi - see dpo_proto_t; the type of destination description
450 @param src_address - the source of the packet
451 @param grp_address - the group the packet is destined to
452 @param nh_address - the nexthop to forward the packet to
453 @param next_hop_sw_if_index - interface to emit packet on
454
455 BIER AFIs use the BIER imposition ID. v4 and v6 AFIs use either the
456 interface or the nexthop address.
457
458 Note that if the route is source-specific (S is supplied, not all 0s),
459 the prefix match is treated as exact (prefixlen /32 or /128).
460
461 FIXME not complete yet
Neale Ranns32e1c012016-11-22 17:07:28 +0000462*/
Neale Ranns28c142e2018-09-07 09:37:07 -0700463define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000464{
465 u32 client_index;
466 u32 context;
467 u32 next_hop_sw_if_index;
468 u32 table_id;
469 u32 entry_flags;
470 u32 itf_flags;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800471 u32 rpf_id;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700472 u32 bier_imp;
Neale Ranns32e1c012016-11-22 17:07:28 +0000473 u16 grp_address_length;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700474 u8 next_hop_afi;
Neale Ranns32e1c012016-11-22 17:07:28 +0000475 u8 is_add;
476 u8 is_ipv6;
477 u8 is_local;
478 u8 grp_address[16];
479 u8 src_address[16];
Neale Rannse821ab12017-06-01 07:45:05 -0700480 u8 nh_address[16];
Neale Ranns32e1c012016-11-22 17:07:28 +0000481};
482
Neale Ranns28c142e2018-09-07 09:37:07 -0700483define ip_mroute_add_del_reply
484{
485 u32 context;
486 i32 retval;
487 u32 stats_index;
488};
489
Neale Ranns5a8123b2017-01-26 01:18:23 -0800490/** \brief Dump IP multicast fib table
491 @param client_index - opaque cookie to identify the sender
492*/
493define ip_mfib_dump
494{
495 u32 client_index;
496 u32 context;
497};
498
499/** \brief IP Multicast FIB table response
500 @param table_id - IP fib table id
501 @address_length - mask length
502 @grp_address - Group address/prefix
503 @src_address - Source address
504 @param count - the number of fib_path in path
505 @param path - array of of fib_path structures
506*/
Neale Ranns7c03ed42018-12-27 03:21:28 -0800507typedef mfib_path
508{
509 vl_api_fib_path_t path;
510 u32 itf_flags;
511};
512
Neale Ranns5a8123b2017-01-26 01:18:23 -0800513manual_endian manual_print define ip_mfib_details
514{
515 u32 context;
516 u32 table_id;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800517 u32 entry_flags;
518 u32 rpf_id;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800519 u8 address_length;
520 u8 grp_address[4];
521 u8 src_address[4];
522 u32 count;
Neale Ranns28c142e2018-09-07 09:37:07 -0700523 u32 stats_index;
Neale Ranns7c03ed42018-12-27 03:21:28 -0800524 vl_api_mfib_path_t path[count];
Neale Ranns5a8123b2017-01-26 01:18:23 -0800525};
526
527/** \brief Dump IP6 multicast fib table
528 @param client_index - opaque cookie to identify the sender
529*/
530define ip6_mfib_dump
531{
532 u32 client_index;
533 u32 context;
534};
535
536/** \brief IP6 Multicast FIB table response
537 @param table_id - IP fib table id
538 @address_length - mask length
539 @grp_address - Group address/prefix
540 @src_address - Source address
541 @param count - the number of fib_path in path
542 @param path - array of of fib_path structures
543*/
544manual_endian manual_print define ip6_mfib_details
545{
546 u32 context;
547 u32 table_id;
548 u8 address_length;
549 u8 grp_address[16];
550 u8 src_address[16];
551 u32 count;
Neale Ranns7c03ed42018-12-27 03:21:28 -0800552 vl_api_mfib_path_t path[count];
Neale Ranns5a8123b2017-01-26 01:18:23 -0800553};
554
Dave Barachb5e8a772016-12-06 12:04:42 -0500555define ip_address_details
556{
Dave Barachb5e8a772016-12-06 12:04:42 -0500557 u32 context;
558 u8 ip[16];
559 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600560 u32 sw_if_index;
561 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500562};
563
564define ip_address_dump
565{
566 u32 client_index;
567 u32 context;
568 u32 sw_if_index;
569 u8 is_ipv6;
570};
571
Neale Ranns9e2f9152018-05-18 02:27:10 -0700572/** \brief IP unnumbered configurations
573 @param sw_if_index The interface that has unnumbered configuration
574 @param ip_sw_if_index The IP interface that it is unnnumbered to
575*/
576define ip_unnumbered_details
577{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700578 u32 context;
579 u32 sw_if_index;
580 u32 ip_sw_if_index;
581};
582
583/** \brief Dump IP unnumbered configurations
584 @param sw_if_index ~0 for all interfaces, else the interface desired
585*/
586define ip_unnumbered_dump
587{
588 u32 client_index;
589 u32 context;
590 u32 sw_if_index;
591};
592
Dave Barachb5e8a772016-12-06 12:04:42 -0500593define ip_details
594{
Dave Barachb5e8a772016-12-06 12:04:42 -0500595 u32 context;
Ondrej Fabryb11f9032018-08-14 12:39:40 +0200596 u32 sw_if_index;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600597 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500598};
599
600define ip_dump
601{
602 u32 client_index;
603 u32 context;
604 u8 is_ipv6;
605};
606
Neale Ranns32e1c012016-11-22 17:07:28 +0000607define mfib_signal_dump
608{
609 u32 client_index;
610 u32 context;
611};
612
613define mfib_signal_details
614{
Neale Ranns32e1c012016-11-22 17:07:28 +0000615 u32 context;
616 u32 sw_if_index;
617 u32 table_id;
618 u16 grp_address_len;
619 u8 grp_address[16];
620 u8 src_address[16];
621 u16 ip_packet_len;
622 u8 ip_packet_data[256];
623};
Dave Barachb5e8a772016-12-06 12:04:42 -0500624
Neale Rannsd91c1db2017-07-31 02:30:50 -0700625/** \brief IP punt policer
626 @param client_index - opaque cookie to identify the sender
627 @param context - sender context, to match reply w/ request
628 @param is_add - 1 to add neighbor, 0 to delete
629 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
630 @param policer_index - Index of policer to use
631*/
632autoreply define ip_punt_police
633{
634 u32 client_index;
635 u32 context;
636 u32 policer_index;
637 u8 is_add;
638 u8 is_ip6;
639};
640
Pavel Kotucek609e1212018-11-27 09:59:44 +0100641/** \brief Punt redirect type
Neale Ranns47527b22018-11-16 00:53:53 -0800642 @param rx_sw_if_index - specify the original RX interface of traffic
643 that should be redirected. ~0 means any interface.
Neale Rannsd91c1db2017-07-31 02:30:50 -0700644 @param tx_sw_if_index - the TX interface to which traffic shoulde be
645 redirected.
Pavel Kotucek609e1212018-11-27 09:59:44 +0100646 @param nh - the next-hop to redirect the traffic to.
647 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
648*/
649typeonly define punt_redirect
650{
651 u32 rx_sw_if_index;
652 u32 tx_sw_if_index;
653 vl_api_address_t nh;
654};
655
656/** \brief IP punt redirect
657 @param client_index - opaque cookie to identify the sender
658 @param context - sender context, to match reply w/ request
659 @param punt - punt definition
660 @param is_add - 1 to add neighbor, 0 to delete
Neale Rannsd91c1db2017-07-31 02:30:50 -0700661*/
662autoreply define ip_punt_redirect
663{
664 u32 client_index;
665 u32 context;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100666 vl_api_punt_redirect_t punt;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700667 u8 is_add;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100668};
669
670define ip_punt_redirect_dump
671{
672 u32 client_index;
673 u32 context;
674 u32 sw_if_index;
675 u8 is_ipv6;
676};
677
678define ip_punt_redirect_details
679{
680 u32 context;
681 vl_api_punt_redirect_t punt;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700682};
683
Florin Coras595992c2017-11-06 17:17:08 -0800684autoreply define ip_container_proxy_add_del
685{
686 u32 client_index;
687 u32 context;
Neale Ranns37029302018-08-10 05:30:06 -0700688 vl_api_prefix_t pfx;
Florin Coras595992c2017-11-06 17:17:08 -0800689 u32 sw_if_index;
690 u8 is_add;
691};
692
Matus Fabian75b9f452018-10-02 23:27:21 -0700693define ip_container_proxy_dump
694{
695 u32 client_index;
696 u32 context;
697};
698
699define ip_container_proxy_details
700{
701 u32 context;
702 u32 sw_if_index;
703 vl_api_prefix_t prefix;
704};
705
Neale Rannsb8d44812017-11-10 06:53:54 -0800706/** \brief Configure IP source and L4 port-range check
707 @param client_index - opaque cookie to identify the sender
708 @param context - sender context, to match reply w/ request
709 @param is_ip6 - 1 if source address type is IPv6
710 @param is_add - 1 if add, 0 if delete
Neale Ranns37029302018-08-10 05:30:06 -0700711 @param ip - prefix to match
Neale Rannsb8d44812017-11-10 06:53:54 -0800712 @param number_of_ranges - length of low_port and high_port arrays (must match)
713 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
714 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
715 @param vrf_id - fib table/vrf id to associate the source and port-range check with
716 @note To specify a single port set low_port and high_port entry the same
717*/
718autoreply define ip_source_and_port_range_check_add_del
719{
720 u32 client_index;
721 u32 context;
Neale Rannsb8d44812017-11-10 06:53:54 -0800722 u8 is_add;
Neale Ranns37029302018-08-10 05:30:06 -0700723 vl_api_prefix_t prefix;
Neale Rannsb8d44812017-11-10 06:53:54 -0800724 u8 number_of_ranges;
725 u16 low_ports[32];
726 u16 high_ports[32];
727 u32 vrf_id;
728};
729
730/** \brief Set interface source and L4 port-range request
731 @param client_index - opaque cookie to identify the sender
732 @param context - sender context, to match reply w/ request
733 @param interface_id - interface index
734 @param tcp_vrf_id - VRF associated with source and TCP port-range check
735 @param udp_vrf_id - VRF associated with source and TCP port-range check
736*/
737autoreply define ip_source_and_port_range_check_interface_add_del
738{
739 u32 client_index;
740 u32 context;
741 u8 is_add;
742 u32 sw_if_index;
743 u32 tcp_in_vrf_id;
744 u32 tcp_out_vrf_id;
745 u32 udp_in_vrf_id;
746 u32 udp_out_vrf_id;
747};
748
Chore3460b012018-11-28 10:53:11 +0330749/** \brief Set interface source check request
750 @param client_index - opaque cookie to identify the sender
751 @param context - sender context, to match reply w/ request
752 @param is_add - add or del
753 @param loose - strict or loose
754 @param sw_if_index - interface index
755*/
756autoreply define ip_source_check_interface_add_del
757{
758 u32 client_index;
759 u32 context;
760 u8 is_add;
761 u8 loose;
762 u32 sw_if_index;
763};
764
John Lo7f358b32018-04-28 01:19:24 -0400765/** \brief Enable/disable periodic IP neighbor scan
766 @param client_index - opaque cookie to identify the sender
767 @param context - sender context, to match reply w/ request
768 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
769 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
770 @param max_proc_time - max processing time per run in usec, 0: default to 20
771 @param max_update - max neighbor probe/delete per run, 0: default to 10
772 @param scan_int_delay - delay in msec to resume scan if exceed max proc
773 time or update, 0: default to 1
774 @param stale_threshold - threshold in minutes for neighbor deletion,
775 0: default to 4*scan_interval
776*/
777autoreply define ip_scan_neighbor_enable_disable
778{
779 u32 client_index;
780 u32 context;
781 u8 mode;
782 u8 scan_interval;
783 u8 max_proc_time;
784 u8 max_update;
785 u8 scan_int_delay;
786 u8 stale_threshold;
787};
788
John Loc7b43042018-04-13 16:46:22 -0400789/** \brief IP probe neighbor address on an interface by sending an
790 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
791 @param client_index - opaque cookie to identify the sender
792 @param context - sender context, to match reply w/ request
793 @param sw_if_index - interface index
Neale Ranns37029302018-08-10 05:30:06 -0700794 @param dst - target IP address to send IP addr resolution request
John Loc7b43042018-04-13 16:46:22 -0400795*/
796autoreply define ip_probe_neighbor
797{
798 u32 client_index;
799 u32 context;
800 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700801 vl_api_address_t dst;
John Loc7b43042018-04-13 16:46:22 -0400802};
803
804/** \brief Register for IP4 ARP resolution event on receing ARP reply or
805 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800806 @param client_index - opaque cookie to identify the sender
807 @param context - sender context, to match reply w/ request
808 @param enable_disable - 1 => register for events, 0 => cancel registration
809 @param pid - sender's pid
Neale Ranns37029302018-08-10 05:30:06 -0700810 @param ip - exact IP4 address of interested arp resolution event, or
811 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800812*/
813autoreply define want_ip4_arp_events
814{
815 u32 client_index;
816 u32 context;
817 u8 enable_disable;
818 u32 pid;
Neale Ranns37029302018-08-10 05:30:06 -0700819 vl_api_ip4_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800820};
821
John Loc7b43042018-04-13 16:46:22 -0400822/** \brief Tell client about an IP4 ARP resolution event or
823 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800824 @param client_index - opaque cookie to identify the sender
Neale Ranns37029302018-08-10 05:30:06 -0700825 @param ip - the exact ip4 address of interest
Neale Rannsb8d44812017-11-10 06:53:54 -0800826 @param pid - client pid registered to receive notification
827 @param sw_if_index - interface which received ARP packet
Neale Ranns37029302018-08-10 05:30:06 -0700828 @param mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400829 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800830*/
831define ip4_arp_event
832{
833 u32 client_index;
Neale Ranns37029302018-08-10 05:30:06 -0700834 vl_api_ip4_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800835 u32 pid;
836 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700837 vl_api_mac_address_t mac;
Neale Rannsb8d44812017-11-10 06:53:54 -0800838 u8 mac_ip;
839};
840
Marek Gradzki51e59682018-03-06 10:05:44 +0100841service {
842 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
843 events ip4_arp_event;
844};
845
John Loc7b43042018-04-13 16:46:22 -0400846/** \brief Register for IP6 ND resolution event on recieving NA reply
847 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800848 @param client_index - opaque cookie to identify the sender
849 @param context - sender context, to match reply w/ request
850 @param enable_disable - 1 => register for events, 0 => cancel registration
851 @param pid - sender's pid
Neale Ranns37029302018-08-10 05:30:06 -0700852 @param ip - the exact IP6 address of interested ND resolution event, or
853 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800854*/
855autoreply define want_ip6_nd_events
856{
857 u32 client_index;
858 u32 context;
859 u8 enable_disable;
860 u32 pid;
Neale Ranns37029302018-08-10 05:30:06 -0700861 vl_api_ip6_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800862};
863
John Loc7b43042018-04-13 16:46:22 -0400864/** \brief Tell client about an IP6 ND resolution or
865 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800866 @param client_index - opaque cookie to identify the sender
867 @param pid - client pid registered to receive notification
868 @param sw_if_index - interface which received ARP packet
Neale Ranns37029302018-08-10 05:30:06 -0700869 @param ip - the exact ip6 address of interest
Neale Rannsb8d44812017-11-10 06:53:54 -0800870 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400871 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800872*/
873define ip6_nd_event
874{
875 u32 client_index;
876 u32 pid;
877 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700878 vl_api_ip6_address_t ip;
879 vl_api_mac_address_t mac;
Neale Rannsb8d44812017-11-10 06:53:54 -0800880 u8 mac_ip;
881};
882
Marek Gradzki51e59682018-03-06 10:05:44 +0100883service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100884 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
885 events ip6_ra_event;
886};
887
888/** \brief Register for ip6 router advertisement events
889 @param client_index - opaque cookie to identify the sender
890 @param context - sender context, to match reply w/ request
891 @param enable_disable - 1 => register for events, 0 => cancel registration
892 @param pid - sender's pid
893*/
894autoreply define want_ip6_ra_events
895{
896 u32 client_index;
897 u32 context;
898 u8 enable_disable;
899 u32 pid;
900};
901
902/** \brief Struct representing RA prefix info
Neale Ranns37029302018-08-10 05:30:06 -0700903 @param prefix - RA prefix info destination address
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100904 @param flags - RA prefix info flags
905 @param valid_time - RA prefix info valid time
906 @param preferred_time - RA prefix info preferred time
907*/
908typeonly define ip6_ra_prefix_info
909{
Neale Ranns37029302018-08-10 05:30:06 -0700910 vl_api_prefix_t prefix;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100911 u8 flags;
912 u32 valid_time;
913 u32 preferred_time;
914};
915
916/** \brief Tell client about a router advertisement event
917 @param client_index - opaque cookie to identify the sender
918 @param pid - client pid registered to receive notification
919 @param current_hop_limit - RA current hop limit
920 @param flags - RA flags
921 @param router_lifetime_in_sec - RA lifetime in seconds
Neale Ranns37029302018-08-10 05:30:06 -0700922 @param router_addr - The router's address
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100923 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
924 @param time_in_msec_between_retransmitted_neighbor_solicitations -
925 time in msec between retransmitted neighbor solicitations
926 @param n_prefixes -
927 @param prefixes -
928*/
929define ip6_ra_event
930{
931 u32 client_index;
932 u32 pid;
933 u32 sw_if_index;
Neale Ranns37029302018-08-10 05:30:06 -0700934 vl_api_ip6_address_t router_addr;
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100935 u8 current_hop_limit;
936 u8 flags;
937 u16 router_lifetime_in_sec;
938 u32 neighbor_reachable_time_in_msec;
939 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
940 u32 n_prefixes;
941 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
942};
943
944service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100945 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
946 events ip6_nd_event;
947};
948
Neale Ranns0053de62018-05-22 08:40:52 -0700949/** \brief Proxy ARP configuration type
Neale Ranns37029302018-08-10 05:30:06 -0700950 @param table_id - VRF / Fib table ID
951 @param low - Low address of the Proxy ARP range
952 @param hi - High address of the Proxy ARP range
Neale Rannsb8d44812017-11-10 06:53:54 -0800953*/
Neale Ranns0053de62018-05-22 08:40:52 -0700954typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800955{
Neale Ranns37029302018-08-10 05:30:06 -0700956 u32 table_id;
957 vl_api_ip4_address_t low;
958 vl_api_ip4_address_t hi;
Neale Rannsb8d44812017-11-10 06:53:54 -0800959};
960
961/** \brief Proxy ARP add / del request
962 @param client_index - opaque cookie to identify the sender
963 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700964 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
965 @param proxy - Proxy configuration
966*/
967autoreply define proxy_arp_add_del
968{
969 u32 client_index;
970 u32 context;
971 u8 is_add;
972 vl_api_proxy_arp_t proxy;
973};
974
975/** \brief Proxy ARP dump request
976 */
977define proxy_arp_dump
978{
979 u32 client_index;
980 u32 context;
981};
982
983/** \brief Proxy ARP dump details reply
984 * @param proxy - Same data as used to configure
985 */
986define proxy_arp_details
987{
988 u32 context;
989 vl_api_proxy_arp_t proxy;
990};
991
992/** \brief Proxy ARP add / del interface request
993 @param client_index - opaque cookie to identify the sender
994 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800995 @param sw_if_index - Which interface to enable / disable Proxy Arp on
996 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
997*/
998autoreply define proxy_arp_intfc_enable_disable
999{
1000 u32 client_index;
1001 u32 context;
1002 u32 sw_if_index;
1003 /* 1 = on, 0 = off */
1004 u8 enable_disable;
1005};
1006
Neale Ranns0053de62018-05-22 08:40:52 -07001007/** \brief Proxy ARP interface dump request
1008 */
1009define proxy_arp_intfc_dump
1010{
1011 u32 client_index;
1012 u32 context;
1013};
1014
1015/** \brief Proxy ARP interface dump details reply
1016 * @param sw_if_index The interface on which ARP proxy is enabled.
1017 */
1018define proxy_arp_intfc_details
1019{
1020 u32 context;
1021 u32 sw_if_index;
1022};
1023
Neale Rannsb8d44812017-11-10 06:53:54 -08001024/** \brief Reset fib table request
1025 @param client_index - opaque cookie to identify the sender
1026 @param context - sender context, to match reply w/ request
1027 @param vrf_id - vrf/table id of the fib table to reset
1028 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
1029*/
1030autoreply define reset_fib
1031{
1032 u32 client_index;
1033 u32 context;
1034 u32 vrf_id;
1035 u8 is_ipv6;
1036};
1037
1038/** \brief Set max allowed ARP or ip6 neighbor entries request
1039 @param client_index - opaque cookie to identify the sender
1040 @param context - sender context, to match reply w/ request
1041 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
1042 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
1043*/
1044autoreply define set_arp_neighbor_limit
1045{
1046 u32 client_index;
1047 u32 context;
1048 u8 is_ipv6;
1049 u32 arp_neighbor_limit;
1050};
1051
1052/** \brief IOAM enable : Enable in-band OAM
1053 @param id - profile id
1054 @param seqno - To enable Seqno Processing
1055 @param analyse - Enabling analysis of iOAM at decap node
1056 @param pow_enable - Proof of Work enabled or not flag
1057 @param trace_enable - iOAM Trace enabled or not flag
1058*/
1059autoreply define ioam_enable
1060{
1061 u32 client_index;
1062 u32 context;
1063 u16 id;
1064 u8 seqno;
1065 u8 analyse;
1066 u8 pot_enable;
1067 u8 trace_enable;
1068 u32 node_id;
1069};
1070
1071/** \brief iOAM disable
1072 @param client_index - opaque cookie to identify the sender
1073 @param context - sender context, to match reply w/ request
1074 @param index - MAP Domain index
1075*/
1076autoreply define ioam_disable
1077{
1078 u32 client_index;
1079 u32 context;
1080 u16 id;
1081};
1082
Klement Sekera75e7d132017-09-20 08:26:30 +02001083autoreply define ip_reassembly_set
1084{
1085 u32 client_index;
1086 u32 context;
1087 u32 timeout_ms;
1088 u32 max_reassemblies;
1089 u32 expire_walk_interval_ms;
1090 u8 is_ip6;
1091};
1092
1093define ip_reassembly_get
1094{
1095 u32 client_index;
1096 u32 context;
1097 u8 is_ip6;
1098};
1099
1100define ip_reassembly_get_reply
1101{
Klement Sekera75e7d132017-09-20 08:26:30 +02001102 u32 context;
1103 i32 retval;
1104 u32 timeout_ms;
1105 u32 max_reassemblies;
1106 u32 expire_walk_interval_ms;
1107 u8 is_ip6;
1108};
1109
Klement Sekera4c533132018-02-22 11:41:12 +01001110/** \brief Enable/disable reassembly feature
1111 @param client_index - opaque cookie to identify the sender
1112 @param context - sender context, to match reply w/ request
1113 @param sw_if_index - interface to enable/disable feature on
1114 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1115 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1116*/
1117autoreply define ip_reassembly_enable_disable
1118{
1119 u32 client_index;
1120 u32 context;
1121 u32 sw_if_index;
1122 u8 enable_ip4;
1123 u8 enable_ip6;
1124};
1125
Dave Barachb5e8a772016-12-06 12:04:42 -05001126/*
1127 * Local Variables:
1128 * eval: (c-set-style "gnu")
1129 * End:
1130 */