c7e9a98209bac6afb4793f4cdc039bbe73057a83
[vpp.git] / src / vnet / bier / bier.api
1 /*
2  * Copyright (c) 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 /** \file
17
18     This file defines vpp BIER control-plane API messages which are generally
19     called through a shared memory interface.
20 */
21 vl_api_version 1.0.0
22
23 /** \brief BIER Table Indentifier
24     @param bt_set - The BIER set
25     @param bt_sub_domain - the sud-domain
26     @param bt_bit_header_length - the number of bits in the header length
27 */
28 typeonly define bier_table_id
29 {
30   u8 bt_set;
31   u8 bt_sub_domain;
32   u8 bt_hdr_len_id;
33 };
34
35 /** \brief BIER Table Add / del route
36     @param client_index - opaque cookie to identify the sender
37     @param context - sender context, to match reply w/ request
38     @param bt_tbl_id - The BIER table-id the route is added in
39     @param bt_label - The MPLS label for the table (0 or all ones means not set)
40                       If the label is not set, then it is assumed that non-MPLS
41                       encoding is used.
42     @param bt_is_add - Is this a route add or delete
43 */
44 autoreply define bier_table_add_del
45 {
46   u32 client_index;
47   u32 context;
48   vl_api_bier_table_id_t bt_tbl_id;
49   u32 bt_label;
50   u8 bt_is_add;
51 };
52
53 define bier_table_dump
54 {
55   u32 client_index;
56   u32 context;
57 };
58
59 define bier_table_details
60 {
61   u32 context;
62   u32 bt_label;
63   vl_api_bier_table_id_t bt_tbl_id;
64 };
65
66 /** \brief FIB path
67     @param sw_if_index - index of the interface
68     @param weight - The weight, for UCMP
69     @param preference - The preference of the path. lowest preference is prefered
70     @param is_local - local if non-zero, else remote
71     @param is_drop - Drop the packet
72     @param is_udp_encap - The path describes a UDP-o-IP encapsulation.
73     @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
74     @param next_hop[16] - the next hop address
75     @param next_hop_id - Used when the path resolves via an object that has a unique
76                          identifier. e.g. the UDP encap object
77
78     WARNING: this type is replicated, pending cleanup completion
79 */
80 typeonly define fib_path3
81 {
82   u32 sw_if_index;
83   u32 table_id;
84   u8 weight;
85   u8 preference;
86   u8 is_local;
87   u8 is_drop;
88   u8 is_udp_encap;
89   u8 afi;
90   u8 next_hop[16];
91   u32 next_hop_id;
92   u32 rpf_id;
93   u8 n_labels;
94   u32 label_stack[16];
95 };
96
97 /** \brief BIER Route Add / del route
98     @param client_index - opaque cookie to identify the sender
99     @param context - sender context, to match reply w/ request
100     @param br_bp - The Bit-position value
101     @param br_tbl_id - The BIER table-id the route is added in
102     @param br_is_add - Is this a route add or delete
103     @param br_is_replace - Are the paths specfied replacing those already
104                            present or are they to be combined.
105     @param br_n_paths - The number of paths
106     @param br_paths - The array of paths
107 */
108 autoreply define bier_route_add_del
109 {
110   u32 client_index;
111   u32 context;
112   u32 br_bp;
113   u8 br_is_add;
114   u8 br_is_replace;
115   vl_api_bier_table_id_t br_tbl_id;
116   u8 br_n_paths;
117   vl_api_fib_path3_t br_paths[br_n_paths];
118 };
119
120 define bier_route_dump
121 {
122   u32 client_index;
123   u32 context;
124   vl_api_bier_table_id_t br_tbl_id;
125 };
126
127 define bier_route_details
128 {
129   u32 client_index;
130   u32 context;
131   u16 br_bp;
132   vl_api_bier_table_id_t br_tbl_id;
133   u32 br_n_paths;
134   vl_api_fib_path3_t br_paths[br_n_paths];
135 };
136
137 /** \brief BIER Imposition Add
138     @param client_index - opaque cookie to identify the sender
139     @param context - sender context, to match reply w/ request
140     @param bi_tbl_id - The BIER table-id used to forward post encap
141     @param bi_src - The source Bit-position in the encap.
142     @param bi_n_bytes - The number of bytes in the following bit-string
143     @param bi_bytes - The bit-string represented as a byte array (MSB first)
144 */
145 define bier_imp_add
146 {
147   u32 client_index;
148   u32 context;
149   vl_api_bier_table_id_t bi_tbl_id;
150   u16 bi_src;
151   u8 bi_n_bytes;
152   u8 bi_bytes[bi_n_bytes];
153 };
154
155 /** \brief Reply for BIER route add / del request
156     @param context - returned sender context, to match reply w/ request
157     @param retval - return code
158     @param bi_index - The index of the created imposition object.
159 */
160 define bier_imp_add_reply
161 {
162   u32 context;
163   i32 retval;
164   u32 bi_index;
165 };
166
167 /** \brief BIER Imposition Del
168     @param client_index - opaque cookie to identify the sender
169     @param context - sender context, to match reply w/ request
170     @param bi_index - The index of the imposition object (as returned
171                       from the ADD)
172 */
173 autoreply define bier_imp_del
174 {
175   u32 client_index;
176   u32 context;
177   u32 bi_index;
178 };
179
180 define bier_imp_dump
181 {
182   u32 client_index;
183   u32 context;
184 };
185
186 define bier_imp_details
187 {
188   u32 client_index;
189   u32 context;
190   vl_api_bier_table_id_t bi_tbl_id;
191   u16 bi_src;
192   u8 bi_n_bytes;
193   u8 bi_bytes[bi_n_bytes];
194 };
195
196 /** \brief BIER Disposition Table Add / del route
197     @param client_index - opaque cookie to identify the sender
198     @param context - sender context, to match reply w/ request
199     @param bt_tbl_id - The BIER Disposition table-id.
200 */
201 autoreply define bier_disp_table_add_del
202 {
203   u32 client_index;
204   u32 context;
205   u32 bdt_tbl_id;
206   u8 bdt_is_add;
207 };
208
209 define bier_disp_table_dump
210 {
211   u32 client_index;
212   u32 context;
213 };
214
215 define bier_disp_table_details
216 {
217   u32 context;
218   u32 bdt_tbl_id;
219 };
220
221 /** \brief BIER Disposition Entry Add / del
222     @param client_index - opaque cookie to identify the sender
223     @param context - sender context, to match reply w/ request
224     @param bde_bp - The Bit-position value for the entry, i.e. the sender's
225                     Use 0 for the default (match any source) entry.
226     @param bde_tbl_id - The BIER dispositiontable-id the route is added in
227     @param bde_next_hop_sw_if_index - the nextop interface
228     @param bde_is_add - Is this a route add or delete
229     @param bde_payload_proto - The payload protocol for which the next-hop
230                                is added
231     @param bde_paths - The outgoing paths for the entry
232 */
233 autoreply define bier_disp_entry_add_del
234 {
235   u32 client_index;
236   u32 context;
237   u16 bde_bp;
238   u32 bde_tbl_id;
239   u8 bde_is_add;
240   u8 bde_payload_proto;
241   u8 bde_n_paths;
242   vl_api_fib_path3_t bde_paths[bde_n_paths];
243 };
244
245 define bier_disp_entry_dump
246 {
247   u32 client_index;
248   u32 context;
249   u32 bde_tbl_id;
250 };
251
252 define bier_disp_entry_details
253 {
254   u32 context;
255   u16 bde_bp;
256   u32 bde_tbl_id;
257   u8 bde_is_add;
258   u8 bde_payload_proto;
259   u8 bde_n_paths;
260   vl_api_fib_path3_t bde_paths[bde_n_paths];
261 };
262
263 /*
264  * Local Variables:
265  * eval: (c-set-style "gnu")
266  * End:
267  */