diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2026-06-23 13:36:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-23 13:36:44 +0300 |
| commit | d1e320047348d90202a23a598cd771e41cb0be24 (patch) | |
| tree | b64a18c06ed6f94ab04ad8dbe7acb3c4645deedd /smoketest/scripts/cli | |
| parent | d935b5a83b0fa81e3fc9d727cedbda7575f60d85 (diff) | |
| parent | d90693fd0da03f8de4ccc4a5a85e2f2c9823e682 (diff) | |
| download | vyos-1x-d1e320047348d90202a23a598cd771e41cb0be24.tar.gz vyos-1x-d1e320047348d90202a23a598cd771e41cb0be24.zip | |
Merge pull request #5156 from alexandr-san4ez/T8540-current
pseudo-ethernet: T8540: Add anycast-gateway support for EVPN
Diffstat (limited to 'smoketest/scripts/cli')
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py b/smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py index 3be8e024f..c70d19474 100755 --- a/smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py +++ b/smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py @@ -19,6 +19,8 @@ import unittest from base_interfaces_test import BasicInterfaceTest from base_vyostest_shim import VyOSUnitTestSHIM +from vyos.configsession import ConfigSessionError +from vyos.utils.process import cmd from vyos.ifconfig import Section @@ -44,5 +46,55 @@ class PEthInterfaceTest(BasicInterfaceTest.TestCase): # call base-classes classmethod super(PEthInterfaceTest, cls).setUpClass() + def test_anycast_gateway(self): + # Create the underlying bridge and sub-interface in the test + + for i, peth in enumerate(self._interfaces): + eth = peth[1:] # Convert peth0 -> eth0 + br = f'br{i}' + vlan = str(i + 100) + + # Format the MAC using index as a two-digit hexadecimal + mac_address = f'00:aa:aa:aa:aa:{i:02x}' + + with self.subTest(peth=peth, eth=eth, mac_address=mac_address, i=i): + base_bridge_path = ['interfaces', 'bridge', br] + base_br_member_path = base_bridge_path + ['member', 'interface'] + + self.cli_set(base_bridge_path + ['enable-vlan']) + self.cli_set(base_br_member_path + [eth, 'native-vlan', vlan]) + self.cli_set(base_br_member_path + [f'vxlan{i}']) + self.cli_set(base_bridge_path + ['vif', vlan]) + + self.cli_set( + self._base_path + [peth, 'source-interface', f'{br}.{vlan}'] + ) + self.cli_set(self._base_path + [peth, 'anycast-gateway']) + + # Anycast gateway requires MAC + with self.assertRaises(ConfigSessionError): + self.cli_commit() + + self.cli_set(self._base_path + [peth, 'mac', mac_address]) + self.cli_commit() + + # Verify FDB entry exists with flag + fdb = cmd(f'bridge fdb show dev {br}') + self.assertIn(f'{mac_address} master {br} permanent', fdb) + self.assertIn(f'{mac_address} self permanent', fdb) + + # Then remove just the anycast-gateway flag + self.cli_delete(self._base_path + [peth, 'anycast-gateway']) + self.cli_commit() + + fdb = cmd(f'bridge fdb show dev {br}') + self.assertNotIn(f'{mac_address} master {br} permanent', fdb) + + # Clean up temp bridge and peth + self.cli_delete(self._base_path + [peth]) + self.cli_delete(base_bridge_path) + self.cli_commit() + + if __name__ == '__main__': unittest.main(verbosity=2, failfast=VyOSUnitTestSHIM.TestCase.debug_on()) |
