From 07bd757fa298281db47f50db1fc52af214330af8 Mon Sep 17 00:00:00 2001 From: Oliver Herms <oliver.herms@exaring.de> Date: Thu, 18 Oct 2018 16:20:48 +0200 Subject: [PATCH] Cleanup --- routingtable/adjRIBOut/adj_rib_out.go | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/routingtable/adjRIBOut/adj_rib_out.go b/routingtable/adjRIBOut/adj_rib_out.go index 7aa1eb77..289dc7da 100644 --- a/routingtable/adjRIBOut/adj_rib_out.go +++ b/routingtable/adjRIBOut/adj_rib_out.go @@ -138,28 +138,30 @@ func (a *AdjRIBOut) RemovePath(pfx bnet.Prefix, p *route.Path) bool { return false } - q := p + sentPath := p if a.addPathTX { - for _, q := range r.Paths() { - if q.Select(p) == 0 { - a.rt.RemovePath(pfx, q) - - // try to find the PathID - pathID, err := a.pathIDManager.releasePath(p) - if err != nil { - log.Warningf("Unable to release path for prefix %s: %v", pfx.String(), err) - return true - } - - p = p.Copy() - p.BGPPath.PathIdentifier = pathID + for _, sentPath := range r.Paths() { + if sentPath.Select(p) != 0 { + continue } + + a.rt.RemovePath(pfx, sentPath) + + _, err := a.pathIDManager.releasePath(p) + if err != nil { + log.Warningf("Unable to release path for prefix %s: %v", pfx.String(), err) + return true + } + } + + if sentPath == p { + return false } } else { a.rt.RemovePath(pfx, p) } - a.removePathFromClients(pfx, q) + a.removePathFromClients(pfx, sentPath) return true } -- GitLab