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