summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2026-06-23 13:36:44 +0300
committerGitHub <noreply@github.com>2026-06-23 13:36:44 +0300
commitd1e320047348d90202a23a598cd771e41cb0be24 (patch)
treeb64a18c06ed6f94ab04ad8dbe7acb3c4645deedd /smoketest/scripts/cli
parentd935b5a83b0fa81e3fc9d727cedbda7575f60d85 (diff)
parentd90693fd0da03f8de4ccc4a5a85e2f2c9823e682 (diff)
downloadvyos-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-xsmoketest/scripts/cli/test_interfaces_pseudo-ethernet.py52
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())