diff --git a/device/arista/x86_64-arista_7060_cx32s/platform.json b/device/arista/x86_64-arista_7060_cx32s/platform.json index f322ac0aab..c976b4dabe 100644 --- a/device/arista/x86_64-arista_7060_cx32s/platform.json +++ b/device/arista/x86_64-arista_7060_cx32s/platform.json @@ -15,7 +15,7 @@ "name": "Ucd90120A(addr=8-004e)" }, { - "name": "CrowSysCpld(addr=2-0023)" + "name": "KoiSysCpld(addr=2-0023)" } ], "fans": [], diff --git a/platform/checkout/cisco-8000-smartswitch.ini b/platform/checkout/cisco-8000-smartswitch.ini index 107812748b..5232722f67 100644 --- a/platform/checkout/cisco-8000-smartswitch.ini +++ b/platform/checkout/cisco-8000-smartswitch.ini @@ -1,4 +1,4 @@ [module] repo=git@github.com:Cisco-8000-sonic/platform-cisco-8000.git -ref=202505.1.0.4 +ref=202505.1.0.7 diff --git a/src/dhcpmon b/src/dhcpmon index 1da5c921ab..6aa29ed038 160000 --- a/src/dhcpmon +++ b/src/dhcpmon @@ -1 +1 @@ -Subproject commit 1da5c921ab745eca1b912fe43f5feb45d22699b5 +Subproject commit 6aa29ed038cb0f8173d9ac6bf40ae966f4163911 diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 3850d805b7..31ba216bb9 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -2776,33 +2776,73 @@ VOQ_INBAND_INTERFACE holds the name of the inband system port dedicated for cpu ### VXLAN -VXLAN_TUNNEL holds the VTEP source ip configuration. +VXLAN_TUNNEL holds the VTEP source ip configuration (maximum 2 tunnels). VXLAN_TUNNEL_MAP holds the vlan to vni and vni to vlan mapping configuration. VXLAN_EVPN_NVO holds the VXLAN_TUNNEL object to be used for BGP-EVPN discovered tunnels. +Single tunnel example: ``` { -"VXLAN_TUNNEL": { + "VXLAN_TUNNEL": { "vtep1": { "src_ip": "10.10.10.10", "dst_ip": "12.12.12.12" } - } -"VXLAN_TUNNEL_MAP" : { + }, + "VXLAN_TUNNEL_MAP": { "vtep1|map_1000_Vlan100": { - "vni": "1000", - "vlan": "100" - }, - "vtep1|testmap": { - "vni": "22000", - "vlan": "70" - }, - } - "VXLAN_EVPN_NVO": { + "vni": "1000", + "vlan": "100" + }, + "vtep1|map_22000_Vlan70": { + "vni": "22000", + "vlan": "70" + } + }, + "VXLAN_EVPN_NVO": { "nvo1": { "source_vtep": "vtep1" } - } + } +} +``` + +Dual tunnel example: +``` +{ + "VXLAN_TUNNEL": { + "vtep1": { + "src_ip": "10.10.10.10", + "dst_ip": "12.12.12.12" + }, + "vtep2": { + "src_ip": "10.20.10.10", + "dst_ip": "20.20.20.20" + } + }, + "VXLAN_TUNNEL_MAP": { + "vtep1|map_1000_Vlan100": { + "vni": "1000", + "vlan": "100" + }, + "vtep1|map_22000_Vlan70": { + "vni": "22000", + "vlan": "70" + }, + "vtep2|map_2000_Vlan200": { + "vni": "2000", + "vlan": "200" + }, + "vtep2|map_3000_Vlan300": { + "vni": "3000", + "vlan": "300" + } + }, + "VXLAN_EVPN_NVO": { + "nvo1": { + "source_vtep": "vtep1" + } + } } ``` diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json b/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json index c064500fbf..033560cbb5 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json @@ -20,19 +20,26 @@ "VXLAN_TUNNEL_NAME_VALID_TEST": { "desc": "Tunnel Name string length 15 is valid" }, - "VXLAN_TUNNEL_NAME_INVALID_LENGTH_TEST": { - "desc": "Tunnel Name string length exceeding 16 is invalid", - "eStr" : "Invalid interface name length, it must not exceed 16 characters." + "VXLAN_TUNNEL_NAME_LONG_VALID_TEST": { + "desc": "Tunnel Name string length exceeding 16 is now valid" }, - "VXLAN_TUNNEL_NAME_INVALID_TEST": { - "desc": "Tunnel Name string length 0 is invalid", - "eStr" : "Invalid interface name length, it must not exceed 16 characters." + "VXLAN_TUNNEL_NAME_EMPTY_VALID_TEST": { + "desc": "Tunnel Name string length 0 is valid" }, "VXLAN_TUNNEL_NAME_VALID_DST_IPV4_TEST": { - "desc": "Valid IPv4 Destination Address", - "eStr" : "Invalid interface name length, it must not exceed 16 characters." + "desc": "Valid IPv4 Destination Address" }, "VXLAN_TUNNEL_NAME_VALID_DST_IPV6_TEST": { "desc": "Valid IPv6 Destination Address" + }, + "VXLAN_TUNNEL_MAX_ELEM_VALID_TEST": { + "desc": "Valid config with 2 VXLAN_TUNNEL entries" + }, + "VXLAN_TUNNEL_MAX_ELEM_INVALID_TEST": { + "desc": "Invalid config with more than 2 VXLAN_TUNNEL entries", + "eStrKey": "MaxElements" + }, + "VXLAN_TUNNEL_NAME_STRING_VALID_TEST": { + "desc": "Tunnel name as arbitrary string is valid" } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json index 79046b1167..cac4366236 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json @@ -196,7 +196,7 @@ } } }, - "VXLAN_TUNNEL_NAME_INVALID_LENGTH_TEST": { + "VXLAN_TUNNEL_NAME_LONG_VALID_TEST": { "sonic-vlan:sonic-vlan": { "sonic-vlan:VLAN": { "VLAN_LIST": [ @@ -227,7 +227,7 @@ } } }, - "VXLAN_TUNNEL_NAME_INVALID_TEST": { + "VXLAN_TUNNEL_NAME_EMPTY_VALID_TEST": { "sonic-vlan:sonic-vlan": { "sonic-vlan:VLAN": { "VLAN_LIST": [ @@ -321,5 +321,35 @@ ] } } + }, + "VXLAN_TUNNEL_MAX_ELEM_VALID_TEST": { + "sonic-vxlan:sonic-vxlan": { + "sonic-vxlan:VXLAN_TUNNEL": { + "VXLAN_TUNNEL_LIST": [ + { "name": "vtep1", "src_ip": "1.2.3.4" }, + { "name": "vtep2", "src_ip": "2.3.4.5" } + ] + } + } + }, + "VXLAN_TUNNEL_MAX_ELEM_INVALID_TEST": { + "sonic-vxlan:sonic-vxlan": { + "sonic-vxlan:VXLAN_TUNNEL": { + "VXLAN_TUNNEL_LIST": [ + { "name": "vtep1", "src_ip": "1.2.3.4" }, + { "name": "vtep2", "src_ip": "2.3.4.5" }, + { "name": "vtep3", "src_ip": "3.4.5.6" } + ] + } + } + }, + "VXLAN_TUNNEL_NAME_STRING_VALID_TEST": { + "sonic-vxlan:sonic-vxlan": { + "sonic-vxlan:VXLAN_TUNNEL": { + "VXLAN_TUNNEL_LIST": [ + { "name": "arbitrary_string", "src_ip": "5.6.7.8" } + ] + } + } } } diff --git a/src/sonic-yang-models/yang-models/sonic-vxlan.yang b/src/sonic-yang-models/yang-models/sonic-vxlan.yang index 75ae6dc83e..12a18814b6 100644 --- a/src/sonic-yang-models/yang-models/sonic-vxlan.yang +++ b/src/sonic-yang-models/yang-models/sonic-vxlan.yang @@ -46,10 +46,10 @@ module sonic-vxlan { list VXLAN_TUNNEL_LIST { key "name"; - max-elements 1; + max-elements 2; leaf name { - type stypes:interface_name; + type string; } leaf src_ip {