]> git.proxmox.com Git - mirror_frr.git/blob - ripd/rip_nb.c
Merge pull request #12050 from LabNConsulting/working/lb/topotest-220909
[mirror_frr.git] / ripd / rip_nb.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (C) 2018 NetDEF, Inc.
4 * Renato Westphal
5 */
6
7 #include <zebra.h>
8
9 #include "northbound.h"
10 #include "libfrr.h"
11
12 #include "ripd/rip_nb.h"
13 #include "lib/if_rmap.h"
14
15 /* clang-format off */
16 const struct frr_yang_module_info frr_ripd_info = {
17 .name = "frr-ripd",
18 .nodes = {
19 {
20 .xpath = "/frr-ripd:ripd/instance",
21 .cbs = {
22 .cli_show = cli_show_router_rip,
23 .create = ripd_instance_create,
24 .destroy = ripd_instance_destroy,
25 .get_keys = ripd_instance_get_keys,
26 .get_next = ripd_instance_get_next,
27 .lookup_entry = ripd_instance_lookup_entry,
28 },
29 },
30 {
31 .xpath = "/frr-ripd:ripd/instance/allow-ecmp",
32 .cbs = {
33 .cli_show = cli_show_rip_allow_ecmp,
34 .modify = ripd_instance_allow_ecmp_modify,
35 },
36 },
37 {
38 .xpath = "/frr-ripd:ripd/instance/default-information-originate",
39 .cbs = {
40 .cli_show = cli_show_rip_default_information_originate,
41 .modify = ripd_instance_default_information_originate_modify,
42 },
43 },
44 {
45 .xpath = "/frr-ripd:ripd/instance/default-metric",
46 .cbs = {
47 .cli_show = cli_show_rip_default_metric,
48 .modify = ripd_instance_default_metric_modify,
49 },
50 },
51 {
52 .xpath = "/frr-ripd:ripd/instance/distance/default",
53 .cbs = {
54 .cli_show = cli_show_rip_distance,
55 .modify = ripd_instance_distance_default_modify,
56 },
57 },
58 {
59 .xpath = "/frr-ripd:ripd/instance/distance/source",
60 .cbs = {
61 .cli_show = cli_show_rip_distance_source,
62 .create = ripd_instance_distance_source_create,
63 .destroy = ripd_instance_distance_source_destroy,
64 },
65 },
66 {
67 .xpath = "/frr-ripd:ripd/instance/distance/source/distance",
68 .cbs = {
69 .modify = ripd_instance_distance_source_distance_modify,
70 },
71 },
72 {
73 .xpath = "/frr-ripd:ripd/instance/distance/source/access-list",
74 .cbs = {
75 .destroy = ripd_instance_distance_source_access_list_destroy,
76 .modify = ripd_instance_distance_source_access_list_modify,
77 },
78 },
79 {
80 .xpath = "/frr-ripd:ripd/instance/explicit-neighbor",
81 .cbs = {
82 .cli_show = cli_show_rip_neighbor,
83 .create = ripd_instance_explicit_neighbor_create,
84 .destroy = ripd_instance_explicit_neighbor_destroy,
85 },
86 },
87 {
88 .xpath = "/frr-ripd:ripd/instance/network",
89 .cbs = {
90 .cli_show = cli_show_rip_network_prefix,
91 .create = ripd_instance_network_create,
92 .destroy = ripd_instance_network_destroy,
93 },
94 },
95 {
96 .xpath = "/frr-ripd:ripd/instance/interface",
97 .cbs = {
98 .cli_show = cli_show_rip_network_interface,
99 .create = ripd_instance_interface_create,
100 .destroy = ripd_instance_interface_destroy,
101 },
102 },
103 {
104 .xpath = "/frr-ripd:ripd/instance/offset-list",
105 .cbs = {
106 .cli_show = cli_show_rip_offset_list,
107 .create = ripd_instance_offset_list_create,
108 .destroy = ripd_instance_offset_list_destroy,
109 },
110 },
111 {
112 .xpath = "/frr-ripd:ripd/instance/offset-list/access-list",
113 .cbs = {
114 .modify = ripd_instance_offset_list_access_list_modify,
115 },
116 },
117 {
118 .xpath = "/frr-ripd:ripd/instance/offset-list/metric",
119 .cbs = {
120 .modify = ripd_instance_offset_list_metric_modify,
121 },
122 },
123 {
124 .xpath = "/frr-ripd:ripd/instance/passive-default",
125 .cbs = {
126 .cli_show = cli_show_rip_passive_default,
127 .modify = ripd_instance_passive_default_modify,
128 },
129 },
130 {
131 .xpath = "/frr-ripd:ripd/instance/passive-interface",
132 .cbs = {
133 .cli_show = cli_show_rip_passive_interface,
134 .create = ripd_instance_passive_interface_create,
135 .destroy = ripd_instance_passive_interface_destroy,
136 },
137 },
138 {
139 .xpath = "/frr-ripd:ripd/instance/non-passive-interface",
140 .cbs = {
141 .cli_show = cli_show_rip_non_passive_interface,
142 .create = ripd_instance_non_passive_interface_create,
143 .destroy = ripd_instance_non_passive_interface_destroy,
144 },
145 },
146 {
147 .xpath = "/frr-ripd:ripd/instance/redistribute",
148 .cbs = {
149 .apply_finish = ripd_instance_redistribute_apply_finish,
150 .cli_show = cli_show_rip_redistribute,
151 .create = ripd_instance_redistribute_create,
152 .destroy = ripd_instance_redistribute_destroy,
153 },
154 },
155 {
156 .xpath = "/frr-ripd:ripd/instance/redistribute/route-map",
157 .cbs = {
158 .destroy = ripd_instance_redistribute_route_map_destroy,
159 .modify = ripd_instance_redistribute_route_map_modify,
160 },
161 },
162 {
163 .xpath = "/frr-ripd:ripd/instance/redistribute/metric",
164 .cbs = {
165 .destroy = ripd_instance_redistribute_metric_destroy,
166 .modify = ripd_instance_redistribute_metric_modify,
167 },
168 },
169 {
170 .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map",
171 .cbs = {
172 .create = ripd_instance_if_route_maps_if_route_map_create,
173 .destroy = ripd_instance_if_route_maps_if_route_map_destroy,
174 .cli_show = cli_show_if_route_map,
175 }
176 },
177 {
178 .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map/in-route-map",
179 .cbs = {
180 .modify = ripd_instance_if_route_maps_if_route_map_in_route_map_modify,
181 .destroy = ripd_instance_if_route_maps_if_route_map_in_route_map_destroy,
182 }
183 },
184 {
185 .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map/out-route-map",
186 .cbs = {
187 .modify = ripd_instance_if_route_maps_if_route_map_out_route_map_modify,
188 .destroy = ripd_instance_if_route_maps_if_route_map_out_route_map_destroy,
189 }
190 },
191 {
192 .xpath = "/frr-ripd:ripd/instance/static-route",
193 .cbs = {
194 .cli_show = cli_show_rip_route,
195 .create = ripd_instance_static_route_create,
196 .destroy = ripd_instance_static_route_destroy,
197 },
198 },
199 {
200 .xpath = "/frr-ripd:ripd/instance/timers",
201 .cbs = {
202 .apply_finish = ripd_instance_timers_apply_finish,
203 .cli_show = cli_show_rip_timers,
204 },
205 },
206 {
207 .xpath = "/frr-ripd:ripd/instance/timers/flush-interval",
208 .cbs = {
209 .modify = ripd_instance_timers_flush_interval_modify,
210 },
211 },
212 {
213 .xpath = "/frr-ripd:ripd/instance/timers/holddown-interval",
214 .cbs = {
215 .modify = ripd_instance_timers_holddown_interval_modify,
216 },
217 },
218 {
219 .xpath = "/frr-ripd:ripd/instance/timers/update-interval",
220 .cbs = {
221 .modify = ripd_instance_timers_update_interval_modify,
222 },
223 },
224 {
225 .xpath = "/frr-ripd:ripd/instance/version",
226 .cbs = {
227 .cli_show = cli_show_rip_version,
228 },
229 },
230 {
231 .xpath = "/frr-ripd:ripd/instance/version/receive",
232 .cbs = {
233 .modify = ripd_instance_version_receive_modify,
234 },
235 },
236 {
237 .xpath = "/frr-ripd:ripd/instance/version/send",
238 .cbs = {
239 .modify = ripd_instance_version_send_modify,
240 },
241 },
242 {
243 .xpath = "/frr-ripd:ripd/instance/default-bfd-profile",
244 .cbs = {
245 .modify = ripd_instance_default_bfd_profile_modify,
246 .destroy = ripd_instance_default_bfd_profile_destroy,
247 .cli_show = cli_show_ripd_instance_default_bfd_profile,
248 },
249 },
250 {
251 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/split-horizon",
252 .cbs = {
253 .cli_show = cli_show_ip_rip_split_horizon,
254 .modify = lib_interface_rip_split_horizon_modify,
255 },
256 },
257 {
258 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/v2-broadcast",
259 .cbs = {
260 .cli_show = cli_show_ip_rip_v2_broadcast,
261 .modify = lib_interface_rip_v2_broadcast_modify,
262 },
263 },
264 {
265 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-receive",
266 .cbs = {
267 .cli_show = cli_show_ip_rip_receive_version,
268 .modify = lib_interface_rip_version_receive_modify,
269 },
270 },
271 {
272 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-send",
273 .cbs = {
274 .cli_show = cli_show_ip_rip_send_version,
275 .modify = lib_interface_rip_version_send_modify,
276 },
277 },
278 {
279 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme",
280 .cbs = {
281 .cli_show = cli_show_ip_rip_authentication_scheme,
282 },
283 },
284 {
285 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/mode",
286 .cbs = {
287 .modify = lib_interface_rip_authentication_scheme_mode_modify,
288 },
289 },
290 {
291 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/md5-auth-length",
292 .cbs = {
293 .destroy = lib_interface_rip_authentication_scheme_md5_auth_length_destroy,
294 .modify = lib_interface_rip_authentication_scheme_md5_auth_length_modify,
295 },
296 },
297 {
298 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-password",
299 .cbs = {
300 .cli_show = cli_show_ip_rip_authentication_string,
301 .destroy = lib_interface_rip_authentication_password_destroy,
302 .modify = lib_interface_rip_authentication_password_modify,
303 },
304 },
305 {
306 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-key-chain",
307 .cbs = {
308 .cli_show = cli_show_ip_rip_authentication_key_chain,
309 .destroy = lib_interface_rip_authentication_key_chain_destroy,
310 .modify = lib_interface_rip_authentication_key_chain_modify,
311 },
312 },
313 {
314 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring",
315 .cbs = {
316 .create = lib_interface_rip_bfd_create,
317 .destroy = lib_interface_rip_bfd_destroy,
318 },
319 },
320 {
321 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring/enable",
322 .cbs = {
323 .cli_show = cli_show_ip_rip_bfd_enable,
324 .modify = lib_interface_rip_bfd_enable_modify,
325 },
326 },
327 {
328 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring/profile",
329 .cbs = {
330 .cli_show = cli_show_ip_rip_bfd_profile,
331 .modify = lib_interface_rip_bfd_profile_modify,
332 .destroy = lib_interface_rip_bfd_profile_destroy,
333 },
334 },
335 {
336 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor",
337 .cbs = {
338 .get_keys = ripd_instance_state_neighbors_neighbor_get_keys,
339 .get_next = ripd_instance_state_neighbors_neighbor_get_next,
340 .lookup_entry = ripd_instance_state_neighbors_neighbor_lookup_entry,
341 },
342 },
343 {
344 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/address",
345 .cbs = {
346 .get_elem = ripd_instance_state_neighbors_neighbor_address_get_elem,
347 },
348 },
349 {
350 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/last-update",
351 .cbs = {
352 .get_elem = ripd_instance_state_neighbors_neighbor_last_update_get_elem,
353 },
354 },
355 {
356 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-packets-rcvd",
357 .cbs = {
358 .get_elem = ripd_instance_state_neighbors_neighbor_bad_packets_rcvd_get_elem,
359 },
360 },
361 {
362 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-routes-rcvd",
363 .cbs = {
364 .get_elem = ripd_instance_state_neighbors_neighbor_bad_routes_rcvd_get_elem,
365 },
366 },
367 {
368 .xpath = "/frr-ripd:ripd/instance/state/routes/route",
369 .cbs = {
370 .get_keys = ripd_instance_state_routes_route_get_keys,
371 .get_next = ripd_instance_state_routes_route_get_next,
372 .lookup_entry = ripd_instance_state_routes_route_lookup_entry,
373 },
374 },
375 {
376 .xpath = "/frr-ripd:ripd/instance/state/routes/route/prefix",
377 .cbs = {
378 .get_elem = ripd_instance_state_routes_route_prefix_get_elem,
379 },
380 },
381 {
382 .xpath = "/frr-ripd:ripd/instance/state/routes/route/next-hop",
383 .cbs = {
384 .get_elem = ripd_instance_state_routes_route_next_hop_get_elem,
385 },
386 },
387 {
388 .xpath = "/frr-ripd:ripd/instance/state/routes/route/interface",
389 .cbs = {
390 .get_elem = ripd_instance_state_routes_route_interface_get_elem,
391 },
392 },
393 {
394 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop",
395 .cbs = {
396 .get_next = ripd_instance_state_routes_route_nexthops_nexthop_get_next,
397 }
398 },
399 {
400 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/nh-type",
401 .cbs = {
402 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_nh_type_get_elem,
403 }
404 },
405 {
406 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/protocol",
407 .cbs = {
408 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_protocol_get_elem,
409 }
410 },
411 {
412 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/rip-type",
413 .cbs = {
414 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_rip_type_get_elem,
415 }
416 },
417 {
418 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/gateway",
419 .cbs = {
420 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_gateway_get_elem,
421 }
422 },
423 {
424 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/interface",
425 .cbs = {
426 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_interface_get_elem,
427 }
428 },
429 {
430 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/from",
431 .cbs = {
432 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_from_get_elem,
433 }
434 },
435 {
436 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/tag",
437 .cbs = {
438 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_tag_get_elem,
439 }
440 },
441 {
442 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/external-metric",
443 .cbs = {
444 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_external_metric_get_elem,
445 }
446 },
447 {
448 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/expire-time",
449 .cbs = {
450 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_expire_time_get_elem,
451 }
452 },
453 {
454 .xpath = "/frr-ripd:ripd/instance/state/routes/route/metric",
455 .cbs = {
456 .get_elem = ripd_instance_state_routes_route_metric_get_elem,
457 },
458 },
459 {
460 .xpath = "/frr-ripd:clear-rip-route",
461 .cbs = {
462 .rpc = clear_rip_route_rpc,
463 },
464 },
465 {
466 .xpath = NULL,
467 },
468 }
469 };