From: Stephen Worley Date: Fri, 6 Sep 2019 16:30:30 +0000 (-0400) Subject: zebra: Fallback to default ns if nhg vrf lookup fails X-Git-Tag: base_7.3~219^2~17 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=a7df21c4d23ff55f7df3d1a1caabf0040f110edf;p=mirror%2Ffrr.git zebra: Fallback to default ns if nhg vrf lookup fails If the vrf lookup fails, use the default namespace to find/delete the nexthop group from the kernel because it should be there anyway. Signed-off-by: Stephen Worley --- diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c index d7354024aa..a88b0a38da 100644 --- a/zebra/zebra_dplane.c +++ b/zebra/zebra_dplane.c @@ -1573,6 +1573,7 @@ static int dplane_ctx_nexthop_init(struct zebra_dplane_ctx *ctx, enum dplane_op_e op, struct nhg_hash_entry *nhe) { + struct zebra_vrf *zvrf = NULL; struct zebra_ns *zns = NULL; int ret = EINVAL; @@ -1597,7 +1598,13 @@ static int dplane_ctx_nexthop_init(struct zebra_dplane_ctx *ctx, ctx->u.rinfo.nhe.nh_grp_count = zebra_nhg_nhe2grp( ctx->u.rinfo.nhe.nh_grp, nhe, MULTIPATH_NUM); - zns = ((struct zebra_vrf *)vrf_info_lookup(nhe->vrf_id))->zns; + zvrf = vrf_info_lookup(nhe->vrf_id); + + /* + * Fallback to default namespace if the vrf got ripped out from under + * us. + */ + zns = zvrf ? zvrf->zns : zebra_ns_lookup(NS_DEFAULT); /* * TODO: Might not need to mark this as an update, since