]> git.proxmox.com Git - mirror_frr.git/blob - ripd/rip_nb.c
Merge pull request #12797 from jvidalallende/ubi8_minimal_dockerfile
[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/static-route",
170 .cbs = {
171 .cli_show = cli_show_rip_route,
172 .create = ripd_instance_static_route_create,
173 .destroy = ripd_instance_static_route_destroy,
174 },
175 },
176 {
177 .xpath = "/frr-ripd:ripd/instance/timers",
178 .cbs = {
179 .apply_finish = ripd_instance_timers_apply_finish,
180 .cli_show = cli_show_rip_timers,
181 },
182 },
183 {
184 .xpath = "/frr-ripd:ripd/instance/timers/flush-interval",
185 .cbs = {
186 .modify = ripd_instance_timers_flush_interval_modify,
187 },
188 },
189 {
190 .xpath = "/frr-ripd:ripd/instance/timers/holddown-interval",
191 .cbs = {
192 .modify = ripd_instance_timers_holddown_interval_modify,
193 },
194 },
195 {
196 .xpath = "/frr-ripd:ripd/instance/timers/update-interval",
197 .cbs = {
198 .modify = ripd_instance_timers_update_interval_modify,
199 },
200 },
201 {
202 .xpath = "/frr-ripd:ripd/instance/version",
203 .cbs = {
204 .cli_show = cli_show_rip_version,
205 },
206 },
207 {
208 .xpath = "/frr-ripd:ripd/instance/version/receive",
209 .cbs = {
210 .modify = ripd_instance_version_receive_modify,
211 },
212 },
213 {
214 .xpath = "/frr-ripd:ripd/instance/version/send",
215 .cbs = {
216 .modify = ripd_instance_version_send_modify,
217 },
218 },
219 {
220 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/split-horizon",
221 .cbs = {
222 .cli_show = cli_show_ip_rip_split_horizon,
223 .modify = lib_interface_rip_split_horizon_modify,
224 },
225 },
226 {
227 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/v2-broadcast",
228 .cbs = {
229 .cli_show = cli_show_ip_rip_v2_broadcast,
230 .modify = lib_interface_rip_v2_broadcast_modify,
231 },
232 },
233 {
234 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-receive",
235 .cbs = {
236 .cli_show = cli_show_ip_rip_receive_version,
237 .modify = lib_interface_rip_version_receive_modify,
238 },
239 },
240 {
241 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/version-send",
242 .cbs = {
243 .cli_show = cli_show_ip_rip_send_version,
244 .modify = lib_interface_rip_version_send_modify,
245 },
246 },
247 {
248 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme",
249 .cbs = {
250 .cli_show = cli_show_ip_rip_authentication_scheme,
251 },
252 },
253 {
254 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/mode",
255 .cbs = {
256 .modify = lib_interface_rip_authentication_scheme_mode_modify,
257 },
258 },
259 {
260 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-scheme/md5-auth-length",
261 .cbs = {
262 .destroy = lib_interface_rip_authentication_scheme_md5_auth_length_destroy,
263 .modify = lib_interface_rip_authentication_scheme_md5_auth_length_modify,
264 },
265 },
266 {
267 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-password",
268 .cbs = {
269 .cli_show = cli_show_ip_rip_authentication_string,
270 .destroy = lib_interface_rip_authentication_password_destroy,
271 .modify = lib_interface_rip_authentication_password_modify,
272 },
273 },
274 {
275 .xpath = "/frr-interface:lib/interface/frr-ripd:rip/authentication-key-chain",
276 .cbs = {
277 .cli_show = cli_show_ip_rip_authentication_key_chain,
278 .destroy = lib_interface_rip_authentication_key_chain_destroy,
279 .modify = lib_interface_rip_authentication_key_chain_modify,
280 },
281 },
282 {
283 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor",
284 .cbs = {
285 .get_keys = ripd_instance_state_neighbors_neighbor_get_keys,
286 .get_next = ripd_instance_state_neighbors_neighbor_get_next,
287 .lookup_entry = ripd_instance_state_neighbors_neighbor_lookup_entry,
288 },
289 },
290 {
291 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/address",
292 .cbs = {
293 .get_elem = ripd_instance_state_neighbors_neighbor_address_get_elem,
294 },
295 },
296 {
297 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/last-update",
298 .cbs = {
299 .get_elem = ripd_instance_state_neighbors_neighbor_last_update_get_elem,
300 },
301 },
302 {
303 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-packets-rcvd",
304 .cbs = {
305 .get_elem = ripd_instance_state_neighbors_neighbor_bad_packets_rcvd_get_elem,
306 },
307 },
308 {
309 .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor/bad-routes-rcvd",
310 .cbs = {
311 .get_elem = ripd_instance_state_neighbors_neighbor_bad_routes_rcvd_get_elem,
312 },
313 },
314 {
315 .xpath = "/frr-ripd:ripd/instance/state/routes/route",
316 .cbs = {
317 .get_keys = ripd_instance_state_routes_route_get_keys,
318 .get_next = ripd_instance_state_routes_route_get_next,
319 .lookup_entry = ripd_instance_state_routes_route_lookup_entry,
320 },
321 },
322 {
323 .xpath = "/frr-ripd:ripd/instance/state/routes/route/prefix",
324 .cbs = {
325 .get_elem = ripd_instance_state_routes_route_prefix_get_elem,
326 },
327 },
328 {
329 .xpath = "/frr-ripd:ripd/instance/state/routes/route/next-hop",
330 .cbs = {
331 .get_elem = ripd_instance_state_routes_route_next_hop_get_elem,
332 },
333 },
334 {
335 .xpath = "/frr-ripd:ripd/instance/state/routes/route/interface",
336 .cbs = {
337 .get_elem = ripd_instance_state_routes_route_interface_get_elem,
338 },
339 },
340 {
341 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop",
342 .cbs = {
343 .get_next = ripd_instance_state_routes_route_nexthops_nexthop_get_next,
344 }
345 },
346 {
347 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/nh-type",
348 .cbs = {
349 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_nh_type_get_elem,
350 }
351 },
352 {
353 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/protocol",
354 .cbs = {
355 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_protocol_get_elem,
356 }
357 },
358 {
359 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/rip-type",
360 .cbs = {
361 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_rip_type_get_elem,
362 }
363 },
364 {
365 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/gateway",
366 .cbs = {
367 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_gateway_get_elem,
368 }
369 },
370 {
371 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/interface",
372 .cbs = {
373 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_interface_get_elem,
374 }
375 },
376 {
377 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/from",
378 .cbs = {
379 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_from_get_elem,
380 }
381 },
382 {
383 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/tag",
384 .cbs = {
385 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_tag_get_elem,
386 }
387 },
388 {
389 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/external-metric",
390 .cbs = {
391 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_external_metric_get_elem,
392 }
393 },
394 {
395 .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/expire-time",
396 .cbs = {
397 .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_expire_time_get_elem,
398 }
399 },
400 {
401 .xpath = "/frr-ripd:ripd/instance/state/routes/route/metric",
402 .cbs = {
403 .get_elem = ripd_instance_state_routes_route_metric_get_elem,
404 },
405 },
406 {
407 .xpath = "/frr-ripd:clear-rip-route",
408 .cbs = {
409 .rpc = clear_rip_route_rpc,
410 },
411 },
412 {
413 .xpath = NULL,
414 },
415 }
416 };