diff --git a/protocols/bgp/server/fsm_established.go b/protocols/bgp/server/fsm_established.go index e54e64533fea03560334370a7d47b7774934d98a..f1195dad2f5bc21ac16f8cfe94d3fd7a8e75b1c8 100644 --- a/protocols/bgp/server/fsm_established.go +++ b/protocols/bgp/server/fsm_established.go @@ -80,9 +80,16 @@ func (s *establishedState) init() { } func (s *establishedState) uninit() { - s.fsm.adjRIBOut.Unregister(s.fsm.updateSender) - s.fsm.rib.Unregister(s.fsm.adjRIBOut) - s.fsm.adjRIBIn.Unregister(s.fsm.rib) + s.fsm.adjRIBIn.Unregister(s.fsm.peer.importFilter) + s.fsm.peer.importFilter.Unregister(s.fsm.rib) + + s.fsm.rib.Unregister(s.fsm.peer.exportFilter) + s.fsm.peer.exportFilter.Unregister(s.fsm.adjRIBOut) + s.fsm.updateSender.Unregister(s.fsm.adjRIBOut) + + s.fsm.adjRIBIn = nil + s.fsm.adjRIBOut = nil + s.fsm.ribsInitialized = false }