summaryrefslogtreecommitdiff
path: root/ospf6d
diff options
context:
space:
mode:
authorPhil Laverdiere <phil_laverdiere@securecomputing.com>2012-01-02 20:04:26 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2012-02-21 21:35:07 +0400
commitef2d5d100431031c32ea35b3c834b46cff16f511 (patch)
treec327572a6ea15d00abc8e70b45f41affb0b2d21f /ospf6d
parent4c78376f96cd2ca56f1c6476b76fd659654431f5 (diff)
ospf6d: remove own routes on SIGTERM (BZ#448)
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_main.c1
-rw-r--r--ospf6d/ospf6_route.h1
-rw-r--r--ospf6d/ospf6d.c9
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);
+}