diff options
author | FUJITA Tomonori <fujita.tomonori@gmail.com> | 2019-10-20 21:25:03 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@gmail.com> | 2019-10-26 07:02:54 +0900 |
commit | 2e05695f683430bdf39573b19f51bac4dcbbc693 (patch) | |
tree | 3f80939fb737832dbf8f8f5ebe0b35e0e9900718 /pkg/server/server.go | |
parent | b4e2d9e440a4eb6d3091a7c586d2e55b69ec968a (diff) |
avoid installing routes with originator ID to global when softresetin
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Diffstat (limited to 'pkg/server/server.go')
-rw-r--r-- | pkg/server/server.go | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/pkg/server/server.go b/pkg/server/server.go index 2312b39d..f95a988c 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -2255,34 +2255,7 @@ func (s *BgpServer) softResetIn(addr string, family bgp.RouteFamily) error { return err } for _, peer := range peers { - families := familiesForSoftreset(peer, family) - - pathList := make([]*table.Path, 0, peer.adjRibIn.Count(families)) - for _, path := range peer.adjRibIn.PathList(families, false) { - // RFC4271 9.1.2 Phase 2: Route Selection - // - // If the AS_PATH attribute of a BGP route contains an AS loop, the BGP - // route should be excluded from the Phase 2 decision function. - isLooped := false - if aspath := path.GetAsPath(); aspath != nil { - peer.fsm.lock.RLock() - localAS := peer.fsm.peerInfo.LocalAS - allowOwnAS := int(peer.fsm.pConf.AsPathOptions.Config.AllowOwnAs) - peer.fsm.lock.RUnlock() - isLooped = hasOwnASLoop(localAS, allowOwnAS, aspath) - } - if path.IsAsLooped() != isLooped { - // can't modify the existing one. needs to create one - path = path.Clone(false) - path.SetAsLooped(isLooped) - // update accepted counter - peer.adjRibIn.Update([]*table.Path{path}) - } - if !path.IsAsLooped() { - pathList = append(pathList, path) - } - } - s.propagateUpdate(peer, pathList) + s.propagateUpdate(peer, peer.adjRibIn.PathList(familiesForSoftreset(peer, family), true)) } return err } @@ -3007,7 +2980,6 @@ func (s *BgpServer) updateNeighbor(c *config.Neighbor) (needsSoftResetIn bool, e "Topic": "Peer", "Key": peer.ID(), }).Info("Update aspath options") - peer.fsm.pConf.AsPathOptions = c.AsPathOptions needsSoftResetIn = true } |