zebra: check all dplane nexthops when processing

When processing route updates from the dataplane, we were
terminating the checking of nexthops prematurely, and we could
miss meaningful changes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2019-09-12 15:24:52 -04:00
parent e6dafed0e2
commit 11260e7011

View File

@ -1547,7 +1547,9 @@ static bool rib_update_re_from_ctx(struct route_entry *re,
changed_p = true;
UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_FIB);
break;
/* Keep checking nexthops */
continue;
}
if (CHECK_FLAG(ctx_nexthop->flags, NEXTHOP_FLAG_FIB)) {
@ -1983,6 +1985,9 @@ static void rib_process_dplane_notify(struct zebra_dplane_ctx *ctx)
* not-installed; or not-installed to installed.
*/
if (start_count > 0 && end_count > 0) {
if (debug_p)
zlog_debug("%u:%s applied nexthop changes from dplane notification",
dplane_ctx_get_vrf(ctx), dest_str);
/* Changed nexthops - update kernel/others */
dplane_route_notif_update(rn, re,