diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index f41fa7ceb8de..41f2789cb64a 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -3169,6 +3169,7 @@ void zebra_nhg_dplane_result(struct zebra_dplane_ctx *ctx) enum zebra_dplane_result status; uint32_t id = 0; struct nhg_hash_entry *nhe = NULL; + struct nexthop *nhop; op = dplane_ctx_get_op(ctx); status = dplane_ctx_get_status(ctx); @@ -3206,6 +3207,17 @@ void zebra_nhg_dplane_result(struct zebra_dplane_ctx *ctx) SET_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED); zebra_nhg_handle_install(nhe, true); + /* update FIB flag of nexthop-group */ + for (ALL_NEXTHOPS(nhe->nhg, nhop)) { + if (!CHECK_FLAG(nhop->flags, + NEXTHOP_FLAG_ACTIVE)) + continue; + if (CHECK_FLAG(nhop->flags, + NEXTHOP_FLAG_RECURSIVE)) + continue; + SET_FLAG(nhop->flags, NEXTHOP_FLAG_FIB); + } + /* If daemon nhg, send it an update */ if (PROTO_OWNED(nhe)) zsend_nhg_notify(nhe->type, nhe->zapi_instance,