sr: new messages created to return packet statistics in sr localsid details
[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
199 /** \brief Dump the list of SR LocalSIDs along with packet statistics
200     @param client_index - opaque cookie to identify the sender
201     @param context - sender context, to match reply w/ request
202 */
203 define sr_localsids_with_packet_stats_dump
204 {
205   u32 client_index;
206   u32 context;
207   option status="in_progress";
208 };
209
210 define sr_localsids_with_packet_stats_details
211 {
212   u32 context;
213   vl_api_ip6_address_t addr;
214   bool end_psp;
215   vl_api_sr_behavior_t behavior;
216   u32 fib_table;
217   u32 vlan_index;
218   vl_api_address_t xconnect_nh_addr;
219   u32 xconnect_iface_or_vrf_table;
220   u64 good_traffic_bytes;
221   u64 good_traffic_pkt_count;
222   u64 bad_traffic_bytes;
223   u64 bad_traffic_pkt_count;
224   option status="in_progress";
225 };
226
227
228
229 /** \brief Dump the list of SR policies
230     @param client_index - opaque cookie to identify the sender
231     @param context - sender context, to match reply w/ request
232 */
233 define sr_policies_dump
234 {
235   u32 client_index;
236   u32 context;
237 };
238
239
240 define sr_policies_details
241 {
242   u32 context;
243   vl_api_ip6_address_t bsid;
244   bool is_spray;
245   bool is_encap;
246   u32 fib_table;
247   u8 num_sid_lists;
248   vl_api_srv6_sid_list_t sid_lists[num_sid_lists];
249 };
250
251 /** \brief Dump the list of SR policies along with actual segment list index on VPP
252     @param client_index - opaque cookie to identify the sender
253     @param context - sender context, to match reply w/ request
254 */
255 define sr_policies_with_sl_index_dump
256 {
257   u32 client_index;
258   u32 context;
259   option status="in_progress";
260 };
261
262
263 define sr_policies_with_sl_index_details
264 {
265   u32 context;
266   vl_api_ip6_address_t bsid;
267   bool is_spray;
268   bool is_encap;
269   u32 fib_table;
270   u8 num_sid_lists;
271   vl_api_srv6_sid_list_with_sl_index_t sid_lists[num_sid_lists];
272   option status="in_progress";
273 };
274
275 /** \brief Dump the steering policies
276     @param client_index - opaque cookie to identify the sender
277     @param context - sender context, to match reply w/ request
278 */
279 define sr_steering_pol_dump
280 {
281   u32 client_index;
282   u32 context;
283 };
284
285 define sr_steering_pol_details
286 {
287   u32 context;
288   vl_api_sr_steer_t traffic_type;
289   u32 fib_table;
290   vl_api_prefix_t prefix;
291   vl_api_interface_index_t sw_if_index;
292   vl_api_ip6_address_t bsid;
293 };
294
295 /*
296  * fd.io coding-style-patch-verification: OFF
297  * Local Variables:
298  * eval: (c-set-style "gnu")
299  * End:
300  */