bgpd: fix unsetting of multipath as-set

in the nortbound callback for the boolean leaf multi-path-as-set, the
actual value of the leaf was being ignored. As a result, going from
as-set to no-as-set was having no effect.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
This commit is contained in:
Emanuele Di Pascale 2021-01-07 14:46:59 +01:00
parent 0e11b1e2ba
commit 174c5be33c

View File

@ -894,6 +894,9 @@ int bgp_global_route_selection_options_allow_multiple_as_modify(
"../multi-path-as-set")) { "../multi-path-as-set")) {
SET_FLAG(bgp->flags, SET_FLAG(bgp->flags,
BGP_FLAG_MULTIPATH_RELAX_AS_SET); BGP_FLAG_MULTIPATH_RELAX_AS_SET);
} else {
UNSET_FLAG(bgp->flags,
BGP_FLAG_MULTIPATH_RELAX_AS_SET);
} }
} else { } else {
UNSET_FLAG(bgp->flags, BGP_FLAG_ASPATH_MULTIPATH_RELAX); UNSET_FLAG(bgp->flags, BGP_FLAG_ASPATH_MULTIPATH_RELAX);
@ -923,15 +926,10 @@ int bgp_global_route_selection_options_multi_path_as_set_modify(
return NB_OK; return NB_OK;
case NB_EV_APPLY: case NB_EV_APPLY:
bgp = nb_running_get_entry(args->dnode, NULL, true); bgp = nb_running_get_entry(args->dnode, NULL, true);
if (yang_dnode_get_bool(args->dnode, NULL))
if (!CHECK_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET)) {
SET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET); SET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET);
else
} else UNSET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET);
zlog_debug(
"%s multi-path-as-set as part of allow-multiple-as modify cb.",
__func__);
break; break;
} }