summaryrefslogtreecommitdiff
path: root/smoketest
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2024-07-26 19:59:22 +0100
committerGitHub <noreply@github.com>2024-07-26 19:59:22 +0100
commitd7f73cdab53db199998b56db3722b89023e51ae3 (patch)
tree58fbc75edce564e1da7bceb005d0bcf29fffcc4e /smoketest
parent24881b05629918eb26fbffb6ee63a49a1f858527 (diff)
parenta80813920040e8e0351c3504b9e385b5c579d6a8 (diff)
downloadvyos-1x-d7f73cdab53db199998b56db3722b89023e51ae3.tar.gz
vyos-1x-d7f73cdab53db199998b56db3722b89023e51ae3.zip
Merge pull request #3882 from vyos/mergify/bp/sagitta/pr-3756
vxlan: T6505: Support VXLAN VLAN-VNI range mapping in CLI (backport #3756)
Diffstat (limited to 'smoketest')
-rwxr-xr-xsmoketest/scripts/cli/test_interfaces_vxlan.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_interfaces_vxlan.py b/smoketest/scripts/cli/test_interfaces_vxlan.py
index 18676491b..b2076b43b 100755
--- a/smoketest/scripts/cli/test_interfaces_vxlan.py
+++ b/smoketest/scripts/cli/test_interfaces_vxlan.py
@@ -27,6 +27,13 @@ from vyos.utils.network import get_vxlan_vni_filter
from vyos.template import is_ipv6
from base_interfaces_test import BasicInterfaceTest
+def convert_to_list(ranges_to_convert):
+ result_list = []
+ for r in ranges_to_convert:
+ ranges = r.split('-')
+ result_list.extend([str(i) for i in range(int(ranges[0]), int(ranges[1]) + 1)])
+ return result_list
+
class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
@classmethod
def setUpClass(cls):
@@ -153,6 +160,11 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
'31': '10031',
}
+ vlan_to_vni_ranges = {
+ '40-43': '10040-10043',
+ '45-47': '10045-10047'
+ }
+
self.cli_set(self._base_path + [interface, 'parameters', 'external'])
self.cli_set(self._base_path + [interface, 'source-address', source_address])
@@ -185,6 +197,26 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
tmp = get_vxlan_vlan_tunnels('vxlan0')
self.assertEqual(tmp, list(vlan_to_vni))
+ # add ranged VLAN - VNI mapping
+ for vlan, vni in vlan_to_vni_ranges.items():
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
+ self.cli_commit()
+
+ tmp = get_vxlan_vlan_tunnels('vxlan0')
+ vlans_list = convert_to_list(vlan_to_vni_ranges.keys())
+ self.assertEqual(tmp, list(vlan_to_vni) + vlans_list)
+
+ # check validate() - cannot map VNI range to a single VLAN id
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', '100', 'vni', '100-102'])
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+ self.cli_delete(self._base_path + [interface, 'vlan-to-vni', '100'])
+
+ # check validate() - cannot map VLAN to VNI with different ranges
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', '100-102', 'vni', '100-105'])
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
self.cli_delete(['interfaces', 'bridge', bridge])
def test_vxlan_neighbor_suppress(self):
@@ -287,6 +319,12 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
'60': '10060',
'69': '10069',
}
+
+ vlan_to_vni_ranges = {
+ '70-73': '10070-10073',
+ '75-77': '10075-10077'
+ }
+
for vlan, vni in vlan_to_vni.items():
self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
# we need a bridge ...
@@ -313,6 +351,15 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
tmp = get_vxlan_vni_filter(interface)
self.assertListEqual(list(vlan_to_vni.values()), tmp)
+ # add ranged VLAN - VNI mapping
+ for vlan, vni in vlan_to_vni_ranges.items():
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
+ self.cli_commit()
+
+ tmp = get_vxlan_vni_filter(interface)
+ vnis_list = convert_to_list(vlan_to_vni_ranges.values())
+ self.assertListEqual(list(vlan_to_vni.values()) + vnis_list, tmp)
+
self.cli_delete(['interfaces', 'bridge', bridge])
if __name__ == '__main__':