summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_main.c1
-rw-r--r--isisd/isisd.c5
-rw-r--r--isisd/isisd.h1
3 files changed, 7 insertions, 0 deletions
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 7270e37e28..b7ed8f7605 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -104,6 +104,7 @@ static __attribute__((__noreturn__)) void terminate(int i)
isis_srv6_term();
isis_zebra_stop();
+ isis_master_terminate();
route_map_finish();
vrf_terminate();
diff --git a/isisd/isisd.c b/isisd/isisd.c
index e67f5fb1c8..2863fd913f 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -176,6 +176,11 @@ void isis_master_init(struct event_loop *master)
im->master = master;
}
+void isis_master_terminate(void)
+{
+ list_delete(&im->isis);
+}
+
struct isis *isis_new(const char *vrf_name)
{
struct vrf *vrf;
diff --git a/isisd/isisd.h b/isisd/isisd.h
index 2ed7dd0f10..1ae39f0ae9 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -268,6 +268,7 @@ DECLARE_HOOK(isis_area_overload_bit_update, (struct isis_area * area), (area));
void isis_terminate(void);
void isis_master_init(struct event_loop *master);
+void isis_master_terminate(void);
void isis_vrf_link(struct isis *isis, struct vrf *vrf);
void isis_vrf_unlink(struct isis *isis, struct vrf *vrf);
struct isis *isis_lookup_by_vrfid(vrf_id_t vrf_id);