From 87a71be40f37a3d39e56d8452bcf122a6b5ce422 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Thu, 6 Aug 2015 15:29:56 +0900 Subject: server: support to send notification to all peers when shutdown Signed-off-by: FUJITA Tomonori --- gobgpd/main.go | 4 +++- server/server.go | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gobgpd/main.go b/gobgpd/main.go index 7a3b3ef2..307372f1 100644 --- a/gobgpd/main.go +++ b/gobgpd/main.go @@ -35,7 +35,7 @@ func main() { runtime.GOMAXPROCS(runtime.NumCPU()) sigCh := make(chan os.Signal, 1) - signal.Notify(sigCh, syscall.SIGHUP) + signal.Notify(sigCh, syscall.SIGHUP, syscall.SIGTERM) var opts struct { ConfigFile string `short:"f" long:"config-file" description:"specifying a config file"` @@ -206,6 +206,8 @@ func main() { case syscall.SIGHUP: log.Info("reload the config file") reloadCh <- true + case syscall.SIGKILL, syscall.SIGTERM: + bgpServer.Shutdown() } } } diff --git a/server/server.go b/server/server.go index 6a3962d2..4cabc7b9 100644 --- a/server/server.go +++ b/server/server.go @@ -710,6 +710,12 @@ func (server *BgpServer) PeerUpdate(peer config.Neighbor) { server.updatedPeerCh <- peer } +func (server *BgpServer) Shutdown() { + for _, p := range server.neighborMap { + p.fsm.adminStateCh <- ADMIN_STATE_DOWN + } +} + func (server *BgpServer) UpdatePolicy(policy config.RoutingPolicy) { server.policyUpdateCh <- policy } -- cgit v1.2.3