FD.io VPP  v20.01-48-g3e0dafb74
Vector Packet Processing
mpls.api
Go to the documentation of this file.
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 {
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;
47  bool mt_l2_only;
50  vl_api_fib_path_t mt_paths[mt_n_paths];
51 };
52 define mpls_tunnel_add_del
53 {
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 {
69  vl_api_interface_index_t sw_if_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 {
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 {
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 {
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 {
122 };
123 
124 define mpls_table_details
125 {
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;
143  /* TODO: check data type */
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 {
164  bool mr_is_add;
166  vl_api_mpls_route_t mr_route;
167 };
168 
169 define mpls_route_add_del_reply
170 {
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 {
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 {
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 {
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  */
vl_api_mpls_tunnel_t mt_tunnel
Definition: mpls.api:90
bool mr_is_multicast
Definition: mpls.api:146
typedef mpls_tunnel
Definition: mpls.api:44
vl_api_mpls_route_t mr_route
Definition: mpls.api:196
typedef mpls_route
MPLS Route.
Definition: mpls.api:140
u32 mr_label
Definition: mpls.api:142
bool mt_is_multicast
Definition: mpls.api:48
unsigned char u8
Definition: types.h:56
vl_api_interface_index_t sw_if_index
Definition: mpls.api:69
string mt_name[64]
Definition: mpls.api:105
unsigned int u32
Definition: types.h:88
vl_api_interface_index_t sw_if_index
Definition: mpls.api:82
vl_api_fib_path_t mt_paths[mt_n_paths]
Definition: mpls.api:50
vl_api_prefix_t mb_prefix
Definition: mpls.api:40
u8 mr_n_paths
Definition: mpls.api:147
vl_api_mpls_route_t mr_route
Definition: mpls.api:166
option version
Definition: mpls.api:16
typedef mpls_table
MPLS Route Add / del route.
Definition: mpls.api:103
vl_api_fib_path_t mr_paths[mr_n_paths]
Definition: mpls.api:148
u32 mt_tunnel_index
Definition: mpls.api:46
bool mt_l2_only
Definition: mpls.api:47
u8 mr_eos
Definition: mpls.api:144
vl_api_interface_index_t sw_if_index
Definition: mpls.api:209
vl_api_mpls_table_t table
Definition: mpls.api:183
signed int i32
Definition: types.h:77
vl_api_mpls_table_t mt_table
Definition: mpls.api:112
vl_api_mpls_table_t mt_table
Definition: mpls.api:127
u8 mr_eos_proto
Definition: mpls.api:145
vl_api_mpls_tunnel_t mt_tunnel
Definition: mpls.api:57
u8 mt_n_paths
Definition: mpls.api:49