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 - endpoint identifier
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 is_src_dst - EID is type of source/destination
438     @param deid - dst EID
439     @param seid - src EID
440     @param vni - virtual network instance
441     @param ttl - time to live
442     @param authoritative - authoritative
443     @param key_id
444       HMAC_NO_KEY           0
445       HMAC_SHA_1_96         1
446       HMAC_SHA_256_128      2
447     @param key - secret key
448 */
449
450 define lisp_eid_table_details
451 {
452   u32 context;
453   u32 locator_set_index;
454   u8 action;
455   bool is_local;
456   bool is_src_dst;
457   u32 vni;
458   vl_api_eid_t deid;
459   vl_api_eid_t seid;
460   u32 ttl;
461   u8 authoritative;
462   vl_api_hmac_key_t key;
463 };
464
465 /** \brief Request for eid table summary status
466     @param client_index - opaque cookie to identify the sender
467     @param context - sender context, to match reply w/ request
468     @param eid_set - if non-zero request info about specific mapping
469     @param vni - virtual network instance; valid only if eid_set != 0
470     @param prefix_length - prefix length if EID is IP address;
471       valid only if eid_set != 0
472     @param eid - endpoint identifier
473     @param filter - filter type;
474       Support values:
475         0: all eid
476         1: local eid
477         2: remote eid
478  */
479 define lisp_eid_table_dump
480 {
481   u32 client_index;
482   u32 context;
483   u8 eid_set;
484   u8 prefix_length;
485   u32 vni;
486   vl_api_eid_t eid;
487   vl_api_lisp_locator_set_filter_t filter;
488 };
489
490 /** \brief LISP adjacency
491     @param reid - remote EID
492     @param leid - local EID
493   */
494 typedef lisp_adjacency
495 {
496   vl_api_eid_t reid;
497   vl_api_eid_t leid;
498 };
499
500 /** \brief LISP adjacency reply
501     @param count - number of adjacencies
502     @param adjacencies - array of adjacencies
503   */
504 manual_endian manual_print define lisp_adjacencies_get_reply
505 {
506   u32 context;
507   i32 retval;
508   u32 count;
509   vl_api_lisp_adjacency_t adjacencies[count];
510 };
511
512 /** \brief Request for LISP adjacencies
513     @param client_index - opaque cookie to identify the sender
514     @param context - sender context, to match reply w/ request
515     @param vni - filter adjacencies by VNI
516  */
517 define lisp_adjacencies_get
518 {
519   u32 client_index;
520   u32 context;
521   u32 vni;
522 };
523
524 /** \brief Shows relationship between vni and vrf/bd
525     @param dp_table - VRF index or bridge domain index
526     @param vni - virtual network instance
527   */
528 define lisp_eid_table_map_details
529 {
530   u32 context;
531   u32 vni;
532   u32 dp_table;
533 };
534
535 /** \brief Request for lisp_eid_table_map_details
536     @param client_index - opaque cookie to identify the sender
537     @param context - sender context, to match reply w/ request
538     @param is_l2 - if set dump vni/bd mappings else vni/vrf
539  */
540 define lisp_eid_table_map_dump
541 {
542   u32 client_index;
543   u32 context;
544   bool is_l2;
545 };
546
547 /** \brief Dumps all VNIs used in mappings
548     @param client_index - opaque cookie to identify the sender
549     @param context - sender context, to match reply w/ request
550   */
551 define lisp_eid_table_vni_dump
552 {
553   u32 client_index;
554   u32 context;
555 };
556
557 /** \brief reply to lisp_eid_table_vni_dump
558     @param context - sender context, to match reply w/ request
559     @param vni - virtual network instance
560  */
561 define lisp_eid_table_vni_details
562 {
563   u32 context;
564   u32 vni;
565 };
566
567 /** \brief LISP map resolver status
568     @param ip_address - array of address bytes
569  */
570 define lisp_map_resolver_details
571 {
572   u32 context;
573   vl_api_address_t ip_address;
574 };
575
576 /** \brief Request for map resolver summary status
577     @param client_index - opaque cookie to identify the sender
578     @param context - sender context, to match reply w/ request
579  */
580 define lisp_map_resolver_dump
581 {
582   u32 client_index;
583   u32 context;
584 };
585
586 /** \brief LISP map server details
587     @param ip_address - array of address bytes
588  */
589 define lisp_map_server_details
590 {
591   u32 context;
592   vl_api_address_t ip_address;
593 };
594
595 /** \brief Request for map server summary status
596     @param client_index - opaque cookie to identify the sender
597     @param context - sender context, to match reply w/ request
598  */
599 define lisp_map_server_dump
600 {
601   u32 client_index;
602   u32 context;
603 };
604
605 /** \brief Request for lisp-gpe protocol status
606     @param client_index - opaque cookie to identify the sender
607     @param context - sender context, to match reply w/ request
608 */
609 define show_lisp_status
610 {
611   u32 client_index;
612   u32 context;
613 };
614
615 /** \brief Status of lisp, enable or disable
616     @param context - sender context, to match reply w/ request
617     @param feature_status - lisp enable if non-zero, else disable
618     @param gpe_status - lisp enable if non-zero, else disable
619 */
620 define show_lisp_status_reply
621 {
622   u32 context;
623   i32 retval;
624   bool is_lisp_enabled;
625   bool is_gpe_enabled;
626 };
627
628 /** \brief Get LISP map request itr rlocs status
629     @param context - sender context, to match reply w/ request
630     @param locator_set_name - name of the locator_set
631  */
632 define lisp_get_map_request_itr_rlocs
633 {
634   u32 client_index;
635   u32 context;
636 };
637
638 /** \brief Request for map request itr rlocs summary status
639  */
640 define lisp_get_map_request_itr_rlocs_reply
641 {
642   u32 context;
643   i32 retval;
644   string locator_set_name[64];
645 };
646
647 /** \brief Request for lisp pitr status
648     @param client_index - opaque cookie to identify the sender
649     @param context - sender context, to match reply w/ request
650 */
651 define show_lisp_pitr
652 {
653   u32 client_index;
654   u32 context;
655 };
656
657 /** \brief Status of lisp pitr, enable or disable
658     @param context - sender context, to match reply w/ request
659     @param status - lisp pitr enable if non-zero, else disable
660     @param locator_set_name -  name of the locator_set
661 */
662 define show_lisp_pitr_reply
663 {
664   u32 context;
665   i32 retval;
666   bool is_enabled;
667   string locator_set_name[64];
668 };
669
670 /*
671  * Local Variables:
672  * eval: (c-set-style "gnu")
673  * End:
674  */