summaryrefslogtreecommitdiff
path: root/isisd/isisd.c
diff options
context:
space:
mode:
Diffstat (limited to 'isisd/isisd.c')
-rw-r--r--isisd/isisd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/isisd/isisd.c b/isisd/isisd.c
index 057ede0e38..950cdc281f 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -442,7 +442,11 @@ void isis_area_destroy(struct isis_area *area)
spftree_area_del(area);
+ if (area->spf_timer[0])
+ isis_spf_timer_free(THREAD_ARG(area->spf_timer[0]));
thread_cancel(&area->spf_timer[0]);
+ if (area->spf_timer[1])
+ isis_spf_timer_free(THREAD_ARG(area->spf_timer[1]));
thread_cancel(&area->spf_timer[1]);
spf_backoff_free(area->spf_delay_ietf[0]);
@@ -583,6 +587,7 @@ void isis_finish(struct isis *isis)
isis_vrf_unlink(isis, vrf);
}
+ isis_redist_free(isis);
list_delete(&isis->area_list);
list_delete(&isis->init_circ_list);
XFREE(MTYPE_ISIS, isis);
@@ -2375,6 +2380,9 @@ static void area_resign_level(struct isis_area *area, int level)
}
}
+ if (area->spf_timer[level - 1])
+ isis_spf_timer_free(THREAD_ARG(area->spf_timer[level - 1]));
+
thread_cancel(&area->spf_timer[level - 1]);
sched_debug(