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>
enum dplane_op_e op,
struct nhg_hash_entry *nhe)
{
+ struct zebra_vrf *zvrf = NULL;
struct zebra_ns *zns = NULL;
int ret = EINVAL;
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