]> git.proxmox.com Git - mirror_frr.git/blame - ripd/rip_nb.c
Merge pull request #13350 from opensourcerouting/typesafe-fixes-20230421
[mirror_frr.git] / ripd / rip_nb.c
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
f80ec39e
RW
2/*
3 * Copyright (C) 2018 NetDEF, Inc.
4 * Renato Westphal
f80ec39e
RW
5 */
6
7#include <zebra.h>
8
9#include "northbound.h"
10#include "libfrr.h"
11
12#include "ripd/rip_nb.h"
1d1f77b6 13#include "lib/if_rmap.h"
f80ec39e
RW
14
15/* clang-format off */
16const 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 },
14ef7be7
CH
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,
1d1f77b6 174 .cli_show = cli_show_if_route_map,
14ef7be7
CH
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 },
f80ec39e
RW
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-interface:lib/interface/frr-ripd:rip/split-horizon",
244 .cbs = {
245 .cli_show = cli_show_ip_rip_split_horizon,
246 .modify = lib_interface_rip_split_horizon_modify,
247 },
248 },
249 {
250 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/v2-broadcast",
251 .cbs = {
252 .cli_show = cli_show_ip_rip_v2_broadcast,
253 .modify = lib_interface_rip_v2_broadcast_modify,
254 },
255 },
256 {
257 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-receive",
258 .cbs = {
259 .cli_show = cli_show_ip_rip_receive_version,
260 .modify = lib_interface_rip_version_receive_modify,
261 },
262 },
263 {
264 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-send",
265 .cbs = {
266 .cli_show = cli_show_ip_rip_send_version,
267 .modify = lib_interface_rip_version_send_modify,
268 },
269 },
270 {
271 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme",
272 .cbs = {
273 .cli_show = cli_show_ip_rip_authentication_scheme,
274 },
275 },
276 {
277 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/mode",
278 .cbs = {
279 .modify = lib_interface_rip_authentication_scheme_mode_modify,
280 },
281 },
282 {
283 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/md5-auth-length",
284 .cbs = {
285 .destroy = lib_interface_rip_authentication_scheme_md5_auth_length_destroy,
286 .modify = lib_interface_rip_authentication_scheme_md5_auth_length_modify,
287 },
288 },
289 {
290 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-password",
291 .cbs = {
292 .cli_show = cli_show_ip_rip_authentication_string,
293 .destroy = lib_interface_rip_authentication_password_destroy,
294 .modify = lib_interface_rip_authentication_password_modify,
295 },
296 },
297 {
298 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-key-chain",
299 .cbs = {
300 .cli_show = cli_show_ip_rip_authentication_key_chain,
301 .destroy = lib_interface_rip_authentication_key_chain_destroy,
302 .modify = lib_interface_rip_authentication_key_chain_modify,
303 },
304 },
305 {
306 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor",
307 .cbs = {
308 .get_keys = ripd_instance_state_neighbors_neighbor_get_keys,
309 .get_next = ripd_instance_state_neighbors_neighbor_get_next,
310 .lookup_entry = ripd_instance_state_neighbors_neighbor_lookup_entry,
311 },
312 },
313 {
314 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/address",
315 .cbs = {
316 .get_elem = ripd_instance_state_neighbors_neighbor_address_get_elem,
317 },
318 },
319 {
320 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/last-update",
321 .cbs = {
322 .get_elem = ripd_instance_state_neighbors_neighbor_last_update_get_elem,
323 },
324 },
325 {
326 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-packets-rcvd",
327 .cbs = {
328 .get_elem = ripd_instance_state_neighbors_neighbor_bad_packets_rcvd_get_elem,
329 },
330 },
331 {
332 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-routes-rcvd",
333 .cbs = {
334 .get_elem = ripd_instance_state_neighbors_neighbor_bad_routes_rcvd_get_elem,
335 },
336 },
337 {
338 .xpath = "/frr-ripd:ripd/instance/state/routes/route",
339 .cbs = {
340 .get_keys = ripd_instance_state_routes_route_get_keys,
341 .get_next = ripd_instance_state_routes_route_get_next,
342 .lookup_entry = ripd_instance_state_routes_route_lookup_entry,
343 },
344 },
345 {
346 .xpath = "/frr-ripd:ripd/instance/state/routes/route/prefix",
347 .cbs = {
348 .get_elem = ripd_instance_state_routes_route_prefix_get_elem,
349 },
350 },
351 {
352 .xpath = "/frr-ripd:ripd/instance/state/routes/route/next-hop",
353 .cbs = {
354 .get_elem = ripd_instance_state_routes_route_next_hop_get_elem,
355 },
356 },
357 {
358 .xpath = "/frr-ripd:ripd/instance/state/routes/route/interface",
359 .cbs = {
360 .get_elem = ripd_instance_state_routes_route_interface_get_elem,
361 },
362 },
0b7f0e35
CH
363 {
364 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop",
365 .cbs = {
366 .get_next = ripd_instance_state_routes_route_nexthops_nexthop_get_next,
367 }
368 },
369 {
370 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/nh-type",
371 .cbs = {
372 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_nh_type_get_elem,
373 }
374 },
375 {
376 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/protocol",
377 .cbs = {
378 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_protocol_get_elem,
379 }
380 },
381 {
382 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/rip-type",
383 .cbs = {
384 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_rip_type_get_elem,
385 }
386 },
387 {
388 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/gateway",
389 .cbs = {
390 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_gateway_get_elem,
391 }
392 },
393 {
394 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/interface",
395 .cbs = {
396 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_interface_get_elem,
397 }
398 },
399 {
400 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/from",
401 .cbs = {
402 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_from_get_elem,
403 }
404 },
405 {
406 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/tag",
407 .cbs = {
408 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_tag_get_elem,
409 }
410 },
411 {
412 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/external-metric",
413 .cbs = {
414 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_external_metric_get_elem,
415 }
416 },
417 {
418 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/expire-time",
419 .cbs = {
420 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_expire_time_get_elem,
421 }
422 },
f80ec39e
RW
423 {
424 .xpath = "/frr-ripd:ripd/instance/state/routes/route/metric",
425 .cbs = {
426 .get_elem = ripd_instance_state_routes_route_metric_get_elem,
427 },
428 },
429 {
430 .xpath = "/frr-ripd:clear-rip-route",
431 .cbs = {
432 .rpc = clear_rip_route_rpc,
433 },
434 },
435 {
436 .xpath = NULL,
437 },
438 }
439};