summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/if.c1
-rw-r--r--zebra/interface.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/if.c b/lib/if.c
index 08d8918742..6f567861d1 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -1028,6 +1028,7 @@ void if_terminate(struct vrf *vrf)
if (ifp->node) {
ifp->node->info = NULL;
route_unlock_node(ifp->node);
+ ifp->node = NULL;
}
if_delete(&ifp);
}
diff --git a/zebra/interface.c b/zebra/interface.c
index 231ddc51db..ccf1a0a204 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -267,6 +267,9 @@ struct interface *if_link_per_ns(struct zebra_ns *ns, struct interface *ifp)
/* Delete a VRF. This is called in vrf_terminate(). */
void if_unlink_per_ns(struct interface *ifp)
{
+ if (!ifp->node)
+ return;
+
ifp->node->info = NULL;
route_unlock_node(ifp->node);
ifp->node = NULL;