diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index 019c228918..ba204bda61 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -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; }