diff options
Diffstat (limited to 'bgpd/bgp_main.c')
-rw-r--r-- | bgpd/bgp_main.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c index 11c73cea..2f157652 100644 --- a/bgpd/bgp_main.c +++ b/bgpd/bgp_main.c @@ -38,6 +38,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "stream.h" #include "vrf.h" #include "workqueue.h" +#include "linklist.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_attr.h" @@ -51,6 +52,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "bgpd/bgp_debug.h" #include "bgpd/bgp_filter.h" #include "bgpd/bgp_zebra.h" +#include "bgpd/bgp_network.h" /* bgpd options, we use GNU getopt library. */ static const struct option longopts[] = @@ -175,7 +177,7 @@ Report bugs to %s\n", progname, ZEBRA_BUG_ADDRESS); void sighup (void) { - zlog (NULL, LOG_INFO, "SIGHUP received"); + zlog_info ("SIGHUP received"); /* Terminate all thread. */ bgp_terminate (); @@ -225,13 +227,13 @@ bgp_exit (int status) { struct bgp *bgp; struct listnode *node, *nnode; - int *socket; struct interface *ifp; - extern struct zclient *zlookup; /* it only makes sense for this to be called on a clean exit */ assert (status == 0); + bgp_close(); + /* reverse bgp_master_init */ for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) bgp_delete (bgp); @@ -256,14 +258,6 @@ bgp_exit (int status) work_queue_free (bm->process_rsclient_queue); bm->process_rsclient_queue = NULL; } - - /* reverse bgp_master_init */ - for (ALL_LIST_ELEMENTS_RO(bm->listen_sockets, node, socket)) - { - if (close ((int)(long)socket) == -1) - zlog_err ("close (%d): %s", (int)(long)socket, safe_strerror (errno)); - } - list_delete (bm->listen_sockets); /* reverse bgp_zebra_init/if_init */ if (retain_mode) @@ -286,11 +280,8 @@ bgp_exit (int status) /* reverse bgp_route_init */ bgp_route_finish (); - /* reverse bgp_route_map_init/route_map_init */ - route_map_finish (); - - /* reverse bgp_scan_init */ - bgp_scan_finish (); + /* cleanup route maps */ + bgp_route_map_terminate(); /* reverse access_list_init */ access_list_add_hook (NULL); @@ -316,10 +307,13 @@ bgp_exit (int status) bgp_address_destroy(); bgp_scan_destroy(); bgp_zebra_destroy(); - if (zlookup) - zclient_free (zlookup); if (bgp_nexthop_buf) stream_free (bgp_nexthop_buf); + if (bgp_ifindices_buf) + stream_free (bgp_ifindices_buf); + + /* reverse bgp_scan_init */ + bgp_scan_finish (); /* reverse bgp_master_init */ if (bm->master) @@ -328,9 +322,6 @@ bgp_exit (int status) if (zlog_default) closezlog (zlog_default); - if (CONF_BGP_DEBUG (normal, NORMAL)) - log_memstats_stderr ("bgpd"); - exit (status); } |