summaryrefslogtreecommitdiff
path: root/src/conf_mode/vpp.py
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2026-03-05 15:56:23 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2026-03-05 16:12:36 +0200
commit78e770e21a2b294566fe8b34ac6497657bbc0b4e (patch)
tree530d6bd0d1022cb72c6adff28f519a949540d9e6 /src/conf_mode/vpp.py
parentfcf57444ab7150e06082627fe196de3c9a87d9e1 (diff)
downloadvyos-1x-78e770e21a2b294566fe8b34ac6497657bbc0b4e.tar.gz
vyos-1x-78e770e21a2b294566fe8b34ac6497657bbc0b4e.zip
vpp: T8342: Add verification of members for bond and bridge interfaces
Diffstat (limited to 'src/conf_mode/vpp.py')
-rwxr-xr-xsrc/conf_mode/vpp.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index 2ae079c30..abed12f29 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -45,6 +45,7 @@ from vyos.utils.process import is_systemd_service_active
from vyos.vpp import VPPControl
from vyos.vpp import control_host
from vyos.vpp import VppNotRunningError
+from vyos.vpp.config_deps import deps_bond_dict
from vyos.vpp.config_deps import deps_bridge_dict
from vyos.vpp.config_deps import deps_xconnect_dict
from vyos.vpp.config_verify import (
@@ -254,6 +255,7 @@ def get_config(config=None):
xconn_members = deps_xconnect_dict(conf)
bridge_members = deps_bridge_dict(conf)
+ bond_members = deps_bond_dict(conf)
removed_ifaces = []
tmp = node_changed(conf, base_settings + ['interface'])
@@ -295,6 +297,7 @@ def get_config(config=None):
'removed_ifaces': removed_ifaces,
'xconn_members': xconn_members,
'bridge_members': bridge_members,
+ 'bond_members': bond_members,
'persist_config': eth_ifaces_persist,
'interfaces_vpp': interfaces_config,
'remove': {},
@@ -435,6 +438,7 @@ def get_config(config=None):
config['removed_ifaces'] = removed_ifaces
config['xconn_members'] = xconn_members
config['bridge_members'] = bridge_members
+ config['bond_members'] = bond_members
config['interfaces_vpp'] = interfaces_config
@@ -597,7 +601,7 @@ def verify(config):
f'RX mode {rx_mode} is not supported for interface {iface}'
)
- # Check if deleted interfaces are not xconnect members or not bridge members
+ # Check if deleted interfaces are not xconnect/bridge/bond members
for iface_config in config.get('removed_ifaces', []):
if iface_config['iface_name'] in config.get('xconn_members', {}):
raise ConfigError(
@@ -607,6 +611,10 @@ def verify(config):
raise ConfigError(
f'Interface {iface_config["iface_name"]} is a bridge member and cannot be removed'
)
+ if iface_config['iface_name'] in config.get('bond_members', {}):
+ raise ConfigError(
+ f'Interface {iface_config["iface_name"]} is a bond member and cannot be removed'
+ )
verify_routes_count(config['settings'])