lisp: API cleanup
[vpp.git] / src / vnet / lisp-cp / lisp.api
1 /*
2  * Copyright (c) 2015-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 option version = "2.0.0";
17
18 import "vnet/interface_types.api";
19 import "vnet/lisp-cp/lisp_types.api";
20
21 /** \brief add or delete locator_set
22     @param client_index - opaque cookie to identify the sender
23     @param context - sender context, to match reply w/ request
24     @param is_add - add address if non-zero, else delete
25     @param locator_set_name - locator name
26     @param locator_num - number of locators
27     @param locators - LISP locator records
28 */
29 manual_endian manual_print define lisp_add_del_locator_set
30 {
31   u32 client_index;
32   u32 context;
33   bool is_add [default=true];
34   string locator_set_name[64];
35   u32 locator_num;
36   vl_api_local_locator_t locators[locator_num];
37 };
38
39 /** \brief Reply for locator_set add/del
40     @param context - returned sender context, to match reply w/ request
41     @param retval - return code
42     @param ls_index - locator set index
43 */
44 define lisp_add_del_locator_set_reply
45 {
46   u32 context;
47   i32 retval;
48   u32 ls_index;
49 };
50
51 /** \brief add or delete locator for locator_set
52     @param client_index - opaque cookie to identify the sender
53     @param context - sender context, to match reply w/ request
54     @param is_add - add address if non-zero, else delete
55     @param locator_set_name - name of locator_set to add/del locator
56     @param sw_if_index - index of the interface
57     @param priority - priority of the lisp locator
58     @param weight - weight of the lisp locator
59 */
60 autoreply define lisp_add_del_locator
61 {
62   u32 client_index;
63   u32 context;
64   bool is_add [default=true];
65   string locator_set_name[64];
66   vl_api_interface_index_t sw_if_index;
67   u8 priority;
68   u8 weight;
69 };
70
71 /** \brief add or delete lisp eid-table
72         @param client_index - opaque cookie to identify the sender
73         @param context - sender context, to match reply w/ request
74         @param is_add - add address if non-zero, else delete
75         @param eid - EID can be ip4, ip6 or mac
76         @param locator_set_name - name of locator_set to add/del eid-table
77         @param vni - virtual network instance
78         @param key - secret key
79 */
80 autoreply define lisp_add_del_local_eid
81 {
82   u32 client_index;
83   u32 context;
84   bool is_add [default=true];
85   vl_api_eid_t eid;
86   string locator_set_name[64];
87   u32 vni;
88   vl_api_hmac_key_t key;
89 };
90
91 /** \brief Add/delete map server
92     @param client_index - opaque cookie to identify the sender
93     @param context - sender context, to match reply w/ request
94     @param is_add - add address if non-zero; delete otherwise
95     @param ip_address - map server IP address
96 */
97 autoreply define lisp_add_del_map_server
98 {
99   u32 client_index;
100   u32 context;
101   bool is_add [default=true];
102   vl_api_address_t ip_address;
103 };
104
105 /** \brief add or delete map-resolver
106     @param client_index - opaque cookie to identify the sender
107     @param context - sender context, to match reply w/ request
108     @param is_add - add address if non-zero, else delete
109     @param ip_address - ip address
110 */
111 autoreply define lisp_add_del_map_resolver
112 {
113   u32 client_index;
114   u32 context;
115   bool is_add [default=true];
116   vl_api_address_t ip_address;
117 };
118
119 /** \brief enable or disable LISP feature
120     @param client_index - opaque cookie to identify the sender
121     @param context - sender context, to match reply w/ request
122     @param is_en - enable protocol if non-zero, else disable
123 */
124 autoreply define lisp_enable_disable
125 {
126   u32 client_index;
127   u32 context;
128   bool is_enable [default=true];
129 };
130
131 /** \brief configure or disable LISP PITR node
132     @param client_index - opaque cookie to identify the sender
133     @param context - sender context, to match reply w/ request
134     @param ls_name - locator set name
135     @param is_add - add locator set if non-zero, else disable pitr
136 */
137 autoreply define lisp_pitr_set_locator_set
138 {
139   u32 client_index;
140   u32 context;
141   bool is_add [default=true];
142   string ls_name[64];
143 };
144
145 /** \brief configure or disable use of PETR
146     @param client_index - opaque cookie to identify the sender
147     @param context - sender context, to match reply w/ request
148     @param ip_address - PETR IP address
149     @param is_add - add locator set if non-zero, else disable pitr
150 */
151 autoreply define lisp_use_petr
152 {
153   u32 client_index;
154   u32 context;
155   vl_api_address_t ip_address;
156   bool is_add [default=true];
157 };
158
159 /** \brief Request for LISP PETR status
160     @param client_index - opaque cookie to identify the sender
161     @param context - sender context, to match reply w/ request
162 */
163 define show_lisp_use_petr
164 {
165   u32 client_index;
166   u32 context;
167 };
168
169 /** \brief LISP PETR status, enable or disable
170     @param context - sender context, to match reply w/ request
171     @param status - LISP PETR enable if non-zero, else disable
172     @param address - PETR IP address
173 */
174 define show_lisp_use_petr_reply
175 {
176   u32 context;
177   i32 retval;
178   bool is_petr_enable [default=true];
179   vl_api_address_t ip_address;
180 };
181
182 /** \brief Get state of LISP RLOC probing
183     @param client_index - opaque cookie to identify the sender
184     @param context - sender context, to match reply w/ request
185 */
186 define show_lisp_rloc_probe_state
187 {
188   u32 client_index;
189   u32 context;
190 };
191
192 /** \brief Reply for show_lisp_rloc_probe_state
193     @param context - returned sender context, to match reply w/ request
194     @param retval - return code
195     @param is_enabled - state of RLOC probing
196 */
197 define show_lisp_rloc_probe_state_reply
198 {
199   u32 context;
200   i32 retval;
201   bool is_enabled [default=true];
202 };
203
204 /** \brief enable/disable LISP RLOC probing
205     @param client_index - opaque cookie to identify the sender
206     @param context - sender context, to match reply w/ request
207     @param is_enable - enable if non-zero; disable otherwise
208 */
209 autoreply define lisp_rloc_probe_enable_disable
210 {
211   u32 client_index;
212   u32 context;
213   bool is_enable [default=true];
214 };
215
216 /** \brief enable/disable LISP map-register
217     @param client_index - opaque cookie to identify the sender
218     @param context - sender context, to match reply w/ request
219     @param is_enable - enable if non-zero; disable otherwise
220 */
221 autoreply define lisp_map_register_enable_disable
222 {
223   u32 client_index;
224   u32 context;
225   bool is_enable [default=true];
226 };
227
228 /** \brief Get state of LISP map-register
229     @param client_index - opaque cookie to identify the sender
230     @param context - sender context, to match reply w/ request
231 */
232 define show_lisp_map_register_state
233 {
234   u32 client_index;
235   u32 context;
236 };
237
238 /** \brief Reply for show_lisp_map_register_state
239     @param context - returned sender context, to match reply w/ request
240     @param retval - return code
241 */
242 define show_lisp_map_register_state_reply
243 {
244   u32 context;
245   i32 retval;
246   bool is_enabled [default=true];
247 };
248
249 /** \brief set LISP map-request mode. Based on configuration VPP will send
250       src/dest or just normal destination map requests.
251     @param client_index - opaque cookie to identify the sender
252     @param context - sender context, to match reply w/ request
253     @param is_src_dst - if non-zero source/destination else destination only
254 */
255 autoreply define lisp_map_request_mode
256 {
257   u32 client_index;
258   u32 context;
259   bool is_src_dst;
260 };
261
262 /** \brief Request for LISP map-request mode
263     @param client_index - opaque cookie to identify the sender
264     @param context - sender context, to match reply w/ request
265 */
266 define show_lisp_map_request_mode
267 {
268   u32 client_index;
269   u32 context;
270 };
271
272 /** \brief Reply for show_lisp_map_request_mode
273     @param context - returned sender context, to match reply w/ request
274     @param retval - return code
275     @param is_src_dst - if non-zero source/destination else destination only
276 */
277 define show_lisp_map_request_mode_reply
278 {
279   u32 context;
280   i32 retval;
281   bool is_src_dst;
282 };
283
284 /** \brief add or delete remote static mapping
285     @param client_index - opaque cookie to identify the sender
286     @param context - sender context, to match reply w/ request
287     @param is_add - add address if non-zero, else delete
288     @param is_src_dst - flag indicating src/dst based routing policy
289     @param del_all - if set, delete all remote mappings
290     @param vni - virtual network instance
291     @param action - negative map-reply action
292     @param deid - dst EID
293     @param seid - src EID, valid only if is_src_dst is enabled
294     @param rloc_num - number of remote locators
295     @param rlocs - remote locator records
296 */
297 autoreply manual_print manual_endian define lisp_add_del_remote_mapping
298 {
299   u32 client_index;
300   u32 context;
301   bool is_add [default=true];
302   bool is_src_dst;
303   bool del_all;
304   u32 vni;
305   u8 action;
306   vl_api_eid_t deid;
307   vl_api_eid_t seid;
308   u32 rloc_num;
309   vl_api_remote_locator_t rlocs[rloc_num];
310 };
311
312 /** \brief add or delete LISP adjacency adjacency
313     @param client_index - opaque cookie to identify the sender
314     @param context - sender context, to match reply w/ request
315     @param is_add - add address if non-zero, else delete
316     @param vni - virtual network instance
317     @param reid - remote EID
318     @param leid - local EID
319 */
320 autoreply define lisp_add_del_adjacency
321 {
322   u32 client_index;
323   u32 context;
324   bool is_add [default=true];
325   u32 vni;
326   vl_api_eid_t reid;
327   vl_api_eid_t leid;
328 };
329
330 /** \brief add or delete map request itr rlocs
331     @param client_index - opaque cookie to identify the sender
332     @param context - sender context, to match reply w/ request
333     @param is_add - add address if non-zero, else delete
334     @param locator_set_name - locator set name
335 */
336 autoreply define lisp_add_del_map_request_itr_rlocs
337 {
338   u32 client_index;
339   u32 context;
340   bool is_add [default=true];
341   string locator_set_name[64];
342 };
343
344 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
345     @param context - returned sender context, to match reply w/ request
346     @param retval - return code
347 */
348
349 /** \brief map/unmap vni/bd_index to vrf
350     @param client_index - opaque cookie to identify the sender
351     @param context - sender context, to match reply w/ request
352     @param is_add - add or delete mapping
353     @param dp_table - virtual network id/bridge domain index
354     @param vrf - vrf
355 */
356 autoreply define lisp_eid_table_add_del_map
357 {
358   u32 client_index;
359   u32 context;
360   bool is_add [default=true];
361   u32 vni;
362   u32 dp_table;
363   bool is_l2;
364 };
365
366 /** \brief Request for map lisp locator status
367     @param client_index - opaque cookie to identify the sender
368     @param context - sender context, to match reply w/ request
369     @param locator_set_index - index of locator_set
370     @param ls_name - locator set name
371     @param is_index_set - flag indicating whether ls_name or ls_index is set
372  */
373 define lisp_locator_dump
374 {
375   u32 client_index;
376   u32 context;
377   u32 ls_index;
378   string ls_name[64];
379   u8 is_index_set;
380 };
381
382 /** \brief LISP locator_set status
383     @param local - if is set, then locator is local
384     @param locator_set_name - name of the locator_set
385     @param sw_if_index - sw_if_index of the locator
386     @param ip_address - ip address
387     @param priority - locator priority
388     @param weight - locator weight
389   */
390 define lisp_locator_details
391 {
392   u32 context;
393   u8 local;
394   vl_api_interface_index_t sw_if_index;
395   vl_api_address_t ip_address;
396   u8 priority;
397   u8 weight;
398 };
399
400 /** \brief LISP locator_set status
401     @param context - sender context, to match reply w/ request
402     @param ls_index - locator set index
403     @param ls_name - name of the locator set
404  */
405 define lisp_locator_set_details
406 {
407   u32 context;
408   u32 ls_index;
409   string ls_name[64];
410 };
411
412 enum lisp_locator_set_filter : u8 {
413         LISP_LOCATOR_SET_FILTER_API_ALL = 0,
414         LISP_LOCATOR_SET_FILTER_API_LOCAL = 1,
415         LISP_LOCATOR_SET_FILTER_API_REMOTE = 2,
416 };
417
418 /** \brief Request for locator_set summary status
419     @param client_index - opaque cookie to identify the sender
420     @param context - sender context, to match reply w/ request
421     @param filter - filter type
422  */
423 define lisp_locator_set_dump
424 {
425   u32 client_index;
426   u32 context;
427   vl_api_lisp_locator_set_filter_t filter;
428 };
429
430 /** \brief Dump lisp eid-table
431     @param client_index - opaque cookie to identify the sender
432     @param context - sender context, to match reply w/ request
433     @param locator_set_index - index of locator_set, if ~0 then the mapping
434                                 is negative
435     @param action - negative map request action
436     @param is_local - local if non-zero, else remote
437     @param eid_type:
438       0 : ipv4
439       1 : ipv6
440       2 : mac
441     @param is_src_dst - EID is type of source/destination
442     @param eid - EID can be ip4, ip6 or mac
443     @param eid_prefix_len - prefix length
444     @param seid - source EID can be ip4, ip6 or mac
445     @param seid_prefix_len - source prefix length
446     @param vni - virtual network instance
447     @param ttl - time to live
448     @param authoritative - authoritative
449     @param key_id
450       HMAC_NO_KEY           0
451       HMAC_SHA_1_96         1
452       HMAC_SHA_256_128      2
453     @param key - secret key
454 */
455
456 define lisp_eid_table_details
457 {
458   u32 context;
459   u32 locator_set_index;
460   u8 action;
461   bool is_local;
462   bool is_src_dst;
463   u32 vni;
464   vl_api_eid_t deid;
465   vl_api_eid_t seid;
466   u32 ttl;
467   u8 authoritative;
468   vl_api_hmac_key_t key;
469 };
470
471 /** \brief Request for eid table summary status
472     @param client_index - opaque cookie to identify the sender
473     @param context - sender context, to match reply w/ request
474     @param eid_set - if non-zero request info about specific mapping
475     @param vni - virtual network instance; valid only if eid_set != 0
476     @param prefix_length - prefix length if EID is IP address;
477       valid only if eid_set != 0
478     @param eid_type - EID type; valid only if eid_set != 0
479       Supported values:
480         0: EID is IPv4
481         1: EID is IPv6
482         2: EID is ethernet address
483     @param eid - endpoint identifier
484     @param filter - filter type;
485       Support values:
486         0: all eid
487         1: local eid
488         2: remote eid
489  */
490 define lisp_eid_table_dump
491 {
492   u32 client_index;
493   u32 context;
494   u8 eid_set;
495   u8 prefix_length;
496   u32 vni;
497   vl_api_eid_t eid;
498   vl_api_lisp_locator_set_filter_t filter;
499 };
500
501 /** \brief LISP adjacency
502     @param eid_type -
503       0 : ipv4
504       1 : ipv6
505       2 : mac
506     @param reid - remote EID
507     @param leid - local EID
508     @param reid_prefix_len - remote EID IP prefix length
509     @param leid_prefix_len - local EID IP prefix length
510   */
511 typedef lisp_adjacency
512 {
513   vl_api_eid_t reid;
514   vl_api_eid_t leid;
515 };
516
517 /** \brief LISP adjacency reply
518     @param count - number of adjacencies
519     @param adjacencies - array of adjacencies
520   */
521 manual_endian manual_print define lisp_adjacencies_get_reply
522 {
523   u32 context;
524   i32 retval;
525   u32 count;
526   vl_api_lisp_adjacency_t adjacencies[count];
527 };
528
529 /** \brief Request for LISP adjacencies
530     @param client_index - opaque cookie to identify the sender
531     @param context - sender context, to match reply w/ request
532     @param vni - filter adjacencies by VNI
533  */
534 define lisp_adjacencies_get
535 {
536   u32 client_index;
537   u32 context;
538   u32 vni;
539 };
540
541 /** \brief Shows relationship between vni and vrf/bd
542     @param dp_table - VRF index or bridge domain index
543     @param vni - virtual network instance
544   */
545 define lisp_eid_table_map_details
546 {
547   u32 context;
548   u32 vni;
549   u32 dp_table;
550 };
551
552 /** \brief Request for lisp_eid_table_map_details
553     @param client_index - opaque cookie to identify the sender
554     @param context - sender context, to match reply w/ request
555     @param is_l2 - if set dump vni/bd mappings else vni/vrf
556  */
557 define lisp_eid_table_map_dump
558 {
559   u32 client_index;
560   u32 context;
561   bool is_l2;
562 };
563
564 /** \brief Dumps all VNIs used in mappings
565     @param client_index - opaque cookie to identify the sender
566     @param context - sender context, to match reply w/ request
567   */
568 define lisp_eid_table_vni_dump
569 {
570   u32 client_index;
571   u32 context;
572 };
573
574 /** \brief reply to lisp_eid_table_vni_dump
575     @param context - sender context, to match reply w/ request
576     @param vni - virtual network instance
577  */
578 define lisp_eid_table_vni_details
579 {
580   u32 context;
581   u32 vni;
582 };
583
584 /** \brief LISP map resolver status
585     @param ip_address - array of address bytes
586  */
587 define lisp_map_resolver_details
588 {
589   u32 context;
590   vl_api_address_t ip_address;
591 };
592
593 /** \brief Request for map resolver summary status
594     @param client_index - opaque cookie to identify the sender
595     @param context - sender context, to match reply w/ request
596  */
597 define lisp_map_resolver_dump
598 {
599   u32 client_index;
600   u32 context;
601 };
602
603 /** \brief LISP map server details
604     @param ip_address - array of address bytes
605  */
606 define lisp_map_server_details
607 {
608   u32 context;
609   vl_api_address_t ip_address;
610 };
611
612 /** \brief Request for map server summary status
613     @param client_index - opaque cookie to identify the sender
614     @param context - sender context, to match reply w/ request
615  */
616 define lisp_map_server_dump
617 {
618   u32 client_index;
619   u32 context;
620 };
621
622 /** \brief Request for lisp-gpe protocol status
623     @param client_index - opaque cookie to identify the sender
624     @param context - sender context, to match reply w/ request
625 */
626 define show_lisp_status
627 {
628   u32 client_index;
629   u32 context;
630 };
631
632 /** \brief Status of lisp, enable or disable
633     @param context - sender context, to match reply w/ request
634     @param feature_status - lisp enable if non-zero, else disable
635     @param gpe_status - lisp enable if non-zero, else disable
636 */
637 define show_lisp_status_reply
638 {
639   u32 context;
640   i32 retval;
641   bool is_lisp_enabled;
642   bool is_gpe_enabled;
643 };
644
645 /** \brief Get LISP map request itr rlocs status
646     @param context - sender context, to match reply w/ request
647     @param locator_set_name - name of the locator_set
648  */
649 define lisp_get_map_request_itr_rlocs
650 {
651   u32 client_index;
652   u32 context;
653 };
654
655 /** \brief Request for map request itr rlocs summary status
656  */
657 define lisp_get_map_request_itr_rlocs_reply
658 {
659   u32 context;
660   i32 retval;
661   string locator_set_name[64];
662 };
663
664 /** \brief Request for lisp pitr status
665     @param client_index - opaque cookie to identify the sender
666     @param context - sender context, to match reply w/ request
667 */
668 define show_lisp_pitr
669 {
670   u32 client_index;
671   u32 context;
672 };
673
674 /** \brief Status of lisp pitr, enable or disable
675     @param context - sender context, to match reply w/ request
676     @param status - lisp pitr enable if non-zero, else disable
677     @param locator_set_name -  name of the locator_set
678 */
679 define show_lisp_pitr_reply
680 {
681   u32 context;
682   i32 retval;
683   bool is_enabled;
684   string locator_set_name[64];
685 };
686
687 /*
688  * Local Variables:
689  * eval: (c-set-style "gnu")
690  * End:
691  */