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