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