diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2015-01-23 00:03:29 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2015-01-23 00:03:29 +0900 |
commit | 12ae36fb0fecdd068fa4b3a8c1ea36d95b29bf7c (patch) | |
tree | 35f34946924dded3fbe59c5d6e4b7cd74e283bd5 /table/table_manager_test.go | |
parent | 56f5c27011c50b3073cd30f5e9592da172203766 (diff) |
table: not update timestamp if the path replaces the same path
If a new path has the exact same attributes that the existing one
(after RouteRefresh), we don't update the timestamp.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Diffstat (limited to 'table/table_manager_test.go')
-rw-r--r-- | table/table_manager_test.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/table/table_manager_test.go b/table/table_manager_test.go index 47e4d4a7..f7c126bf 100644 --- a/table/table_manager_test.go +++ b/table/table_manager_test.go @@ -2184,6 +2184,61 @@ func TestProcessBGPUpdate_multiple_nlri_ipv6(t *testing.T) { } +func TestProcessBGPUpdate_Timestamp(t *testing.T) { + tm := NewTableManager() + + origin := bgp.NewPathAttributeOrigin(0) + aspathParam := []bgp.AsPathParamInterface{bgp.NewAs4PathParam(2, []uint32{65000})} + aspath := bgp.NewPathAttributeAsPath(aspathParam) + nexthop := bgp.NewPathAttributeNextHop("192.168.50.1") + med := bgp.NewPathAttributeMultiExitDisc(0) + + pathAttributes := []bgp.PathAttributeInterface{ + origin, + aspath, + nexthop, + med, + } + + nlri := []bgp.NLRInfo{*bgp.NewNLRInfo(24, "10.10.10.0")} + withdrawnRoutes := []bgp.WithdrawnRoute{} + + bgpMessage1 := bgp.NewBGPUpdateMessage(withdrawnRoutes, pathAttributes, nlri) + + peer := peerR1() + pList, wList, err := tm.ProcessUpdate(peer, bgpMessage1) + assert.Equal(t, len(pList), 1) + assert.Equal(t, len(wList), 0) + assert.NoError(t, err) + + path1 := pList[0].(*IPv4Path) + + bgpMessage2 := bgp.NewBGPUpdateMessage(withdrawnRoutes, pathAttributes, nlri) + pList, wList, err = tm.ProcessUpdate(peer, bgpMessage2) + assert.Equal(t, len(pList), 1) + assert.Equal(t, len(wList), 0) + + path2 := pList[0].(*IPv4Path) + + assert.Equal(t, path1.timestamp, path2.timestamp) + + med2 := bgp.NewPathAttributeMultiExitDisc(1) + pathAttributes2 := []bgp.PathAttributeInterface{ + origin, + aspath, + nexthop, + med2, + } + + bgpMessage3 := bgp.NewBGPUpdateMessage(withdrawnRoutes, pathAttributes2, nlri) + pList, wList, err = tm.ProcessUpdate(peer, bgpMessage3) + assert.Equal(t, len(pList), 1) + assert.Equal(t, len(wList), 0) + + path3 := pList[0].(*IPv4Path) + assert.NotEqual(t, path2.timestamp, path3.timestamp) +} + func update_fromR1() *bgp.BGPMessage { origin := bgp.NewPathAttributeOrigin(0) |