diff options
author | Alex Harpin <development@landsofshadow.co.uk> | 2015-10-18 21:36:00 +0100 |
---|---|---|
committer | Alex Harpin <development@landsofshadow.co.uk> | 2015-10-18 21:36:00 +0100 |
commit | a4e2faa36779c7749ed997748c63a1ad4fa56c31 (patch) | |
tree | 85952c3e664572a4363b3451760d9e6df1306ec1 | |
parent | 62853e5688440254058adba768fa8a04b8bbc27e (diff) | |
download | vyatta-cfg-system-a4e2faa36779c7749ed997748c63a1ad4fa56c31.tar.gz vyatta-cfg-system-a4e2faa36779c7749ed997748c63a1ad4fa56c31.zip |
vyatta-cfg-system: ensure bridge slaves are deletable from bridges
Due to previous refactoring of the bridge management code, it was
possible to get the system and config in an inconsistent state by the
following actions.
set interfaces bridge br1
set interfaces bridge br1 address '192.168.1.1/24'
set interfaces ethernet eth0 bridge-group bridge 'br1'
commit
delete interfaces ethernet eth0 bridge-group bridge 'br1'
commit
This would result in the config still containing the bridge-group
settings, but the actual bridge would be missing eth0 in br1, breaking
any further attempts to configure the bridge without manual
intervention.
Bug #476 http://bugzilla.vyos.net/show_bug.cgi?id=476
-rwxr-xr-x | scripts/vyatta-bridge.pl | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scripts/vyatta-bridge.pl b/scripts/vyatta-bridge.pl index 35b28fc9..a777b843 100755 --- a/scripts/vyatta-bridge.pl +++ b/scripts/vyatta-bridge.pl @@ -54,6 +54,10 @@ my $newbridge = $cfg->returnValue('bridge-group bridge'); my $cost = $cfg->returnValue('bridge-group cost'); my $priority = $cfg->returnValue('bridge-group priority'); +if (!defined($newbridge) && ($action ne 'SET')) { + $action = 'DELETE'; +} + if ($action eq 'SET') { die "Error: $ifname: not in a bridge-group\n" unless $newbridge; |