summaryrefslogtreecommitdiffhomepage
path: root/table
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-12-18 19:40:59 -0800
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-12-18 19:40:59 -0800
commitd5a7a4569a5e6b55eda9c26ce70b846b643ebf50 (patch)
treedfd1ccb457220eb7dc6fd6251d836e5df6cff70e /table
parentb1c8ed363bdab0d3618077e93a79df227559539c (diff)
server: update adjRibIn
When we get a update message, update adjRibIn, and sends the path infomation to other peers. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Diffstat (limited to 'table')
-rw-r--r--table/table_manager.go27
1 files changed, 23 insertions, 4 deletions
diff --git a/table/table_manager.go b/table/table_manager.go
index b59912f6..9fe4032a 100644
--- a/table/table_manager.go
+++ b/table/table_manager.go
@@ -18,7 +18,6 @@ package table
import (
log "github.com/Sirupsen/logrus"
"github.com/osrg/gobgp/packet"
- "net"
"os"
"time"
)
@@ -138,6 +137,13 @@ type ProcessMessage struct {
fromPeer *PeerInfo
}
+func NewProcessMessage(m *bgp.BGPMessage, peerInfo *PeerInfo) *ProcessMessage {
+ return &ProcessMessage{
+ innerMessage: m,
+ fromPeer: peerInfo,
+ }
+}
+
func (p *ProcessMessage) nlri2Path() []Path {
updateMsg := p.innerMessage.Body.(*bgp.BGPUpdate)
pathAttributes := updateMsg.PathAttributes
@@ -353,9 +359,23 @@ func NewAdjRib() *AdjRib {
return r
}
+func (adj *AdjRib) UpdateIn(pathList []Path) {
+ for _, path := range pathList {
+ rf := path.getRouteFamily()
+ key := path.getPrefix().String()
+ if path.isWithdraw() {
+ _, found := adj.adjRibIn[rf][key]
+ if found {
+ delete(adj.adjRibIn[rf], key)
+ }
+ } else {
+ adj.adjRibIn[rf][key] = NewReceivedRoute(path, false)
+ }
+ }
+}
+
type ReceivedRoute struct {
path Path
- fromPeer *net.IP
filtered bool
timestamp time.Time
}
@@ -364,11 +384,10 @@ func (rr *ReceivedRoute) String() string {
return rr.path.(*PathDefault).getPrefix().String()
}
-func NewReceivedRoute(path Path, peer *net.IP, filtered bool) *ReceivedRoute {
+func NewReceivedRoute(path Path, filtered bool) *ReceivedRoute {
rroute := &ReceivedRoute{
path: path,
- fromPeer: peer,
filtered: filtered,
timestamp: time.Now(),
}