]> git.proxmox.com Git - mirror_frr.git/blame - zebra/zebra_nb_state.c
Merge pull request #6334 from ton31337/fix/labeled_unicast_table_scount
[mirror_frr.git] / zebra / zebra_nb_state.c
CommitLineData
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"
09268680 24#include "zebra/interface.h"
ce45ffe7 25
b00f3e4b
CS
26/*
27 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/up-count
28 */
29struct yang_data *
60ee8be1 30lib_interface_zebra_state_up_count_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 31{
60ee8be1 32 const struct interface *ifp = args->list_entry;
09268680
CS
33 struct zebra_if *zebra_if;
34
35 zebra_if = ifp->info;
36
60ee8be1 37 return yang_data_new_uint16(args->xpath, zebra_if->up_count);
b00f3e4b
CS
38}
39
40/*
41 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/down-count
42 */
43struct yang_data *
60ee8be1 44lib_interface_zebra_state_down_count_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 45{
60ee8be1 46 const struct interface *ifp = args->list_entry;
09268680
CS
47 struct zebra_if *zebra_if;
48
49 zebra_if = ifp->info;
50
60ee8be1 51 return yang_data_new_uint16(args->xpath, zebra_if->down_count);
b00f3e4b
CS
52}
53
54/*
55 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/zif-type
56 */
57struct yang_data *
60ee8be1 58lib_interface_zebra_state_zif_type_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b
CS
59{
60 /* TODO: implement me. */
61 return NULL;
62}
63
64/*
65 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/ptm-status
66 */
67struct yang_data *
60ee8be1 68lib_interface_zebra_state_ptm_status_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b
CS
69{
70 /* TODO: implement me. */
71 return NULL;
72}
73
74/*
75 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/vlan-id
76 */
77struct yang_data *
60ee8be1 78lib_interface_zebra_state_vlan_id_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 79{
60ee8be1 80 const struct interface *ifp = args->list_entry;
09268680
CS
81 struct zebra_if *zebra_if;
82 struct zebra_l2info_vlan *vlan_info;
83
84 if (!IS_ZEBRA_IF_VLAN(ifp))
85 return NULL;
86
87 zebra_if = ifp->info;
88 vlan_info = &zebra_if->l2info.vl;
89
60ee8be1 90 return yang_data_new_uint16(args->xpath, vlan_info->vid);
b00f3e4b
CS
91}
92
93/*
94 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/vni-id
95 */
96struct yang_data *
60ee8be1 97lib_interface_zebra_state_vni_id_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 98{
60ee8be1 99 const struct interface *ifp = args->list_entry;
09268680
CS
100 struct zebra_if *zebra_if;
101 struct zebra_l2info_vxlan *vxlan_info;
102
103 if (!IS_ZEBRA_IF_VXLAN(ifp))
104 return NULL;
105
106 zebra_if = ifp->info;
107 vxlan_info = &zebra_if->l2info.vxl;
108
60ee8be1 109 return yang_data_new_uint32(args->xpath, vxlan_info->vni);
b00f3e4b
CS
110}
111
112/*
113 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/remote-vtep
114 */
115struct yang_data *
60ee8be1 116lib_interface_zebra_state_remote_vtep_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 117{
60ee8be1 118 const struct interface *ifp = args->list_entry;
09268680
CS
119 struct zebra_if *zebra_if;
120 struct zebra_l2info_vxlan *vxlan_info;
121
122 if (!IS_ZEBRA_IF_VXLAN(ifp))
123 return NULL;
124
125 zebra_if = ifp->info;
126 vxlan_info = &zebra_if->l2info.vxl;
127
60ee8be1 128 return yang_data_new_ipv4(args->xpath, &vxlan_info->vtep_ip);
b00f3e4b
CS
129}
130
131/*
132 * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/mcast-group
133 */
134struct yang_data *
60ee8be1 135lib_interface_zebra_state_mcast_group_get_elem(struct nb_cb_get_elem_args *args)
b00f3e4b 136{
60ee8be1 137 const struct interface *ifp = args->list_entry;
09268680
CS
138 struct zebra_if *zebra_if;
139 struct zebra_l2info_vxlan *vxlan_info;
140
141 if (!IS_ZEBRA_IF_VXLAN(ifp))
142 return NULL;
143
144 zebra_if = ifp->info;
145 vxlan_info = &zebra_if->l2info.vxl;
146
60ee8be1 147 return yang_data_new_ipv4(args->xpath, &vxlan_info->mcast_grp);
b00f3e4b
CS
148}
149
60ee8be1 150const void *lib_vrf_ribs_rib_get_next(struct nb_cb_get_next_args *args)
ce45ffe7
CS
151{
152 /* TODO: implement me. */
153 return NULL;
154}
155
60ee8be1 156int lib_vrf_ribs_rib_get_keys(struct nb_cb_get_keys_args *args)
ce45ffe7
CS
157{
158 /* TODO: implement me. */
159 return NB_OK;
160}
161
60ee8be1 162const void *lib_vrf_ribs_rib_lookup_entry(struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
163{
164 /* TODO: implement me. */
165 return NULL;
166}
167
168/*
169 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route
170 */
60ee8be1 171const void *lib_vrf_ribs_rib_route_get_next(struct nb_cb_get_next_args *args)
ce45ffe7
CS
172{
173 /* TODO: implement me. */
174 return NULL;
175}
176
60ee8be1 177int lib_vrf_ribs_rib_route_get_keys(struct nb_cb_get_keys_args *args)
ce45ffe7
CS
178{
179 /* TODO: implement me. */
180 return NB_OK;
181}
182
183const void *
60ee8be1 184lib_vrf_ribs_rib_route_lookup_entry(struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
185{
186 /* TODO: implement me. */
187 return NULL;
188}
189
190/*
191 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/prefix
192 */
60ee8be1
RW
193struct yang_data *
194lib_vrf_ribs_rib_route_prefix_get_elem(struct nb_cb_get_elem_args *args)
ce45ffe7
CS
195{
196 /* TODO: implement me. */
197 return NULL;
198}
199
200/*
ed5abdb2 201 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry
ce45ffe7 202 */
ed5abdb2 203const void *
60ee8be1 204lib_vrf_ribs_rib_route_route_entry_get_next(struct nb_cb_get_next_args *args)
ed5abdb2
CS
205{
206 /* TODO: implement me. */
207 return NULL;
208}
209
60ee8be1
RW
210int lib_vrf_ribs_rib_route_route_entry_get_keys(
211 struct nb_cb_get_keys_args *args)
ed5abdb2
CS
212{
213 /* TODO: implement me. */
214 return NB_OK;
215}
216
217const void *lib_vrf_ribs_rib_route_route_entry_lookup_entry(
60ee8be1 218 struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
219{
220 /* TODO: implement me. */
221 return NULL;
222}
223
224/*
ed5abdb2 225 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/protocol
ce45ffe7 226 */
60ee8be1
RW
227struct yang_data *lib_vrf_ribs_rib_route_route_entry_protocol_get_elem(
228 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
229{
230 /* TODO: implement me. */
231 return NULL;
232}
233
234/*
ed5abdb2 235 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/instance
ce45ffe7 236 */
60ee8be1
RW
237struct yang_data *lib_vrf_ribs_rib_route_route_entry_instance_get_elem(
238 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
239{
240 /* TODO: implement me. */
241 return NULL;
242}
243
244/*
ed5abdb2 245 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/distance
ce45ffe7 246 */
60ee8be1
RW
247struct yang_data *lib_vrf_ribs_rib_route_route_entry_distance_get_elem(
248 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
249{
250 /* TODO: implement me. */
251 return NULL;
252}
253
254/*
ed5abdb2 255 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/metric
ce45ffe7 256 */
60ee8be1
RW
257struct yang_data *lib_vrf_ribs_rib_route_route_entry_metric_get_elem(
258 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
259{
260 /* TODO: implement me. */
261 return NULL;
262}
263
264/*
ed5abdb2 265 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/tag
ce45ffe7 266 */
60ee8be1
RW
267struct yang_data *lib_vrf_ribs_rib_route_route_entry_tag_get_elem(
268 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
269{
270 /* TODO: implement me. */
271 return NULL;
272}
273
274/*
ed5abdb2 275 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/selected
ce45ffe7 276 */
60ee8be1
RW
277struct yang_data *lib_vrf_ribs_rib_route_route_entry_selected_get_elem(
278 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
279{
280 /* TODO: implement me. */
281 return NULL;
282}
283
284/*
ed5abdb2 285 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/installed
ce45ffe7 286 */
60ee8be1
RW
287struct yang_data *lib_vrf_ribs_rib_route_route_entry_installed_get_elem(
288 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
289{
290 /* TODO: implement me. */
291 return NULL;
292}
293
294/*
ed5abdb2 295 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/failed
ce45ffe7 296 */
60ee8be1
RW
297struct yang_data *lib_vrf_ribs_rib_route_route_entry_failed_get_elem(
298 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
299{
300 /* TODO: implement me. */
301 return NULL;
302}
303
304/*
ed5abdb2 305 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/queued
ce45ffe7 306 */
60ee8be1
RW
307struct yang_data *lib_vrf_ribs_rib_route_route_entry_queued_get_elem(
308 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
309{
310 /* TODO: implement me. */
311 return NULL;
312}
313
314/*
ed5abdb2 315 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/internal-flags
ce45ffe7 316 */
ed5abdb2 317struct yang_data *lib_vrf_ribs_rib_route_route_entry_internal_flags_get_elem(
60ee8be1 318 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
319{
320 /* TODO: implement me. */
321 return NULL;
322}
323
324/*
ed5abdb2 325 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/internal-status
ce45ffe7 326 */
ed5abdb2 327struct yang_data *lib_vrf_ribs_rib_route_route_entry_internal_status_get_elem(
60ee8be1 328 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
329{
330 /* TODO: implement me. */
331 return NULL;
332}
333
334/*
ed5abdb2 335 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/uptime
ce45ffe7 336 */
60ee8be1
RW
337struct yang_data *lib_vrf_ribs_rib_route_route_entry_uptime_get_elem(
338 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
339{
340 /* TODO: implement me. */
341 return NULL;
342}
343
344/*
ed5abdb2 345 * XPath: /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group
ce45ffe7 346 */
ed5abdb2 347const void *lib_vrf_ribs_rib_route_route_entry_nexthop_group_get_next(
60ee8be1 348 struct nb_cb_get_next_args *args)
ce45ffe7
CS
349{
350 /* TODO: implement me. */
351 return NULL;
352}
353
ed5abdb2 354int lib_vrf_ribs_rib_route_route_entry_nexthop_group_get_keys(
60ee8be1 355 struct nb_cb_get_keys_args *args)
ce45ffe7
CS
356{
357 /* TODO: implement me. */
358 return NB_OK;
359}
360
ed5abdb2 361const void *lib_vrf_ribs_rib_route_route_entry_nexthop_group_lookup_entry(
60ee8be1 362 struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
363{
364 /* TODO: implement me. */
365 return NULL;
366}
367
368/*
ed5abdb2
CS
369 * XPath:
370 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/name
ce45ffe7
CS
371 */
372struct yang_data *
ed5abdb2 373lib_vrf_ribs_rib_route_route_entry_nexthop_group_name_get_elem(
60ee8be1 374 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
375{
376 /* TODO: implement me. */
377 return NULL;
378}
379
380/*
381 * XPath:
ed5abdb2 382 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop
ce45ffe7 383 */
ed5abdb2
CS
384const void *
385lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next(
60ee8be1 386 struct nb_cb_get_next_args *args)
ce45ffe7
CS
387{
388 /* TODO: implement me. */
389 return NULL;
390}
391
ed5abdb2 392int lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys(
60ee8be1 393 struct nb_cb_get_keys_args *args)
ce45ffe7
CS
394{
395 /* TODO: implement me. */
396 return NB_OK;
397}
398
399const void *
ed5abdb2 400lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry(
60ee8be1 401 struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
402{
403 /* TODO: implement me. */
404 return NULL;
405}
406
407/*
408 * XPath:
ed5abdb2 409 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/nh-type
ce45ffe7
CS
410 */
411struct yang_data *
ed5abdb2 412lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem(
60ee8be1 413 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
414{
415 /* TODO: implement me. */
416 return NULL;
417}
418
419/*
420 * XPath:
ed5abdb2 421 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/vrf
ce45ffe7
CS
422 */
423struct yang_data *
ed5abdb2 424lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem(
60ee8be1 425 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
426{
427 /* TODO: implement me. */
428 return NULL;
429}
430
431/*
432 * XPath:
ed5abdb2 433 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/gateway
ce45ffe7
CS
434 */
435struct yang_data *
ed5abdb2 436lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem(
60ee8be1 437 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
438{
439 /* TODO: implement me. */
440 return NULL;
441}
442
443/*
444 * XPath:
ed5abdb2 445 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/interface
ce45ffe7
CS
446 */
447struct yang_data *
ed5abdb2 448lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem(
60ee8be1 449 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
450{
451 /* TODO: implement me. */
452 return NULL;
453}
454
455/*
456 * XPath:
ed5abdb2 457 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/bh-type
ce45ffe7
CS
458 */
459struct yang_data *
ed5abdb2 460lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem(
60ee8be1 461 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
462{
463 /* TODO: implement me. */
464 return NULL;
465}
466
467/*
468 * XPath:
ed5abdb2 469 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/onlink
ce45ffe7
CS
470 */
471struct yang_data *
ed5abdb2 472lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem(
60ee8be1 473 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
474{
475 /* TODO: implement me. */
476 return NULL;
477}
478
479/*
480 * XPath:
ed5abdb2 481 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry
ce45ffe7
CS
482 */
483const void *
ed5abdb2 484lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next(
60ee8be1 485 struct nb_cb_get_next_args *args)
ce45ffe7
CS
486{
487 /* TODO: implement me. */
488 return NULL;
489}
490
ed5abdb2 491int lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys(
60ee8be1 492 struct nb_cb_get_keys_args *args)
ce45ffe7
CS
493{
494 /* TODO: implement me. */
495 return NB_OK;
496}
497
498const void *
ed5abdb2 499lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry(
60ee8be1 500 struct nb_cb_lookup_entry_args *args)
ce45ffe7
CS
501{
502 /* TODO: implement me. */
503 return NULL;
504}
505
506/*
507 * XPath:
ed5abdb2 508 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/id
ce45ffe7
CS
509 */
510struct yang_data *
ed5abdb2 511lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem(
60ee8be1 512 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
513{
514 /* TODO: implement me. */
515 return NULL;
516}
517
518/*
519 * XPath:
ed5abdb2 520 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/label
ce45ffe7
CS
521 */
522struct yang_data *
ed5abdb2 523lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem(
60ee8be1 524 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
525{
526 /* TODO: implement me. */
527 return NULL;
528}
529
530/*
531 * XPath:
ed5abdb2 532 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/ttl
ce45ffe7
CS
533 */
534struct yang_data *
ed5abdb2 535lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem(
60ee8be1 536 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
537{
538 /* TODO: implement me. */
539 return NULL;
540}
541
542/*
543 * XPath:
ed5abdb2 544 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/traffic-class
ce45ffe7
CS
545 */
546struct yang_data *
ed5abdb2 547lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem(
60ee8be1 548 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
549{
550 /* TODO: implement me. */
551 return NULL;
552}
553
554/*
555 * XPath:
ed5abdb2 556 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/duplicate
ce45ffe7
CS
557 */
558struct yang_data *
ed5abdb2 559lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem(
60ee8be1 560 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
561{
562 /* TODO: implement me. */
563 return NULL;
564}
565
566/*
567 * XPath:
ed5abdb2 568 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/recursive
ce45ffe7
CS
569 */
570struct yang_data *
ed5abdb2 571lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem(
60ee8be1 572 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
573{
574 /* TODO: implement me. */
575 return NULL;
576}
577
578/*
579 * XPath:
ed5abdb2 580 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/active
ce45ffe7
CS
581 */
582struct yang_data *
ed5abdb2 583lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem(
60ee8be1 584 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
585{
586 /* TODO: implement me. */
587 return NULL;
588}
589
590/*
591 * XPath:
ed5abdb2 592 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/fib
ce45ffe7
CS
593 */
594struct yang_data *
ed5abdb2 595lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem(
60ee8be1 596 struct nb_cb_get_elem_args *args)
ce45ffe7
CS
597{
598 /* TODO: implement me. */
599 return NULL;
600}
7225e61c
CS
601
602/*
603 * XPath:
604 * /frr-vrf:lib/vrf/frr-zebra:ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/weight
605 */
606struct yang_data *
607lib_vrf_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem(
60ee8be1 608 struct nb_cb_get_elem_args *args)
7225e61c
CS
609{
610 /* TODO: implement me. */
611 return NULL;
612}