diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-04-07 22:02:49 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-04-07 22:02:49 +0200 |
commit | fcce4714146a39f608ddd141338547a5a952c63f (patch) | |
tree | 3b521908928e0cae15c2e8f8979088b5f7d2c0a5 /src/conf_mode/interfaces-geneve.py | |
parent | 681576fff6a268ed04ae1a73ad7771882672cdb6 (diff) | |
download | vyos-1x-fcce4714146a39f608ddd141338547a5a952c63f.tar.gz vyos-1x-fcce4714146a39f608ddd141338547a5a952c63f.zip |
bridge: T2232: prevent deletion of enslaved interfaces
Interfaces enslaved to a bridge are not allowed to be deleted. If an interface
is deleted from the config but it is still enslaved to a bridge will cause a
configuration error on the subsequent boot.
Diffstat (limited to 'src/conf_mode/interfaces-geneve.py')
-rwxr-xr-x | src/conf_mode/interfaces-geneve.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/conf_mode/interfaces-geneve.py b/src/conf_mode/interfaces-geneve.py index eaa678d3e..e47473d76 100755 --- a/src/conf_mode/interfaces-geneve.py +++ b/src/conf_mode/interfaces-geneve.py @@ -18,11 +18,12 @@ import os from sys import exit from copy import deepcopy +from netifaces import interfaces from vyos.config import Config -from vyos.ifconfig import GeneveIf, Interface +from vyos.ifconfig import GeneveIf +from vyos.util import is_bridge_member from vyos import ConfigError -from netifaces import interfaces default_config_data = { 'address': [], @@ -92,7 +93,13 @@ def get_config(): def verify(geneve): if geneve['deleted']: - # bail out early + interface = geneve['intf'] + is_member, bridge = is_bridge_member(interface) + if is_member: + # can not use a f'' formatted-string here as bridge would not get + # expanded in the print statement + raise ConfigError('Can not delete interface "{0}" as it ' \ + 'is a member of bridge "{1}"!'.format(interface, bridge)) return None if not geneve['remote']: |