diff options
Diffstat (limited to 'table/table_manager_test.go')
-rw-r--r-- | table/table_manager_test.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/table/table_manager_test.go b/table/table_manager_test.go index c0abcd84..c9d6e22a 100644 --- a/table/table_manager_test.go +++ b/table/table_manager_test.go @@ -2239,6 +2239,38 @@ func TestProcessBGPUpdate_multiple_nlri_ipv6(t *testing.T) { } +func TestModifyPathAttribute(t *testing.T) { + tm := NewTableManager() + + bgpMessage := update_fromR1() + peer := peerR1() + pList, wList, err := tm.ProcessUpdate(peer, bgpMessage) + assert.Equal(t, len(pList), 1) + assert.Equal(t, len(wList), 0) + assert.NoError(t, err) + + path0 := pList[0] + path1 := path0.Clone() + + _, attr1 := path1.GetPathAttr(bgp.BGP_ATTR_TYPE_MULTI_EXIT_DISC) + mx1 := attr1.(*bgp.PathAttributeMultiExitDisc) + original := mx1.Value + mx1.Value++ + + table := tm.Tables[RF_IPv4_UC] + dest := table.getDestination(table.tableKey(path0.GetNlri()).String()).(*IPv4Destination) + path2 := dest.getKnownPathList() + _, attr2 := path2[0].GetPathAttr(bgp.BGP_ATTR_TYPE_MULTI_EXIT_DISC) + mx2 := attr2.(*bgp.PathAttributeMultiExitDisc) + assert.Equal(t, original, mx2.Value) + + path3 := path0 + _, attr3 := path3.GetPathAttr(bgp.BGP_ATTR_TYPE_MULTI_EXIT_DISC) + mx3 := attr3.(*bgp.PathAttributeMultiExitDisc) + mx3.Value++ + assert.Equal(t, mx2.Value, mx3.Value) +} + func update_fromR1() *bgp.BGPMessage { origin := bgp.NewPathAttributeOrigin(0) |