summaryrefslogtreecommitdiffhomepage
path: root/table/table_manager_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'table/table_manager_test.go')
-rw-r--r--table/table_manager_test.go32
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)