]> git.proxmox.com Git - mirror_frr.git/blob - bfdd/bfdd_nb.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / bfdd / bfdd_nb.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * BFD daemon northbound implementation.
4 *
5 * Copyright (C) 2019 Network Device Education Foundation, Inc. ("NetDEF")
6 * Rafael Zalamena
7 */
8
9 #include <zebra.h>
10
11 #include "lib/log.h"
12 #include "lib/northbound.h"
13
14 #include "bfdd_nb.h"
15
16 /* clang-format off */
17 const struct frr_yang_module_info frr_bfdd_info = {
18 .name = "frr-bfdd",
19 .nodes = {
20 {
21 .xpath = "/frr-bfdd:bfdd/bfd",
22 .cbs = {
23 .create = bfdd_bfd_create,
24 .destroy = bfdd_bfd_destroy,
25 .cli_show = bfd_cli_show_header,
26 .cli_show_end = bfd_cli_show_header_end,
27 }
28 },
29 {
30 .xpath = "/frr-bfdd:bfdd/bfd/profile",
31 .cbs = {
32 .create = bfdd_bfd_profile_create,
33 .destroy = bfdd_bfd_profile_destroy,
34 .cli_show = bfd_cli_show_profile,
35 .cli_show_end = bfd_cli_show_peer_end,
36 }
37 },
38 {
39 .xpath = "/frr-bfdd:bfdd/bfd/profile/detection-multiplier",
40 .cbs = {
41 .modify = bfdd_bfd_profile_detection_multiplier_modify,
42 .cli_show = bfd_cli_show_mult,
43 }
44 },
45 {
46 .xpath = "/frr-bfdd:bfdd/bfd/profile/desired-transmission-interval",
47 .cbs = {
48 .modify = bfdd_bfd_profile_desired_transmission_interval_modify,
49 .cli_show = bfd_cli_show_tx,
50 }
51 },
52 {
53 .xpath = "/frr-bfdd:bfdd/bfd/profile/required-receive-interval",
54 .cbs = {
55 .modify = bfdd_bfd_profile_required_receive_interval_modify,
56 .cli_show = bfd_cli_show_rx,
57 }
58 },
59 {
60 .xpath = "/frr-bfdd:bfdd/bfd/profile/administrative-down",
61 .cbs = {
62 .modify = bfdd_bfd_profile_administrative_down_modify,
63 .cli_show = bfd_cli_show_shutdown,
64 }
65 },
66 {
67 .xpath = "/frr-bfdd:bfdd/bfd/profile/passive-mode",
68 .cbs = {
69 .modify = bfdd_bfd_profile_passive_mode_modify,
70 .cli_show = bfd_cli_show_passive,
71 }
72 },
73 {
74 .xpath = "/frr-bfdd:bfdd/bfd/profile/minimum-ttl",
75 .cbs = {
76 .modify = bfdd_bfd_profile_minimum_ttl_modify,
77 .destroy = bfdd_bfd_profile_minimum_ttl_destroy,
78 .cli_show = bfd_cli_show_minimum_ttl,
79 }
80 },
81 {
82 .xpath = "/frr-bfdd:bfdd/bfd/profile/echo-mode",
83 .cbs = {
84 .modify = bfdd_bfd_profile_echo_mode_modify,
85 .cli_show = bfd_cli_show_echo,
86 }
87 },
88 {
89 .xpath = "/frr-bfdd:bfdd/bfd/profile/desired-echo-transmission-interval",
90 .cbs = {
91 .modify = bfdd_bfd_profile_desired_echo_transmission_interval_modify,
92 .cli_show = bfd_cli_show_desired_echo_transmission_interval,
93 }
94 },
95 {
96 .xpath = "/frr-bfdd:bfdd/bfd/profile/required-echo-receive-interval",
97 .cbs = {
98 .modify = bfdd_bfd_profile_required_echo_receive_interval_modify,
99 .cli_show = bfd_cli_show_required_echo_receive_interval,
100 }
101 },
102 {
103 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop",
104 .cbs = {
105 .create = bfdd_bfd_sessions_single_hop_create,
106 .destroy = bfdd_bfd_sessions_single_hop_destroy,
107 .get_next = bfdd_bfd_sessions_single_hop_get_next,
108 .get_keys = bfdd_bfd_sessions_single_hop_get_keys,
109 .lookup_entry = bfdd_bfd_sessions_single_hop_lookup_entry,
110 .cli_show = bfd_cli_show_single_hop_peer,
111 .cli_show_end = bfd_cli_show_peer_end,
112 }
113 },
114 {
115 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/source-addr",
116 .cbs = {
117 .modify = bfdd_bfd_sessions_single_hop_source_addr_modify,
118 .destroy = bfdd_bfd_sessions_single_hop_source_addr_destroy,
119 }
120 },
121 {
122 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/profile",
123 .cbs = {
124 .modify = bfdd_bfd_sessions_single_hop_profile_modify,
125 .destroy = bfdd_bfd_sessions_single_hop_profile_destroy,
126 .cli_show = bfd_cli_peer_profile_show,
127 }
128 },
129 {
130 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/detection-multiplier",
131 .cbs = {
132 .modify = bfdd_bfd_sessions_single_hop_detection_multiplier_modify,
133 .cli_show = bfd_cli_show_mult,
134 }
135 },
136 {
137 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/desired-transmission-interval",
138 .cbs = {
139 .modify = bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify,
140 .cli_show = bfd_cli_show_tx,
141 }
142 },
143 {
144 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/required-receive-interval",
145 .cbs = {
146 .modify = bfdd_bfd_sessions_single_hop_required_receive_interval_modify,
147 .cli_show = bfd_cli_show_rx,
148 }
149 },
150 {
151 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/administrative-down",
152 .cbs = {
153 .modify = bfdd_bfd_sessions_single_hop_administrative_down_modify,
154 .cli_show = bfd_cli_show_shutdown,
155 }
156 },
157 {
158 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/passive-mode",
159 .cbs = {
160 .modify = bfdd_bfd_sessions_single_hop_passive_mode_modify,
161 .cli_show = bfd_cli_show_passive,
162 }
163 },
164 {
165 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/echo-mode",
166 .cbs = {
167 .modify = bfdd_bfd_sessions_single_hop_echo_mode_modify,
168 .cli_show = bfd_cli_show_echo,
169 }
170 },
171 {
172 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/desired-echo-transmission-interval",
173 .cbs = {
174 .modify = bfdd_bfd_sessions_single_hop_desired_echo_transmission_interval_modify,
175 .cli_show = bfd_cli_show_desired_echo_transmission_interval,
176 }
177 },
178 {
179 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/required-echo-receive-interval",
180 .cbs = {
181 .modify = bfdd_bfd_sessions_single_hop_required_echo_receive_interval_modify,
182 .cli_show = bfd_cli_show_required_echo_receive_interval,
183 }
184 },
185 {
186 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/local-discriminator",
187 .cbs = {
188 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_discriminator_get_elem,
189 }
190 },
191 {
192 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/local-state",
193 .cbs = {
194 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_state_get_elem,
195 }
196 },
197 {
198 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/local-diagnostic",
199 .cbs = {
200 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_diagnostic_get_elem,
201 }
202 },
203 {
204 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/local-multiplier",
205 .cbs = {
206 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_multiplier_get_elem,
207 }
208 },
209 {
210 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/remote-discriminator",
211 .cbs = {
212 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_discriminator_get_elem,
213 }
214 },
215 {
216 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/remote-state",
217 .cbs = {
218 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_state_get_elem,
219 }
220 },
221 {
222 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/remote-diagnostic",
223 .cbs = {
224 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_diagnostic_get_elem,
225 }
226 },
227 {
228 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/remote-multiplier",
229 .cbs = {
230 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_multiplier_get_elem,
231 }
232 },
233 {
234 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/negotiated-transmission-interval",
235 .cbs = {
236 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_transmission_interval_get_elem,
237 }
238 },
239 {
240 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/negotiated-receive-interval",
241 .cbs = {
242 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_receive_interval_get_elem,
243 }
244 },
245 {
246 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/detection-mode",
247 .cbs = {
248 .get_elem = bfdd_bfd_sessions_single_hop_stats_detection_mode_get_elem,
249 }
250 },
251 {
252 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/last-down-time",
253 .cbs = {
254 .get_elem = bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem,
255 }
256 },
257 {
258 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/last-up-time",
259 .cbs = {
260 .get_elem = bfdd_bfd_sessions_single_hop_stats_last_up_time_get_elem,
261 }
262 },
263 {
264 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/session-down-count",
265 .cbs = {
266 .get_elem = bfdd_bfd_sessions_single_hop_stats_session_down_count_get_elem,
267 }
268 },
269 {
270 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/session-up-count",
271 .cbs = {
272 .get_elem = bfdd_bfd_sessions_single_hop_stats_session_up_count_get_elem,
273 }
274 },
275 {
276 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/control-packet-input-count",
277 .cbs = {
278 .get_elem = bfdd_bfd_sessions_single_hop_stats_control_packet_input_count_get_elem,
279 }
280 },
281 {
282 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/control-packet-output-count",
283 .cbs = {
284 .get_elem = bfdd_bfd_sessions_single_hop_stats_control_packet_output_count_get_elem,
285 }
286 },
287 {
288 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/negotiated-echo-transmission-interval",
289 .cbs = {
290 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_echo_transmission_interval_get_elem,
291 }
292 },
293 {
294 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/echo-packet-input-count",
295 .cbs = {
296 .get_elem = bfdd_bfd_sessions_single_hop_stats_echo_packet_input_count_get_elem,
297 }
298 },
299 {
300 .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/stats/echo-packet-output-count",
301 .cbs = {
302 .get_elem = bfdd_bfd_sessions_single_hop_stats_echo_packet_output_count_get_elem,
303 }
304 },
305 {
306 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop",
307 .cbs = {
308 .create = bfdd_bfd_sessions_multi_hop_create,
309 .destroy = bfdd_bfd_sessions_multi_hop_destroy,
310 .get_next = bfdd_bfd_sessions_multi_hop_get_next,
311 .get_keys = bfdd_bfd_sessions_multi_hop_get_keys,
312 .lookup_entry = bfdd_bfd_sessions_multi_hop_lookup_entry,
313 .cli_show = bfd_cli_show_multi_hop_peer,
314 .cli_show_end = bfd_cli_show_peer_end,
315 }
316 },
317 {
318 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/profile",
319 .cbs = {
320 .modify = bfdd_bfd_sessions_single_hop_profile_modify,
321 .destroy = bfdd_bfd_sessions_single_hop_profile_destroy,
322 .cli_show = bfd_cli_peer_profile_show,
323 }
324 },
325 {
326 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/detection-multiplier",
327 .cbs = {
328 .modify = bfdd_bfd_sessions_single_hop_detection_multiplier_modify,
329 .cli_show = bfd_cli_show_mult,
330 }
331 },
332 {
333 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/desired-transmission-interval",
334 .cbs = {
335 .modify = bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify,
336 .cli_show = bfd_cli_show_tx,
337 }
338 },
339 {
340 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/required-receive-interval",
341 .cbs = {
342 .modify = bfdd_bfd_sessions_single_hop_required_receive_interval_modify,
343 .cli_show = bfd_cli_show_rx,
344 }
345 },
346 {
347 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/administrative-down",
348 .cbs = {
349 .modify = bfdd_bfd_sessions_single_hop_administrative_down_modify,
350 .cli_show = bfd_cli_show_shutdown,
351 }
352 },
353 {
354 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/passive-mode",
355 .cbs = {
356 .modify = bfdd_bfd_sessions_single_hop_passive_mode_modify,
357 .cli_show = bfd_cli_show_passive,
358 }
359 },
360 {
361 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/minimum-ttl",
362 .cbs = {
363 .modify = bfdd_bfd_sessions_multi_hop_minimum_ttl_modify,
364 .destroy = bfdd_bfd_sessions_multi_hop_minimum_ttl_destroy,
365 .cli_show = bfd_cli_show_minimum_ttl,
366 }
367 },
368 {
369 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/local-discriminator",
370 .cbs = {
371 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_discriminator_get_elem,
372 }
373 },
374 {
375 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/local-state",
376 .cbs = {
377 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_state_get_elem,
378 }
379 },
380 {
381 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/local-diagnostic",
382 .cbs = {
383 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_diagnostic_get_elem,
384 }
385 },
386 {
387 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/local-multiplier",
388 .cbs = {
389 .get_elem = bfdd_bfd_sessions_single_hop_stats_local_multiplier_get_elem,
390 }
391 },
392 {
393 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/remote-discriminator",
394 .cbs = {
395 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_discriminator_get_elem,
396 }
397 },
398 {
399 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/remote-state",
400 .cbs = {
401 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_state_get_elem,
402 }
403 },
404 {
405 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/remote-diagnostic",
406 .cbs = {
407 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_diagnostic_get_elem,
408 }
409 },
410 {
411 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/remote-multiplier",
412 .cbs = {
413 .get_elem = bfdd_bfd_sessions_single_hop_stats_remote_multiplier_get_elem,
414 }
415 },
416 {
417 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/negotiated-transmission-interval",
418 .cbs = {
419 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_transmission_interval_get_elem,
420 }
421 },
422 {
423 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/negotiated-receive-interval",
424 .cbs = {
425 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_receive_interval_get_elem,
426 }
427 },
428 {
429 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/detection-mode",
430 .cbs = {
431 .get_elem = bfdd_bfd_sessions_single_hop_stats_detection_mode_get_elem,
432 }
433 },
434 {
435 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/last-down-time",
436 .cbs = {
437 .get_elem = bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem,
438 }
439 },
440 {
441 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/last-up-time",
442 .cbs = {
443 .get_elem = bfdd_bfd_sessions_single_hop_stats_last_up_time_get_elem,
444 }
445 },
446 {
447 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/session-down-count",
448 .cbs = {
449 .get_elem = bfdd_bfd_sessions_single_hop_stats_session_down_count_get_elem,
450 }
451 },
452 {
453 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/session-up-count",
454 .cbs = {
455 .get_elem = bfdd_bfd_sessions_single_hop_stats_session_up_count_get_elem,
456 }
457 },
458 {
459 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/control-packet-input-count",
460 .cbs = {
461 .get_elem = bfdd_bfd_sessions_single_hop_stats_control_packet_input_count_get_elem,
462 }
463 },
464 {
465 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/control-packet-output-count",
466 .cbs = {
467 .get_elem = bfdd_bfd_sessions_single_hop_stats_control_packet_output_count_get_elem,
468 }
469 },
470 {
471 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/negotiated-echo-transmission-interval",
472 .cbs = {
473 .get_elem = bfdd_bfd_sessions_single_hop_stats_negotiated_echo_transmission_interval_get_elem,
474 }
475 },
476 {
477 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/echo-packet-input-count",
478 .cbs = {
479 .get_elem = bfdd_bfd_sessions_single_hop_stats_echo_packet_input_count_get_elem,
480 }
481 },
482 {
483 .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/stats/echo-packet-output-count",
484 .cbs = {
485 .get_elem = bfdd_bfd_sessions_single_hop_stats_echo_packet_output_count_get_elem,
486 }
487 },
488 {
489 .xpath = NULL,
490 },
491 }
492 };