bfd: fix bfd udp error enum incompatibility
[vpp.git] / src / vnet / bfd / bfd.api
1 /*
2  * Copyright (c) 2015-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 option version = "2.0.0";
17
18 import "vnet/interface_types.api";
19 import "vnet/ip/ip_types.api";
20
21 enum bfd_state {
22   BFD_STATE_API_ADMIN_DOWN = 0,
23   BFD_STATE_API_DOWN = 1,
24   BFD_STATE_API_INIT = 2,
25   BFD_STATE_API_UP = 3,
26 };
27
28 /** \brief Set BFD echo source
29     @param client_index - opaque cookie to identify the sender
30     @param context - sender context, to match reply w/ request
31     @param sw_if_index - interface to use as echo source
32 */
33 autoreply define bfd_udp_set_echo_source
34 {
35   u32 client_index;
36   u32 context;
37   vl_api_interface_index_t sw_if_index;
38 };
39
40 /** \brief Delete BFD echo source
41     @param client_index - opaque cookie to identify the sender
42     @param context - sender context, to match reply w/ request
43 */
44 autoreply define bfd_udp_del_echo_source
45 {
46   u32 client_index;
47   u32 context;
48 };
49
50 /** \brief Get BFD echo source
51     @param client_index - opaque cookie to identify the sender
52     @param context - sender context, to match reply w/ request
53 */
54 define bfd_udp_get_echo_source
55 {
56   u32 client_index;
57   u32 context;
58 };
59
60 /** \brief Get BFD echo source reply
61     @param context - sender context, to match reply w/ request
62     @param retval - return code
63     @param sw_if_index - interface to use as echo source
64     @param is_set - non-zero if set
65     @param have_usable_ip4 - non-zero if have usable IPv4 address
66     @param ip4_addr - IPv4 address
67     @param have_usable_ip6 - non-zero if have usable IPv6 address
68     @param ip6_addr - IPv6 address
69 */
70 define bfd_udp_get_echo_source_reply
71 {
72   u32 context;
73   i32 retval;
74   vl_api_interface_index_t sw_if_index;
75   bool is_set;
76   bool have_usable_ip4;
77   vl_api_ip4_address_t ip4_addr;
78   bool have_usable_ip6;
79   vl_api_ip6_address_t ip6_addr;
80 };
81
82 /** \brief Add UDP BFD session on interface
83     @param client_index - opaque cookie to identify the sender
84     @param context - sender context, to match reply w/ request
85     @param sw_if_index - sw index of the interface
86     @param desired_min_tx - desired min transmit interval (microseconds)
87     @param required_min_rx - required min receive interval (microseconds)
88     @param local_addr - local address
89     @param peer_addr - peer address
90     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
91     @param detect_mult - detect multiplier (# of packets missed before connection goes down)
92     @param is_authenticated - non-zero if authentication is required
93     @param bfd_key_id - key id sent out in BFD packets (if is_authenticated)
94     @param conf_key_id - id of already configured key (if is_authenticated)
95 */
96 autoreply define bfd_udp_add
97 {
98   u32 client_index;
99   u32 context;
100   vl_api_interface_index_t sw_if_index;
101   u32 desired_min_tx;
102   u32 required_min_rx;
103   vl_api_address_t local_addr;
104   vl_api_address_t peer_addr;
105   u8 detect_mult;
106   bool is_authenticated;
107   u8 bfd_key_id;
108   u32 conf_key_id;
109 };
110 define bfd_udp_upd
111 {
112   u32 client_index;
113   u32 context;
114   vl_api_interface_index_t sw_if_index;
115   u32 desired_min_tx;
116   u32 required_min_rx;
117   vl_api_address_t local_addr;
118   vl_api_address_t peer_addr;
119   u8 detect_mult;
120   bool is_authenticated;
121   u8 bfd_key_id;
122   u32 conf_key_id;
123 };
124 define bfd_udp_upd_reply
125 {
126   u32 context;
127   i32 retval;
128   u32 stats_index;
129 };
130
131 /** \brief Modify UDP BFD session on interface
132     @param client_index - opaque cookie to identify the sender
133     @param context - sender context, to match reply w/ request
134     @param sw_if_index - sw index of the interface
135     @param desired_min_tx - desired min transmit interval (microseconds)
136     @param required_min_rx - required min receive interval (microseconds)
137     @param local_addr - local address
138     @param peer_addr - peer address
139     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
140     @param detect_mult - detect multiplier (# of packets missed before connection goes down)
141 */
142 autoreply define bfd_udp_mod
143 {
144   u32 client_index;
145   u32 context;
146   vl_api_interface_index_t sw_if_index;
147   u32 desired_min_tx;
148   u32 required_min_rx;
149   vl_api_address_t local_addr;
150   vl_api_address_t peer_addr;
151   u8 detect_mult;
152 };
153
154 /** \brief Delete UDP BFD session on interface
155     @param client_index - opaque cookie to identify the sender
156     @param context - sender context, to match reply w/ request
157     @param sw_if_index - sw index of the interface
158     @param local_addr - local address
159     @param peer_addr - peer address
160     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
161 */
162 autoreply define bfd_udp_del
163 {
164   u32 client_index;
165   u32 context;
166   vl_api_interface_index_t sw_if_index;
167   vl_api_address_t local_addr;
168   vl_api_address_t peer_addr;
169 };
170
171 /** \brief Get all BFD sessions
172     @param client_index - opaque cookie to identify the sender
173     @param context - sender context, to match reply w/ request
174 */
175 define bfd_udp_session_dump
176 {
177   u32 client_index;
178   u32 context;
179 };
180
181 /** \brief BFD session details structure
182     @param context - sender context, to match reply w/ request
183     @param sw_if_index - sw index of the interface
184     @param local_addr - local address
185     @param peer_addr - peer address
186     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
187     @param state - session state
188     @param is_authenticated - non-zero if authentication in-use, zero otherwise
189     @param bfd_key_id - ID of key currently in-use if auth is on
190     @param conf_key_id - configured key ID for this session
191     @param required_min_rx - required min receive interval (microseconds)
192     @param desired_min_tx - desired min transmit interval (microseconds)
193     @param detect_mult - detect multiplier (# of packets missed before connection goes down)
194 */
195 define bfd_udp_session_details
196 {
197   u32 context;
198   vl_api_interface_index_t sw_if_index;
199   vl_api_address_t local_addr;
200   vl_api_address_t peer_addr;
201   vl_api_bfd_state_t state;
202   bool is_authenticated;
203   u8 bfd_key_id;
204   u32 conf_key_id;
205   u32 required_min_rx;
206   u32 desired_min_tx;
207   u8 detect_mult;
208 };
209
210 /** \brief Set flags of BFD UDP session
211     @param client_index - opaque cookie to identify the sender
212     @param context - sender context, to match reply w/ request
213     @param sw_if_index - sw index of the interface
214     @param local_addr - local address
215     @param peer_addr - peer address
216     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
217     @param flags - set the admin state, 1 = up, 0 = down
218 */
219 autoreply define bfd_udp_session_set_flags
220 {
221   u32 client_index;
222   u32 context;
223   vl_api_interface_index_t sw_if_index;
224   vl_api_address_t local_addr;
225   vl_api_address_t peer_addr;
226   vl_api_if_status_flags_t flags;
227 };
228
229 service {
230   rpc want_bfd_events returns want_bfd_events_reply
231     events bfd_udp_session_event;
232 };
233
234 /** \brief Register for BFD events
235     @param client_index - opaque cookie to identify the sender
236     @param context - sender context, to match reply w/ request
237     @param enable_disable - 1 => register for events, 0 => cancel registration
238     @param pid - sender's pid
239 */
240 autoreply define want_bfd_events
241 {
242   u32 client_index;
243   u32 context;
244   bool enable_disable;
245   u32 pid;
246 };
247
248 define bfd_udp_session_event
249 {
250   u32 client_index;
251   u32 pid;
252   vl_api_interface_index_t sw_if_index;
253   vl_api_address_t local_addr;
254   vl_api_address_t peer_addr;
255   vl_api_bfd_state_t state;
256   bool is_authenticated;
257   u8 bfd_key_id;
258   u32 conf_key_id;
259   u32 required_min_rx;
260   u32 desired_min_tx;
261   u8 detect_mult;
262 };
263
264 /** \brief BFD UDP - add/replace key to configuration
265     @param client_index - opaque cookie to identify the sender
266     @param context - sender context, to match reply w/ request
267     @param conf_key_id - key ID to add/replace/delete
268     @param key_len - length of key (must be non-zero)
269     @param auth_type - authentication type (RFC 5880/4.1/Auth Type)
270     @param key - key data
271 */
272 autoreply define bfd_auth_set_key
273 {
274   u32 client_index;
275   u32 context;
276   u32 conf_key_id;
277   u8 key_len;
278   u8 auth_type;
279   u8 key[20];
280 };
281
282 /** \brief BFD UDP - delete key from configuration
283     @param client_index - opaque cookie to identify the sender
284     @param context - sender context, to match reply w/ request
285     @param conf_key_id - key ID to add/replace/delete
286     @param key_len - length of key (must be non-zero)
287     @param key - key data
288 */
289 autoreply define bfd_auth_del_key
290 {
291   u32 client_index;
292   u32 context;
293   u32 conf_key_id;
294 };
295
296 /** \brief Get a list of configured authentication keys
297     @param client_index - opaque cookie to identify the sender
298     @param context - sender context, to match reply w/ request
299 */
300 define bfd_auth_keys_dump
301 {
302   u32 client_index;
303   u32 context;
304 };
305
306 /** \brief BFD authentication key details
307     @param context - sender context, to match reply w/ request
308     @param conf_key_id - configured key ID
309     @param use_count - how many BFD sessions currently use this key
310     @param auth_type - authentication type (RFC 5880/4.1/Auth Type)
311 */
312 define bfd_auth_keys_details
313 {
314   u32 context;
315   u32 conf_key_id;
316   u32 use_count;
317   u8 auth_type;
318 };
319
320 /** \brief BFD UDP - activate/change authentication
321     @param client_index - opaque cookie to identify the sender
322     @param context - sender context, to match reply w/ request
323     @param sw_if_index - sw index of the interface
324     @param local_addr - local address
325     @param peer_addr - peer address
326     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
327     @param is_delayed - change is applied once peer applies the change (on first received packet with this auth)
328     @param bfd_key_id - key id sent out in BFD packets
329     @param conf_key_id - id of already configured key
330 */
331 autoreply define bfd_udp_auth_activate
332 {
333   u32 client_index;
334   u32 context;
335   vl_api_interface_index_t sw_if_index;
336   vl_api_address_t local_addr;
337   vl_api_address_t peer_addr;
338   bool is_delayed;
339   u8 bfd_key_id;
340   u32 conf_key_id;
341 };
342
343 /** \brief BFD UDP - deactivate authentication
344     @param client_index - opaque cookie to identify the sender
345     @param context - sender context, to match reply w/ request
346     @param sw_if_index - sw index of the interface
347     @param local_addr - local address
348     @param peer_addr - peer address
349     @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
350     @param is_delayed - change is applied once peer applies the change (on first received non-authenticated packet)
351 */
352 autoreply define bfd_udp_auth_deactivate
353 {
354   u32 client_index;
355   u32 context;
356   vl_api_interface_index_t sw_if_index;
357   vl_api_address_t local_addr;
358   vl_api_address_t peer_addr;
359   bool is_delayed;
360 };
361
362 /* must be compatible with bfd_error_t */
363 counters bfd_udp {
364   none {
365     severity info;
366     type counter64;
367     units "packets";
368     description "OK";
369   };
370   bad {
371     severity error;
372     type counter64;
373     units "packets";
374     description "bad packet";
375   };
376   disabled {
377     severity error;
378     type counter64;
379     units "packets";
380     description "bfd packets received on disabled interfaces";
381   };
382   version {
383     severity error;
384     type counter64;
385     units "packets";
386     description "version";
387   };
388   length {
389     severity error;
390     type counter64;
391     units "packets";
392     description "too short";
393   };
394   detect_multi {
395     severity error;
396     type counter64;
397     units "packets";
398     description "detect-multi";
399   };
400   multi_point {
401     severity error;
402     type counter64;
403     units "packets";
404     description "multi-point";
405   };
406   my_disc {
407     severity error;
408     type counter64;
409     units "packets";
410     description "my-disc";
411   };
412   your_disc {
413     severity error;
414     type counter64;
415     units "packets";
416     description "your-disc";
417   };
418   admin_down {
419     severity error;
420     type counter64;
421     units "packets";
422     description "session admin-down";
423   };
424   no_session {
425     severity error;
426     type counter64;
427     units "packets";
428     description "no-session";
429   };
430   failed_verification {
431     severity error;
432     type counter64;
433     units "packets";
434     description "failed-verification";
435   };
436   src_mismatch {
437     severity error;
438     type counter64;
439     units "packets";
440     description "src-mismatch";
441   };
442   dst_mismatch {
443     severity error;
444     type counter64;
445     units "packets";
446     description "dst-mismatch";
447   };
448   ttl {
449     severity error;
450     type counter64;
451     units "packets";
452     description "ttl";
453   };
454 };
455
456 paths {
457   "/err/bfd-udp4-input" "bfd";
458   "/err/bfd-udp6-input" "bfd";
459   "/err/bfd-udp4-echo-input" "bfd";
460   "/err/bfd-udp6-echo-input" "bfd";
461 };
462
463 /*
464  * Local Variables:
465  * eval: (c-set-style "gnu")
466  * End:
467  */