diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2026-02-27 21:22:15 +0200 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2026-03-03 17:52:40 +0200 |
| commit | c90512f68dbabe6f005c259f6e787abe527fe975 (patch) | |
| tree | 86166dcd8b9ddf17611a0b6f2142d1130604e981 /src/conf_mode/vpp.py | |
| parent | d47be4a8e2119e2be0be5fe9d7c29d7d8eaf24d9 (diff) | |
| download | vyos-1x-c90512f68dbabe6f005c259f6e787abe527fe975.tar.gz vyos-1x-c90512f68dbabe6f005c259f6e787abe527fe975.zip | |
vpp: T8327: Migrate bridge interface to 'interfaces vpp bridge'
Diffstat (limited to 'src/conf_mode/vpp.py')
| -rwxr-xr-x | src/conf_mode/vpp.py | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index 92777a16a..396cce548 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_bridge_dict from vyos.vpp.config_deps import deps_xconnect_dict from vyos.vpp.config_verify import ( verify_dev_driver, @@ -254,6 +255,7 @@ def get_config(config=None): ) xconn_members = deps_xconnect_dict(conf) + bridge_members = deps_bridge_dict(conf) removed_ifaces = [] tmp = node_changed(conf, base_settings + ['interface']) @@ -294,6 +296,7 @@ def get_config(config=None): return { 'removed_ifaces': removed_ifaces, 'xconn_members': xconn_members, + 'bridge_members': bridge_members, 'persist_config': eth_ifaces_persist, 'interfaces_vpp': interfaces_config, 'remove': {}, @@ -433,6 +436,7 @@ def get_config(config=None): if removed_ifaces: config['removed_ifaces'] = removed_ifaces config['xconn_members'] = xconn_members + config['bridge_members'] = bridge_members config['interfaces_vpp'] = interfaces_config @@ -611,32 +615,16 @@ def verify(config): f'RX mode {rx_mode} is not supported for interface {iface}' ) - # check GRE tunnels as part of the bridge, only tunnel-type teb is allowed - # set vpp interfaces bridge br1 member interface vppgre1 - # set interfaces vpp gre vppgre1 tunnel-type teb - if 'interfaces' in config: - if 'bridge' in config['interfaces']: - for iface, iface_config in config['interfaces']['bridge'].items(): - if 'member' in iface_config: - for member in iface_config['member'].get('interface', []): - if member.startswith('vppgre'): - if ( - 'gre' in config['interfaces_vpp'] - and config['interfaces_vpp']['gre'] - .get(member, {}) - .get('tunnel_type') - != 'teb' - ): - raise ConfigError( - f'Only tunnel-type teb is allowed for GRE interfaces in bridge {iface}' - ) - - # Check if deleted interfaces are not xconnect memebrs + # Check if deleted interfaces are not xconnect members or not bridge members for iface_config in config.get('removed_ifaces', []): if iface_config['iface_name'] in config.get('xconn_members', {}): raise ConfigError( f'Interface {iface_config["iface_name"]} is an xconnect member and cannot be removed' ) + if iface_config['iface_name'] in config.get('bridge_members', {}): + raise ConfigError( + f'Interface {iface_config["iface_name"]} is a bridge member and cannot be removed' + ) verify_routes_count(config['settings']) |
