summaryrefslogtreecommitdiffhomepage
path: root/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.go')
-rw-r--r--server/server.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/server/server.go b/server/server.go
index 0fc661f5..15bd90de 100644
--- a/server/server.go
+++ b/server/server.go
@@ -903,12 +903,19 @@ func (s *BgpServer) DeleteBmp(c *config.BmpServerConfig) (err error) {
return err
}
-func (server *BgpServer) Shutdown() {
- server.shutdown = true
- for _, p := range server.neighborMap {
- p.fsm.adminStateCh <- ADMIN_STATE_DOWN
+func (s *BgpServer) Shutdown() {
+ ch := make(chan struct{})
+ defer func() { <-ch }()
+
+ s.mgmtCh <- func() {
+ defer close(ch)
+
+ s.shutdown = true
+ for _, p := range s.neighborMap {
+ p.fsm.adminStateCh <- ADMIN_STATE_DOWN
+ }
+ // TODO: call fsmincomingCh.Close()
}
- // TODO: call fsmincomingCh.Close()
}
func (s *BgpServer) UpdatePolicy(policy config.RoutingPolicy) (err error) {