diff options
| author | Daniil Baturin <daniil@vyos.io> | 2026-03-12 16:13:10 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-12 16:13:10 +0000 |
| commit | dbe48341d7eb804bdbe4955e7e0728bfea560b88 (patch) | |
| tree | 7d7483818fd36f47581ca28bea4a43bfd8d923e3 /src/conf_mode/vpp.py | |
| parent | af8e4b83017e0c1b28cd1e447f760fdc32e4f2ff (diff) | |
| parent | 78e770e21a2b294566fe8b34ac6497657bbc0b4e (diff) | |
| download | vyos-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-x | src/conf_mode/vpp.py | 10 |
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']) |
