zebra: Set resolved inactive when > multipath_num

Apparently the multipath_num functionatlity has been broken
for a while because we were ignoring the recusive nexthops
when marking them inactive based on it.

This sets them as inactive as well if the parent breaks it.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
This commit is contained in:
Stephen Worley 2019-11-21 15:53:59 -05:00
parent 08de78b876
commit 4c55b5ff6b

View File

@ -1676,7 +1676,12 @@ int nexthop_active_update(struct route_node *rn, struct route_entry *re)
nexthop_active_check(rn, re, nexthop);
if (new_active && curr_active >= zrouter.multipath_num) {
UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_ACTIVE);
struct nexthop *nh;
/* Set it and its resolved nexthop as inactive. */
for (nh = nexthop; nh; nh = nh->resolved)
UNSET_FLAG(nh->flags, NEXTHOP_FLAG_ACTIVE);
new_active = 0;
}