hs-test: updated api calls
[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 define mpls_tunnel_details
90 {
91   u32 context;
92   vl_api_mpls_tunnel_t mt_tunnel;
93 };
94
95 /** \brief Dump mpls enabled interface(s)
96     @param client_index - opaque cookie to identify the sender
97     @param sw_if_index - sw_if_index of a specific interface, or -1 (default)
98                          to return all MPLS enabled interfaces
99 */
100 define mpls_interface_dump
101 {
102   u32 client_index;
103   u32 context;
104   vl_api_interface_index_t sw_if_index [default=0xffffffff];
105 };
106
107 /** \brief mpls enabled interface details
108 */
109 define mpls_interface_details
110 {
111   u32 context;
112   vl_api_interface_index_t sw_if_index;
113 };
114
115 /** \brief MPLS Route Add / del route
116     @param client_index - opaque cookie to identify the sender
117     @param context - sender context, to match reply w/ request
118     @param mt_table_id - The MPLS table-id the route is added in
119     @param mt_is_add - Is this a route add or delete
120     @param mt_name - A client provided name/tag for the table. If this
121                      is not set by the client, then VPP will generate
122                      something meaningful.
123 */
124 typedef mpls_table
125 {
126   u32 mt_table_id;
127   string mt_name[64];
128 };
129 autoreply define mpls_table_add_del
130 {
131   u32 client_index;
132   u32 context;
133   bool  mt_is_add [default=true];
134   vl_api_mpls_table_t mt_table;
135 };
136
137 /** \brief Dump MPLS fib table
138     @param client_index - opaque cookie to identify the sender
139 */
140 define mpls_table_dump
141 {
142   u32 client_index;
143   u32 context;
144 };
145
146 define mpls_table_details
147 {
148   u32 context;
149   vl_api_mpls_table_t mt_table;
150 };
151
152 /** \brief MPLS Route
153     @param mr_table_id - The MPLS table-id the route is added in
154     @param mr_label - The MPLS label value
155     @param mr_eos - The End of stack bit
156     @param mr_eos_proto - If EOS then this is the DPO packet's proto post pop
157     @param mr_is_multicast - Is this a multicast route
158     @param mr_n_paths - The number of paths
159     @param mr_paths - The paths
160 */
161 typedef mpls_route
162 {
163   u32 mr_table_id;
164   u32 mr_label;
165   /* TODO: check data type */
166   u8 mr_eos;
167   u8 mr_eos_proto;
168   bool mr_is_multicast;
169   u8 mr_n_paths;
170   vl_api_fib_path_t mr_paths[mr_n_paths];
171 };
172
173 /** \brief MPLS Route Add / del route
174     @param client_index - opaque cookie to identify the sender
175     @param context - sender context, to match reply w/ request
176     @param mr_table_id - The MPLS table-id the route is added in
177     @param mr_is_add - Is this a route add or delete
178     @param mr_is_multipath - Is this route update a multipath - i.e. is this
179                              a path addition to an existing route
180     @param mr_route - The Route
181 */
182 define mpls_route_add_del
183 {
184   u32 client_index;
185   u32 context;
186   bool mr_is_add;
187   bool mr_is_multipath;
188   vl_api_mpls_route_t mr_route;
189 };
190
191 define mpls_route_add_del_reply
192 {
193   u32 context;
194   i32 retval;
195   u32 stats_index;
196 };
197
198 /** \brief Dump MPLS fib table
199     @param client_index - opaque cookie to identify the sender
200 */
201 define mpls_route_dump
202 {
203   u32 client_index;
204   u32 context;
205   vl_api_mpls_table_t table;
206 };
207
208 /** \brief mpls FIB table response
209     @param table_id - MPLS fib table id
210     @param s_bit - End-of-stack bit
211     @param label - MPLS label value
212     @param count - the number of fib_path in path
213     @param path  - array of of fib_path structures
214 */
215 define mpls_route_details
216 {
217   u32 context;
218   vl_api_mpls_route_t mr_route;
219 };
220
221 /** \brief Enable or Disable MPLS on and interface
222     @param client_index - opaque cookie to identify the sender
223     @param context - sender context, to match reply w/ request
224     @param sw_if_index - index of the interface
225     @param enable - if non-zero enable, else disable
226 */
227 autoreply define sw_interface_set_mpls_enable
228 {
229   u32 client_index;
230   u32 context;
231   vl_api_interface_index_t sw_if_index;
232   bool enable [default=true];
233 };
234
235 counters mpls {
236   none {
237     severity info;
238     type counter64;
239     units "packets";
240     description "no error";
241   };
242   unknown_protocol {
243     severity error;
244     type counter64;
245     units "packets";
246     description "unknown protocol";
247   };
248   unsupported_version {
249     severity error;
250     type counter64;
251     units "packets";
252     description "unsupported version";
253   };
254   pkts_decap {
255     severity info;
256     type counter64;
257     units "packets";
258     description "MPLS input packets decapsulated";
259   };
260   pkts_encap {
261     severity info;
262     type counter64;
263     units "packets";
264     description "MPLS output packets encapsulated";
265   };
266   pkts_need_frag {
267     severity info;
268     type counter64;
269     units "packets";
270     description "MPLS output packets needs fragmentation";
271   };
272   no_label {
273     severity error;
274     type counter64;
275     units "packets";
276     description "MPLS no label for fib/dst";
277   };
278   ttl_expired {
279     severity error;
280     type counter64;
281     units "packets";
282     description "MPLS ttl expired";
283   };
284   s_not_set {
285     severity error;
286     type counter64;
287     units "packets";
288     description "MPLS s-bit not set";
289   };
290   bad_label {
291     severity error;
292     type counter64;
293     units "packets";
294     description "invalid FIB id in label";
295   };
296   not_ip4 {
297     severity error;
298     type counter64;
299     units "packets";
300     description "non-ip4 packets dropped";
301   };
302   disallowed_fib {
303     severity error;
304     type counter64;
305     units "packets";
306     description "disallowed FIB id";
307   };
308   not_enabled {
309     severity error;
310     type counter64;
311     units "packets";
312     description "MPLS not enabled";
313   };
314   drop {
315     severity error;
316     type counter64;
317     units "packets";
318     description "MPLS DROP DPO";
319   };
320   punt {
321     severity error;
322     type counter64;
323     units "packets";
324     description "MPLS PUNT DPO";
325   };
326 };
327
328 paths {
329   "/err/mpls-input" "mpls";
330   "/err/mpls-output" "mpls";
331   "/err/mpls-lookup" "mpls";
332   "/err/mpls-midchain" "mpls";
333   "/err/mpls-adj-incomplete" "mpls";
334   "/err/mpls-frag" "mpls";
335 };
336
337 /*
338  * Local Variables:
339  * eval: (c-set-style "gnu")
340  * End:
341  */