diff options
author | Phil Laverdiere <phil_laverdiere@securecomputing.com> | 2012-01-02 20:04:26 +0400 |
---|---|---|
committer | Denis Ovsienko <infrastation@yandex.ru> | 2012-02-21 21:35:07 +0400 |
commit | ef2d5d100431031c32ea35b3c834b46cff16f511 (patch) | |
tree | c327572a6ea15d00abc8e70b45f41affb0b2d21f | |
parent | 4c78376f96cd2ca56f1c6476b76fd659654431f5 (diff) |
ospf6d: remove own routes on SIGTERM (BZ#448)
-rw-r--r-- | ospf6d/ospf6_main.c | 1 | ||||
-rw-r--r-- | ospf6d/ospf6_route.h | 1 | ||||
-rw-r--r-- | ospf6d/ospf6d.c | 9 |
3 files changed, 10 insertions, 1 deletions
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index d40bd97f..d3ef0a6a 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -180,6 +180,7 @@ static void sigterm (void) { zlog_notice ("Terminating on signal SIGTERM"); + ospf6_clean(); ospf6_exit (0); } diff --git a/ospf6d/ospf6_route.h b/ospf6d/ospf6_route.h index 8dcc877f..b384824c 100644 --- a/ospf6d/ospf6_route.h +++ b/ospf6d/ospf6_route.h @@ -300,6 +300,7 @@ extern void ospf6_brouter_show (struct vty *vty, struct ospf6_route *route); extern int config_write_ospf6_debug_route (struct vty *vty); extern void install_element_ospf6_debug_route (void); extern void ospf6_route_init (void); +extern void ospf6_clean (void); #endif /* OSPF6_ROUTE_H */ diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c index bb091d4f..3fdbda18 100644 --- a/ospf6d/ospf6d.c +++ b/ospf6d/ospf6d.c @@ -1889,4 +1889,11 @@ ospf6_init (void) thread_add_read (master, ospf6_receive, NULL, ospf6_sock); } - +void +ospf6_clean (void) +{ + if (ospf6->route_table) + ospf6_route_remove_all (ospf6->route_table); + if (ospf6->brouter_table) + ospf6_route_remove_all (ospf6->brouter_table); +} |