Merge pull request #6531 from chiragshah6/yang_nb5

yang, zebra: redefine nexthop model
This commit is contained in:
Renato Westphal 2020-06-10 22:56:27 -03:00 committed by GitHub
commit a99e4666b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 149 additions and 181 deletions

View File

@ -137,6 +137,13 @@ module frr-nexthop {
"Nexthop blackhole types."; "Nexthop blackhole types.";
} }
typedef nexthop-group-ref {
type leafref {
path "/frr-nexthop:frr-nexthop-group/frr-nexthop:nexthop-groups/frr-nexthop:name";
require-instance false;
}
}
/* /*
* Common nexthop attributes grouping. * Common nexthop attributes grouping.
*/ */
@ -147,6 +154,7 @@ module frr-nexthop {
description description
"The nexthop type."; "The nexthop type.";
} }
leaf vrf { leaf vrf {
type frr-vrf:vrf-ref; type frr-vrf:vrf-ref;
description description
@ -157,17 +165,20 @@ module frr-nexthop {
description description
"The nexthop gateway address."; "The nexthop gateway address.";
} }
leaf interface { leaf interface {
type frr-interface:interface-ref; type frr-interface:interface-ref;
description description
"The nexthop egress interface."; "The nexthop egress interface.";
} }
leaf bh-type { leaf bh-type {
when "../nh-type = 'blackhole'"; when "../nh-type = 'blackhole'";
type blackhole-type; type blackhole-type;
description description
"A blackhole sub-type, if the nexthop is a blackhole type."; "A blackhole sub-type, if the nexthop is a blackhole type.";
} }
leaf onlink { leaf onlink {
when "../nh-type = 'ip4-ifindex' or when "../nh-type = 'ip4-ifindex' or
../nh-type = 'ip6-ifindex'"; ../nh-type = 'ip6-ifindex'";
@ -223,6 +234,15 @@ module frr-nexthop {
} }
} }
grouping nexthop-grouping {
list nexthop {
key "nh-type gateway interface";
description
"A list of nexthop objects.";
uses frr-nexthop-attributes;
}
}
/* /*
* Single nexthop grouping. * Single nexthop grouping.
*/ */
@ -230,12 +250,7 @@ module frr-nexthop {
container frr-nexthops { container frr-nexthops {
description description
"FRR nexthop object."; "FRR nexthop object.";
list nexthop { uses nexthop-grouping;
key "nh-type gateway interface";
description
"A list of nexthop objects.";
uses frr-nexthop-attributes;
}
} }
} }
@ -244,11 +259,10 @@ module frr-nexthop {
* Container for FRR nexthop group. * Container for FRR nexthop group.
*/ */
grouping frr-nexthop-grouping { grouping frr-nexthop-grouping {
list nexthop-group { list nexthop-groups {
key "name"; key "name";
description description
"A group of nexthops."; "List of nexthop groups, each contains group of nexthops";
leaf name { leaf name {
type string; type string;
description description
@ -259,23 +273,31 @@ module frr-nexthop {
} }
} }
/* Operational nexthop-group */
grouping frr-nexthop-group-operational {
container nexthop-group {
description
"A group of nexthops.";
leaf id {
type uint32;
description
"The nexthop-group id.";
}
uses nexthop-grouping;
}
}
container frr-nexthop-group { container frr-nexthop-group {
description description
"A nexthop-group, represented as a list of nexthop objects."; "A nexthop-group, represented as a list of nexthop objects.";
uses frr-nexthop-grouping; uses frr-nexthop-grouping;
} }
typedef nexthop-group-ref {
type leafref {
require-instance false;
path "/frr-nexthop:frr-nexthop-group/frr-nexthop:nexthop-group/frr-nexthop:name";
}
}
/* /*
* Augment weight attributes to nexthop group. * Augment weight attributes to nexthop group.
*/ */
augment "/frr-nexthop-group/nexthop-group/frr-nexthops/nexthop" { augment "/frr-nexthop-group/nexthop-groups/frr-nexthops/nexthop" {
leaf weight { leaf weight {
type uint8; type uint8;
description description

View File

@ -316,7 +316,7 @@ module frr-zebra {
"Uptime for the route."; "Uptime for the route.";
} }
uses frr-nh:frr-nexthop-grouping; uses frr-nh:frr-nexthop-group-operational;
} }
// End of route-common // End of route-common
@ -2074,7 +2074,7 @@ module frr-zebra {
} }
} }
augment "/frr-vrf:lib/frr-vrf:vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop" { augment "/frr-vrf:lib/frr-vrf:vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop" {
uses frr-nh:frr-nexthop-operational; uses frr-nh:frr-nexthop-operational;
} }

View File

@ -558,117 +558,115 @@ const struct frr_yang_module_info frr_zebra_info = {
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/id",
.cbs = { .cbs = {
.get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_next, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem,
.get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys,
.lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/name", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_name_get_elem, .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next,
.get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys,
.lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/nh-type",
.cbs = { .cbs = {
.get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_nh_type_get_elem,
.get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys,
.lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/nh-type", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/vrf",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/vrf", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/gateway",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/gateway", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/interface",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/interface", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/bh-type",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/bh-type", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/onlink",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/onlink", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem, .get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next,
.get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_keys,
.lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/id",
.cbs = { .cbs = {
.get_next = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem,
.get_keys = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys,
.lookup_entry = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/id", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/label",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/label", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/ttl",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/ttl", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/traffic-class",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/traffic-class", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/duplicate",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/duplicate", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/recursive",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/recursive", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/active",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/active", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/fib",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem,
} }
}, },
{ {
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/fib", .xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/weight",
.cbs = { .cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem, .get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem,
} }
}, },
{ {
@ -713,12 +711,6 @@ const struct frr_yang_module_info frr_zebra_info = {
.destroy = lib_route_map_entry_set_action_source_v6_destroy, .destroy = lib_route_map_entry_set_action_source_v6_destroy,
} }
}, },
{
.xpath = "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/weight",
.cbs = {
.get_elem = lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem,
}
},
{ {
.xpath = NULL, .xpath = NULL,
}, },

View File

@ -256,75 +256,69 @@ lib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem( struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
const void *lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_next(
struct nb_cb_get_next_args *args);
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys(
struct nb_cb_get_keys_args *args);
const void *lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry(
struct nb_cb_lookup_entry_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_name_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next(
struct nb_cb_get_next_args *args); struct nb_cb_get_next_args *args);
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys( int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys(
struct nb_cb_get_keys_args *args); struct nb_cb_get_keys_args *args);
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry(
struct nb_cb_lookup_entry_args *args); struct nb_cb_lookup_entry_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_nh_type_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next(
struct nb_cb_get_next_args *args); struct nb_cb_get_next_args *args);
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys( int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_keys(
struct nb_cb_get_keys_args *args); struct nb_cb_get_keys_args *args);
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry(
struct nb_cb_lookup_entry_args *args); struct nb_cb_lookup_entry_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem(
struct nb_cb_get_elem_args *args); struct nb_cb_get_elem_args *args);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -490,78 +490,38 @@ struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem(
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/id
*/
const void *lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_next(
struct nb_cb_get_next_args *args)
{
struct route_entry *re = (struct route_entry *)args->parent_list_entry;
struct nhg_hash_entry *nhe = (struct nhg_hash_entry *)args->list_entry;
if (nhe == NULL) {
nhe = re->nhe;
return nhe;
}
return NULL;
}
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys(
struct nb_cb_get_keys_args *args)
{
struct nhg_hash_entry *nhe = (struct nhg_hash_entry *)args->list_entry;
args->keys->num = 1;
snprintfrr(args->keys->key[0], sizeof(args->keys->key[0]), "%" PRIu32,
nhe->id);
return NB_OK;
}
const void *lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry(
struct nb_cb_lookup_entry_args *args)
{
struct route_entry *re = (struct route_entry *)args->parent_list_entry;
return re->nhe;
}
/*
* XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/name
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_name_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nhg_hash_entry *nhe = (struct nhg_hash_entry *)args->list_entry; struct route_entry *re = (struct route_entry *)args->list_entry;
char name[20] = {'\0'};
snprintfrr(name, sizeof(name), "%" PRIu32, nhe->id); return yang_data_new_uint32(args->xpath, re->nhe->id);
return yang_data_new_string(args->xpath, name);
} }
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop
*/ */
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next(
struct nb_cb_get_next_args *args) struct nb_cb_get_next_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
struct nhg_hash_entry *nhe = struct route_entry *re = (struct route_entry *)args->parent_list_entry;
(struct nhg_hash_entry *)args->parent_list_entry; struct nhg_hash_entry *nhe = re->nhe;
if (args->list_entry == NULL) if (args->list_entry == NULL) {
nexthop = nhe->nhg.nexthop; nexthop = nhe->nhg.nexthop;
else } else
nexthop = nexthop_next(nexthop); nexthop = nexthop_next(nexthop);
return nexthop; return nexthop;
} }
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys( int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys(
struct nb_cb_get_keys_args *args) struct nb_cb_get_keys_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -623,7 +583,7 @@ int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_
} }
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry(
struct nb_cb_lookup_entry_args *args) struct nb_cb_lookup_entry_args *args)
{ {
struct nhg_hash_entry *nhe; struct nhg_hash_entry *nhe;
@ -697,10 +657,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_look
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/nh-type * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/nh-type
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_nh_type_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -730,10 +690,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_t
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/vrf * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/vrf
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -744,10 +704,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/gateway * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/gateway
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -780,10 +740,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gate
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/interface * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/interface
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -798,10 +758,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_inte
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/bh-type * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/bh-type
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -830,10 +790,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_t
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/onlink * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/onlink
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -846,17 +806,17 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onli
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry
*/ */
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next(
struct nb_cb_get_next_args *args) struct nb_cb_get_next_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
return NULL; return NULL;
} }
int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys( int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_keys(
struct nb_cb_get_keys_args *args) struct nb_cb_get_keys_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -864,7 +824,7 @@ int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_
} }
const void * const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry(
struct nb_cb_lookup_entry_args *args) struct nb_cb_lookup_entry_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -873,10 +833,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/id * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/id
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -885,10 +845,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/label * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/label
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -897,10 +857,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/ttl * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/ttl
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -909,10 +869,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/traffic-class * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/mpls-label-stack/entry/traffic-class
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
/* TODO: implement me. */ /* TODO: implement me. */
@ -921,10 +881,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/duplicate * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/duplicate
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -937,10 +897,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_dupl
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/recursive * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/recursive
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -953,10 +913,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recu
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/active * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/active
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -969,10 +929,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_acti
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/fib * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/fib
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;
@ -985,10 +945,10 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_
/* /*
* XPath: * XPath:
* /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/weight * /frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop/weight
*/ */
struct yang_data * struct yang_data *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem( lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem(
struct nb_cb_get_elem_args *args) struct nb_cb_get_elem_args *args)
{ {
struct nexthop *nexthop = (struct nexthop *)args->list_entry; struct nexthop *nexthop = (struct nexthop *)args->list_entry;