tests: move defaults from defaultmapping to .api files
[vpp.git] / src / vnet / mpls / mpls.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 = "1.1.1";
17 import "vnet/fib/fib_types.api";
18 import "vnet/ip/ip_types.api";
19 import "vnet/interface_types.api";
20
21 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
22            a per-prefix label entry.
23     @param client_index - opaque cookie to identify the sender
24     @param context - sender context, to match reply w/ request
25     @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
26     @param mb_label - The MPLS label value to bind
27     @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
28     @param mb_is_bind - Bind or unbind
29     @param mb_is_ip4 - The prefix to bind to is IPv4
30     @param mb_prefix - IP prefix
31 */
32 autoreply define mpls_ip_bind_unbind
33 {
34   u32 client_index;
35   u32 context;
36   u32 mb_mpls_table_id;
37   u32 mb_label;
38   u32 mb_ip_table_id;
39   bool mb_is_bind;
40   vl_api_prefix_t mb_prefix;
41 };
42
43 typedef mpls_tunnel
44 {
45   vl_api_interface_index_t mt_sw_if_index;
46   u32 mt_tunnel_index;
47   bool mt_l2_only;
48   bool mt_is_multicast;
49   string mt_tag[64];
50   u8 mt_n_paths;
51   vl_api_fib_path_t mt_paths[mt_n_paths];
52 };
53
54 define mpls_tunnel_add_del
55 {
56   u32 client_index;
57   u32 context;
58   bool mt_is_add [default=true];
59   vl_api_mpls_tunnel_t mt_tunnel;
60 };
61
62 /** \brief Reply for MPLS tunnel add / del request
63     @param context - returned sender context, to match reply w/ request
64     @param retval - return code
65     @param sw_if_index - SW interface index of the tunnel created
66 */
67 define mpls_tunnel_add_del_reply
68 {
69   u32 context;
70   i32 retval;
71   vl_api_interface_index_t sw_if_index;
72   u32 tunnel_index;
73 };
74
75 /** \brief Dump mpls eth tunnel table
76     @param client_index - opaque cookie to identify the sender
77     @param sw_if_index - sw_if_index of the MPLS tunnel
78                          (as returned from the create)
79 */
80 define mpls_tunnel_dump
81 {
82   u32 client_index;
83   u32 context;
84   vl_api_interface_index_t sw_if_index [default=0xffffffff];
85 };
86
87 /** \brief mpls tunnel details
88 */
89 manual_endian manual_print define mpls_tunnel_details
90 {
91   u32 context;
92   vl_api_mpls_tunnel_t mt_tunnel;
93 };
94
95 /** \brief MPLS Route Add / del route
96     @param client_index - opaque cookie to identify the sender
97     @param context - sender context, to match reply w/ request
98     @param mt_table_id - The MPLS table-id the route is added in
99     @param mt_is_add - Is this a route add or delete
100     @param mt_name - A client provided name/tag for the table. If this
101                      is not set by the client, then VPP will generate
102                      something meaningful.
103 */
104 typedef mpls_table
105 {
106   u32 mt_table_id;
107   string mt_name[64];
108 };
109 autoreply define mpls_table_add_del
110 {
111   u32 client_index;
112   u32 context;
113   bool  mt_is_add [default=true];
114   vl_api_mpls_table_t mt_table;
115 };
116
117 /** \brief Dump MPLS fib table
118     @param client_index - opaque cookie to identify the sender
119 */
120 define mpls_table_dump
121 {
122   u32 client_index;
123   u32 context;
124 };
125
126 define mpls_table_details
127 {
128   u32 context;
129   vl_api_mpls_table_t mt_table;
130 };
131
132 /** \brief MPLS Route
133     @param mr_table_id - The MPLS table-id the route is added in
134     @param mr_label - The MPLS label value
135     @param mr_eos - The End of stack bit
136     @param mr_eos_proto - If EOS then this is the DPO packet's proto post pop
137     @param mr_is_multicast - Is this a multicast route
138     @param mr_n_paths - The number of paths
139     @param mr_paths - The paths
140 */
141 typedef mpls_route
142 {
143   u32 mr_table_id;
144   u32 mr_label;
145   /* TODO: check data type */
146   u8 mr_eos;
147   u8 mr_eos_proto;
148   bool mr_is_multicast;
149   u8 mr_n_paths;
150   vl_api_fib_path_t mr_paths[mr_n_paths];
151 };
152
153 /** \brief MPLS Route Add / del route
154     @param client_index - opaque cookie to identify the sender
155     @param context - sender context, to match reply w/ request
156     @param mr_table_id - The MPLS table-id the route is added in
157     @param mr_is_add - Is this a route add or delete
158     @param mr_is_multipath - Is this route update a multipath - i.e. is this
159                              a path addition to an existing route
160     @param mr_route - The Route
161 */
162 define mpls_route_add_del
163 {
164   u32 client_index;
165   u32 context;
166   bool mr_is_add;
167   bool mr_is_multipath;
168   vl_api_mpls_route_t mr_route;
169 };
170
171 define mpls_route_add_del_reply
172 {
173   u32 context;
174   i32 retval;
175   u32 stats_index;
176 };
177
178 /** \brief Dump MPLS fib table
179     @param client_index - opaque cookie to identify the sender
180 */
181 define mpls_route_dump
182 {
183   u32 client_index;
184   u32 context;
185   vl_api_mpls_table_t table;
186 };
187
188 /** \brief mpls FIB table response
189     @param table_id - MPLS fib table id
190     @param s_bit - End-of-stack bit
191     @param label - MPLS label value
192     @param count - the number of fib_path in path
193     @param path  - array of of fib_path structures
194 */
195 manual_endian manual_print define mpls_route_details
196 {
197   u32 context;
198   vl_api_mpls_route_t mr_route;
199 };
200
201 /** \brief Enable or Disable MPLS on and interface
202     @param client_index - opaque cookie to identify the sender
203     @param context - sender context, to match reply w/ request
204     @param sw_if_index - index of the interface
205     @param enable - if non-zero enable, else disable
206 */
207 autoreply define sw_interface_set_mpls_enable
208 {
209   u32 client_index;
210   u32 context;
211   vl_api_interface_index_t sw_if_index;
212   bool enable [default=true];
213 };
214
215 /*
216  * Local Variables:
217  * eval: (c-set-style "gnu")
218  * End:
219  */