summaryrefslogtreecommitdiff
path: root/src/conf_mode/vpp.py
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-03-12 16:13:10 +0000
committerGitHub <noreply@github.com>2026-03-12 16:13:10 +0000
commitdbe48341d7eb804bdbe4955e7e0728bfea560b88 (patch)
tree7d7483818fd36f47581ca28bea4a43bfd8d923e3 /src/conf_mode/vpp.py
parentaf8e4b83017e0c1b28cd1e447f760fdc32e4f2ff (diff)
parent78e770e21a2b294566fe8b34ac6497657bbc0b4e (diff)
downloadvyos-1x-dbe48341d7eb804bdbe4955e7e0728bfea560b88.tar.gz
vyos-1x-dbe48341d7eb804bdbe4955e7e0728bfea560b88.zip
Merge pull request #5028 from natali-rs1985/T8342
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 e6b739179..22cf04020 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -48,6 +48,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 (
@@ -257,6 +258,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'])
@@ -298,6 +300,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': {},
@@ -438,6 +441,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
@@ -601,7 +605,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(
@@ -611,6 +615,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'])