From 92699b9bbe8e4f64b450dd02eced28dd95c7f222 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Thu, 27 May 2021 13:16:40 +0300 Subject: [PATCH] ospf6d: unlink router from vrf on deletion Otherwise `ospf6_lookup_by_vrf_id` returns stale pointer. Signed-off-by: Igor Ryzhov --- ospf6d/ospf6_top.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c index 2376409ccd..42405ca35e 100644 --- a/ospf6d/ospf6_top.c +++ b/ospf6d/ospf6_top.c @@ -413,6 +413,7 @@ void ospf6_delete(struct ospf6 *o) { struct listnode *node, *nnode; struct ospf6_area *oa; + struct vrf *vrf; QOBJ_UNREG(o); @@ -442,6 +443,12 @@ void ospf6_delete(struct ospf6 *o) ospf6_distance_reset(o); route_table_finish(o->distance_table); + if (o->vrf_id != VRF_UNKNOWN) { + vrf = vrf_lookup_by_id(o->vrf_id); + if (vrf) + ospf6_vrf_unlink(o, vrf); + } + XFREE(MTYPE_OSPF6_TOP, o->name); XFREE(MTYPE_OSPF6_TOP, o); }