]>
Commit | Line | Data |
---|---|---|
ce45ffe7 CS |
1 | /* |
2 | * Copyright (C) 2020 Cumulus Networks, Inc. | |
3 | * Chirag Shah | |
4 | * | |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms of the GNU General Public License as published by the Free | |
7 | * Software Foundation; either version 2 of the License, or (at your option) | |
8 | * any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
13 | * more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License along | |
16 | * with this program; see the file COPYING; if not, write to the Free Software | |
17 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
18 | */ | |
19 | ||
20 | #include <zebra.h> | |
21 | #include "northbound.h" | |
22 | #include "libfrr.h" | |
23 | #include "zebra_nb.h" | |
24 | ||
77f4028e CS |
25 | const char *zebra_afi_safi_value2identity(afi_t afi, safi_t safi) |
26 | { | |
27 | if (afi == AFI_IP && safi == SAFI_UNICAST) | |
28 | return "ipv4-unicast"; | |
29 | if (afi == AFI_IP6 && safi == SAFI_UNICAST) | |
30 | return "ipv6-unicast"; | |
31 | if (afi == AFI_IP && safi == SAFI_MULTICAST) | |
32 | return "ipv4-multicast"; | |
33 | if (afi == AFI_IP6 && safi == SAFI_MULTICAST) | |
34 | return "ipv6-multicast"; | |
35 | ||
36 | return " "; | |
37 | } | |
38 | ||
39 | void zebra_afi_safi_identity2value(const char *key, afi_t *afi, safi_t *safi) | |
40 | { | |
41 | if (strmatch(key, "frr-zebra:ipv4-unicast")) { | |
42 | *afi = AFI_IP; | |
43 | *safi = SAFI_UNICAST; | |
44 | } else if (strmatch(key, "frr-zebra:ipv6-unicast")) { | |
45 | *afi = AFI_IP6; | |
46 | *safi = SAFI_UNICAST; | |
47 | } else if (strmatch(key, "frr-zebra:ipv4-multicast")) { | |
48 | *afi = AFI_IP; | |
49 | *safi = SAFI_MULTICAST; | |
50 | } else if (strmatch(key, "frr-zebra:ipv6-multicast")) { | |
51 | *afi = AFI_IP6; | |
52 | *safi = SAFI_MULTICAST; | |
53 | } else { | |
54 | *afi = AFI_UNSPEC; | |
55 | *safi = SAFI_UNSPEC; | |
56 | } | |
57 | } | |
58 | ||
ce45ffe7 CS |
59 | /* clang-format off */ |
60 | const struct frr_yang_module_info frr_zebra_info = { | |
61 | .name = "frr-zebra", | |
62 | .nodes = { | |
63 | { | |
64 | .xpath = "/frr-zebra:zebra/mcast-rpf-lookup", | |
65 | .cbs = { | |
66 | .modify = zebra_mcast_rpf_lookup_modify, | |
67 | } | |
68 | }, | |
69 | { | |
70 | .xpath = "/frr-zebra:zebra/ip-forwarding", | |
71 | .cbs = { | |
72 | .modify = zebra_ip_forwarding_modify, | |
73 | .destroy = zebra_ip_forwarding_destroy, | |
74 | } | |
75 | }, | |
76 | { | |
77 | .xpath = "/frr-zebra:zebra/ipv6-forwarding", | |
78 | .cbs = { | |
79 | .modify = zebra_ipv6_forwarding_modify, | |
80 | .destroy = zebra_ipv6_forwarding_destroy, | |
81 | } | |
82 | }, | |
83 | { | |
84 | .xpath = "/frr-zebra:zebra/workqueue-hold-timer", | |
85 | .cbs = { | |
86 | .modify = zebra_workqueue_hold_timer_modify, | |
87 | } | |
88 | }, | |
89 | { | |
90 | .xpath = "/frr-zebra:zebra/zapi-packets", | |
91 | .cbs = { | |
92 | .modify = zebra_zapi_packets_modify, | |
93 | } | |
94 | }, | |
95 | { | |
96 | .xpath = "/frr-zebra:zebra/import-kernel-table/table-id", | |
97 | .cbs = { | |
98 | .modify = zebra_import_kernel_table_table_id_modify, | |
99 | .destroy = zebra_import_kernel_table_table_id_destroy, | |
100 | } | |
101 | }, | |
102 | { | |
103 | .xpath = "/frr-zebra:zebra/import-kernel-table/distance", | |
104 | .cbs = { | |
105 | .modify = zebra_import_kernel_table_distance_modify, | |
106 | } | |
107 | }, | |
108 | { | |
109 | .xpath = "/frr-zebra:zebra/import-kernel-table/route-map", | |
110 | .cbs = { | |
111 | .modify = zebra_import_kernel_table_route_map_modify, | |
112 | .destroy = zebra_import_kernel_table_route_map_destroy, | |
113 | } | |
114 | }, | |
115 | { | |
116 | .xpath = "/frr-zebra:zebra/allow-external-route-update", | |
117 | .cbs = { | |
118 | .create = zebra_allow_external_route_update_create, | |
119 | .destroy = zebra_allow_external_route_update_destroy, | |
120 | } | |
121 | }, | |
122 | { | |
123 | .xpath = "/frr-zebra:zebra/dplane-queue-limit", | |
124 | .cbs = { | |
125 | .modify = zebra_dplane_queue_limit_modify, | |
126 | } | |
127 | }, | |
128 | { | |
129 | .xpath = "/frr-zebra:zebra/vrf-vni-mapping", | |
130 | .cbs = { | |
131 | .create = zebra_vrf_vni_mapping_create, | |
132 | .destroy = zebra_vrf_vni_mapping_destroy, | |
133 | } | |
134 | }, | |
135 | { | |
136 | .xpath = "/frr-zebra:zebra/vrf-vni-mapping/vni-id", | |
137 | .cbs = { | |
138 | .modify = zebra_vrf_vni_mapping_vni_id_modify, | |
139 | .destroy = zebra_vrf_vni_mapping_vni_id_destroy, | |
140 | } | |
141 | }, | |
142 | { | |
143 | .xpath = "/frr-zebra:zebra/vrf-vni-mapping/prefix-only", | |
144 | .cbs = { | |
145 | .create = zebra_vrf_vni_mapping_prefix_only_create, | |
146 | .destroy = zebra_vrf_vni_mapping_prefix_only_destroy, | |
147 | } | |
148 | }, | |
149 | { | |
150 | .xpath = "/frr-zebra:zebra/debugs/debug-events", | |
151 | .cbs = { | |
152 | .modify = zebra_debugs_debug_events_modify, | |
153 | .destroy = zebra_debugs_debug_events_destroy, | |
154 | } | |
155 | }, | |
156 | { | |
157 | .xpath = "/frr-zebra:zebra/debugs/debug-zapi-send", | |
158 | .cbs = { | |
159 | .modify = zebra_debugs_debug_zapi_send_modify, | |
160 | .destroy = zebra_debugs_debug_zapi_send_destroy, | |
161 | } | |
162 | }, | |
163 | { | |
164 | .xpath = "/frr-zebra:zebra/debugs/debug-zapi-recv", | |
165 | .cbs = { | |
166 | .modify = zebra_debugs_debug_zapi_recv_modify, | |
167 | .destroy = zebra_debugs_debug_zapi_recv_destroy, | |
168 | } | |
169 | }, | |
170 | { | |
171 | .xpath = "/frr-zebra:zebra/debugs/debug-zapi-detail", | |
172 | .cbs = { | |
173 | .modify = zebra_debugs_debug_zapi_detail_modify, | |
174 | .destroy = zebra_debugs_debug_zapi_detail_destroy, | |
175 | } | |
176 | }, | |
177 | { | |
178 | .xpath = "/frr-zebra:zebra/debugs/debug-kernel", | |
179 | .cbs = { | |
180 | .modify = zebra_debugs_debug_kernel_modify, | |
181 | .destroy = zebra_debugs_debug_kernel_destroy, | |
182 | } | |
183 | }, | |
184 | { | |
185 | .xpath = "/frr-zebra:zebra/debugs/debug-kernel-msg-send", | |
186 | .cbs = { | |
187 | .modify = zebra_debugs_debug_kernel_msg_send_modify, | |
188 | .destroy = zebra_debugs_debug_kernel_msg_send_destroy, | |
189 | } | |
190 | }, | |
191 | { | |
192 | .xpath = "/frr-zebra:zebra/debugs/debug-kernel-msg-recv", | |
193 | .cbs = { | |
194 | .modify = zebra_debugs_debug_kernel_msg_recv_modify, | |
195 | .destroy = zebra_debugs_debug_kernel_msg_recv_destroy, | |
196 | } | |
197 | }, | |
198 | { | |
199 | .xpath = "/frr-zebra:zebra/debugs/debug-rib", | |
200 | .cbs = { | |
201 | .modify = zebra_debugs_debug_rib_modify, | |
202 | .destroy = zebra_debugs_debug_rib_destroy, | |
203 | } | |
204 | }, | |
205 | { | |
206 | .xpath = "/frr-zebra:zebra/debugs/debug-rib-detail", | |
207 | .cbs = { | |
208 | .modify = zebra_debugs_debug_rib_detail_modify, | |
209 | .destroy = zebra_debugs_debug_rib_detail_destroy, | |
210 | } | |
211 | }, | |
212 | { | |
213 | .xpath = "/frr-zebra:zebra/debugs/debug-fpm", | |
214 | .cbs = { | |
215 | .modify = zebra_debugs_debug_fpm_modify, | |
216 | .destroy = zebra_debugs_debug_fpm_destroy, | |
217 | } | |
218 | }, | |
219 | { | |
220 | .xpath = "/frr-zebra:zebra/debugs/debug-nht", | |
221 | .cbs = { | |
222 | .modify = zebra_debugs_debug_nht_modify, | |
223 | .destroy = zebra_debugs_debug_nht_destroy, | |
224 | } | |
225 | }, | |
226 | { | |
227 | .xpath = "/frr-zebra:zebra/debugs/debug-nht-detail", | |
228 | .cbs = { | |
229 | .modify = zebra_debugs_debug_nht_detail_modify, | |
230 | .destroy = zebra_debugs_debug_nht_detail_destroy, | |
231 | } | |
232 | }, | |
233 | { | |
234 | .xpath = "/frr-zebra:zebra/debugs/debug-mpls", | |
235 | .cbs = { | |
236 | .modify = zebra_debugs_debug_mpls_modify, | |
237 | .destroy = zebra_debugs_debug_mpls_destroy, | |
238 | } | |
239 | }, | |
240 | { | |
241 | .xpath = "/frr-zebra:zebra/debugs/debug-vxlan", | |
242 | .cbs = { | |
243 | .modify = zebra_debugs_debug_vxlan_modify, | |
244 | .destroy = zebra_debugs_debug_vxlan_destroy, | |
245 | } | |
246 | }, | |
247 | { | |
248 | .xpath = "/frr-zebra:zebra/debugs/debug-pw", | |
249 | .cbs = { | |
250 | .modify = zebra_debugs_debug_pw_modify, | |
251 | .destroy = zebra_debugs_debug_pw_destroy, | |
252 | } | |
253 | }, | |
254 | { | |
255 | .xpath = "/frr-zebra:zebra/debugs/debug-dplane", | |
256 | .cbs = { | |
257 | .modify = zebra_debugs_debug_dplane_modify, | |
258 | .destroy = zebra_debugs_debug_dplane_destroy, | |
259 | } | |
260 | }, | |
261 | { | |
262 | .xpath = "/frr-zebra:zebra/debugs/debug-dplane-detail", | |
263 | .cbs = { | |
264 | .modify = zebra_debugs_debug_dplane_detail_modify, | |
265 | .destroy = zebra_debugs_debug_dplane_detail_destroy, | |
266 | } | |
267 | }, | |
268 | { | |
269 | .xpath = "/frr-zebra:zebra/debugs/debug-mlag", | |
270 | .cbs = { | |
271 | .modify = zebra_debugs_debug_mlag_modify, | |
272 | .destroy = zebra_debugs_debug_mlag_destroy, | |
273 | } | |
274 | }, | |
275 | { | |
276 | .xpath = "/frr-zebra:get-route-information", | |
277 | .cbs = { | |
278 | .rpc = get_route_information_rpc, | |
279 | } | |
280 | }, | |
281 | { | |
282 | .xpath = "/frr-zebra:get-v6-mroute-info", | |
283 | .cbs = { | |
284 | .rpc = get_v6_mroute_info_rpc, | |
285 | } | |
286 | }, | |
287 | { | |
288 | .xpath = "/frr-zebra:get-vrf-info", | |
289 | .cbs = { | |
290 | .rpc = get_vrf_info_rpc, | |
291 | } | |
292 | }, | |
293 | { | |
294 | .xpath = "/frr-zebra:get-vrf-vni-info", | |
295 | .cbs = { | |
296 | .rpc = get_vrf_vni_info_rpc, | |
297 | } | |
298 | }, | |
299 | { | |
300 | .xpath = "/frr-zebra:get-evpn-info", | |
301 | .cbs = { | |
302 | .rpc = get_evpn_info_rpc, | |
303 | } | |
304 | }, | |
305 | { | |
306 | .xpath = "/frr-zebra:get-vni-info", | |
307 | .cbs = { | |
308 | .rpc = get_vni_info_rpc, | |
309 | } | |
310 | }, | |
311 | { | |
312 | .xpath = "/frr-zebra:get-evpn-vni-rmac", | |
313 | .cbs = { | |
314 | .rpc = get_evpn_vni_rmac_rpc, | |
315 | } | |
316 | }, | |
317 | { | |
318 | .xpath = "/frr-zebra:get-evpn-vni-nexthops", | |
319 | .cbs = { | |
320 | .rpc = get_evpn_vni_nexthops_rpc, | |
321 | } | |
322 | }, | |
323 | { | |
324 | .xpath = "/frr-zebra:clear-evpn-dup-addr", | |
325 | .cbs = { | |
326 | .rpc = clear_evpn_dup_addr_rpc, | |
327 | } | |
328 | }, | |
329 | { | |
330 | .xpath = "/frr-zebra:get-evpn-macs", | |
331 | .cbs = { | |
332 | .rpc = get_evpn_macs_rpc, | |
333 | } | |
334 | }, | |
335 | { | |
336 | .xpath = "/frr-zebra:get-evpn-arp-cache", | |
337 | .cbs = { | |
338 | .rpc = get_evpn_arp_cache_rpc, | |
339 | } | |
340 | }, | |
341 | { | |
342 | .xpath = "/frr-zebra:get-pbr-ipset", | |
343 | .cbs = { | |
344 | .rpc = get_pbr_ipset_rpc, | |
345 | } | |
346 | }, | |
347 | { | |
348 | .xpath = "/frr-zebra:get-pbr-iptable", | |
349 | .cbs = { | |
350 | .rpc = get_pbr_iptable_rpc, | |
351 | } | |
352 | }, | |
353 | { | |
354 | .xpath = "/frr-zebra:get-debugs", | |
355 | .cbs = { | |
356 | .rpc = get_debugs_rpc, | |
357 | } | |
358 | }, | |
359 | { | |
b00f3e4b | 360 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs", |
ce45ffe7 | 361 | .cbs = { |
b00f3e4b CS |
362 | .create = lib_interface_zebra_ip_addrs_create, |
363 | .destroy = lib_interface_zebra_ip_addrs_destroy, | |
ce45ffe7 CS |
364 | } |
365 | }, | |
366 | { | |
b00f3e4b | 367 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/label", |
ce45ffe7 | 368 | .cbs = { |
b00f3e4b CS |
369 | .modify = lib_interface_zebra_ip_addrs_label_modify, |
370 | .destroy = lib_interface_zebra_ip_addrs_label_destroy, | |
ce45ffe7 CS |
371 | } |
372 | }, | |
373 | { | |
b00f3e4b | 374 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/ip4-peer", |
ce45ffe7 | 375 | .cbs = { |
b00f3e4b CS |
376 | .modify = lib_interface_zebra_ip_addrs_ip4_peer_modify, |
377 | .destroy = lib_interface_zebra_ip_addrs_ip4_peer_destroy, | |
ce45ffe7 CS |
378 | } |
379 | }, | |
380 | { | |
381 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/multicast", | |
382 | .cbs = { | |
383 | .modify = lib_interface_zebra_multicast_modify, | |
384 | .destroy = lib_interface_zebra_multicast_destroy, | |
385 | } | |
386 | }, | |
387 | { | |
388 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/link-detect", | |
389 | .cbs = { | |
390 | .modify = lib_interface_zebra_link_detect_modify, | |
391 | .destroy = lib_interface_zebra_link_detect_destroy, | |
392 | } | |
393 | }, | |
394 | { | |
395 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/shutdown", | |
396 | .cbs = { | |
397 | .modify = lib_interface_zebra_shutdown_modify, | |
398 | .destroy = lib_interface_zebra_shutdown_destroy, | |
399 | } | |
400 | }, | |
401 | { | |
402 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/bandwidth", | |
403 | .cbs = { | |
404 | .modify = lib_interface_zebra_bandwidth_modify, | |
405 | .destroy = lib_interface_zebra_bandwidth_destroy, | |
406 | } | |
407 | }, | |
b00f3e4b CS |
408 | { |
409 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/up-count", | |
410 | .cbs = { | |
411 | .get_elem = lib_interface_zebra_state_up_count_get_elem, | |
412 | } | |
413 | }, | |
414 | { | |
415 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/down-count", | |
416 | .cbs = { | |
417 | .get_elem = lib_interface_zebra_state_down_count_get_elem, | |
418 | } | |
419 | }, | |
420 | { | |
421 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/zif-type", | |
422 | .cbs = { | |
423 | .get_elem = lib_interface_zebra_state_zif_type_get_elem, | |
424 | } | |
425 | }, | |
426 | { | |
427 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/ptm-status", | |
428 | .cbs = { | |
429 | .get_elem = lib_interface_zebra_state_ptm_status_get_elem, | |
430 | } | |
431 | }, | |
432 | { | |
433 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/vlan-id", | |
434 | .cbs = { | |
435 | .get_elem = lib_interface_zebra_state_vlan_id_get_elem, | |
436 | } | |
437 | }, | |
438 | { | |
439 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/vni-id", | |
440 | .cbs = { | |
441 | .get_elem = lib_interface_zebra_state_vni_id_get_elem, | |
442 | } | |
443 | }, | |
444 | { | |
445 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/remote-vtep", | |
446 | .cbs = { | |
447 | .get_elem = lib_interface_zebra_state_remote_vtep_get_elem, | |
448 | } | |
449 | }, | |
450 | { | |
451 | .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/mcast-group", | |
452 | .cbs = { | |
453 | .get_elem = lib_interface_zebra_state_mcast_group_get_elem, | |
454 | } | |
455 | }, | |
ce45ffe7 | 456 | { |
56a88b9e | 457 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib", |
ce45ffe7 | 458 | .cbs = { |
56a88b9e CS |
459 | .create = lib_vrf_zebra_ribs_rib_create, |
460 | .destroy = lib_vrf_zebra_ribs_rib_destroy, | |
461 | .get_next = lib_vrf_zebra_ribs_rib_get_next, | |
462 | .get_keys = lib_vrf_zebra_ribs_rib_get_keys, | |
463 | .lookup_entry = lib_vrf_zebra_ribs_rib_lookup_entry, | |
ce45ffe7 CS |
464 | } |
465 | }, | |
466 | { | |
56a88b9e | 467 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route", |
ce45ffe7 | 468 | .cbs = { |
56a88b9e CS |
469 | .get_next = lib_vrf_zebra_ribs_rib_route_get_next, |
470 | .get_keys = lib_vrf_zebra_ribs_rib_route_get_keys, | |
471 | .lookup_entry = lib_vrf_zebra_ribs_rib_route_lookup_entry, | |
ce45ffe7 CS |
472 | } |
473 | }, | |
474 | { | |
56a88b9e | 475 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/prefix", |
ce45ffe7 | 476 | .cbs = { |
56a88b9e | 477 | .get_elem = lib_vrf_zebra_ribs_rib_route_prefix_get_elem, |
ce45ffe7 CS |
478 | } |
479 | }, | |
480 | { | |
56a88b9e | 481 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry", |
ce45ffe7 | 482 | .cbs = { |
56a88b9e CS |
483 | .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_get_next, |
484 | .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_get_keys, | |
485 | .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_lookup_entry, | |
ce45ffe7 CS |
486 | } |
487 | }, | |
488 | { | |
56a88b9e | 489 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/protocol", |
ce45ffe7 | 490 | .cbs = { |
56a88b9e | 491 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_protocol_get_elem, |
ce45ffe7 CS |
492 | } |
493 | }, | |
494 | { | |
56a88b9e | 495 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/instance", |
ce45ffe7 | 496 | .cbs = { |
56a88b9e | 497 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_instance_get_elem, |
ce45ffe7 CS |
498 | } |
499 | }, | |
500 | { | |
56a88b9e | 501 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/distance", |
ce45ffe7 | 502 | .cbs = { |
56a88b9e | 503 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_distance_get_elem, |
ce45ffe7 CS |
504 | } |
505 | }, | |
506 | { | |
56a88b9e | 507 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/metric", |
ce45ffe7 | 508 | .cbs = { |
56a88b9e | 509 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_metric_get_elem, |
ce45ffe7 CS |
510 | } |
511 | }, | |
512 | { | |
56a88b9e | 513 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/tag", |
ce45ffe7 | 514 | .cbs = { |
56a88b9e | 515 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_tag_get_elem, |
ce45ffe7 CS |
516 | } |
517 | }, | |
518 | { | |
56a88b9e | 519 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/selected", |
ce45ffe7 | 520 | .cbs = { |
56a88b9e | 521 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_selected_get_elem, |
ce45ffe7 CS |
522 | } |
523 | }, | |
524 | { | |
56a88b9e | 525 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/installed", |
ce45ffe7 | 526 | .cbs = { |
56a88b9e | 527 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_installed_get_elem, |
ce45ffe7 CS |
528 | } |
529 | }, | |
530 | { | |
56a88b9e | 531 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/failed", |
ce45ffe7 | 532 | .cbs = { |
56a88b9e | 533 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_failed_get_elem, |
ce45ffe7 CS |
534 | } |
535 | }, | |
536 | { | |
56a88b9e | 537 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/queued", |
ce45ffe7 | 538 | .cbs = { |
56a88b9e | 539 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_queued_get_elem, |
ce45ffe7 CS |
540 | } |
541 | }, | |
542 | { | |
56a88b9e | 543 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-flags", |
ce45ffe7 | 544 | .cbs = { |
56a88b9e | 545 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_internal_flags_get_elem, |
ce45ffe7 CS |
546 | } |
547 | }, | |
548 | { | |
56a88b9e | 549 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-status", |
ce45ffe7 | 550 | .cbs = { |
56a88b9e | 551 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem, |
ce45ffe7 CS |
552 | } |
553 | }, | |
554 | { | |
56a88b9e | 555 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/uptime", |
ce45ffe7 | 556 | .cbs = { |
56a88b9e | 557 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem, |
ce45ffe7 CS |
558 | } |
559 | }, | |
560 | { | |
56a88b9e | 561 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group", |
ce45ffe7 | 562 | .cbs = { |
56a88b9e CS |
563 | .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_next, |
564 | .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys, | |
565 | .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry, | |
ce45ffe7 CS |
566 | } |
567 | }, | |
568 | { | |
56a88b9e | 569 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/name", |
ce45ffe7 | 570 | .cbs = { |
56a88b9e | 571 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_name_get_elem, |
ce45ffe7 CS |
572 | } |
573 | }, | |
574 | { | |
56a88b9e | 575 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop", |
ce45ffe7 | 576 | .cbs = { |
56a88b9e CS |
577 | .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next, |
578 | .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys, | |
579 | .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry, | |
ce45ffe7 CS |
580 | } |
581 | }, | |
582 | { | |
56a88b9e | 583 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/nh-type", |
ce45ffe7 | 584 | .cbs = { |
56a88b9e | 585 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem, |
ce45ffe7 CS |
586 | } |
587 | }, | |
588 | { | |
56a88b9e | 589 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/vrf", |
ce45ffe7 | 590 | .cbs = { |
56a88b9e | 591 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem, |
ce45ffe7 CS |
592 | } |
593 | }, | |
594 | { | |
56a88b9e | 595 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/gateway", |
ce45ffe7 | 596 | .cbs = { |
56a88b9e | 597 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem, |
ce45ffe7 CS |
598 | } |
599 | }, | |
600 | { | |
56a88b9e | 601 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/interface", |
ce45ffe7 | 602 | .cbs = { |
56a88b9e | 603 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem, |
ce45ffe7 CS |
604 | } |
605 | }, | |
606 | { | |
56a88b9e | 607 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/bh-type", |
ce45ffe7 | 608 | .cbs = { |
56a88b9e | 609 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem, |
ce45ffe7 CS |
610 | } |
611 | }, | |
612 | { | |
56a88b9e | 613 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/onlink", |
ce45ffe7 | 614 | .cbs = { |
56a88b9e | 615 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem, |
ce45ffe7 CS |
616 | } |
617 | }, | |
618 | { | |
56a88b9e | 619 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry", |
ce45ffe7 | 620 | .cbs = { |
56a88b9e CS |
621 | .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next, |
622 | .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys, | |
623 | .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry, | |
ce45ffe7 CS |
624 | } |
625 | }, | |
626 | { | |
56a88b9e | 627 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/id", |
ce45ffe7 | 628 | .cbs = { |
56a88b9e | 629 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem, |
ce45ffe7 CS |
630 | } |
631 | }, | |
632 | { | |
56a88b9e | 633 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/label", |
ce45ffe7 | 634 | .cbs = { |
56a88b9e | 635 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem, |
ce45ffe7 CS |
636 | } |
637 | }, | |
638 | { | |
56a88b9e | 639 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/ttl", |
ce45ffe7 | 640 | .cbs = { |
56a88b9e | 641 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem, |
ce45ffe7 CS |
642 | } |
643 | }, | |
644 | { | |
56a88b9e | 645 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/traffic-class", |
ce45ffe7 | 646 | .cbs = { |
56a88b9e | 647 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem, |
ce45ffe7 CS |
648 | } |
649 | }, | |
650 | { | |
56a88b9e | 651 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/duplicate", |
ce45ffe7 | 652 | .cbs = { |
56a88b9e | 653 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem, |
ce45ffe7 CS |
654 | } |
655 | }, | |
656 | { | |
56a88b9e | 657 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/recursive", |
ce45ffe7 | 658 | .cbs = { |
56a88b9e | 659 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem, |
ce45ffe7 CS |
660 | } |
661 | }, | |
662 | { | |
56a88b9e | 663 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/active", |
ce45ffe7 | 664 | .cbs = { |
56a88b9e | 665 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem, |
ce45ffe7 CS |
666 | } |
667 | }, | |
668 | { | |
56a88b9e | 669 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/fib", |
ce45ffe7 | 670 | .cbs = { |
56a88b9e | 671 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem, |
ce45ffe7 CS |
672 | } |
673 | }, | |
674 | { | |
675 | .xpath = "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:ipv4-prefix-length", | |
676 | .cbs = { | |
677 | .modify = lib_route_map_entry_match_condition_ipv4_prefix_length_modify, | |
678 | .destroy = lib_route_map_entry_match_condition_ipv4_prefix_length_destroy, | |
679 | } | |
680 | }, | |
681 | { | |
682 | .xpath = "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:ipv6-prefix-length", | |
683 | .cbs = { | |
684 | .modify = lib_route_map_entry_match_condition_ipv6_prefix_length_modify, | |
685 | .destroy = lib_route_map_entry_match_condition_ipv6_prefix_length_destroy, | |
686 | } | |
687 | }, | |
688 | { | |
689 | .xpath = "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:source-protocol", | |
690 | .cbs = { | |
691 | .modify = lib_route_map_entry_match_condition_source_protocol_modify, | |
692 | .destroy = lib_route_map_entry_match_condition_source_protocol_destroy, | |
693 | } | |
694 | }, | |
695 | { | |
696 | .xpath = "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:source-instance", | |
697 | .cbs = { | |
698 | .modify = lib_route_map_entry_match_condition_source_instance_modify, | |
699 | .destroy = lib_route_map_entry_match_condition_source_instance_destroy, | |
700 | } | |
701 | }, | |
702 | { | |
703 | .xpath = "/frr-route-map:lib/route-map/entry/set-action/frr-zebra:source-v4", | |
704 | .cbs = { | |
705 | .modify = lib_route_map_entry_set_action_source_v4_modify, | |
706 | .destroy = lib_route_map_entry_set_action_source_v4_destroy, | |
707 | } | |
708 | }, | |
709 | { | |
710 | .xpath = "/frr-route-map:lib/route-map/entry/set-action/frr-zebra:source-v6", | |
711 | .cbs = { | |
712 | .modify = lib_route_map_entry_set_action_source_v6_modify, | |
713 | .destroy = lib_route_map_entry_set_action_source_v6_destroy, | |
714 | } | |
715 | }, | |
7225e61c | 716 | { |
56a88b9e | 717 | .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/weight", |
7225e61c | 718 | .cbs = { |
56a88b9e | 719 | .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem, |
7225e61c CS |
720 | } |
721 | }, | |
ce45ffe7 CS |
722 | { |
723 | .xpath = NULL, | |
724 | }, | |
725 | } | |
726 | }; |