api: sr - Mark old message versions as deprecated
[vpp.git] / src / vnet / srv6 / sr.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2015-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 option version = "2.1.0";
18
19 import "vnet/interface_types.api";
20 import "vnet/ip/ip_types.api";
21 import "vnet/srv6/sr_types.api";
22
23
24 typedef srv6_sid_list
25 {
26   u8 num_sids;
27   u32 weight;
28   vl_api_ip6_address_t sids[16];
29 };
30
31 typedef srv6_sid_list_with_sl_index
32 {
33   u8 num_sids;
34   u32 weight;
35   u32 sl_index;
36   vl_api_ip6_address_t sids[16];
37 };
38
39 /** \brief IPv6 SR LocalSID add/del request
40     @param client_index - opaque cookie to identify the sender
41     @param context - sender context, to match reply w/ request
42     @param is_del Boolean of whether its a delete instruction
43     @param localsid_addr IPv6 address of the localsid
44     @param end_psp Boolean of whether decapsulation is allowed in this function
45     @param behavior Type of behavior (function) for this localsid
46     @param sw_if_index Only for L2/L3 xconnect. OIF. In VRF variant the
47      fib_table. Default:0xffffffff
48     @param vlan_index Only for L2 xconnect. Outgoing VLAN tag.
49     @param fib_table  FIB table in which we should install the localsid entry
50     @param nh_addr Next Hop IPv46 address. Only for L2/L3 xconnect.
51 */
52 autoreply define sr_localsid_add_del
53 {
54   u32 client_index;
55   u32 context;
56   bool is_del [default=false];
57   vl_api_ip6_address_t localsid;
58   bool end_psp;
59   vl_api_sr_behavior_t behavior;
60   vl_api_interface_index_t sw_if_index [default=0xffffffff];
61   u32 vlan_index;
62   u32 fib_table;
63   vl_api_address_t nh_addr;
64 };
65
66 /** \brief IPv6 SR policy add
67     @param client_index - opaque cookie to identify the sender
68     @param context - sender context, to match reply w/ request
69     @param bsid is the bindingSID of the SR Policy
70     @param weight is the weight of the sid list. optional.
71     @param is_encap is the behavior of the SR policy. (0.SRH insert // 1.Encapsulation)
72     @param is_spray is the type of the SR policy. (0.Default // 1.Spray)
73     @param fib_table is the VRF where to install the FIB entry for the BSID
74     @param sids is a srv6_sid_list object
75 */
76 autoreply define sr_policy_add
77 {
78   u32 client_index;
79   u32 context;
80   vl_api_ip6_address_t bsid_addr;
81   u32 weight;
82   bool is_encap;
83   bool is_spray;
84   u32 fib_table;
85   vl_api_srv6_sid_list_t sids;
86 };
87
88 /** \brief IPv6 SR policy modification
89     @param client_index - opaque cookie to identify the sender
90     @param context - sender context, to match reply w/ request
91     @param bsid is the bindingSID of the SR Policy
92     @param sr_policy_index is the index of the SR policy
93     @param fib_table is the VRF where to install the FIB entry for the BSID
94     @param operation is the operation to perform (among the top ones)
95     @param sl_index is the index of the Segment List to modify/delete
96     @param weight is the weight of the sid list. optional.
97     @param sids is a srv6_sid_list object
98 */
99 autoreply define sr_policy_mod
100 {
101   u32 client_index;
102   u32 context;
103   vl_api_ip6_address_t bsid_addr;
104   u32 sr_policy_index;
105   u32 fib_table;
106   vl_api_sr_policy_op_t operation;
107   u32 sl_index;
108   u32 weight;
109   vl_api_srv6_sid_list_t sids;
110 };
111
112 enum sr_policy_type : u8
113 {
114   SR_API_POLICY_TYPE_DEFAULT = 0,
115   SR_API_POLICY_TYPE_SPRAY = 1,
116   SR_API_POLICY_TYPE_TEF = 2,
117 };
118
119 /** \brief IPv6 SR policy add
120     @param client_index - opaque cookie to identify the sender
121     @param context - sender context, to match reply w/ request
122     @param bsid is the bindingSID of the SR Policy
123     @param weight is the weight of the sid list. optional.
124     @param is_encap is the behavior of the SR policy. (0.SRH insert // 1.Encapsulation)
125     @param type is the SR policy param. (0.Default // 1.Spray // 2.Tef)
126     @param fib_table is the VRF where to install the FIB entry for the BSID
127     @param sids is a srv6_sid_list object
128     @param encap_src is a encaps IPv6 source addr. optional.
129 */
130 autoreply define sr_policy_add_v2
131 {
132   u32 client_index;
133   u32 context;
134   vl_api_ip6_address_t bsid_addr;
135   u32 weight;
136   bool is_encap;
137   vl_api_sr_policy_type_t type [default=0x0];
138   u32 fib_table;
139   vl_api_srv6_sid_list_t sids;
140   vl_api_ip6_address_t encap_src;
141   option status="in_progress";
142 };
143
144 /** \brief IPv6 SR policy modification
145     @param client_index - opaque cookie to identify the sender
146     @param context - sender context, to match reply w/ request
147     @param bsid is the bindingSID of the SR Policy
148     @param sr_policy_index is the index of the SR policy
149     @param fib_table is the VRF where to install the FIB entry for the BSID
150     @param operation is the operation to perform (among the top ones)
151     @param sl_index is the index of the Segment List to modify/delete
152     @param weight is the weight of the sid list. optional.
153     @param sids is a srv6_sid_list object
154     @param encap_src is a encaps IPv6 source addr. optional.
155 */
156 autoreply define sr_policy_mod_v2
157 {
158   u32 client_index;
159   u32 context;
160   vl_api_ip6_address_t bsid_addr;
161   u32 sr_policy_index;
162   u32 fib_table;
163   vl_api_sr_policy_op_t operation;
164   u32 sl_index;
165   u32 weight;
166   vl_api_srv6_sid_list_t sids;
167   vl_api_ip6_address_t encap_src;
168   option status="in_progress";
169 };
170
171 /** \brief IPv6 SR policy deletion
172     @param client_index - opaque cookie to identify the sender
173     @param context - sender context, to match reply w/ request
174     @param bsid is the bindingSID of the SR Policy
175     @param index is the index of the SR policy
176 */
177 autoreply define sr_policy_del
178 {
179   u32 client_index;
180   u32 context;
181   vl_api_ip6_address_t bsid_addr;
182   u32 sr_policy_index;
183 };
184
185 /** \brief IPv6 SR Set SRv6 encapsulation source
186     @param client_index - opaque cookie to identify the sender
187     @param context - sender context, to match reply w/ request
188     @param bsid is the bindingSID of the SR Policy
189     @param index is the index of the SR policy
190 */
191 autoreply define sr_set_encap_source
192 {
193   u32 client_index;
194   u32 context;
195   vl_api_ip6_address_t encaps_source;
196 };
197
198 /** \brief IPv6 SR Set SRv6 encapsulation hop-limit
199     @param client_index - opaque cookie to identify the sender
200     @param context - sender context, to match reply w/ request
201     @param hop_limit is the hop-limit value to set
202 */
203 autoreply define sr_set_encap_hop_limit
204 {
205   u32 client_index;
206   u32 context;
207   u8 hop_limit;
208 };
209
210 /** \brief IPv6 SR steering add/del
211     @param client_index - opaque cookie to identify the sender
212     @param context - sender context, to match reply w/ request
213     @param is_del
214     @param bsid is the bindingSID of the SR Policy (alt to sr_policy_index)
215     @param sr_policy is the index of the SR Policy (alt to bsid)
216     @param table_id is the VRF where to install the FIB entry for the BSID
217     @param prefix is the IPv4/v6 address for L3 traffic type
218     @param mask_width is the mask for L3 traffic type
219     @param sw_if_index is the incoming interface for L2 traffic
220     @param traffic_type describes the type of traffic
221 */
222 autoreply define sr_steering_add_del
223 {
224   u32 client_index;
225   u32 context;
226   bool is_del [default=false];
227   vl_api_ip6_address_t bsid_addr;
228   u32 sr_policy_index;
229   u32 table_id;
230   vl_api_prefix_t prefix;
231   vl_api_interface_index_t sw_if_index;
232   vl_api_sr_steer_t traffic_type;
233 };
234
235 /** \brief Dump the list of SR LocalSIDs
236     @param client_index - opaque cookie to identify the sender
237     @param context - sender context, to match reply w/ request
238 */
239 define sr_localsids_dump
240 {
241   u32 client_index;
242   u32 context;
243 };
244
245 define sr_localsids_details
246 {
247   u32 context;
248   vl_api_ip6_address_t addr;
249   bool end_psp;
250   vl_api_sr_behavior_t behavior;
251   u32 fib_table;
252   u32 vlan_index;
253   vl_api_address_t xconnect_nh_addr;
254   u32 xconnect_iface_or_vrf_table;
255 };
256
257
258 /** \brief Dump the list of SR LocalSIDs along with packet statistics
259     @param client_index - opaque cookie to identify the sender
260     @param context - sender context, to match reply w/ request
261 */
262 define sr_localsids_with_packet_stats_dump
263 {
264   u32 client_index;
265   u32 context;
266   option status="in_progress";
267 };
268
269 define sr_localsids_with_packet_stats_details
270 {
271   u32 context;
272   vl_api_ip6_address_t addr;
273   bool end_psp;
274   vl_api_sr_behavior_t behavior;
275   u32 fib_table;
276   u32 vlan_index;
277   vl_api_address_t xconnect_nh_addr;
278   u32 xconnect_iface_or_vrf_table;
279   u64 good_traffic_bytes;
280   u64 good_traffic_pkt_count;
281   u64 bad_traffic_bytes;
282   u64 bad_traffic_pkt_count;
283   option status="in_progress";
284 };
285
286
287
288 /** \brief Dump the list of SR policies
289     @param client_index - opaque cookie to identify the sender
290     @param context - sender context, to match reply w/ request
291 */
292 define sr_policies_dump
293 {
294   option deprecated;
295
296   u32 client_index;
297   u32 context;
298 };
299
300
301 define sr_policies_details
302 {
303   u32 context;
304   vl_api_ip6_address_t bsid;
305   bool is_spray;
306   bool is_encap;
307   u32 fib_table;
308   u8 num_sid_lists;
309   vl_api_srv6_sid_list_t sid_lists[num_sid_lists];
310 };
311
312 /** \brief Dump the list of SR policies v2
313     @param client_index - opaque cookie to identify the sender
314     @param context - sender context, to match reply w/ request
315 */
316 define sr_policies_v2_dump
317 {
318   u32 client_index;
319   u32 context;
320 };
321
322 define sr_policies_v2_details
323 {
324   u32 context;
325   vl_api_ip6_address_t bsid;
326   vl_api_ip6_address_t encap_src;
327   vl_api_sr_policy_type_t type;
328   bool is_encap;
329   u32 fib_table;
330   u8 num_sid_lists;
331   vl_api_srv6_sid_list_t sid_lists[num_sid_lists];
332   option in_progress;
333 };
334
335 /** \brief Dump the list of SR policies along with actual segment list index on VPP
336     @param client_index - opaque cookie to identify the sender
337     @param context - sender context, to match reply w/ request
338 */
339 define sr_policies_with_sl_index_dump
340 {
341   u32 client_index;
342   u32 context;
343   option status="in_progress";
344 };
345
346
347 define sr_policies_with_sl_index_details
348 {
349   u32 context;
350   vl_api_ip6_address_t bsid;
351   bool is_spray;
352   bool is_encap;
353   u32 fib_table;
354   u8 num_sid_lists;
355   vl_api_srv6_sid_list_with_sl_index_t sid_lists[num_sid_lists];
356   option status="in_progress";
357 };
358
359 /** \brief Dump the steering policies
360     @param client_index - opaque cookie to identify the sender
361     @param context - sender context, to match reply w/ request
362 */
363 define sr_steering_pol_dump
364 {
365   u32 client_index;
366   u32 context;
367 };
368
369 define sr_steering_pol_details
370 {
371   u32 context;
372   vl_api_sr_steer_t traffic_type;
373   u32 fib_table;
374   vl_api_prefix_t prefix;
375   vl_api_interface_index_t sw_if_index;
376   vl_api_ip6_address_t bsid;
377 };
378
379 /*
380  * fd.io coding-style-patch-verification: OFF
381  * Local Variables:
382  * eval: (c-set-style "gnu")
383  * End:
384  */