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