fib: fib api updates
[vpp.git] / src / vnet / bier / bier.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2016 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /** \file
18
19     This file defines vpp BIER control-plane API messages which are generally
20     called through a shared memory interface.
21 */
22 option version = "1.2.0";
23 import "vnet/fib/fib_types.api";
24
25 /** \brief BIER Table Identifier
26     @param bt_set - The BIER set
27     @param bt_sub_domain - the sud-domain
28     @param bt_bit_header_length - the number of bits in the header length
29 */
30 typeonly define bier_table_id
31 {
32   u8 bt_set;
33   u8 bt_sub_domain;
34   u8 bt_hdr_len_id;
35 };
36
37 /** \brief BIER Table Add / del route
38     @param client_index - opaque cookie to identify the sender
39     @param context - sender context, to match reply w/ request
40     @param bt_tbl_id - The BIER table-id the route is added in
41     @param bt_label - The MPLS label for the table (0 or all ones means not set)
42                       If the label is not set, then it is assumed that non-MPLS
43                       encoding is used.
44     @param bt_is_add - Is this a route add or delete
45 */
46 autoreply define bier_table_add_del
47 {
48   u32 client_index;
49   u32 context;
50   vl_api_bier_table_id_t bt_tbl_id;
51   u32 bt_label;
52   u8 bt_is_add;
53 };
54
55 define bier_table_dump
56 {
57   u32 client_index;
58   u32 context;
59 };
60
61 define bier_table_details
62 {
63   u32 context;
64   u32 bt_label;
65   vl_api_bier_table_id_t bt_tbl_id;
66 };
67
68 /** \brief BIER Route Add / del route
69     @param client_index - opaque cookie to identify the sender
70     @param context - sender context, to match reply w/ request
71     @param br_bp - The Bit-position value
72     @param br_tbl_id - The BIER table-id the route is added in
73     @param br_is_add - Is this a route add or delete
74     @param br_is_replace - Are the paths specified replacing those already
75                            present or are they to be combined.
76                            is_replace = 1 and n_paths=0 implies delete the
77                            route and all paths;
78     @param br_n_paths - The number of paths
79     @param br_paths - The array of paths
80 */
81 typedef bier_route
82 {
83   u32 br_bp;
84   vl_api_bier_table_id_t br_tbl_id;
85   u8 br_n_paths;
86   vl_api_fib_path_t br_paths[br_n_paths];
87 };
88
89 autoreply define bier_route_add_del
90 {
91   u32 client_index;
92   u32 context;
93   u8 br_is_add;
94   u8 br_is_replace;
95   vl_api_bier_route_t br_route;
96 };
97
98 define bier_route_dump
99 {
100   u32 client_index;
101   u32 context;
102   vl_api_bier_table_id_t br_tbl_id;
103 };
104
105 define bier_route_details
106 {
107   u32 context;
108   vl_api_bier_route_t br_route;
109 };
110
111 /** \brief BIER Imposition Add
112     @param client_index - opaque cookie to identify the sender
113     @param context - sender context, to match reply w/ request
114     @param bi_tbl_id - The BIER table-id used to forward post encap
115     @param bi_src - The source Bit-position in the encap.
116     @param bi_n_bytes - The number of bytes in the following bit-string.
117                         VPP only supports BSL of 1024 and less, so this is
118                         a u8 field.
119     @param bi_bytes - The bit-string represented as a byte array (MSB first)
120 */
121 define bier_imp_add
122 {
123   u32 client_index;
124   u32 context;
125   vl_api_bier_table_id_t bi_tbl_id;
126   u16 bi_src;
127   u8 bi_n_bytes;
128   u8 bi_bytes[bi_n_bytes];
129 };
130
131 /** \brief Reply for BIER route add / del request
132     @param context - returned sender context, to match reply w/ request
133     @param retval - return code
134     @param bi_index - The index of the created imposition object.
135 */
136 define bier_imp_add_reply
137 {
138   u32 context;
139   i32 retval;
140   u32 bi_index;
141 };
142
143 /** \brief BIER Imposition Del
144     @param client_index - opaque cookie to identify the sender
145     @param context - sender context, to match reply w/ request
146     @param bi_index - The index of the imposition object (as returned
147                       from the ADD)
148 */
149 autoreply define bier_imp_del
150 {
151   u32 client_index;
152   u32 context;
153   u32 bi_index;
154 };
155
156 define bier_imp_dump
157 {
158   u32 client_index;
159   u32 context;
160 };
161
162 define bier_imp_details
163 {
164   u32 context;
165   vl_api_bier_table_id_t bi_tbl_id;
166   u16 bi_src;
167   u8 bi_n_bytes;
168   u8 bi_bytes[bi_n_bytes];
169 };
170
171 /** \brief BIER Disposition Table Add / del route
172     @param client_index - opaque cookie to identify the sender
173     @param context - sender context, to match reply w/ request
174     @param bt_tbl_id - The BIER Disposition table-id.
175 */
176 autoreply define bier_disp_table_add_del
177 {
178   u32 client_index;
179   u32 context;
180   u32 bdt_tbl_id;
181   u8 bdt_is_add;
182 };
183
184 define bier_disp_table_dump
185 {
186   u32 client_index;
187   u32 context;
188 };
189
190 define bier_disp_table_details
191 {
192   u32 context;
193   u32 bdt_tbl_id;
194 };
195
196 /** \brief BIER Disposition Entry Add / del
197     @param client_index - opaque cookie to identify the sender
198     @param context - sender context, to match reply w/ request
199     @param bde_bp - The Bit-position value for the entry, i.e. the sender's
200                     Use 0 for the default (match any source) entry.
201     @param bde_tbl_id - The BIER disposition table-id the route is added in
202     @param bde_next_hop_sw_if_index - the next hop interface
203     @param bde_is_add - Is this a route add or delete
204     @param bde_payload_proto - The payload protocol for which the next-hop
205                                is added
206     @param bde_paths - The outgoing paths for the entry
207 */
208 autoreply define bier_disp_entry_add_del
209 {
210   u32 client_index;
211   u32 context;
212   u16 bde_bp;
213   u32 bde_tbl_id;
214   u8 bde_is_add;
215   u8 bde_payload_proto;
216   u8 bde_n_paths;
217   vl_api_fib_path_t bde_paths[bde_n_paths];
218 };
219
220 define bier_disp_entry_dump
221 {
222   u32 client_index;
223   u32 context;
224   u32 bde_tbl_id;
225 };
226
227 define bier_disp_entry_details
228 {
229   u32 context;
230   u16 bde_bp;
231   u32 bde_tbl_id;
232   u8 bde_is_add;
233   u8 bde_payload_proto;
234   u8 bde_n_paths;
235   vl_api_fib_path_t bde_paths[bde_n_paths];
236 };
237
238 /*
239  * Local Variables:
240  * eval: (c-set-style "gnu")
241  * End:
242  */