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);