blob: 616d621577d32b997fbd6b7eabc18ef858074ac5 [file] [log] [blame]
Dave Barachb5e8a772016-12-06 12:04:42 -05001/*
2 * Copyright (c) 2016 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/** \file
17
18 This file defines vpp IP control-plane API messages which are generally
19 called through a shared memory interface.
20*/
21
Marek Gradzki7eaaf742018-05-25 15:50:05 +020022option version = "1.3.0";
Neale Ranns947ea622018-06-07 23:48:20 -070023import "vnet/ip/ip_types.api";
Neale Ranns31ed7442018-02-23 05:29:09 -080024import "vnet/fib/fib_types.api";
Neale Rannsde5b08f2018-08-29 06:37:18 -070025import "vnet/ethernet/ethernet_types.api";
Dave Barach0d056e52017-09-28 15:11:16 -040026
Neale Ranns28ab9cc2017-08-14 07:18:42 -070027/** \brief Add / del table request
28 A table can be added multiple times, but need be deleted only once.
29 @param client_index - opaque cookie to identify the sender
30 @param context - sender context, to match reply w/ request
31 @param is_ipv6 - V4 or V6 table
32 @param table_id - table ID associated with the route
33 This table ID will apply to both the unicats
34 and mlticast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070035 @param name - A client provided name/tag for the table. If this is
36 not set by the client, then VPP will generate something
37 meaningfull.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070038*/
39autoreply define ip_table_add_del
40{
41 u32 client_index;
42 u32 context;
43 u32 table_id;
44 u8 is_ipv6;
45 u8 is_add;
Neale Ranns2297af02017-09-12 09:45:04 -070046 u8 name[64];
Neale Ranns28ab9cc2017-08-14 07:18:42 -070047};
48
Dave Barachb5e8a772016-12-06 12:04:42 -050049/** \brief Dump IP fib table
50 @param client_index - opaque cookie to identify the sender
51*/
52define ip_fib_dump
53{
54 u32 client_index;
55 u32 context;
56};
57
Dave Barachb5e8a772016-12-06 12:04:42 -050058/** \brief IP FIB table response
59 @param table_id - IP fib table id
60 @address_length - mask length
61 @address - ip4 prefix
62 @param count - the number of fib_path in path
63 @param path - array of of fib_path structures
64*/
65manual_endian manual_print define ip_fib_details
66{
67 u32 context;
68 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070069 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050070 u8 address_length;
71 u8 address[4];
72 u32 count;
73 vl_api_fib_path_t path[count];
74};
75
76/** \brief Dump IP6 fib table
77 @param client_index - opaque cookie to identify the sender
78*/
79define ip6_fib_dump
80{
81 u32 client_index;
82 u32 context;
83};
84
Neale Ranns2297af02017-09-12 09:45:04 -070085/** \brief IP6 FIB table entry response
Dave Barachb5e8a772016-12-06 12:04:42 -050086 @param table_id - IP6 fib table id
Neale Ranns2297af02017-09-12 09:45:04 -070087 @param address_length - mask length
88 @param address - ip6 prefix
Dave Barachb5e8a772016-12-06 12:04:42 -050089 @param count - the number of fib_path in path
90 @param path - array of of fib_path structures
91*/
92manual_endian manual_print define ip6_fib_details
93{
94 u32 context;
95 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070096 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050097 u8 address_length;
98 u8 address[16];
99 u32 count;
100 vl_api_fib_path_t path[count];
101};
102
103/** \brief Dump IP neighboors
104 @param client_index - opaque cookie to identify the sender
105 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600106 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500107 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
108*/
109define ip_neighbor_dump
110{
111 u32 client_index;
112 u32 context;
113 u32 sw_if_index;
114 u8 is_ipv6;
115};
116
117/** \brief IP neighboors dump response
118 @param context - sender context which was passed in the request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600119 @param sw_if_index - The interface used to reach the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500120 @param is_static - [1|0] to indicate if neighbor is statically configured
121 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
122*/
123define ip_neighbor_details {
124 u32 context;
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600125 u32 sw_if_index;
Pavel Kotucek8cb07c92017-01-11 10:13:54 +0100126 u8 is_static;
Dave Barachb5e8a772016-12-06 12:04:42 -0500127 u8 is_ipv6;
128 u8 mac_address[6];
129 u8 ip_address[16];
130};
131
132/** \brief IP neighbor add / del request
133 @param client_index - opaque cookie to identify the sender
134 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -0500135 @param sw_if_index - interface used to reach neighbor
136 @param is_add - 1 to add neighbor, 0 to delete
137 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
Neale Ranns239d3fe2017-03-08 08:56:58 -0800138 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
139 @param is_static - A static neighbor Entry - there are not flushed
140 If the interface goes down.
141 @param is_no_adj_fib - Do not create a corresponding entry in the FIB
142 table for the neighbor.
Dave Barachb5e8a772016-12-06 12:04:42 -0500143 @param mac_address - l2 address of the neighbor
144 @param dst_address - ip4 or ip6 address of the neighbor
145*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400146autoreply define ip_neighbor_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500147{
148 u32 client_index;
149 u32 context;
Dave Barachb5e8a772016-12-06 12:04:42 -0500150 u32 sw_if_index;
151 /* 1 = add, 0 = delete */
152 u8 is_add;
153 u8 is_ipv6;
154 u8 is_static;
Neale Ranns239d3fe2017-03-08 08:56:58 -0800155 u8 is_no_adj_fib;
Dave Barachb5e8a772016-12-06 12:04:42 -0500156 u8 mac_address[6];
157 u8 dst_address[16];
158};
159
Dave Barachb5e8a772016-12-06 12:04:42 -0500160/** \brief Set the ip flow hash config for a fib request
161 @param client_index - opaque cookie to identify the sender
162 @param context - sender context, to match reply w/ request
163 @param vrf_id - vrf/fib id
164 @param is_ipv6 - if non-zero the fib is ip6, else ip4
165 @param src - if non-zero include src in flow hash
166 @param dst - if non-zero include dst in flow hash
167 @param sport - if non-zero include sport in flow hash
168 @param dport - if non-zero include dport in flow hash
169 @param proto -if non-zero include proto in flow hash
170 @param reverse - if non-zero include reverse in flow hash
171*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400172autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500173{
174 u32 client_index;
175 u32 context;
176 u32 vrf_id;
177 u8 is_ipv6;
178 u8 src;
179 u8 dst;
180 u8 sport;
181 u8 dport;
182 u8 proto;
183 u8 reverse;
184};
185
Dave Barachb5e8a772016-12-06 12:04:42 -0500186/** \brief IPv6 router advertisement config request
187 @param client_index - opaque cookie to identify the sender
188 @param context - sender context, to match reply w/ request
189 @param suppress -
190 @param managed -
191 @param other -
192 @param ll_option -
193 @param send_unicast -
194 @param cease -
195 @param is_no -
196 @param default_router -
197 @param max_interval -
198 @param min_interval -
199 @param lifetime -
200 @param initial_count -
201 @param initial_interval -
202*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400203autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500204{
205 u32 client_index;
206 u32 context;
207 u32 sw_if_index;
208 u8 suppress;
209 u8 managed;
210 u8 other;
211 u8 ll_option;
212 u8 send_unicast;
213 u8 cease;
214 u8 is_no;
215 u8 default_router;
216 u32 max_interval;
217 u32 min_interval;
218 u32 lifetime;
219 u32 initial_count;
220 u32 initial_interval;
221};
222
Dave Barachb5e8a772016-12-06 12:04:42 -0500223/** \brief IPv6 router advertisement prefix config request
224 @param client_index - opaque cookie to identify the sender
225 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800226 @param sw_if_index - The interface the RA prefix information is for
227 @param address[] - The prefix to advertise
228 @param address_length - the prefix length
229 @param use_default - Revert to default settings
230 @param no_advertise - Do not advertise this prefix
231 @param off_link - The prefix is off link (it is not configured on the interface)
232 Configures the L-flag, When set, indicates that this
233 prefix can be used for on-link determination.
234 @param no_autoconfig - Setting for the A-flag. When
235 set indicates that this prefix can be used for
236 stateless address configuration.
237 @param no_onlink - The prefix is not on link. Make sure this is consistent
238 with the off_link parameter else YMMV
239 @param is_no - add/delete
240 @param val_lifetime - The length of time in
241 seconds (relative to the time the packet is sent)
242 that the prefix is valid for the purpose of on-link
243 determination. A value of all one bits
244 (0xffffffff) represents infinity
245 @param pref_lifetime - The length of time in
246 seconds (relative to the time the packet is sent)
247 that addresses generated from the prefix via
248 stateless address autoconfiguration remain
249 preferred [ADDRCONF]. A value of all one bits
250 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500251*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400252autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500253{
254 u32 client_index;
255 u32 context;
256 u32 sw_if_index;
257 u8 address[16];
258 u8 address_length;
259 u8 use_default;
260 u8 no_advertise;
261 u8 off_link;
262 u8 no_autoconfig;
263 u8 no_onlink;
264 u8 is_no;
265 u32 val_lifetime;
266 u32 pref_lifetime;
267};
268
Neale Ranns3f844d02017-02-18 00:03:54 -0800269/** \brief IPv6 ND proxy config
270 @param client_index - opaque cookie to identify the sender
271 @param context - sender context, to match reply w/ request
272 @param sw_if_index - The interface the host is on
273 @param address - The address of the host for which to proxy for
274 @param is_add - Adding or deleting
275*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400276autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800277{
278 u32 client_index;
279 u32 context;
280 u32 sw_if_index;
281 u8 is_del;
282 u8 address[16];
283};
284
Neale Ranns3f844d02017-02-18 00:03:54 -0800285/** \brief IPv6 ND proxy details returned after request
286 @param context - sender context, to match reply w/ request
287 @param retval - return code for the request
288*/
289define ip6nd_proxy_details
290{
Neale Ranns3f844d02017-02-18 00:03:54 -0800291 u32 context;
292 u32 sw_if_index;
293 u8 address[16];
294};
295
296/** \brief IPv6 ND proxy dump request
297 @param context - sender context, to match reply w/ request
298 @param retval - return code for the request
299 @param sw_if_index - The interface the host is on
300 @param address - The address of the host for which to proxy for
301*/
302define ip6nd_proxy_dump
303{
304 u32 client_index;
305 u32 context;
306};
307
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100308/** \brief Start / stop sending router solicitation
309 @param client_index - opaque cookie to identify the sender
310 @param context - sender context, to match reply w/ request
311 @param irt - initial retransmission time
312 @param mrt - maximum retransmission time
313 @param mrc - maximum retransmission count
314 @param mrd - maximum retransmission duration
315 @param sw_if_index - software interface index of interface
316 for sending router solicitation
317 @param stop - if non-zero then stop sending router solicitation,
318 otherwise start sending router solicitation
319*/
320autoreply define ip6nd_send_router_solicitation
321{
322 u32 client_index;
323 u32 context;
324 u32 irt;
325 u32 mrt;
326 u32 mrc;
327 u32 mrd;
328 u32 sw_if_index;
329 u8 stop;
330};
331
Dave Barachb5e8a772016-12-06 12:04:42 -0500332/** \brief IPv6 interface enable / disable request
333 @param client_index - opaque cookie to identify the sender
334 @param context - sender context, to match reply w/ request
335 @param sw_if_index - interface used to reach neighbor
336 @param enable - if non-zero enable ip6 on interface, else disable
337*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400338autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500339{
340 u32 client_index;
341 u32 context;
342 u32 sw_if_index;
343 u8 enable; /* set to true if enable */
344};
345
Dave Barachb5e8a772016-12-06 12:04:42 -0500346/** \brief IPv6 set link local address on interface request
347 @param client_index - opaque cookie to identify the sender
348 @param context - sender context, to match reply w/ request
349 @param sw_if_index - interface to set link local on
350 @param address[] - the new link local address
Dave Barachb5e8a772016-12-06 12:04:42 -0500351*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400352autoreply define sw_interface_ip6_set_link_local_address
Dave Barachb5e8a772016-12-06 12:04:42 -0500353{
354 u32 client_index;
355 u32 context;
356 u32 sw_if_index;
357 u8 address[16];
Dave Barachb5e8a772016-12-06 12:04:42 -0500358};
359
Dave Barachb5e8a772016-12-06 12:04:42 -0500360/** \brief Add / del route request
361 @param client_index - opaque cookie to identify the sender
362 @param context - sender context, to match reply w/ request
363 @param sw_if_index - software index of the new vlan's parent interface
364 @param vrf_id - fib table /vrf associated with the route
365 @param lookup_in_vrf -
366 @param classify_table_index -
Dave Barachb5e8a772016-12-06 12:04:42 -0500367 @param is_add - 1 if adding the route, 0 if deleting
368 @param is_drop - Drop the packet
369 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
370 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
371 @param is_ipv6 - 0 if an ip4 route, else ip6
Neale Ranns810086d2017-11-05 16:26:46 -0800372 @param is_local - The route will result in packets sent to VPP IP stack
373 @param is_udp_encap - The path describes a UDP-o-IP encapsulation.
Dave Barachb5e8a772016-12-06 12:04:42 -0500374 @param is_classify -
375 @param is_multipath - Set to 1 if this is a multipath route, else 0
Neale Rannsf068c3e2018-01-03 04:18:48 -0800376 @param is_dvr - Does the route resolve via a DVR interface.
Neale Ranns054c03a2017-10-13 05:15:07 -0700377 @param is_source_lookup - The the path is a deaggregate path (i.e. a lookup
378 in another table) is the lookup on the packet's
379 source address or destination.
Neale Ranns810086d2017-11-05 16:26:46 -0800380 @param next_hop_weight - Weight for Unequal cost multi-path
381 @param next_hop_preference - Path that are up that have the best preference are
382 are used for forwarding. lower value is better.
383 @param next_hop_id - Used when the path resolves via an object that has a unique
384 identifier.
Dave Barachb5e8a772016-12-06 12:04:42 -0500385 @param dst_address_length -
386 @param dst_address[16] -
387 @param next_hop_address[16] -
388 @param next_hop_n_out_labels - the number of labels in the label stack
389 @param next_hop_out_label_stack - the next-hop output label stack, outer most first
390 @param next_hop_via_label - The next-hop is a resolved via a local label
391*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400392autoreply define ip_add_del_route
Dave Barachb5e8a772016-12-06 12:04:42 -0500393{
394 u32 client_index;
395 u32 context;
396 u32 next_hop_sw_if_index;
397 u32 table_id;
398 u32 classify_table_index;
399 u32 next_hop_table_id;
Neale Ranns810086d2017-11-05 16:26:46 -0800400 u32 next_hop_id;
Dave Barachb5e8a772016-12-06 12:04:42 -0500401 u8 is_add;
402 u8 is_drop;
403 u8 is_unreach;
404 u8 is_prohibit;
405 u8 is_ipv6;
406 u8 is_local;
407 u8 is_classify;
408 u8 is_multipath;
409 u8 is_resolve_host;
410 u8 is_resolve_attached;
Neale Rannsf068c3e2018-01-03 04:18:48 -0800411 u8 is_dvr;
Neale Ranns054c03a2017-10-13 05:15:07 -0700412 u8 is_source_lookup;
Neale Ranns810086d2017-11-05 16:26:46 -0800413 u8 is_udp_encap;
Dave Barachb5e8a772016-12-06 12:04:42 -0500414 u8 next_hop_weight;
Neale Ranns57b58602017-07-15 07:37:25 -0700415 u8 next_hop_preference;
Neale Ranns810086d2017-11-05 16:26:46 -0800416 u8 next_hop_proto;
Dave Barachb5e8a772016-12-06 12:04:42 -0500417 u8 dst_address_length;
418 u8 dst_address[16];
419 u8 next_hop_address[16];
420 u8 next_hop_n_out_labels;
421 u32 next_hop_via_label;
Neale Ranns31ed7442018-02-23 05:29:09 -0800422 vl_api_fib_mpls_label_t next_hop_out_label_stack[next_hop_n_out_labels];
Dave Barachb5e8a772016-12-06 12:04:42 -0500423};
424
Neale Ranns32e1c012016-11-22 17:07:28 +0000425/** \brief Add / del route request
426 @param client_index - opaque cookie to identify the sender
427 @param context - sender context, to match reply w/ request
428 @param sw_if_index - software index of the new vlan's parent interface
429 @param vrf_id - fib table /vrf associated with the route
Neale Rannsd792d9c2017-10-21 10:53:20 -0700430 @param next_hop_afi - Use dpo_proto_t
Neale Ranns32e1c012016-11-22 17:07:28 +0000431 FIXME
432*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400433autoreply define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000434{
435 u32 client_index;
436 u32 context;
437 u32 next_hop_sw_if_index;
438 u32 table_id;
439 u32 entry_flags;
440 u32 itf_flags;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800441 u32 rpf_id;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700442 u32 bier_imp;
Neale Ranns32e1c012016-11-22 17:07:28 +0000443 u16 grp_address_length;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700444 u8 next_hop_afi;
Neale Ranns32e1c012016-11-22 17:07:28 +0000445 u8 is_add;
446 u8 is_ipv6;
447 u8 is_local;
448 u8 grp_address[16];
449 u8 src_address[16];
Neale Rannse821ab12017-06-01 07:45:05 -0700450 u8 nh_address[16];
Neale Ranns32e1c012016-11-22 17:07:28 +0000451};
452
Neale Ranns5a8123b2017-01-26 01:18:23 -0800453/** \brief Dump IP multicast fib table
454 @param client_index - opaque cookie to identify the sender
455*/
456define ip_mfib_dump
457{
458 u32 client_index;
459 u32 context;
460};
461
462/** \brief IP Multicast FIB table response
463 @param table_id - IP fib table id
464 @address_length - mask length
465 @grp_address - Group address/prefix
466 @src_address - Source address
467 @param count - the number of fib_path in path
468 @param path - array of of fib_path structures
469*/
470manual_endian manual_print define ip_mfib_details
471{
472 u32 context;
473 u32 table_id;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800474 u32 entry_flags;
475 u32 rpf_id;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800476 u8 address_length;
477 u8 grp_address[4];
478 u8 src_address[4];
479 u32 count;
480 vl_api_fib_path_t path[count];
481};
482
483/** \brief Dump IP6 multicast fib table
484 @param client_index - opaque cookie to identify the sender
485*/
486define ip6_mfib_dump
487{
488 u32 client_index;
489 u32 context;
490};
491
492/** \brief IP6 Multicast FIB table response
493 @param table_id - IP fib table id
494 @address_length - mask length
495 @grp_address - Group address/prefix
496 @src_address - Source address
497 @param count - the number of fib_path in path
498 @param path - array of of fib_path structures
499*/
500manual_endian manual_print define ip6_mfib_details
501{
502 u32 context;
503 u32 table_id;
504 u8 address_length;
505 u8 grp_address[16];
506 u8 src_address[16];
507 u32 count;
508 vl_api_fib_path_t path[count];
509};
510
Dave Barachb5e8a772016-12-06 12:04:42 -0500511define ip_address_details
512{
Dave Barachb5e8a772016-12-06 12:04:42 -0500513 u32 context;
514 u8 ip[16];
515 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600516 u32 sw_if_index;
517 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500518};
519
520define ip_address_dump
521{
522 u32 client_index;
523 u32 context;
524 u32 sw_if_index;
525 u8 is_ipv6;
526};
527
Neale Ranns9e2f9152018-05-18 02:27:10 -0700528/** \brief IP unnumbered configurations
529 @param sw_if_index The interface that has unnumbered configuration
530 @param ip_sw_if_index The IP interface that it is unnnumbered to
531*/
532define ip_unnumbered_details
533{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700534 u32 context;
535 u32 sw_if_index;
536 u32 ip_sw_if_index;
537};
538
539/** \brief Dump IP unnumbered configurations
540 @param sw_if_index ~0 for all interfaces, else the interface desired
541*/
542define ip_unnumbered_dump
543{
544 u32 client_index;
545 u32 context;
546 u32 sw_if_index;
547};
548
Dave Barachb5e8a772016-12-06 12:04:42 -0500549define ip_details
550{
Dave Barachb5e8a772016-12-06 12:04:42 -0500551 u32 context;
Ondrej Fabryb11f9032018-08-14 12:39:40 +0200552 u32 sw_if_index;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600553 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500554};
555
556define ip_dump
557{
558 u32 client_index;
559 u32 context;
560 u8 is_ipv6;
561};
562
Neale Ranns32e1c012016-11-22 17:07:28 +0000563define mfib_signal_dump
564{
565 u32 client_index;
566 u32 context;
567};
568
569define mfib_signal_details
570{
Neale Ranns32e1c012016-11-22 17:07:28 +0000571 u32 context;
572 u32 sw_if_index;
573 u32 table_id;
574 u16 grp_address_len;
575 u8 grp_address[16];
576 u8 src_address[16];
577 u16 ip_packet_len;
578 u8 ip_packet_data[256];
579};
Dave Barachb5e8a772016-12-06 12:04:42 -0500580
Neale Rannsd91c1db2017-07-31 02:30:50 -0700581/** \brief IP punt policer
582 @param client_index - opaque cookie to identify the sender
583 @param context - sender context, to match reply w/ request
584 @param is_add - 1 to add neighbor, 0 to delete
585 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
586 @param policer_index - Index of policer to use
587*/
588autoreply define ip_punt_police
589{
590 u32 client_index;
591 u32 context;
592 u32 policer_index;
593 u8 is_add;
594 u8 is_ip6;
595};
596
597/** \brief IP punt redirect
598 @param client_index - opaque cookie to identify the sender
599 @param context - sender context, to match reply w/ request
600 @param is_add - 1 to add neighbor, 0 to delete
601 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
602 @param tx_sw_if_index - the TX interface to which traffic shoulde be
603 redirected.
604 @param nh - The next-hop to redirect the traffic to.
605*/
606autoreply define ip_punt_redirect
607{
608 u32 client_index;
609 u32 context;
610 u32 rx_sw_if_index;
611 u32 tx_sw_if_index;
612 u8 is_add;
613 u8 is_ip6;
614 u8 nh[16];
615};
616
Florin Coras595992c2017-11-06 17:17:08 -0800617autoreply define ip_container_proxy_add_del
618{
619 u32 client_index;
620 u32 context;
621 u8 ip[16];
622 u8 is_ip4;
623 u8 plen;
624 u32 sw_if_index;
625 u8 is_add;
626};
627
Neale Rannsb8d44812017-11-10 06:53:54 -0800628/** \brief Configure IP source and L4 port-range check
629 @param client_index - opaque cookie to identify the sender
630 @param context - sender context, to match reply w/ request
631 @param is_ip6 - 1 if source address type is IPv6
632 @param is_add - 1 if add, 0 if delete
633 @param mask_length - mask length for address entry
634 @param address - array of address bytes
635 @param number_of_ranges - length of low_port and high_port arrays (must match)
636 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
637 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
638 @param vrf_id - fib table/vrf id to associate the source and port-range check with
639 @note To specify a single port set low_port and high_port entry the same
640*/
641autoreply define ip_source_and_port_range_check_add_del
642{
643 u32 client_index;
644 u32 context;
645 u8 is_ipv6;
646 u8 is_add;
647 u8 mask_length;
648 u8 address[16];
649 u8 number_of_ranges;
650 u16 low_ports[32];
651 u16 high_ports[32];
652 u32 vrf_id;
653};
654
655/** \brief Set interface source and L4 port-range request
656 @param client_index - opaque cookie to identify the sender
657 @param context - sender context, to match reply w/ request
658 @param interface_id - interface index
659 @param tcp_vrf_id - VRF associated with source and TCP port-range check
660 @param udp_vrf_id - VRF associated with source and TCP port-range check
661*/
662autoreply define ip_source_and_port_range_check_interface_add_del
663{
664 u32 client_index;
665 u32 context;
666 u8 is_add;
667 u32 sw_if_index;
668 u32 tcp_in_vrf_id;
669 u32 tcp_out_vrf_id;
670 u32 udp_in_vrf_id;
671 u32 udp_out_vrf_id;
672};
673
John Lo7f358b32018-04-28 01:19:24 -0400674/** \brief Enable/disable periodic IP neighbor scan
675 @param client_index - opaque cookie to identify the sender
676 @param context - sender context, to match reply w/ request
677 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
678 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
679 @param max_proc_time - max processing time per run in usec, 0: default to 20
680 @param max_update - max neighbor probe/delete per run, 0: default to 10
681 @param scan_int_delay - delay in msec to resume scan if exceed max proc
682 time or update, 0: default to 1
683 @param stale_threshold - threshold in minutes for neighbor deletion,
684 0: default to 4*scan_interval
685*/
686autoreply define ip_scan_neighbor_enable_disable
687{
688 u32 client_index;
689 u32 context;
690 u8 mode;
691 u8 scan_interval;
692 u8 max_proc_time;
693 u8 max_update;
694 u8 scan_int_delay;
695 u8 stale_threshold;
696};
697
John Loc7b43042018-04-13 16:46:22 -0400698/** \brief IP probe neighbor address on an interface by sending an
699 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
700 @param client_index - opaque cookie to identify the sender
701 @param context - sender context, to match reply w/ request
702 @param sw_if_index - interface index
703 @param dst_address - target IP address to send IP addr resolution request
704 @param is_ipv6 - [1|0] to indicate if address family is IPv[6|4]
705*/
706autoreply define ip_probe_neighbor
707{
708 u32 client_index;
709 u32 context;
710 u32 sw_if_index;
711 u8 dst_address[16];
712 u8 is_ipv6;
713};
714
715/** \brief Register for IP4 ARP resolution event on receing ARP reply or
716 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800717 @param client_index - opaque cookie to identify the sender
718 @param context - sender context, to match reply w/ request
719 @param enable_disable - 1 => register for events, 0 => cancel registration
720 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400721 @param address - exact IP4 address of interested arp resolution event, or
722 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800723*/
724autoreply define want_ip4_arp_events
725{
726 u32 client_index;
727 u32 context;
728 u8 enable_disable;
729 u32 pid;
730 u32 address;
731};
732
John Loc7b43042018-04-13 16:46:22 -0400733/** \brief Tell client about an IP4 ARP resolution event 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 address - the exact ip4 address of interest
737 @param pid - client pid registered to receive notification
738 @param sw_if_index - interface which received ARP packet
739 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400740 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800741*/
742define ip4_arp_event
743{
744 u32 client_index;
745 u32 address;
746 u32 pid;
747 u32 sw_if_index;
748 u8 new_mac[6];
749 u8 mac_ip;
750};
751
Marek Gradzki51e59682018-03-06 10:05:44 +0100752service {
753 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
754 events ip4_arp_event;
755};
756
John Loc7b43042018-04-13 16:46:22 -0400757/** \brief Register for IP6 ND resolution event on recieving NA reply
758 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800759 @param client_index - opaque cookie to identify the sender
760 @param context - sender context, to match reply w/ request
761 @param enable_disable - 1 => register for events, 0 => cancel registration
762 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400763 @param address - the exact IP6 address of interested ND resolution event, or
764 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800765*/
766autoreply define want_ip6_nd_events
767{
768 u32 client_index;
769 u32 context;
770 u8 enable_disable;
771 u32 pid;
772 u8 address[16];
773};
774
John Loc7b43042018-04-13 16:46:22 -0400775/** \brief Tell client about an IP6 ND resolution or
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 pid - client pid registered to receive notification
779 @param sw_if_index - interface which received ARP packet
780 @param address - the exact ip6 address of interest
781 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400782 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800783*/
784define ip6_nd_event
785{
786 u32 client_index;
787 u32 pid;
788 u32 sw_if_index;
789 u8 address[16];
790 u8 new_mac[6];
791 u8 mac_ip;
792};
793
Marek Gradzki51e59682018-03-06 10:05:44 +0100794service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100795 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
796 events ip6_ra_event;
797};
798
799/** \brief Register for ip6 router advertisement events
800 @param client_index - opaque cookie to identify the sender
801 @param context - sender context, to match reply w/ request
802 @param enable_disable - 1 => register for events, 0 => cancel registration
803 @param pid - sender's pid
804*/
805autoreply define want_ip6_ra_events
806{
807 u32 client_index;
808 u32 context;
809 u8 enable_disable;
810 u32 pid;
811};
812
813/** \brief Struct representing RA prefix info
814 @param dst_address - RA prefix info destination address
815 @param dst_address_length - RA prefix info destination address length
816 @param flags - RA prefix info flags
817 @param valid_time - RA prefix info valid time
818 @param preferred_time - RA prefix info preferred time
819*/
820typeonly define ip6_ra_prefix_info
821{
822 u8 dst_address[16];
823 u8 dst_address_length;
824 u8 flags;
825 u32 valid_time;
826 u32 preferred_time;
827};
828
829/** \brief Tell client about a router advertisement event
830 @param client_index - opaque cookie to identify the sender
831 @param pid - client pid registered to receive notification
832 @param current_hop_limit - RA current hop limit
833 @param flags - RA flags
834 @param router_lifetime_in_sec - RA lifetime in seconds
835 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
836 @param time_in_msec_between_retransmitted_neighbor_solicitations -
837 time in msec between retransmitted neighbor solicitations
838 @param n_prefixes -
839 @param prefixes -
840*/
841define ip6_ra_event
842{
843 u32 client_index;
844 u32 pid;
845 u32 sw_if_index;
846 u8 router_address[16];
847 u8 current_hop_limit;
848 u8 flags;
849 u16 router_lifetime_in_sec;
850 u32 neighbor_reachable_time_in_msec;
851 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
852 u32 n_prefixes;
853 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
854};
855
856service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100857 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
858 events ip6_nd_event;
859};
860
Neale Ranns0053de62018-05-22 08:40:52 -0700861/** \brief Proxy ARP configuration type
Neale Rannsb8d44812017-11-10 06:53:54 -0800862 @param vrf_id - VRF / Fib table ID
Neale Rannsb8d44812017-11-10 06:53:54 -0800863 @param low_address[4] - Low address of the Proxy ARP range
864 @param hi_address[4] - High address of the Proxy ARP range
865*/
Neale Ranns0053de62018-05-22 08:40:52 -0700866typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800867{
Neale Rannsb8d44812017-11-10 06:53:54 -0800868 u32 vrf_id;
Neale Rannsb8d44812017-11-10 06:53:54 -0800869 u8 low_address[4];
870 u8 hi_address[4];
871};
872
873/** \brief Proxy ARP add / del request
874 @param client_index - opaque cookie to identify the sender
875 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700876 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
877 @param proxy - Proxy configuration
878*/
879autoreply define proxy_arp_add_del
880{
881 u32 client_index;
882 u32 context;
883 u8 is_add;
884 vl_api_proxy_arp_t proxy;
885};
886
887/** \brief Proxy ARP dump request
888 */
889define proxy_arp_dump
890{
891 u32 client_index;
892 u32 context;
893};
894
895/** \brief Proxy ARP dump details reply
896 * @param proxy - Same data as used to configure
897 */
898define proxy_arp_details
899{
900 u32 context;
901 vl_api_proxy_arp_t proxy;
902};
903
904/** \brief Proxy ARP add / del interface request
905 @param client_index - opaque cookie to identify the sender
906 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800907 @param sw_if_index - Which interface to enable / disable Proxy Arp on
908 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
909*/
910autoreply define proxy_arp_intfc_enable_disable
911{
912 u32 client_index;
913 u32 context;
914 u32 sw_if_index;
915 /* 1 = on, 0 = off */
916 u8 enable_disable;
917};
918
Neale Ranns0053de62018-05-22 08:40:52 -0700919/** \brief Proxy ARP interface dump request
920 */
921define proxy_arp_intfc_dump
922{
923 u32 client_index;
924 u32 context;
925};
926
927/** \brief Proxy ARP interface dump details reply
928 * @param sw_if_index The interface on which ARP proxy is enabled.
929 */
930define proxy_arp_intfc_details
931{
932 u32 context;
933 u32 sw_if_index;
934};
935
Neale Rannsb8d44812017-11-10 06:53:54 -0800936/** \brief Reset fib table request
937 @param client_index - opaque cookie to identify the sender
938 @param context - sender context, to match reply w/ request
939 @param vrf_id - vrf/table id of the fib table to reset
940 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
941*/
942autoreply define reset_fib
943{
944 u32 client_index;
945 u32 context;
946 u32 vrf_id;
947 u8 is_ipv6;
948};
949
950/** \brief Set max allowed ARP or ip6 neighbor entries request
951 @param client_index - opaque cookie to identify the sender
952 @param context - sender context, to match reply w/ request
953 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
954 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
955*/
956autoreply define set_arp_neighbor_limit
957{
958 u32 client_index;
959 u32 context;
960 u8 is_ipv6;
961 u32 arp_neighbor_limit;
962};
963
964/** \brief IOAM enable : Enable in-band OAM
965 @param id - profile id
966 @param seqno - To enable Seqno Processing
967 @param analyse - Enabling analysis of iOAM at decap node
968 @param pow_enable - Proof of Work enabled or not flag
969 @param trace_enable - iOAM Trace enabled or not flag
970*/
971autoreply define ioam_enable
972{
973 u32 client_index;
974 u32 context;
975 u16 id;
976 u8 seqno;
977 u8 analyse;
978 u8 pot_enable;
979 u8 trace_enable;
980 u32 node_id;
981};
982
983/** \brief iOAM disable
984 @param client_index - opaque cookie to identify the sender
985 @param context - sender context, to match reply w/ request
986 @param index - MAP Domain index
987*/
988autoreply define ioam_disable
989{
990 u32 client_index;
991 u32 context;
992 u16 id;
993};
994
Klement Sekera75e7d132017-09-20 08:26:30 +0200995autoreply define ip_reassembly_set
996{
997 u32 client_index;
998 u32 context;
999 u32 timeout_ms;
1000 u32 max_reassemblies;
1001 u32 expire_walk_interval_ms;
1002 u8 is_ip6;
1003};
1004
1005define ip_reassembly_get
1006{
1007 u32 client_index;
1008 u32 context;
1009 u8 is_ip6;
1010};
1011
1012define ip_reassembly_get_reply
1013{
Klement Sekera75e7d132017-09-20 08:26:30 +02001014 u32 context;
1015 i32 retval;
1016 u32 timeout_ms;
1017 u32 max_reassemblies;
1018 u32 expire_walk_interval_ms;
1019 u8 is_ip6;
1020};
1021
Klement Sekera4c533132018-02-22 11:41:12 +01001022/** \brief Enable/disable reassembly feature
1023 @param client_index - opaque cookie to identify the sender
1024 @param context - sender context, to match reply w/ request
1025 @param sw_if_index - interface to enable/disable feature on
1026 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1027 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1028*/
1029autoreply define ip_reassembly_enable_disable
1030{
1031 u32 client_index;
1032 u32 context;
1033 u32 sw_if_index;
1034 u8 enable_ip4;
1035 u8 enable_ip6;
1036};
1037
Dave Barachb5e8a772016-12-06 12:04:42 -05001038/*
1039 * Local Variables:
1040 * eval: (c-set-style "gnu")
1041 * End:
1042 */