sr: new messages created to return sl index for segment lists in a sr policy
[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.0.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 /** \brief IPv6 SR policy deletion
113     @param client_index - opaque cookie to identify the sender
114     @param context - sender context, to match reply w/ request
115     @param bsid is the bindingSID of the SR Policy
116     @param index is the index of the SR policy
117 */
118 autoreply define sr_policy_del
119 {
120   u32 client_index;
121   u32 context;
122   vl_api_ip6_address_t bsid_addr;
123   u32 sr_policy_index;
124 };
125
126 /** \brief IPv6 SR Set SRv6 encapsulation source
127     @param client_index - opaque cookie to identify the sender
128     @param context - sender context, to match reply w/ request
129     @param bsid is the bindingSID of the SR Policy
130     @param index is the index of the SR policy
131 */
132 autoreply define sr_set_encap_source
133 {
134   u32 client_index;
135   u32 context;
136   vl_api_ip6_address_t encaps_source;
137 };
138
139 /** \brief IPv6 SR Set SRv6 encapsulation hop-limit
140     @param client_index - opaque cookie to identify the sender
141     @param context - sender context, to match reply w/ request
142     @param hop_limit is the hop-limit value to set
143 */
144 autoreply define sr_set_encap_hop_limit
145 {
146   u32 client_index;
147   u32 context;
148   u8 hop_limit;
149 };
150
151 /** \brief IPv6 SR steering add/del
152     @param client_index - opaque cookie to identify the sender
153     @param context - sender context, to match reply w/ request
154     @param is_del
155     @param bsid is the bindingSID of the SR Policy (alt to sr_policy_index)
156     @param sr_policy is the index of the SR Policy (alt to bsid)
157     @param table_id is the VRF where to install the FIB entry for the BSID
158     @param prefix is the IPv4/v6 address for L3 traffic type
159     @param mask_width is the mask for L3 traffic type
160     @param sw_if_index is the incoming interface for L2 traffic
161     @param traffic_type describes the type of traffic
162 */
163 autoreply define sr_steering_add_del
164 {
165   u32 client_index;
166   u32 context;
167   bool is_del [default=false];
168   vl_api_ip6_address_t bsid_addr;
169   u32 sr_policy_index;
170   u32 table_id;
171   vl_api_prefix_t prefix;
172   vl_api_interface_index_t sw_if_index;
173   vl_api_sr_steer_t traffic_type;
174 };
175
176 /** \brief Dump the list of SR LocalSIDs
177     @param client_index - opaque cookie to identify the sender
178     @param context - sender context, to match reply w/ request
179 */
180 define sr_localsids_dump
181 {
182   u32 client_index;
183   u32 context;
184 };
185
186 define sr_localsids_details
187 {
188   u32 context;
189   vl_api_ip6_address_t addr;
190   bool end_psp;
191   vl_api_sr_behavior_t behavior;
192   u32 fib_table;
193   u32 vlan_index;
194   vl_api_address_t xconnect_nh_addr;
195   u32 xconnect_iface_or_vrf_table;
196 };
197
198 /** \brief Dump the list of SR policies
199     @param client_index - opaque cookie to identify the sender
200     @param context - sender context, to match reply w/ request
201 */
202 define sr_policies_dump
203 {
204   u32 client_index;
205   u32 context;
206 };
207
208
209 define sr_policies_details
210 {
211   u32 context;
212   vl_api_ip6_address_t bsid;
213   bool is_spray;
214   bool is_encap;
215   u32 fib_table;
216   u8 num_sid_lists;
217   vl_api_srv6_sid_list_t sid_lists[num_sid_lists];
218 };
219
220 /** \brief Dump the list of SR policies along with actual segment list index on VPP
221     @param client_index - opaque cookie to identify the sender
222     @param context - sender context, to match reply w/ request
223 */
224 define sr_policies_with_sl_index_dump
225 {
226   u32 client_index;
227   u32 context;
228   option status="in_progress";
229 };
230
231
232 define sr_policies_with_sl_index_details
233 {
234   u32 context;
235   vl_api_ip6_address_t bsid;
236   bool is_spray;
237   bool is_encap;
238   u32 fib_table;
239   u8 num_sid_lists;
240   vl_api_srv6_sid_list_with_sl_index_t sid_lists[num_sid_lists];
241   option status="in_progress";
242 };
243
244 /** \brief Dump the steering policies
245     @param client_index - opaque cookie to identify the sender
246     @param context - sender context, to match reply w/ request
247 */
248 define sr_steering_pol_dump
249 {
250   u32 client_index;
251   u32 context;
252 };
253
254 define sr_steering_pol_details
255 {
256   u32 context;
257   vl_api_sr_steer_t traffic_type;
258   u32 fib_table;
259   vl_api_prefix_t prefix;
260   vl_api_interface_index_t sw_if_index;
261   vl_api_ip6_address_t bsid;
262 };
263
264 /*
265  * fd.io coding-style-patch-verification: OFF
266  * Local Variables:
267  * eval: (c-set-style "gnu")
268  * End:
269  */