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