From 6cffab405aaee92ba3f0b065be1f0ea9cc11cf9f Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Thu, 22 Jan 2015 23:03:59 +0900 Subject: table: add timestamp to Path Set timestamp at Path when update message for the path arrived. Signed-off-by: FUJITA Tomonori --- table/table_manager.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'table/table_manager.go') diff --git a/table/table_manager.go b/table/table_manager.go index 109cd004..375e7b2b 100644 --- a/table/table_manager.go +++ b/table/table_manager.go @@ -33,7 +33,7 @@ func NewProcessMessage(m *bgp.BGPMessage, peerInfo *PeerInfo) *ProcessMessage { } } -func (p *ProcessMessage) nlri2Path() []Path { +func (p *ProcessMessage) nlri2Path(now time.Time) []Path { updateMsg := p.innerMessage.Body.(*bgp.BGPUpdate) pathAttributes := updateMsg.PathAttributes pathList := make([]Path, 0) @@ -41,13 +41,13 @@ func (p *ProcessMessage) nlri2Path() []Path { // define local variable to pass nlri's address to CreatePath var nlri bgp.NLRInfo = nlri_info // create Path object - path := CreatePath(p.fromPeer, &nlri, pathAttributes, false) + path := CreatePath(p.fromPeer, &nlri, pathAttributes, false, now) pathList = append(pathList, path) } return pathList } -func (p *ProcessMessage) withdraw2Path() []Path { +func (p *ProcessMessage) withdraw2Path(now time.Time) []Path { updateMsg := p.innerMessage.Body.(*bgp.BGPUpdate) pathAttributes := updateMsg.PathAttributes pathList := make([]Path, 0) @@ -55,13 +55,13 @@ func (p *ProcessMessage) withdraw2Path() []Path { // define local variable to pass nlri's address to CreatePath var w bgp.WithdrawnRoute = nlriWithdraw // create withdrawn Path object - path := CreatePath(p.fromPeer, &w, pathAttributes, true) + path := CreatePath(p.fromPeer, &w, pathAttributes, true, now) pathList = append(pathList, path) } return pathList } -func (p *ProcessMessage) mpreachNlri2Path() []Path { +func (p *ProcessMessage) mpreachNlri2Path(now time.Time) []Path { updateMsg := p.innerMessage.Body.(*bgp.BGPUpdate) pathAttributes := updateMsg.PathAttributes attrList := []*bgp.PathAttributeMpReachNLRI{} @@ -78,14 +78,14 @@ func (p *ProcessMessage) mpreachNlri2Path() []Path { for _, mp := range attrList { nlri_info := mp.Value for _, nlri := range nlri_info { - path := CreatePath(p.fromPeer, nlri, pathAttributes, false) + path := CreatePath(p.fromPeer, nlri, pathAttributes, false, now) pathList = append(pathList, path) } } return pathList } -func (p *ProcessMessage) mpunreachNlri2Path() []Path { +func (p *ProcessMessage) mpunreachNlri2Path(now time.Time) []Path { updateMsg := p.innerMessage.Body.(*bgp.BGPUpdate) pathAttributes := updateMsg.PathAttributes attrList := []*bgp.PathAttributeMpUnreachNLRI{} @@ -103,7 +103,7 @@ func (p *ProcessMessage) mpunreachNlri2Path() []Path { nlri_info := mp.Value for _, nlri := range nlri_info { - path := CreatePath(p.fromPeer, nlri, pathAttributes, true) + path := CreatePath(p.fromPeer, nlri, pathAttributes, true, now) pathList = append(pathList, path) } } @@ -112,10 +112,11 @@ func (p *ProcessMessage) mpunreachNlri2Path() []Path { func (p *ProcessMessage) ToPathList() []Path { pathList := make([]Path, 0) - pathList = append(pathList, p.nlri2Path()...) - pathList = append(pathList, p.withdraw2Path()...) - pathList = append(pathList, p.mpreachNlri2Path()...) - pathList = append(pathList, p.mpunreachNlri2Path()...) + now := time.Now() + pathList = append(pathList, p.nlri2Path(now)...) + pathList = append(pathList, p.withdraw2Path(now)...) + pathList = append(pathList, p.mpreachNlri2Path(now)...) + pathList = append(pathList, p.mpunreachNlri2Path(now)...) return pathList } -- cgit v1.2.3