38937a3eda9c3d7d5058aecde8b35dea665969ca
[vpp.git] / src / vnet / lisp-cp / one.api
1 /*
2  * Copyright (c) 2015-2017 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 /** \brief add or delete locator_set
17     @param client_index - opaque cookie to identify the sender
18     @param context - sender context, to match reply w/ request
19     @param is_add - add address if non-zero, else delete
20     @param locator_set_name - locator name
21     @param locator_num - number of locators
22     @param locators - locator records
23 */
24 manual_endian manual_print define one_add_del_locator_set
25 {
26   u32 client_index;
27   u32 context;
28   u8 is_add;
29   u8 locator_set_name[64];
30   u32 locator_num;
31   vl_api_local_locator_t locators[locator_num];
32 };
33
34 /** \brief Reply for locator_set add/del
35     @param context - returned sender context, to match reply w/ request
36     @param retval - return code
37     @param ls_index - locator set index
38 */
39 define one_add_del_locator_set_reply
40 {
41   u32 context;
42   i32 retval;
43   u32 ls_index;
44 };
45
46 /** \brief add or delete locator for locator set
47     @param client_index - opaque cookie to identify the sender
48     @param context - sender context, to match reply w/ request
49     @param is_add - add address if non-zero, else delete
50     @param locator_set_name - name of locator_set to add/del locator
51     @param sw_if_index - index of the interface
52     @param priority - priority of the locator
53     @param weight - weight of the locator
54 */
55 define one_add_del_locator
56 {
57   u32 client_index;
58   u32 context;
59   u8 is_add;
60   u8 locator_set_name[64];
61   u32 sw_if_index;
62   u8 priority;
63   u8 weight;
64 };
65
66 /** \brief Reply for locator add/del
67     @param context - returned sender context, to match reply w/ request
68     @param retval - return code
69 */
70 define one_add_del_locator_reply
71 {
72   u32 context;
73   i32 retval;
74 };
75
76 /** \brief add or delete ONE eid-table
77     @param client_index - opaque cookie to identify the sender
78     @param context - sender context, to match reply w/ request
79     @param is_add - add address if non-zero, else delete
80     @param eid_type:
81       0 : ipv4
82       1 : ipv6
83       2 : mac
84     @param eid - EID can be ip4, ip6 or mac
85     @param prefix_len - prefix len
86     @param locator_set_name - name of locator_set to add/del eid-table
87     @param vni - virtual network instance
88     @param key_id
89       HMAC_NO_KEY           0
90       HMAC_SHA_1_96         1
91       HMAC_SHA_256_128      2
92     @param key - secret key
93 */
94 define one_add_del_local_eid
95 {
96   u32 client_index;
97   u32 context;
98   u8 is_add;
99   u8 eid_type;
100   u8 eid[16];
101   u8 prefix_len;
102   u8 locator_set_name[64];
103   u32 vni;
104   u16 key_id;
105   u8 key[64];
106 };
107
108 /** \brief Reply for local_eid add/del
109     @param context - returned sender context, to match reply w/ request
110     @param retval - return code
111 */
112 define one_add_del_local_eid_reply
113 {
114   u32 context;
115   i32 retval;
116 };
117
118 /** \brief Add/delete map server
119     @param client_index - opaque cookie to identify the sender
120     @param context - sender context, to match reply w/ request
121     @param is_add - add address if non-zero; delete otherwise
122     @param is_ipv6 - if non-zero the address is ipv6, else ipv4
123     @param ip_address - map server IP address
124 */
125 define one_add_del_map_server
126 {
127   u32 client_index;
128   u32 context;
129   u8 is_add;
130   u8 is_ipv6;
131   u8 ip_address[16];
132 };
133
134 /** \brief Reply for one_add_del_map_server
135     @param context - returned sender context, to match reply w/ request
136     @param retval - return code
137 */
138 define one_add_del_map_server_reply
139 {
140   u32 context;
141   i32 retval;
142 };
143
144 /** \brief add or delete map-resolver
145     @param client_index - opaque cookie to identify the sender
146     @param context - sender context, to match reply w/ request
147     @param is_add - add address if non-zero, else delete
148     @param is_ipv6 - if non-zero the address is ipv6, else ipv4
149     @param ip_address - array of address bytes
150 */
151 define one_add_del_map_resolver
152 {
153   u32 client_index;
154   u32 context;
155   u8 is_add;
156   u8 is_ipv6;
157   u8 ip_address[16];
158 };
159
160 /** \brief Reply for map_resolver add/del
161     @param context - returned sender context, to match reply w/ request
162     @param retval - return code
163 */
164 define one_add_del_map_resolver_reply
165 {
166   u32 context;
167   i32 retval;
168 };
169
170 /** \brief enable or disable ONE feature
171     @param client_index - opaque cookie to identify the sender
172     @param context - sender context, to match reply w/ request
173     @param is_en - enable protocol if non-zero, else disable
174 */
175 define one_enable_disable
176 {
177   u32 client_index;
178   u32 context;
179   u8 is_en;
180 };
181
182 /** \brief Reply for gpe enable/disable
183     @param context - returned sender context, to match reply w/ request
184     @param retval - return code
185 */
186 define one_enable_disable_reply
187 {
188   u32 context;
189   i32 retval;
190 };
191
192 /** \brief configure or disable ONE PITR node
193     @param client_index - opaque cookie to identify the sender
194     @param context - sender context, to match reply w/ request
195     @param ls_name - locator set name
196     @param is_add - add locator set if non-zero, else disable pitr
197 */
198 define one_pitr_set_locator_set
199 {
200   u32 client_index;
201   u32 context;
202   u8 is_add;
203   u8 ls_name[64];
204 };
205
206 /** \brief Reply for one_pitr_set_locator_set
207     @param context - returned sender context, to match reply w/ request
208     @param retval - return code
209 */
210 define one_pitr_set_locator_set_reply
211 {
212   u32 context;
213   i32 retval;
214 };
215
216 /** \brief configure or disable use of PETR
217     @param client_index - opaque cookie to identify the sender
218     @param context - sender context, to match reply w/ request
219     @param is_ip4 - Address is IPv4 if set and IPv6 otherwise
220     @param address - PETR IP address
221     @param is_add - add locator set if non-zero, else disable pitr
222 */
223 define one_use_petr
224 {
225   u32 client_index;
226   u32 context;
227   u8 is_ip4;
228   u8 address[16];
229   u8 is_add;
230 };
231
232 /** \brief Reply for one_pitr_set_locator_set
233     @param context - returned sender context, to match reply w/ request
234     @param retval - return code
235 */
236 define one_use_petr_reply
237 {
238   u32 context;
239   i32 retval;
240 };
241
242 /** \brief Request for ONE PETR status
243     @param client_index - opaque cookie to identify the sender
244     @param context - sender context, to match reply w/ request
245 */
246 define show_one_use_petr
247 {
248   u32 client_index;
249   u32 context;
250 };
251
252 /** \brief ONE PETR status, enable or disable
253     @param context - sender context, to match reply w/ request
254     @param status - ONE PETR enable if non-zero, else disable
255     @param is_ip4 - Address is IPv4 if non-zero, else IPv6
256     @param address - PETR IP address
257 */
258 define show_one_use_petr_reply
259 {
260   u32 context;
261   i32 retval;
262   u8 status;
263   u8 is_ip4;
264   u8 address[16];
265 };
266
267 /** \brief Get state of ONE RLOC probing
268     @param client_index - opaque cookie to identify the sender
269     @param context - sender context, to match reply w/ request
270 */
271 define show_one_rloc_probe_state
272 {
273   u32 client_index;
274   u32 context;
275 };
276
277 /** \brief Reply for show_one_rloc_probe_state
278     @param context - returned sender context, to match reply w/ request
279     @param retval - return code
280     @param is_enabled - state of RLOC probing
281 */
282 define show_one_rloc_probe_state_reply
283 {
284   u32 context;
285   i32 retval;
286   u8 is_enabled;
287 };
288
289 /** \brief enable/disable ONE RLOC probing
290     @param client_index - opaque cookie to identify the sender
291     @param context - sender context, to match reply w/ request
292     @param is_enable - enable if non-zero; disable otherwise
293 */
294 define one_rloc_probe_enable_disable
295 {
296   u32 client_index;
297   u32 context;
298   u8 is_enabled;
299 };
300
301 /** \brief Reply for one_rloc_probe_enable_disable
302     @param context - returned sender context, to match reply w/ request
303     @param retval - return code
304 */
305 define one_rloc_probe_enable_disable_reply
306 {
307   u32 context;
308   i32 retval;
309 };
310
311 /** \brief enable/disable ONE map-register
312     @param client_index - opaque cookie to identify the sender
313     @param context - sender context, to match reply w/ request
314     @param is_enable - enable if non-zero; disable otherwise
315 */
316 define one_map_register_enable_disable
317 {
318   u32 client_index;
319   u32 context;
320   u8 is_enabled;
321 };
322
323 /** \brief Reply for one_map_register_enable_disable
324     @param context - returned sender context, to match reply w/ request
325     @param retval - return code
326 */
327 define one_map_register_enable_disable_reply
328 {
329   u32 context;
330   i32 retval;
331 };
332
333 /** \brief Get state of ONE map-register
334     @param client_index - opaque cookie to identify the sender
335     @param context - sender context, to match reply w/ request
336 */
337 define show_one_map_register_state
338 {
339   u32 client_index;
340   u32 context;
341 };
342
343 /** \brief Reply for show_one_map_register_state
344     @param context - returned sender context, to match reply w/ request
345     @param retval - return code
346 */
347 define show_one_map_register_state_reply
348 {
349   u32 context;
350   i32 retval;
351   u8 is_enabled;
352 };
353
354 /** \brief set ONE map-request mode. Based on configuration VPP will send
355       src/dest or just normal destination map requests.
356     @param client_index - opaque cookie to identify the sender
357     @param context - sender context, to match reply w/ request
358     @param mode - new map-request mode. Supported values are:
359       0 - destination only
360       1 - source/destaination
361 */
362 define one_map_request_mode
363 {
364   u32 client_index;
365   u32 context;
366   u8 mode;
367 };
368
369 /** \brief Reply for one_map_request_mode
370     @param context - returned sender context, to match reply w/ request
371     @param retval - return code
372 */
373 define one_map_request_mode_reply
374 {
375   u32 context;
376   i32 retval;
377 };
378
379 /** \brief Request for ONE map-request mode
380     @param client_index - opaque cookie to identify the sender
381     @param context - sender context, to match reply w/ request
382 */
383 define show_one_map_request_mode
384 {
385   u32 client_index;
386   u32 context;
387 };
388
389 /** \brief Reply for show_one_map_request_mode
390     @param context - returned sender context, to match reply w/ request
391     @param retval - return code
392     @param mode - map-request mode
393 */
394 define show_one_map_request_mode_reply
395 {
396   u32 context;
397   i32 retval;
398   u8 mode;
399 };
400
401 /** \brief add or delete remote static mapping
402     @param client_index - opaque cookie to identify the sender
403     @param context - sender context, to match reply w/ request
404     @param is_add - add address if non-zero, else delete
405     @param is_src_dst - flag indicating src/dst based routing policy
406     @param del_all - if set, delete all remote mappings
407     @param vni - virtual network instance
408     @param action - negative map-reply action
409     @param eid_type -
410       0 : ipv4
411       1 : ipv6
412       2 : mac
413     @param deid - dst EID
414     @param seid - src EID, valid only if is_src_dst is enabled
415     @param rloc_num - number of remote locators
416     @param rlocs - remote locator records
417 */
418 manual_print manual_endian define one_add_del_remote_mapping
419 {
420   u32 client_index;
421   u32 context;
422   u8 is_add;
423   u8 is_src_dst;
424   u8 del_all;
425   u32 vni;
426   u8 action;
427   u8 eid_type;
428   u8 eid[16];
429   u8 eid_len;
430   u8 seid[16];
431   u8 seid_len;
432   u32 rloc_num;
433   vl_api_remote_locator_t rlocs[rloc_num];
434 };
435
436 /** \brief Reply for one_add_del_remote_mapping
437     @param context - returned sender context, to match reply w/ request
438     @param retval - return code
439 */
440 define one_add_del_remote_mapping_reply
441 {
442   u32 context;
443   i32 retval;
444 };
445
446 /** \brief add or delete ONE adjacency adjacency
447     @param client_index - opaque cookie to identify the sender
448     @param context - sender context, to match reply w/ request
449     @param is_add - add address if non-zero, else delete
450     @param vni - virtual network instance
451     @param eid_type -
452       0 : ipv4
453       1 : ipv6
454       2 : mac
455     @param reid - remote EID
456     @param leid - local EID
457 */
458 define one_add_del_adjacency
459 {
460   u32 client_index;
461   u32 context;
462   u8 is_add;
463   u32 vni;
464   u8 eid_type;
465   u8 reid[16];
466   u8 leid[16];
467   u8 reid_len;
468   u8 leid_len;
469 };
470
471 /** \brief Reply for one_add_del_adjacency
472     @param context - returned sender context, to match reply w/ request
473     @param retval - return code
474 */
475 define one_add_del_adjacency_reply
476 {
477   u32 context;
478   i32 retval;
479 };
480
481 /** \brief add or delete map request itr rlocs
482     @param client_index - opaque cookie to identify the sender
483     @param context - sender context, to match reply w/ request
484     @param is_add - add address if non-zero, else delete
485     @param locator_set_name - locator set name
486 */
487 define one_add_del_map_request_itr_rlocs
488 {
489   u32 client_index;
490   u32 context;
491   u8 is_add;
492   u8 locator_set_name[64];
493 };
494
495 /** \brief Reply for one_add_del_map_request_itr_rlocs
496     @param context - returned sender context, to match reply w/ request
497     @param retval - return code
498 */
499
500 define one_add_del_map_request_itr_rlocs_reply
501 {
502   u32 context;
503   i32 retval;
504 };
505
506 /** \brief map/unmap vni/bd_index to vrf
507     @param client_index - opaque cookie to identify the sender
508     @param context - sender context, to match reply w/ request
509     @param is_add - add or delete mapping
510     @param dp_table - virtual network id/bridge domain index
511     @param vrf - vrf
512 */
513 define one_eid_table_add_del_map
514 {
515   u32 client_index;
516   u32 context;
517   u8 is_add;
518   u32 vni;
519   u32 dp_table;
520   u8 is_l2;
521 };
522
523 /** \brief Reply for one_eid_table_add_del_map
524     @param context - returned sender context, to match reply w/ request
525     @param retval - return code
526 */
527 define one_eid_table_add_del_map_reply
528 {
529   u32 context;
530   i32 retval;
531 };
532
533 /** \brief Request for map one locator status
534     @param client_index - opaque cookie to identify the sender
535     @param context - sender context, to match reply w/ request
536     @param locator_set_index - index of locator_set
537     @param ls_name - locator set name
538     @param is_index_set - flag indicating whether ls_name or ls_index is set
539  */
540 define one_locator_dump
541 {
542   u32 client_index;
543   u32 context;
544   u32 ls_index;
545   u8 ls_name[64];
546   u8 is_index_set;
547 };
548
549 /** \brief ONE locator_set status
550     @param local - if is set, then locator is local
551     @param locator_set_name - name of the locator_set
552     @param sw_if_index - sw_if_index of the locator
553     @param priority - locator priority
554     @param weight - locator weight
555   */
556 define one_locator_details
557 {
558   u32 context;
559   u8 local;
560   u32 sw_if_index;
561   u8 is_ipv6;
562   u8 ip_address[16];
563   u8 priority;
564   u8 weight;
565 };
566
567 /** \brief ONE locator_set status
568     @param context - sender context, to match reply w/ request
569     @param ls_index - locator set index
570     @param ls_name - name of the locator set
571  */
572 define one_locator_set_details
573 {
574   u32 context;
575   u32 ls_index;
576   u8 ls_name[64];
577 };
578
579 /** \brief Request for locator_set summary status
580     @param client_index - opaque cookie to identify the sender
581     @param context - sender context, to match reply w/ request
582     @param filter - filter type
583       Supported values:
584         0: all locator sets
585         1: local locator sets
586         2: remote locator sets
587  */
588 define one_locator_set_dump
589 {
590   u32 client_index;
591   u32 context;
592   u8 filter;
593 };
594
595 /** \brief Dump ONE eid-table
596     @param client_index - opaque cookie to identify the sender
597     @param context - sender context, to match reply w/ request
598     @param locator_set_index - index of locator_set, if ~0 then the mapping
599                                 is negative
600     @param action - negative map request action
601     @param is_local - local if non-zero, else remote
602     @param eid_type:
603       0 : ipv4
604       1 : ipv6
605       2 : mac
606     @param is_src_dst - EID is type of source/destination
607     @param eid - EID can be ip4, ip6 or mac
608     @param eid_prefix_len - prefix length
609     @param seid - source EID can be ip4, ip6 or mac
610     @param seid_prefix_len - source prefix length
611     @param vni - virtual network instance
612     @param ttl - time to live
613     @param authoritative - authoritative
614     @param key_id
615       HMAC_NO_KEY           0
616       HMAC_SHA_1_96         1
617       HMAC_SHA_256_128      2
618     @param key - secret key
619 */
620
621 define one_eid_table_details
622 {
623   u32 context;
624   u32 locator_set_index;
625   u8 action;
626   u8 is_local;
627   u8 eid_type;
628   u8 is_src_dst;
629   u32 vni;
630   u8 eid[16];
631   u8 eid_prefix_len;
632   u8 seid[16];
633   u8 seid_prefix_len;
634   u32 ttl;
635   u8 authoritative;
636   u16 key_id;
637   u8 key[64];
638 };
639
640 /** \brief Request for eid table summary status
641     @param client_index - opaque cookie to identify the sender
642     @param context - sender context, to match reply w/ request
643     @param eid_set - if non-zero request info about specific mapping
644     @param vni - virtual network instance; valid only if eid_set != 0
645     @param prefix_length - prefix length if EID is IP address;
646       valid only if eid_set != 0
647     @param eid_type - EID type; valid only if eid_set != 0
648       Supported values:
649         0: EID is IPv4
650         1: EID is IPv6
651         2: EID is ethernet address
652     @param eid - endpoint identifier
653     @param filter - filter type;
654       Support values:
655         0: all eid
656         1: local eid
657         2: remote eid
658  */
659 define one_eid_table_dump
660 {
661   u32 client_index;
662   u32 context;
663   u8 eid_set;
664   u8 prefix_length;
665   u32 vni;
666   u8 eid_type;
667   u8 eid[16];
668   u8 filter;
669 };
670
671 /** \brief ONE adjacency
672     @param eid_type -
673       0 : ipv4
674       1 : ipv6
675       2 : mac
676     @param reid - remote EID
677     @param leid - local EID
678     @param reid_prefix_len - remote EID IP prefix length
679     @param leid_prefix_len - local EID IP prefix length
680   */
681 typeonly manual_print manual_endian define one_adjacency
682 {
683   u8 eid_type;
684   u8 reid[16];
685   u8 leid[16];
686   u8 reid_prefix_len;
687   u8 leid_prefix_len;
688 };
689
690 /** \brief ONE adjacency reply
691     @param count - number of adjacencies
692     @param adjacencies - array of adjacencies
693   */
694 manual_endian manual_print define one_adjacencies_get_reply
695 {
696   u32 context;
697   i32 retval;
698   u32 count;
699   vl_api_one_adjacency_t adjacencies[count];
700 };
701
702 /** \brief Request for ONE adjacencies
703     @param client_index - opaque cookie to identify the sender
704     @param context - sender context, to match reply w/ request
705     @param vni - filter adjacencies by VNI
706  */
707 define one_adjacencies_get
708 {
709   u32 client_index;
710   u32 context;
711   u32 vni;
712 };
713
714 /** \brief Shows relationship between vni and vrf/bd
715     @param dp_table - VRF index or bridge domain index
716     @param vni - vitual network instance
717   */
718 define one_eid_table_map_details
719 {
720   u32 context;
721   u32 vni;
722   u32 dp_table;
723 };
724
725 /** \brief Request for one_eid_table_map_details
726     @param client_index - opaque cookie to identify the sender
727     @param context - sender context, to match reply w/ request
728     @param is_l2 - if set dump vni/bd mappings else vni/vrf
729  */
730 define one_eid_table_map_dump
731 {
732   u32 client_index;
733   u32 context;
734   u8 is_l2;
735 };
736
737 /** \brief Dumps all VNIs used in mappings
738     @param client_index - opaque cookie to identify the sender
739     @param context - sender context, to match reply w/ request
740   */
741 define one_eid_table_vni_dump
742 {
743   u32 client_index;
744   u32 context;
745 };
746
747 /** \brief reply to one_eid_table_vni_dump
748     @param client_index - opaque cookie to identify the sender
749     @param context - sender context, to match reply w/ request
750     @param vni - virtual network instance
751  */
752 define one_eid_table_vni_details
753 {
754   u32 client_index;
755   u32 context;
756   u32 vni;
757 };
758
759 /** \brief ONE map resolver status
760     @param is_ipv6 - if non-zero the address is ipv6, else ipv4
761     @param ip_address - array of address bytes
762  */
763 define one_map_resolver_details
764 {
765   u32 context;
766   u8 is_ipv6;
767   u8 ip_address[16];
768 };
769
770 /** \brief Request for map resolver summary status
771     @param client_index - opaque cookie to identify the sender
772     @param context - sender context, to match reply w/ request
773  */
774 define one_map_resolver_dump
775 {
776   u32 client_index;
777   u32 context;
778 };
779
780 /** \brief ONE map server details
781     @param is_ipv6 - if non-zero the address is ipv6, else ipv4
782     @param ip_address - array of address bytes
783  */
784 define one_map_server_details
785 {
786   u32 context;
787   u8 is_ipv6;
788   u8 ip_address[16];
789 };
790
791 /** \brief Request for map server summary status
792     @param client_index - opaque cookie to identify the sender
793     @param context - sender context, to match reply w/ request
794  */
795 define one_map_server_dump
796 {
797   u32 client_index;
798   u32 context;
799 };
800
801 /** \brief Request for ONE status
802     @param client_index - opaque cookie to identify the sender
803     @param context - sender context, to match reply w/ request
804 */
805 define show_one_status
806 {
807   u32 client_index;
808   u32 context;
809 };
810
811 /** \brief ONE status
812     @param context - sender context, to match reply w/ request
813     @param feature_status - enabled if non-zero, else disabled
814     @param gpe_status - enabled if non-zero, else disabled
815 */
816 define show_one_status_reply
817 {
818   u32 context;
819   i32 retval;
820   u8 feature_status;
821   u8 gpe_status;
822 };
823
824 /** \brief Get ONE map request itr rlocs status
825     @param context - sender context, to match reply w/ request
826     @param locator_set_name - name of the locator_set
827  */
828 define one_get_map_request_itr_rlocs
829 {
830   u32 client_index;
831   u32 context;
832 };
833
834 /** \brief Request for map request itr rlocs summary status
835  */
836 define one_get_map_request_itr_rlocs_reply
837 {
838   u32 context;
839   i32 retval;
840   u8 locator_set_name[64];
841 };
842
843 /** \brief Request for ONE PITR status
844     @param client_index - opaque cookie to identify the sender
845     @param context - sender context, to match reply w/ request
846 */
847 define show_one_pitr
848 {
849   u32 client_index;
850   u32 context;
851 };
852
853 /** \brief Status of ONE PITR, enable or disable
854     @param context - sender context, to match reply w/ request
855     @param status - ONE PITR enable if non-zero, else disable
856     @param locator_set_name -  name of the locator_set
857 */
858 define show_one_pitr_reply
859 {
860   u32 context;
861   i32 retval;
862   u8 status;
863   u8 locator_set_name[64];
864 };