blob: 4811a349d381a3163f5e484da5e79ef8bf89acc9 [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";
Dave Barach0d056e52017-09-28 15:11:16 -040025
Neale Ranns28ab9cc2017-08-14 07:18:42 -070026/** \brief Add / del table request
27 A table can be added multiple times, but need be deleted only once.
28 @param client_index - opaque cookie to identify the sender
29 @param context - sender context, to match reply w/ request
30 @param is_ipv6 - V4 or V6 table
31 @param table_id - table ID associated with the route
32 This table ID will apply to both the unicats
33 and mlticast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070034 @param name - A client provided name/tag for the table. If this is
35 not set by the client, then VPP will generate something
36 meaningfull.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070037*/
38autoreply define ip_table_add_del
39{
40 u32 client_index;
41 u32 context;
42 u32 table_id;
43 u8 is_ipv6;
44 u8 is_add;
Neale Ranns2297af02017-09-12 09:45:04 -070045 u8 name[64];
Neale Ranns28ab9cc2017-08-14 07:18:42 -070046};
47
Dave Barachb5e8a772016-12-06 12:04:42 -050048/** \brief Dump IP fib table
49 @param client_index - opaque cookie to identify the sender
50*/
51define ip_fib_dump
52{
53 u32 client_index;
54 u32 context;
55};
56
Dave Barachb5e8a772016-12-06 12:04:42 -050057/** \brief IP FIB table response
58 @param table_id - IP fib table id
59 @address_length - mask length
60 @address - ip4 prefix
61 @param count - the number of fib_path in path
62 @param path - array of of fib_path structures
63*/
64manual_endian manual_print define ip_fib_details
65{
66 u32 context;
67 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070068 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050069 u8 address_length;
70 u8 address[4];
71 u32 count;
72 vl_api_fib_path_t path[count];
73};
74
75/** \brief Dump IP6 fib table
76 @param client_index - opaque cookie to identify the sender
77*/
78define ip6_fib_dump
79{
80 u32 client_index;
81 u32 context;
82};
83
Neale Ranns2297af02017-09-12 09:45:04 -070084/** \brief IP6 FIB table entry response
Dave Barachb5e8a772016-12-06 12:04:42 -050085 @param table_id - IP6 fib table id
Neale Ranns2297af02017-09-12 09:45:04 -070086 @param address_length - mask length
87 @param address - ip6 prefix
Dave Barachb5e8a772016-12-06 12:04:42 -050088 @param count - the number of fib_path in path
89 @param path - array of of fib_path structures
90*/
91manual_endian manual_print define ip6_fib_details
92{
93 u32 context;
94 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070095 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050096 u8 address_length;
97 u8 address[16];
98 u32 count;
99 vl_api_fib_path_t path[count];
100};
101
102/** \brief Dump IP neighboors
103 @param client_index - opaque cookie to identify the sender
104 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600105 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500106 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
107*/
108define ip_neighbor_dump
109{
110 u32 client_index;
111 u32 context;
112 u32 sw_if_index;
113 u8 is_ipv6;
114};
115
116/** \brief IP neighboors dump response
117 @param context - sender context which was passed in the request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600118 @param sw_if_index - The interface used to reach the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500119 @param is_static - [1|0] to indicate if neighbor is statically configured
120 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
121*/
122define ip_neighbor_details {
123 u32 context;
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600124 u32 sw_if_index;
Pavel Kotucek8cb07c92017-01-11 10:13:54 +0100125 u8 is_static;
Dave Barachb5e8a772016-12-06 12:04:42 -0500126 u8 is_ipv6;
127 u8 mac_address[6];
128 u8 ip_address[16];
129};
130
131/** \brief IP neighbor add / del request
132 @param client_index - opaque cookie to identify the sender
133 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -0500134 @param sw_if_index - interface used to reach neighbor
135 @param is_add - 1 to add neighbor, 0 to delete
136 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
Neale Ranns239d3fe2017-03-08 08:56:58 -0800137 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
138 @param is_static - A static neighbor Entry - there are not flushed
139 If the interface goes down.
140 @param is_no_adj_fib - Do not create a corresponding entry in the FIB
141 table for the neighbor.
Dave Barachb5e8a772016-12-06 12:04:42 -0500142 @param mac_address - l2 address of the neighbor
143 @param dst_address - ip4 or ip6 address of the neighbor
144*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400145autoreply define ip_neighbor_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500146{
147 u32 client_index;
148 u32 context;
Dave Barachb5e8a772016-12-06 12:04:42 -0500149 u32 sw_if_index;
150 /* 1 = add, 0 = delete */
151 u8 is_add;
152 u8 is_ipv6;
153 u8 is_static;
Neale Ranns239d3fe2017-03-08 08:56:58 -0800154 u8 is_no_adj_fib;
Dave Barachb5e8a772016-12-06 12:04:42 -0500155 u8 mac_address[6];
156 u8 dst_address[16];
157};
158
Dave Barachb5e8a772016-12-06 12:04:42 -0500159/** \brief Set the ip flow hash config for a fib request
160 @param client_index - opaque cookie to identify the sender
161 @param context - sender context, to match reply w/ request
162 @param vrf_id - vrf/fib id
163 @param is_ipv6 - if non-zero the fib is ip6, else ip4
164 @param src - if non-zero include src in flow hash
165 @param dst - if non-zero include dst in flow hash
166 @param sport - if non-zero include sport in flow hash
167 @param dport - if non-zero include dport in flow hash
168 @param proto -if non-zero include proto in flow hash
169 @param reverse - if non-zero include reverse in flow hash
170*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400171autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500172{
173 u32 client_index;
174 u32 context;
175 u32 vrf_id;
176 u8 is_ipv6;
177 u8 src;
178 u8 dst;
179 u8 sport;
180 u8 dport;
181 u8 proto;
182 u8 reverse;
183};
184
Dave Barachb5e8a772016-12-06 12:04:42 -0500185/** \brief IPv6 router advertisement config request
186 @param client_index - opaque cookie to identify the sender
187 @param context - sender context, to match reply w/ request
188 @param suppress -
189 @param managed -
190 @param other -
191 @param ll_option -
192 @param send_unicast -
193 @param cease -
194 @param is_no -
195 @param default_router -
196 @param max_interval -
197 @param min_interval -
198 @param lifetime -
199 @param initial_count -
200 @param initial_interval -
201*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400202autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500203{
204 u32 client_index;
205 u32 context;
206 u32 sw_if_index;
207 u8 suppress;
208 u8 managed;
209 u8 other;
210 u8 ll_option;
211 u8 send_unicast;
212 u8 cease;
213 u8 is_no;
214 u8 default_router;
215 u32 max_interval;
216 u32 min_interval;
217 u32 lifetime;
218 u32 initial_count;
219 u32 initial_interval;
220};
221
Dave Barachb5e8a772016-12-06 12:04:42 -0500222/** \brief IPv6 router advertisement prefix config request
223 @param client_index - opaque cookie to identify the sender
224 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800225 @param sw_if_index - The interface the RA prefix information is for
226 @param address[] - The prefix to advertise
227 @param address_length - the prefix length
228 @param use_default - Revert to default settings
229 @param no_advertise - Do not advertise this prefix
230 @param off_link - The prefix is off link (it is not configured on the interface)
231 Configures the L-flag, When set, indicates that this
232 prefix can be used for on-link determination.
233 @param no_autoconfig - Setting for the A-flag. When
234 set indicates that this prefix can be used for
235 stateless address configuration.
236 @param no_onlink - The prefix is not on link. Make sure this is consistent
237 with the off_link parameter else YMMV
238 @param is_no - add/delete
239 @param val_lifetime - The length of time in
240 seconds (relative to the time the packet is sent)
241 that the prefix is valid for the purpose of on-link
242 determination. A value of all one bits
243 (0xffffffff) represents infinity
244 @param pref_lifetime - The length of time in
245 seconds (relative to the time the packet is sent)
246 that addresses generated from the prefix via
247 stateless address autoconfiguration remain
248 preferred [ADDRCONF]. A value of all one bits
249 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500250*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400251autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500252{
253 u32 client_index;
254 u32 context;
255 u32 sw_if_index;
256 u8 address[16];
257 u8 address_length;
258 u8 use_default;
259 u8 no_advertise;
260 u8 off_link;
261 u8 no_autoconfig;
262 u8 no_onlink;
263 u8 is_no;
264 u32 val_lifetime;
265 u32 pref_lifetime;
266};
267
Neale Ranns3f844d02017-02-18 00:03:54 -0800268/** \brief IPv6 ND proxy config
269 @param client_index - opaque cookie to identify the sender
270 @param context - sender context, to match reply w/ request
271 @param sw_if_index - The interface the host is on
272 @param address - The address of the host for which to proxy for
273 @param is_add - Adding or deleting
274*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400275autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800276{
277 u32 client_index;
278 u32 context;
279 u32 sw_if_index;
280 u8 is_del;
281 u8 address[16];
282};
283
Neale Ranns3f844d02017-02-18 00:03:54 -0800284/** \brief IPv6 ND proxy details returned after request
285 @param context - sender context, to match reply w/ request
286 @param retval - return code for the request
287*/
288define ip6nd_proxy_details
289{
290 u32 client_index;
291 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{
513 u32 client_index;
514 u32 context;
515 u8 ip[16];
516 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600517 u32 sw_if_index;
518 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500519};
520
521define ip_address_dump
522{
523 u32 client_index;
524 u32 context;
525 u32 sw_if_index;
526 u8 is_ipv6;
527};
528
Neale Ranns9e2f9152018-05-18 02:27:10 -0700529/** \brief IP unnumbered configurations
530 @param sw_if_index The interface that has unnumbered configuration
531 @param ip_sw_if_index The IP interface that it is unnnumbered to
532*/
533define ip_unnumbered_details
534{
535 u32 client_index;
536 u32 context;
537 u32 sw_if_index;
538 u32 ip_sw_if_index;
539};
540
541/** \brief Dump IP unnumbered configurations
542 @param sw_if_index ~0 for all interfaces, else the interface desired
543*/
544define ip_unnumbered_dump
545{
546 u32 client_index;
547 u32 context;
548 u32 sw_if_index;
549};
550
Dave Barachb5e8a772016-12-06 12:04:42 -0500551define ip_details
552{
553 u32 sw_if_index;
554 u32 context;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600555 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500556};
557
558define ip_dump
559{
560 u32 client_index;
561 u32 context;
562 u8 is_ipv6;
563};
564
Neale Ranns32e1c012016-11-22 17:07:28 +0000565define mfib_signal_dump
566{
567 u32 client_index;
568 u32 context;
569};
570
571define mfib_signal_details
572{
573 u32 client_index;
574 u32 context;
575 u32 sw_if_index;
576 u32 table_id;
577 u16 grp_address_len;
578 u8 grp_address[16];
579 u8 src_address[16];
580 u16 ip_packet_len;
581 u8 ip_packet_data[256];
582};
Dave Barachb5e8a772016-12-06 12:04:42 -0500583
Neale Rannsd91c1db2017-07-31 02:30:50 -0700584/** \brief IP punt policer
585 @param client_index - opaque cookie to identify the sender
586 @param context - sender context, to match reply w/ request
587 @param is_add - 1 to add neighbor, 0 to delete
588 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
589 @param policer_index - Index of policer to use
590*/
591autoreply define ip_punt_police
592{
593 u32 client_index;
594 u32 context;
595 u32 policer_index;
596 u8 is_add;
597 u8 is_ip6;
598};
599
600/** \brief IP punt redirect
601 @param client_index - opaque cookie to identify the sender
602 @param context - sender context, to match reply w/ request
603 @param is_add - 1 to add neighbor, 0 to delete
604 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
605 @param tx_sw_if_index - the TX interface to which traffic shoulde be
606 redirected.
607 @param nh - The next-hop to redirect the traffic to.
608*/
609autoreply define ip_punt_redirect
610{
611 u32 client_index;
612 u32 context;
613 u32 rx_sw_if_index;
614 u32 tx_sw_if_index;
615 u8 is_add;
616 u8 is_ip6;
617 u8 nh[16];
618};
619
Florin Coras595992c2017-11-06 17:17:08 -0800620autoreply define ip_container_proxy_add_del
621{
622 u32 client_index;
623 u32 context;
624 u8 ip[16];
625 u8 is_ip4;
626 u8 plen;
627 u32 sw_if_index;
628 u8 is_add;
629};
630
Neale Rannsb8d44812017-11-10 06:53:54 -0800631/** \brief Configure IP source and L4 port-range check
632 @param client_index - opaque cookie to identify the sender
633 @param context - sender context, to match reply w/ request
634 @param is_ip6 - 1 if source address type is IPv6
635 @param is_add - 1 if add, 0 if delete
636 @param mask_length - mask length for address entry
637 @param address - array of address bytes
638 @param number_of_ranges - length of low_port and high_port arrays (must match)
639 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
640 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
641 @param vrf_id - fib table/vrf id to associate the source and port-range check with
642 @note To specify a single port set low_port and high_port entry the same
643*/
644autoreply define ip_source_and_port_range_check_add_del
645{
646 u32 client_index;
647 u32 context;
648 u8 is_ipv6;
649 u8 is_add;
650 u8 mask_length;
651 u8 address[16];
652 u8 number_of_ranges;
653 u16 low_ports[32];
654 u16 high_ports[32];
655 u32 vrf_id;
656};
657
658/** \brief Set interface source and L4 port-range request
659 @param client_index - opaque cookie to identify the sender
660 @param context - sender context, to match reply w/ request
661 @param interface_id - interface index
662 @param tcp_vrf_id - VRF associated with source and TCP port-range check
663 @param udp_vrf_id - VRF associated with source and TCP port-range check
664*/
665autoreply define ip_source_and_port_range_check_interface_add_del
666{
667 u32 client_index;
668 u32 context;
669 u8 is_add;
670 u32 sw_if_index;
671 u32 tcp_in_vrf_id;
672 u32 tcp_out_vrf_id;
673 u32 udp_in_vrf_id;
674 u32 udp_out_vrf_id;
675};
676
John Lo7f358b32018-04-28 01:19:24 -0400677/** \brief Enable/disable periodic IP neighbor scan
678 @param client_index - opaque cookie to identify the sender
679 @param context - sender context, to match reply w/ request
680 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
681 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
682 @param max_proc_time - max processing time per run in usec, 0: default to 20
683 @param max_update - max neighbor probe/delete per run, 0: default to 10
684 @param scan_int_delay - delay in msec to resume scan if exceed max proc
685 time or update, 0: default to 1
686 @param stale_threshold - threshold in minutes for neighbor deletion,
687 0: default to 4*scan_interval
688*/
689autoreply define ip_scan_neighbor_enable_disable
690{
691 u32 client_index;
692 u32 context;
693 u8 mode;
694 u8 scan_interval;
695 u8 max_proc_time;
696 u8 max_update;
697 u8 scan_int_delay;
698 u8 stale_threshold;
699};
700
John Loc7b43042018-04-13 16:46:22 -0400701/** \brief IP probe neighbor address on an interface by sending an
702 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
703 @param client_index - opaque cookie to identify the sender
704 @param context - sender context, to match reply w/ request
705 @param sw_if_index - interface index
706 @param dst_address - target IP address to send IP addr resolution request
707 @param is_ipv6 - [1|0] to indicate if address family is IPv[6|4]
708*/
709autoreply define ip_probe_neighbor
710{
711 u32 client_index;
712 u32 context;
713 u32 sw_if_index;
714 u8 dst_address[16];
715 u8 is_ipv6;
716};
717
718/** \brief Register for IP4 ARP resolution event on receing ARP reply or
719 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800720 @param client_index - opaque cookie to identify the sender
721 @param context - sender context, to match reply w/ request
722 @param enable_disable - 1 => register for events, 0 => cancel registration
723 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400724 @param address - exact IP4 address of interested arp resolution event, or
725 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800726*/
727autoreply define want_ip4_arp_events
728{
729 u32 client_index;
730 u32 context;
731 u8 enable_disable;
732 u32 pid;
733 u32 address;
734};
735
John Loc7b43042018-04-13 16:46:22 -0400736/** \brief Tell client about an IP4 ARP resolution event or
737 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800738 @param client_index - opaque cookie to identify the sender
739 @param address - the exact ip4 address of interest
740 @param pid - client pid registered to receive notification
741 @param sw_if_index - interface which received ARP packet
742 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400743 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800744*/
745define ip4_arp_event
746{
747 u32 client_index;
748 u32 address;
749 u32 pid;
750 u32 sw_if_index;
751 u8 new_mac[6];
752 u8 mac_ip;
753};
754
Marek Gradzki51e59682018-03-06 10:05:44 +0100755service {
756 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
757 events ip4_arp_event;
758};
759
John Loc7b43042018-04-13 16:46:22 -0400760/** \brief Register for IP6 ND resolution event on recieving NA reply
761 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800762 @param client_index - opaque cookie to identify the sender
763 @param context - sender context, to match reply w/ request
764 @param enable_disable - 1 => register for events, 0 => cancel registration
765 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400766 @param address - the exact IP6 address of interested ND resolution event, or
767 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800768*/
769autoreply define want_ip6_nd_events
770{
771 u32 client_index;
772 u32 context;
773 u8 enable_disable;
774 u32 pid;
775 u8 address[16];
776};
777
John Loc7b43042018-04-13 16:46:22 -0400778/** \brief Tell client about an IP6 ND resolution or
779 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800780 @param client_index - opaque cookie to identify the sender
781 @param pid - client pid registered to receive notification
782 @param sw_if_index - interface which received ARP packet
783 @param address - the exact ip6 address of interest
784 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400785 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800786*/
787define ip6_nd_event
788{
789 u32 client_index;
790 u32 pid;
791 u32 sw_if_index;
792 u8 address[16];
793 u8 new_mac[6];
794 u8 mac_ip;
795};
796
Marek Gradzki51e59682018-03-06 10:05:44 +0100797service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100798 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
799 events ip6_ra_event;
800};
801
802/** \brief Register for ip6 router advertisement events
803 @param client_index - opaque cookie to identify the sender
804 @param context - sender context, to match reply w/ request
805 @param enable_disable - 1 => register for events, 0 => cancel registration
806 @param pid - sender's pid
807*/
808autoreply define want_ip6_ra_events
809{
810 u32 client_index;
811 u32 context;
812 u8 enable_disable;
813 u32 pid;
814};
815
816/** \brief Struct representing RA prefix info
817 @param dst_address - RA prefix info destination address
818 @param dst_address_length - RA prefix info destination address length
819 @param flags - RA prefix info flags
820 @param valid_time - RA prefix info valid time
821 @param preferred_time - RA prefix info preferred time
822*/
823typeonly define ip6_ra_prefix_info
824{
825 u8 dst_address[16];
826 u8 dst_address_length;
827 u8 flags;
828 u32 valid_time;
829 u32 preferred_time;
830};
831
832/** \brief Tell client about a router advertisement event
833 @param client_index - opaque cookie to identify the sender
834 @param pid - client pid registered to receive notification
835 @param current_hop_limit - RA current hop limit
836 @param flags - RA flags
837 @param router_lifetime_in_sec - RA lifetime in seconds
838 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
839 @param time_in_msec_between_retransmitted_neighbor_solicitations -
840 time in msec between retransmitted neighbor solicitations
841 @param n_prefixes -
842 @param prefixes -
843*/
844define ip6_ra_event
845{
846 u32 client_index;
847 u32 pid;
848 u32 sw_if_index;
849 u8 router_address[16];
850 u8 current_hop_limit;
851 u8 flags;
852 u16 router_lifetime_in_sec;
853 u32 neighbor_reachable_time_in_msec;
854 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
855 u32 n_prefixes;
856 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
857};
858
859service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100860 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
861 events ip6_nd_event;
862};
863
Neale Ranns0053de62018-05-22 08:40:52 -0700864/** \brief Proxy ARP configuration type
Neale Rannsb8d44812017-11-10 06:53:54 -0800865 @param vrf_id - VRF / Fib table ID
Neale Rannsb8d44812017-11-10 06:53:54 -0800866 @param low_address[4] - Low address of the Proxy ARP range
867 @param hi_address[4] - High address of the Proxy ARP range
868*/
Neale Ranns0053de62018-05-22 08:40:52 -0700869typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800870{
Neale Rannsb8d44812017-11-10 06:53:54 -0800871 u32 vrf_id;
Neale Rannsb8d44812017-11-10 06:53:54 -0800872 u8 low_address[4];
873 u8 hi_address[4];
874};
875
876/** \brief Proxy ARP add / del request
877 @param client_index - opaque cookie to identify the sender
878 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700879 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
880 @param proxy - Proxy configuration
881*/
882autoreply define proxy_arp_add_del
883{
884 u32 client_index;
885 u32 context;
886 u8 is_add;
887 vl_api_proxy_arp_t proxy;
888};
889
890/** \brief Proxy ARP dump request
891 */
892define proxy_arp_dump
893{
894 u32 client_index;
895 u32 context;
896};
897
898/** \brief Proxy ARP dump details reply
899 * @param proxy - Same data as used to configure
900 */
901define proxy_arp_details
902{
903 u32 context;
904 vl_api_proxy_arp_t proxy;
905};
906
907/** \brief Proxy ARP add / del interface request
908 @param client_index - opaque cookie to identify the sender
909 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800910 @param sw_if_index - Which interface to enable / disable Proxy Arp on
911 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
912*/
913autoreply define proxy_arp_intfc_enable_disable
914{
915 u32 client_index;
916 u32 context;
917 u32 sw_if_index;
918 /* 1 = on, 0 = off */
919 u8 enable_disable;
920};
921
Neale Ranns0053de62018-05-22 08:40:52 -0700922/** \brief Proxy ARP interface dump request
923 */
924define proxy_arp_intfc_dump
925{
926 u32 client_index;
927 u32 context;
928};
929
930/** \brief Proxy ARP interface dump details reply
931 * @param sw_if_index The interface on which ARP proxy is enabled.
932 */
933define proxy_arp_intfc_details
934{
935 u32 context;
936 u32 sw_if_index;
937};
938
Neale Rannsb8d44812017-11-10 06:53:54 -0800939/** \brief Reset fib table request
940 @param client_index - opaque cookie to identify the sender
941 @param context - sender context, to match reply w/ request
942 @param vrf_id - vrf/table id of the fib table to reset
943 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
944*/
945autoreply define reset_fib
946{
947 u32 client_index;
948 u32 context;
949 u32 vrf_id;
950 u8 is_ipv6;
951};
952
953/** \brief Set max allowed ARP or ip6 neighbor entries request
954 @param client_index - opaque cookie to identify the sender
955 @param context - sender context, to match reply w/ request
956 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
957 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
958*/
959autoreply define set_arp_neighbor_limit
960{
961 u32 client_index;
962 u32 context;
963 u8 is_ipv6;
964 u32 arp_neighbor_limit;
965};
966
967/** \brief IOAM enable : Enable in-band OAM
968 @param id - profile id
969 @param seqno - To enable Seqno Processing
970 @param analyse - Enabling analysis of iOAM at decap node
971 @param pow_enable - Proof of Work enabled or not flag
972 @param trace_enable - iOAM Trace enabled or not flag
973*/
974autoreply define ioam_enable
975{
976 u32 client_index;
977 u32 context;
978 u16 id;
979 u8 seqno;
980 u8 analyse;
981 u8 pot_enable;
982 u8 trace_enable;
983 u32 node_id;
984};
985
986/** \brief iOAM disable
987 @param client_index - opaque cookie to identify the sender
988 @param context - sender context, to match reply w/ request
989 @param index - MAP Domain index
990*/
991autoreply define ioam_disable
992{
993 u32 client_index;
994 u32 context;
995 u16 id;
996};
997
Klement Sekera75e7d132017-09-20 08:26:30 +0200998autoreply define ip_reassembly_set
999{
1000 u32 client_index;
1001 u32 context;
1002 u32 timeout_ms;
1003 u32 max_reassemblies;
1004 u32 expire_walk_interval_ms;
1005 u8 is_ip6;
1006};
1007
1008define ip_reassembly_get
1009{
1010 u32 client_index;
1011 u32 context;
1012 u8 is_ip6;
1013};
1014
1015define ip_reassembly_get_reply
1016{
1017 u32 client_index;
1018 u32 context;
1019 i32 retval;
1020 u32 timeout_ms;
1021 u32 max_reassemblies;
1022 u32 expire_walk_interval_ms;
1023 u8 is_ip6;
1024};
1025
Klement Sekera4c533132018-02-22 11:41:12 +01001026/** \brief Enable/disable reassembly feature
1027 @param client_index - opaque cookie to identify the sender
1028 @param context - sender context, to match reply w/ request
1029 @param sw_if_index - interface to enable/disable feature on
1030 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1031 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1032*/
1033autoreply define ip_reassembly_enable_disable
1034{
1035 u32 client_index;
1036 u32 context;
1037 u32 sw_if_index;
1038 u8 enable_ip4;
1039 u8 enable_ip6;
1040};
1041
Dave Barachb5e8a772016-12-06 12:04:42 -05001042/*
1043 * Local Variables:
1044 * eval: (c-set-style "gnu")
1045 * End:
1046 */