]> git.proxmox.com Git - mirror_frr.git/blame - zebra/zebra_nb.c
*: auto-convert to SPDX License IDs
[mirror_frr.git] / zebra / zebra_nb.c
CommitLineData
acddc0ed 1// SPDX-License-Identifier: GPL-2.0-or-later
ce45ffe7
CS
2/*
3 * Copyright (C) 2020 Cumulus Networks, Inc.
4 * Chirag Shah
ce45ffe7
CS
5 */
6
7#include <zebra.h>
8#include "northbound.h"
9#include "libfrr.h"
10#include "zebra_nb.h"
11
12/* clang-format off */
13const struct frr_yang_module_info frr_zebra_info = {
14 .name = "frr-zebra",
15 .nodes = {
16 {
17 .xpath = "/frr-zebra:zebra/mcast-rpf-lookup",
18 .cbs = {
19 .modify = zebra_mcast_rpf_lookup_modify,
20 }
21 },
22 {
23 .xpath = "/frr-zebra:zebra/ip-forwarding",
24 .cbs = {
25 .modify = zebra_ip_forwarding_modify,
26 .destroy = zebra_ip_forwarding_destroy,
27 }
28 },
29 {
30 .xpath = "/frr-zebra:zebra/ipv6-forwarding",
31 .cbs = {
32 .modify = zebra_ipv6_forwarding_modify,
33 .destroy = zebra_ipv6_forwarding_destroy,
34 }
35 },
36 {
37 .xpath = "/frr-zebra:zebra/workqueue-hold-timer",
38 .cbs = {
39 .modify = zebra_workqueue_hold_timer_modify,
40 }
41 },
42 {
43 .xpath = "/frr-zebra:zebra/zapi-packets",
44 .cbs = {
45 .modify = zebra_zapi_packets_modify,
46 }
47 },
48 {
49 .xpath = "/frr-zebra:zebra/import-kernel-table/table-id",
50 .cbs = {
51 .modify = zebra_import_kernel_table_table_id_modify,
52 .destroy = zebra_import_kernel_table_table_id_destroy,
53 }
54 },
55 {
56 .xpath = "/frr-zebra:zebra/import-kernel-table/distance",
57 .cbs = {
58 .modify = zebra_import_kernel_table_distance_modify,
59 }
60 },
61 {
62 .xpath = "/frr-zebra:zebra/import-kernel-table/route-map",
63 .cbs = {
64 .modify = zebra_import_kernel_table_route_map_modify,
65 .destroy = zebra_import_kernel_table_route_map_destroy,
66 }
67 },
68 {
69 .xpath = "/frr-zebra:zebra/allow-external-route-update",
70 .cbs = {
71 .create = zebra_allow_external_route_update_create,
72 .destroy = zebra_allow_external_route_update_destroy,
73 }
74 },
75 {
76 .xpath = "/frr-zebra:zebra/dplane-queue-limit",
77 .cbs = {
78 .modify = zebra_dplane_queue_limit_modify,
79 }
80 },
ce45ffe7
CS
81 {
82 .xpath = "/frr-zebra:zebra/debugs/debug-events",
83 .cbs = {
84 .modify = zebra_debugs_debug_events_modify,
85 .destroy = zebra_debugs_debug_events_destroy,
86 }
87 },
88 {
89 .xpath = "/frr-zebra:zebra/debugs/debug-zapi-send",
90 .cbs = {
91 .modify = zebra_debugs_debug_zapi_send_modify,
92 .destroy = zebra_debugs_debug_zapi_send_destroy,
93 }
94 },
95 {
96 .xpath = "/frr-zebra:zebra/debugs/debug-zapi-recv",
97 .cbs = {
98 .modify = zebra_debugs_debug_zapi_recv_modify,
99 .destroy = zebra_debugs_debug_zapi_recv_destroy,
100 }
101 },
102 {
103 .xpath = "/frr-zebra:zebra/debugs/debug-zapi-detail",
104 .cbs = {
105 .modify = zebra_debugs_debug_zapi_detail_modify,
106 .destroy = zebra_debugs_debug_zapi_detail_destroy,
107 }
108 },
109 {
110 .xpath = "/frr-zebra:zebra/debugs/debug-kernel",
111 .cbs = {
112 .modify = zebra_debugs_debug_kernel_modify,
113 .destroy = zebra_debugs_debug_kernel_destroy,
114 }
115 },
116 {
117 .xpath = "/frr-zebra:zebra/debugs/debug-kernel-msg-send",
118 .cbs = {
119 .modify = zebra_debugs_debug_kernel_msg_send_modify,
120 .destroy = zebra_debugs_debug_kernel_msg_send_destroy,
121 }
122 },
123 {
124 .xpath = "/frr-zebra:zebra/debugs/debug-kernel-msg-recv",
125 .cbs = {
126 .modify = zebra_debugs_debug_kernel_msg_recv_modify,
127 .destroy = zebra_debugs_debug_kernel_msg_recv_destroy,
128 }
129 },
130 {
131 .xpath = "/frr-zebra:zebra/debugs/debug-rib",
132 .cbs = {
133 .modify = zebra_debugs_debug_rib_modify,
134 .destroy = zebra_debugs_debug_rib_destroy,
135 }
136 },
137 {
138 .xpath = "/frr-zebra:zebra/debugs/debug-rib-detail",
139 .cbs = {
140 .modify = zebra_debugs_debug_rib_detail_modify,
141 .destroy = zebra_debugs_debug_rib_detail_destroy,
142 }
143 },
144 {
145 .xpath = "/frr-zebra:zebra/debugs/debug-fpm",
146 .cbs = {
147 .modify = zebra_debugs_debug_fpm_modify,
148 .destroy = zebra_debugs_debug_fpm_destroy,
149 }
150 },
151 {
152 .xpath = "/frr-zebra:zebra/debugs/debug-nht",
153 .cbs = {
154 .modify = zebra_debugs_debug_nht_modify,
155 .destroy = zebra_debugs_debug_nht_destroy,
156 }
157 },
158 {
159 .xpath = "/frr-zebra:zebra/debugs/debug-nht-detail",
160 .cbs = {
161 .modify = zebra_debugs_debug_nht_detail_modify,
162 .destroy = zebra_debugs_debug_nht_detail_destroy,
163 }
164 },
165 {
166 .xpath = "/frr-zebra:zebra/debugs/debug-mpls",
167 .cbs = {
168 .modify = zebra_debugs_debug_mpls_modify,
169 .destroy = zebra_debugs_debug_mpls_destroy,
170 }
171 },
172 {
173 .xpath = "/frr-zebra:zebra/debugs/debug-vxlan",
174 .cbs = {
175 .modify = zebra_debugs_debug_vxlan_modify,
176 .destroy = zebra_debugs_debug_vxlan_destroy,
177 }
178 },
179 {
180 .xpath = "/frr-zebra:zebra/debugs/debug-pw",
181 .cbs = {
182 .modify = zebra_debugs_debug_pw_modify,
183 .destroy = zebra_debugs_debug_pw_destroy,
184 }
185 },
186 {
187 .xpath = "/frr-zebra:zebra/debugs/debug-dplane",
188 .cbs = {
189 .modify = zebra_debugs_debug_dplane_modify,
190 .destroy = zebra_debugs_debug_dplane_destroy,
191 }
192 },
193 {
194 .xpath = "/frr-zebra:zebra/debugs/debug-dplane-detail",
195 .cbs = {
196 .modify = zebra_debugs_debug_dplane_detail_modify,
197 .destroy = zebra_debugs_debug_dplane_detail_destroy,
198 }
199 },
200 {
201 .xpath = "/frr-zebra:zebra/debugs/debug-mlag",
202 .cbs = {
203 .modify = zebra_debugs_debug_mlag_modify,
204 .destroy = zebra_debugs_debug_mlag_destroy,
205 }
206 },
207 {
208 .xpath = "/frr-zebra:get-route-information",
209 .cbs = {
210 .rpc = get_route_information_rpc,
211 }
212 },
213 {
214 .xpath = "/frr-zebra:get-v6-mroute-info",
215 .cbs = {
216 .rpc = get_v6_mroute_info_rpc,
217 }
218 },
219 {
220 .xpath = "/frr-zebra:get-vrf-info",
221 .cbs = {
222 .rpc = get_vrf_info_rpc,
223 }
224 },
225 {
226 .xpath = "/frr-zebra:get-vrf-vni-info",
227 .cbs = {
228 .rpc = get_vrf_vni_info_rpc,
229 }
230 },
231 {
232 .xpath = "/frr-zebra:get-evpn-info",
233 .cbs = {
234 .rpc = get_evpn_info_rpc,
235 }
236 },
237 {
238 .xpath = "/frr-zebra:get-vni-info",
239 .cbs = {
240 .rpc = get_vni_info_rpc,
241 }
242 },
243 {
244 .xpath = "/frr-zebra:get-evpn-vni-rmac",
245 .cbs = {
246 .rpc = get_evpn_vni_rmac_rpc,
247 }
248 },
249 {
250 .xpath = "/frr-zebra:get-evpn-vni-nexthops",
251 .cbs = {
252 .rpc = get_evpn_vni_nexthops_rpc,
253 }
254 },
255 {
256 .xpath = "/frr-zebra:clear-evpn-dup-addr",
257 .cbs = {
258 .rpc = clear_evpn_dup_addr_rpc,
259 }
260 },
261 {
262 .xpath = "/frr-zebra:get-evpn-macs",
263 .cbs = {
264 .rpc = get_evpn_macs_rpc,
265 }
266 },
267 {
268 .xpath = "/frr-zebra:get-evpn-arp-cache",
269 .cbs = {
270 .rpc = get_evpn_arp_cache_rpc,
271 }
272 },
273 {
274 .xpath = "/frr-zebra:get-pbr-ipset",
275 .cbs = {
276 .rpc = get_pbr_ipset_rpc,
277 }
278 },
279 {
280 .xpath = "/frr-zebra:get-pbr-iptable",
281 .cbs = {
282 .rpc = get_pbr_iptable_rpc,
283 }
284 },
285 {
286 .xpath = "/frr-zebra:get-debugs",
287 .cbs = {
288 .rpc = get_debugs_rpc,
289 }
290 },
291 {
b00f3e4b 292 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs",
ce45ffe7 293 .cbs = {
b00f3e4b
CS
294 .create = lib_interface_zebra_ip_addrs_create,
295 .destroy = lib_interface_zebra_ip_addrs_destroy,
ce45ffe7
CS
296 }
297 },
298 {
b00f3e4b 299 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/label",
ce45ffe7 300 .cbs = {
b00f3e4b
CS
301 .modify = lib_interface_zebra_ip_addrs_label_modify,
302 .destroy = lib_interface_zebra_ip_addrs_label_destroy,
ce45ffe7
CS
303 }
304 },
305 {
b00f3e4b 306 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/ip4-peer",
ce45ffe7 307 .cbs = {
b00f3e4b
CS
308 .modify = lib_interface_zebra_ip_addrs_ip4_peer_modify,
309 .destroy = lib_interface_zebra_ip_addrs_ip4_peer_destroy,
ce45ffe7
CS
310 }
311 },
312 {
313 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/multicast",
314 .cbs = {
315 .modify = lib_interface_zebra_multicast_modify,
316 .destroy = lib_interface_zebra_multicast_destroy,
317 }
318 },
319 {
320 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/link-detect",
321 .cbs = {
322 .modify = lib_interface_zebra_link_detect_modify,
323 .destroy = lib_interface_zebra_link_detect_destroy,
324 }
325 },
326 {
327 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/shutdown",
328 .cbs = {
329 .modify = lib_interface_zebra_shutdown_modify,
330 .destroy = lib_interface_zebra_shutdown_destroy,
331 }
332 },
333 {
334 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/bandwidth",
335 .cbs = {
336 .modify = lib_interface_zebra_bandwidth_modify,
337 .destroy = lib_interface_zebra_bandwidth_destroy,
338 }
339 },
b00f3e4b
CS
340 {
341 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/up-count",
342 .cbs = {
343 .get_elem = lib_interface_zebra_state_up_count_get_elem,
344 }
345 },
346 {
347 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/down-count",
348 .cbs = {
349 .get_elem = lib_interface_zebra_state_down_count_get_elem,
350 }
351 },
352 {
353 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/zif-type",
354 .cbs = {
355 .get_elem = lib_interface_zebra_state_zif_type_get_elem,
356 }
357 },
358 {
359 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/ptm-status",
360 .cbs = {
361 .get_elem = lib_interface_zebra_state_ptm_status_get_elem,
362 }
363 },
364 {
365 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/vlan-id",
366 .cbs = {
367 .get_elem = lib_interface_zebra_state_vlan_id_get_elem,
368 }
369 },
370 {
371 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/vni-id",
372 .cbs = {
373 .get_elem = lib_interface_zebra_state_vni_id_get_elem,
374 }
375 },
376 {
377 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/remote-vtep",
378 .cbs = {
379 .get_elem = lib_interface_zebra_state_remote_vtep_get_elem,
380 }
381 },
382 {
383 .xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/mcast-group",
384 .cbs = {
385 .get_elem = lib_interface_zebra_state_mcast_group_get_elem,
386 }
387 },
ce45ffe7 388 {
56a88b9e 389 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib",
ce45ffe7 390 .cbs = {
56a88b9e
CS
391 .get_next = lib_vrf_zebra_ribs_rib_get_next,
392 .get_keys = lib_vrf_zebra_ribs_rib_get_keys,
393 .lookup_entry = lib_vrf_zebra_ribs_rib_lookup_entry,
ce45ffe7
CS
394 }
395 },
6c380957
IR
396 {
397 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/afi-safi-name",
398 .cbs = {
399 .get_elem = lib_vrf_zebra_ribs_rib_afi_safi_name_get_elem,
400 }
401 },
402 {
403 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/table-id",
404 .cbs = {
405 .get_elem = lib_vrf_zebra_ribs_rib_table_id_get_elem,
406 }
407 },
ce45ffe7 408 {
56a88b9e 409 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route",
ce45ffe7 410 .cbs = {
56a88b9e
CS
411 .get_next = lib_vrf_zebra_ribs_rib_route_get_next,
412 .get_keys = lib_vrf_zebra_ribs_rib_route_get_keys,
413 .lookup_entry = lib_vrf_zebra_ribs_rib_route_lookup_entry,
ce45ffe7
CS
414 }
415 },
416 {
56a88b9e 417 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/prefix",
ce45ffe7 418 .cbs = {
56a88b9e 419 .get_elem = lib_vrf_zebra_ribs_rib_route_prefix_get_elem,
ce45ffe7
CS
420 }
421 },
422 {
56a88b9e 423 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry",
ce45ffe7 424 .cbs = {
56a88b9e
CS
425 .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_get_next,
426 .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_get_keys,
427 .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_lookup_entry,
ce45ffe7
CS
428 }
429 },
430 {
56a88b9e 431 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/protocol",
ce45ffe7 432 .cbs = {
56a88b9e 433 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_protocol_get_elem,
ce45ffe7
CS
434 }
435 },
436 {
56a88b9e 437 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/instance",
ce45ffe7 438 .cbs = {
56a88b9e 439 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_instance_get_elem,
ce45ffe7
CS
440 }
441 },
442 {
56a88b9e 443 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/distance",
ce45ffe7 444 .cbs = {
56a88b9e 445 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_distance_get_elem,
ce45ffe7
CS
446 }
447 },
448 {
56a88b9e 449 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/metric",
ce45ffe7 450 .cbs = {
56a88b9e 451 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_metric_get_elem,
ce45ffe7
CS
452 }
453 },
454 {
56a88b9e 455 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/tag",
ce45ffe7 456 .cbs = {
56a88b9e 457 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_tag_get_elem,
ce45ffe7
CS
458 }
459 },
460 {
56a88b9e 461 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/selected",
ce45ffe7 462 .cbs = {
56a88b9e 463 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_selected_get_elem,
ce45ffe7
CS
464 }
465 },
466 {
56a88b9e 467 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/installed",
ce45ffe7 468 .cbs = {
56a88b9e 469 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_installed_get_elem,
ce45ffe7
CS
470 }
471 },
472 {
56a88b9e 473 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/failed",
ce45ffe7 474 .cbs = {
56a88b9e 475 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_failed_get_elem,
ce45ffe7
CS
476 }
477 },
478 {
56a88b9e 479 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/queued",
ce45ffe7 480 .cbs = {
56a88b9e 481 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_queued_get_elem,
ce45ffe7
CS
482 }
483 },
484 {
56a88b9e 485 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-flags",
ce45ffe7 486 .cbs = {
56a88b9e 487 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_internal_flags_get_elem,
ce45ffe7
CS
488 }
489 },
490 {
56a88b9e 491 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-status",
ce45ffe7 492 .cbs = {
56a88b9e 493 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem,
ce45ffe7
CS
494 }
495 },
496 {
56a88b9e 497 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/uptime",
ce45ffe7 498 .cbs = {
56a88b9e 499 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem,
ce45ffe7
CS
500 }
501 },
502 {
2b2282eb 503 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/id",
ce45ffe7 504 .cbs = {
2b2282eb 505 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem,
ce45ffe7
CS
506 }
507 },
508 {
2b2282eb 509 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop",
ce45ffe7 510 .cbs = {
2b2282eb
CS
511 .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next,
512 .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys,
513 .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry,
ce45ffe7
CS
514 }
515 },
516 {
2b2282eb 517 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/nh-type",
ce45ffe7 518 .cbs = {
2b2282eb 519 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_nh_type_get_elem,
ce45ffe7
CS
520 }
521 },
522 {
2b2282eb 523 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/vrf",
ce45ffe7 524 .cbs = {
2b2282eb 525 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem,
ce45ffe7
CS
526 }
527 },
528 {
2b2282eb 529 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/gateway",
ce45ffe7 530 .cbs = {
2b2282eb 531 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem,
ce45ffe7
CS
532 }
533 },
534 {
2b2282eb 535 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/interface",
ce45ffe7 536 .cbs = {
2b2282eb 537 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem,
ce45ffe7
CS
538 }
539 },
540 {
2b2282eb 541 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/bh-type",
ce45ffe7 542 .cbs = {
2b2282eb 543 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem,
ce45ffe7
CS
544 }
545 },
546 {
2b2282eb 547 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/onlink",
ce45ffe7 548 .cbs = {
2b2282eb 549 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem,
ce45ffe7
CS
550 }
551 },
065276ae
SM
552 {
553 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/srte-color",
554 .cbs = {
555 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_color_get_elem,
556 }
557 },
ce45ffe7 558 {
2b2282eb 559 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry",
ce45ffe7 560 .cbs = {
2b2282eb
CS
561 .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next,
562 .get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_keys,
563 .lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry,
ce45ffe7
CS
564 }
565 },
566 {
2b2282eb 567 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/id",
ce45ffe7 568 .cbs = {
2b2282eb 569 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem,
ce45ffe7
CS
570 }
571 },
572 {
2b2282eb 573 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/label",
ce45ffe7 574 .cbs = {
2b2282eb 575 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem,
ce45ffe7
CS
576 }
577 },
578 {
2b2282eb 579 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/ttl",
ce45ffe7 580 .cbs = {
2b2282eb 581 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem,
ce45ffe7
CS
582 }
583 },
584 {
2b2282eb 585 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/traffic-class",
ce45ffe7 586 .cbs = {
2b2282eb 587 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem,
ce45ffe7
CS
588 }
589 },
590 {
2b2282eb 591 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/duplicate",
ce45ffe7 592 .cbs = {
2b2282eb 593 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem,
ce45ffe7
CS
594 }
595 },
596 {
2b2282eb 597 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/recursive",
ce45ffe7 598 .cbs = {
2b2282eb 599 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem,
ce45ffe7
CS
600 }
601 },
602 {
2b2282eb 603 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/active",
ce45ffe7 604 .cbs = {
2b2282eb 605 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem,
ce45ffe7
CS
606 }
607 },
608 {
2b2282eb 609 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/fib",
ce45ffe7 610 .cbs = {
2b2282eb 611 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem,
ce45ffe7
CS
612 }
613 },
614 {
2b2282eb 615 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/weight",
ce45ffe7 616 .cbs = {
2b2282eb 617 .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem,
ce45ffe7
CS
618 }
619 },
e2bcfa39
CS
620 {
621 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/l3vni-id",
622 .cbs = {
623 .modify = lib_vrf_zebra_l3vni_id_modify,
624 .destroy = lib_vrf_zebra_l3vni_id_destroy,
625 }
626 },
627 {
628 .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/prefix-only",
629 .cbs = {
630 .modify = lib_vrf_zebra_prefix_only_modify,
631 }
632 },
ce45ffe7
CS
633 {
634 .xpath = NULL,
635 },
636 }
637};