summaryrefslogtreecommitdiffhomepage
path: root/table/table_manager.go
diff options
context:
space:
mode:
Diffstat (limited to 'table/table_manager.go')
-rw-r--r--table/table_manager.go46
1 files changed, 7 insertions, 39 deletions
diff --git a/table/table_manager.go b/table/table_manager.go
index 083889c7..4b52e745 100644
--- a/table/table_manager.go
+++ b/table/table_manager.go
@@ -112,22 +112,16 @@ func ProcessMessage(m *bgp.BGPMessage, peerInfo *PeerInfo, timestamp time.Time)
}
type TableManager struct {
- Tables map[bgp.RouteFamily]*Table
- Vrfs map[string]*Vrf
- minLabel uint32
- maxLabel uint32
- nextLabel uint32
- rfList []bgp.RouteFamily
+ Tables map[bgp.RouteFamily]*Table
+ Vrfs map[string]*Vrf
+ rfList []bgp.RouteFamily
}
-func NewTableManager(rfList []bgp.RouteFamily, minLabel, maxLabel uint32) *TableManager {
+func NewTableManager(rfList []bgp.RouteFamily) *TableManager {
t := &TableManager{
- Tables: make(map[bgp.RouteFamily]*Table),
- Vrfs: make(map[string]*Vrf),
- minLabel: minLabel,
- maxLabel: maxLabel,
- nextLabel: minLabel,
- rfList: rfList,
+ Tables: make(map[bgp.RouteFamily]*Table),
+ Vrfs: make(map[string]*Vrf),
+ rfList: rfList,
}
for _, rf := range rfList {
t.Tables[rf] = NewTable(rf)
@@ -139,31 +133,6 @@ func (manager *TableManager) GetRFlist() []bgp.RouteFamily {
return manager.rfList
}
-func (manager *TableManager) GetNextLabel(name, nexthop string, isWithdraw bool) (uint32, error) {
- var label uint32
- var err error
- vrf, ok := manager.Vrfs[name]
- if !ok {
- return label, fmt.Errorf("vrf %s not found", name)
- }
- label, ok = vrf.LabelMap[nexthop]
- if !ok {
- label, err = manager.getNextLabel()
- vrf.LabelMap[nexthop] = label
- }
- return label, err
-
-}
-
-func (manager *TableManager) getNextLabel() (uint32, error) {
- if manager.nextLabel > manager.maxLabel {
- return 0, fmt.Errorf("ran out of label resource. max label %d", manager.maxLabel)
- }
- label := manager.nextLabel
- manager.nextLabel += 1
- return label, nil
-}
-
func (manager *TableManager) AddVrf(name string, id uint32, rd bgp.RouteDistinguisherInterface, importRt, exportRt []bgp.ExtendedCommunityInterface, info *PeerInfo) ([]*Path, error) {
if _, ok := manager.Vrfs[name]; ok {
return nil, fmt.Errorf("vrf %s already exists", name)
@@ -181,7 +150,6 @@ func (manager *TableManager) AddVrf(name string, id uint32, rd bgp.RouteDistingu
Rd: rd,
ImportRt: importRt,
ExportRt: exportRt,
- LabelMap: make(map[string]uint32),
}
msgs := make([]*Path, 0, len(importRt))
nexthop := "0.0.0.0"