summaryrefslogtreecommitdiffhomepage
path: root/table
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-01-20 16:02:32 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-01-20 16:02:32 +0900
commit355e5790dfd4a5941cd5c93586473819cc7e3bbd (patch)
treef478c5b8500fa404125beaf6a903e5c4943071b5 /table
parentb27eed1b8670ed7612129263741ef48ae2bfa1b4 (diff)
table: remove Path's best
Path can be shared in multiple local ribs so having "best" in Path is wrong. The info "best" path is stored in Destination so CLI uses it. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Diffstat (limited to 'table')
-rw-r--r--table/destination.go28
-rw-r--r--table/path.go8
2 files changed, 18 insertions, 18 deletions
diff --git a/table/destination.go b/table/destination.go
index e602deb0..865ab03e 100644
--- a/table/destination.go
+++ b/table/destination.go
@@ -96,19 +96,27 @@ func NewDestinationDefault(nlri bgp.AddrPrefixInterface) *DestinationDefault {
func (dd *DestinationDefault) MarshalJSON() ([]byte, error) {
prefix := dd.getNlri().(*bgp.NLRInfo).Prefix
- for _, p := range dd.knownPathList {
- if p == dd.getBestPath() {
- p.setBest(true)
- } else {
- p.setBest(false)
+
+ idx := func() int {
+ for i, p := range dd.knownPathList {
+ if p == dd.getBestPath() {
+ return i
+ }
}
- }
+ log.WithFields(log.Fields{
+ "Topic": "Table",
+ "Key": prefix.String(),
+ }).Panic("no best path")
+ return 0
+ }()
return json.Marshal(struct {
- Prefix string
- Paths []Path
+ Prefix string
+ Paths []Path
+ BestPathIdx int
}{
- Prefix: prefix.String(),
- Paths: dd.knownPathList,
+ Prefix: prefix.String(),
+ Paths: dd.knownPathList,
+ BestPathIdx: idx,
})
}
diff --git a/table/path.go b/table/path.go
index 276555ee..027630cb 100644
--- a/table/path.go
+++ b/table/path.go
@@ -40,7 +40,6 @@ type Path interface {
setMedSetByTargetNeighbor(medSetByTargetNeighbor bool)
getMedSetByTargetNeighbor() bool
clone(IsWithdraw bool) Path
- setBest(isBest bool)
MarshalJSON() ([]byte, error)
}
@@ -52,7 +51,6 @@ type PathDefault struct {
nlri bgp.AddrPrefixInterface
pathAttrs []bgp.PathAttributeInterface
medSetByTargetNeighbor bool
- isBest bool
}
func NewPathDefault(rf bgp.RouteFamily, source *PeerInfo, nlri bgp.AddrPrefixInterface, nexthop net.IP, isWithdraw bool, pattrs []bgp.PathAttributeInterface, medSetByTargetNeighbor bool) *PathDefault {
@@ -73,21 +71,15 @@ func NewPathDefault(rf bgp.RouteFamily, source *PeerInfo, nlri bgp.AddrPrefixInt
return path
}
-func (pd *PathDefault) setBest(isBest bool) {
- pd.isBest = isBest
-}
-
func (pd *PathDefault) MarshalJSON() ([]byte, error) {
return json.Marshal(struct {
Network string
Nexthop string
Attrs []bgp.PathAttributeInterface
- Best string
}{
Network: pd.getPrefix(),
Nexthop: pd.nexthop.String(),
Attrs: pd.getPathAttrs(),
- Best: fmt.Sprint(pd.isBest),
})
}