diff options
Diffstat (limited to 'server/server.go')
-rw-r--r-- | server/server.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/server/server.go b/server/server.go index f1aafe94..473c255e 100644 --- a/server/server.go +++ b/server/server.go @@ -899,7 +899,9 @@ func (server *BgpServer) propagateUpdate(peer *Peer, pathList []*table.Path) { } var candidates []*table.Path if path.IsWithdraw { - candidates, _ = server.getBestFromLocal(peer, fs) + // Note: The paths to be withdrawn are filtered because the + // given RT on RTM NLRI is already removed from adj-RIB-in. + _, candidates = server.getBestFromLocal(peer, fs) } else { candidates = server.globalRib.GetBestPathList(peer.TableID(), 0, fs) } @@ -916,7 +918,8 @@ func (server *BgpServer) propagateUpdate(peer *Peer, pathList []*table.Path) { } } if path.IsWithdraw { - paths = server.processOutgoingPaths(peer, nil, paths) + // Skips filtering because the paths are already filtered + // and the withdrawal does not need the path attributes. } else { paths = server.processOutgoingPaths(peer, paths, nil) } |