diff options
Diffstat (limited to 'table')
-rw-r--r-- | table/destination.go | 5 | ||||
-rw-r--r-- | table/table_manager.go | 14 | ||||
-rw-r--r-- | table/table_manager_test.go | 2 |
3 files changed, 8 insertions, 13 deletions
diff --git a/table/destination.go b/table/destination.go index 2111f695..131cb129 100644 --- a/table/destination.go +++ b/table/destination.go @@ -226,10 +226,9 @@ func (dd *Destination) validatePath(path *Path) { // // Modifies destination's state related to stored paths. Removes withdrawn // paths from known paths. Also, adds new paths to known paths. -func (dest *Destination) Calculate(ids []string) (map[string]*Path, []*Path, []*Path) { +func (dest *Destination) Calculate(ids []string) (map[string]*Path, []*Path) { best := make(map[string]*Path, len(ids)) oldKnownPathList := dest.knownPathList - updated := dest.newPathList // First remove the withdrawn paths. withdrawnList := dest.explicitWithdraw() // Do implicit withdrawal @@ -266,7 +265,7 @@ func (dest *Destination) Calculate(ids []string) (map[string]*Path, []*Path, []* for _, id := range ids { best[id] = f(id) } - return best, updated, withdrawnList + return best, withdrawnList } // Removes withdrawn paths. diff --git a/table/table_manager.go b/table/table_manager.go index 287c5a46..a041c5b9 100644 --- a/table/table_manager.go +++ b/table/table_manager.go @@ -216,8 +216,7 @@ func (manager *TableManager) DeleteVrf(name string) ([]*Path, error) { return msgs, nil } -func (manager *TableManager) calculate(ids []string, destinations []*Destination) (map[string][]*Path, []*Path, []*Path) { - newly := make([]*Path, 0, len(destinations)) +func (manager *TableManager) calculate(ids []string, destinations []*Destination) (map[string][]*Path, []*Path) { withdrawn := make([]*Path, 0, len(destinations)) best := make(map[string][]*Path, len(ids)) @@ -228,11 +227,10 @@ func (manager *TableManager) calculate(ids []string, destinations []*Destination "Topic": "table", "Key": dst.GetNlri().String(), }).Debug("Processing destination") - paths, n, w := dst.Calculate(ids) + paths, w := dst.Calculate(ids) for id, path := range paths { best[id] = append(best[id], path) } - newly = append(newly, n...) withdrawn = append(withdrawn, w...) if len(dst.knownPathList) == 0 { @@ -244,20 +242,18 @@ func (manager *TableManager) calculate(ids []string, destinations []*Destination t := manager.Tables[dst.Family()] t.deleteDest(dst) } - return best, newly, withdrawn + return best, withdrawn } func (manager *TableManager) DeletePathsByPeer(ids []string, info *PeerInfo, rf bgp.RouteFamily) (map[string][]*Path, []*Path) { if t, ok := manager.Tables[rf]; ok { dsts := t.DeleteDestByPeer(info) - // no newly added paths - best, _, withdrawn := manager.calculate(ids, dsts) - return best, withdrawn + return manager.calculate(ids, dsts) } return nil, nil } -func (manager *TableManager) ProcessPaths(ids []string, pathList []*Path) (map[string][]*Path, []*Path, []*Path) { +func (manager *TableManager) ProcessPaths(ids []string, pathList []*Path) (map[string][]*Path, []*Path) { m := make(map[string]bool, len(pathList)) dsts := make([]*Destination, 0, len(pathList)) for _, path := range pathList { diff --git a/table/table_manager_test.go b/table/table_manager_test.go index 38f16eaf..21d70d84 100644 --- a/table/table_manager_test.go +++ b/table/table_manager_test.go @@ -30,7 +30,7 @@ import ( // this function processes only BGPUpdate func (manager *TableManager) ProcessUpdate(fromPeer *PeerInfo, message *bgp.BGPMessage) ([]*Path, error) { paths := ProcessMessage(message, fromPeer, time.Now()) - best, _, _ := manager.ProcessPaths([]string{GLOBAL_RIB_NAME}, paths) + best, _ := manager.ProcessPaths([]string{GLOBAL_RIB_NAME}, paths) paths2 := make([]*Path, 0, len(paths)) for _, p := range best[GLOBAL_RIB_NAME] { if p != nil { |