BIER API and load-balancing fixes
[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 option version = "1.1.0";
22 import "vnet/fib/fib_types.api";
23
24 /** \brief BIER Table Indentifier
25     @param bt_set - The BIER set
26     @param bt_sub_domain - the sud-domain
27     @param bt_bit_header_length - the number of bits in the header length
28 */
29 typeonly define bier_table_id
30 {
31   u8 bt_set;
32   u8 bt_sub_domain;
33   u8 bt_hdr_len_id;
34 };
35
36 /** \brief BIER Table Add / del route
37     @param client_index - opaque cookie to identify the sender
38     @param context - sender context, to match reply w/ request
39     @param bt_tbl_id - The BIER table-id the route is added in
40     @param bt_label - The MPLS label for the table (0 or all ones means not set)
41                       If the label is not set, then it is assumed that non-MPLS
42                       encoding is used.
43     @param bt_is_add - Is this a route add or delete
44 */
45 autoreply define bier_table_add_del
46 {
47   u32 client_index;
48   u32 context;
49   vl_api_bier_table_id_t bt_tbl_id;
50   u32 bt_label;
51   u8 bt_is_add;
52 };
53
54 define bier_table_dump
55 {
56   u32 client_index;
57   u32 context;
58 };
59
60 define bier_table_details
61 {
62   u32 context;
63   u32 bt_label;
64   vl_api_bier_table_id_t bt_tbl_id;
65 };
66
67 /** \brief BIER Route Add / del route
68     @param client_index - opaque cookie to identify the sender
69     @param context - sender context, to match reply w/ request
70     @param br_bp - The Bit-position value
71     @param br_tbl_id - The BIER table-id the route is added in
72     @param br_is_add - Is this a route add or delete
73     @param br_is_replace - Are the paths specfied replacing those already
74                            present or are they to be combined.
75                            is_replace = 1 and n_paths=0 implies delete the
76                            route and all paths;
77     @param br_n_paths - The number of paths
78     @param br_paths - The array of paths
79 */
80 autoreply define bier_route_add_del
81 {
82   u32 client_index;
83   u32 context;
84   u32 br_bp;
85   u8 br_is_add;
86   u8 br_is_replace;
87   vl_api_bier_table_id_t br_tbl_id;
88   u8 br_n_paths;
89   vl_api_fib_path_t br_paths[br_n_paths];
90 };
91
92 define bier_route_dump
93 {
94   u32 client_index;
95   u32 context;
96   vl_api_bier_table_id_t br_tbl_id;
97 };
98
99 define bier_route_details
100 {
101   u32 context;
102   u16 br_bp;
103   vl_api_bier_table_id_t br_tbl_id;
104   u32 br_n_paths;
105   vl_api_fib_path_t br_paths[br_n_paths];
106 };
107
108 /** \brief BIER Imposition Add
109     @param client_index - opaque cookie to identify the sender
110     @param context - sender context, to match reply w/ request
111     @param bi_tbl_id - The BIER table-id used to forward post encap
112     @param bi_src - The source Bit-position in the encap.
113     @param bi_n_bytes - The number of bytes in the following bit-string.
114                         VPP only supports BSL of 1024 and less, so this is
115                         a u8 field.
116     @param bi_bytes - The bit-string represented as a byte array (MSB first)
117 */
118 define bier_imp_add
119 {
120   u32 client_index;
121   u32 context;
122   vl_api_bier_table_id_t bi_tbl_id;
123   u16 bi_src;
124   u8 bi_n_bytes;
125   u8 bi_bytes[bi_n_bytes];
126 };
127
128 /** \brief Reply for BIER route add / del request
129     @param context - returned sender context, to match reply w/ request
130     @param retval - return code
131     @param bi_index - The index of the created imposition object.
132 */
133 define bier_imp_add_reply
134 {
135   u32 context;
136   i32 retval;
137   u32 bi_index;
138 };
139
140 /** \brief BIER Imposition Del
141     @param client_index - opaque cookie to identify the sender
142     @param context - sender context, to match reply w/ request
143     @param bi_index - The index of the imposition object (as returned
144                       from the ADD)
145 */
146 autoreply define bier_imp_del
147 {
148   u32 client_index;
149   u32 context;
150   u32 bi_index;
151 };
152
153 define bier_imp_dump
154 {
155   u32 client_index;
156   u32 context;
157 };
158
159 define bier_imp_details
160 {
161   u32 context;
162   vl_api_bier_table_id_t bi_tbl_id;
163   u16 bi_src;
164   u8 bi_n_bytes;
165   u8 bi_bytes[bi_n_bytes];
166 };
167
168 /** \brief BIER Disposition Table Add / del route
169     @param client_index - opaque cookie to identify the sender
170     @param context - sender context, to match reply w/ request
171     @param bt_tbl_id - The BIER Disposition table-id.
172 */
173 autoreply define bier_disp_table_add_del
174 {
175   u32 client_index;
176   u32 context;
177   u32 bdt_tbl_id;
178   u8 bdt_is_add;
179 };
180
181 define bier_disp_table_dump
182 {
183   u32 client_index;
184   u32 context;
185 };
186
187 define bier_disp_table_details
188 {
189   u32 context;
190   u32 bdt_tbl_id;
191 };
192
193 /** \brief BIER Disposition Entry Add / del
194     @param client_index - opaque cookie to identify the sender
195     @param context - sender context, to match reply w/ request
196     @param bde_bp - The Bit-position value for the entry, i.e. the sender's
197                     Use 0 for the default (match any source) entry.
198     @param bde_tbl_id - The BIER dispositiontable-id the route is added in
199     @param bde_next_hop_sw_if_index - the nextop interface
200     @param bde_is_add - Is this a route add or delete
201     @param bde_payload_proto - The payload protocol for which the next-hop
202                                is added
203     @param bde_paths - The outgoing paths for the entry
204 */
205 autoreply define bier_disp_entry_add_del
206 {
207   u32 client_index;
208   u32 context;
209   u16 bde_bp;
210   u32 bde_tbl_id;
211   u8 bde_is_add;
212   u8 bde_payload_proto;
213   u8 bde_n_paths;
214   vl_api_fib_path_t bde_paths[bde_n_paths];
215 };
216
217 define bier_disp_entry_dump
218 {
219   u32 client_index;
220   u32 context;
221   u32 bde_tbl_id;
222 };
223
224 define bier_disp_entry_details
225 {
226   u32 context;
227   u16 bde_bp;
228   u32 bde_tbl_id;
229   u8 bde_is_add;
230   u8 bde_payload_proto;
231   u8 bde_n_paths;
232   vl_api_fib_path_t bde_paths[bde_n_paths];
233 };
234
235 /*
236  * Local Variables:
237  * eval: (c-set-style "gnu")
238  * End:
239  */