summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2026-03-25 14:53:23 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2026-03-27 16:19:01 +0200
commit2f0ef2bfe9d36228795ae46eee23031a37ab5957 (patch)
tree43ab55fed122346d9c2c8da0fb7eb88812768de2 /smoketest/scripts/cli
parente66c23ddf1f70fd7aa31fbc696a361a376ea15d1 (diff)
downloadvyos-1x-2f0ef2bfe9d36228795ae46eee23031a37ab5957.tar.gz
vyos-1x-2f0ef2bfe9d36228795ae46eee23031a37ab5957.zip
vpp: T8419: Disallow cross-membership between VPP and kernel bonding/bridge interfaces
Diffstat (limited to 'smoketest/scripts/cli')
-rwxr-xr-xsmoketest/scripts/cli/test_vpp.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_vpp.py b/smoketest/scripts/cli/test_vpp.py
index a98b5ff0b..0e864758d 100755
--- a/smoketest/scripts/cli/test_vpp.py
+++ b/smoketest/scripts/cli/test_vpp.py
@@ -1378,6 +1378,45 @@ class TestVPP(VyOSUnitTestSHIM.TestCase):
# Ensure that VPP process is active
self.assertTrue(process_named_running(PROCESS_NAME))
+ def test_22_no_vpp_kernel_bridge_cross_membership(self):
+ vlan = '123'
+ member = f'{interface}.{vlan}'
+ bridge_iface = 'br1'
+
+ self.cli_commit()
+
+ # Ensure that VPP process is active
+ self.assertTrue(process_named_running(PROCESS_NAME))
+
+ # Attempt to add a VPP interface VLAN as a bridge member
+ self.cli_set(['interfaces', 'ethernet', interface, 'vif', vlan])
+ self.cli_set(
+ ['interfaces', 'bridge', bridge_iface, 'member', 'interface', member]
+ )
+
+ # Adding a VPP interface (or its VLAN) as a bridge member is not allowed
+ # expect raise ConfigError
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
+ self.cli_delete(base_path)
+ self.cli_commit()
+
+ # Ensure interface is a member of bridge
+ self.assertTrue(os.path.isdir(f'/sys/class/net/{bridge_iface}/lower_{member}'))
+
+ # Adding a bridge member as a VPP interface is not allowed
+ # expect raise ConfigError
+ self.cli_set(base_path + ['settings', 'interface', interface])
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
+ self.cli_delete(['interfaces', 'bridge'])
+ self.cli_commit()
+
+ # Ensure that VPP process is active
+ self.assertTrue(process_named_running(PROCESS_NAME))
+
if __name__ == '__main__':
unittest.main(verbosity=2, failfast=VyOSUnitTestSHIM.TestCase.debug_on())