summaryrefslogtreecommitdiffhomepage
path: root/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.go')
-rw-r--r--server/server.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/server/server.go b/server/server.go
index 0baeffd1..6deea0dd 100644
--- a/server/server.go
+++ b/server/server.go
@@ -1006,6 +1006,16 @@ func (server *BgpServer) propagateUpdateToNeighbors(source *Peer, newPath *table
}()
} else {
bestList = []*table.Path{newPath}
+ if newPath.GetRouteFamily() == bgp.RF_RTC_UC {
+ // we assumes that new "path" nlri was already sent before. This assumption avoids the
+ // infinite UPDATE loop between Route Reflector and its clients.
+ for _, old := range dsts[0].OldKnownPathList {
+ if old.IsLocal() {
+ bestList = []*table.Path{}
+ break
+ }
+ }
+ }
}
oldList = nil
} else if targetPeer.isRouteServerClient() {