]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Fallback to default ns if nhg vrf lookup fails
authorStephen Worley <sworley@cumulusnetworks.com>
Fri, 6 Sep 2019 16:30:30 +0000 (12:30 -0400)
committerStephen Worley <sworley@cumulusnetworks.com>
Fri, 25 Oct 2019 15:13:43 +0000 (11:13 -0400)
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 <sworley@cumulusnetworks.com>
zebra/zebra_dplane.c

index d7354024aaa809bad0122ad54026042a5ea9e0fd..a88b0a38da81bfd1dc56adf5883bd4a537b3c4f8 100644 (file)
@@ -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