From: Wolfgang Bumiller Date: Mon, 14 Sep 2015 08:52:30 +0000 (+0200) Subject: remove autostart property from bridge ports X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=21d32c95cdb63fa96091f2efe735a9c8a1a3e44e remove autostart property from bridge ports Fixes #711 --- diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm index 564814e..136dd90 100644 --- a/src/PVE/INotify.pm +++ b/src/PVE/INotify.pm @@ -1216,6 +1216,7 @@ sub __write_etc_network_interfaces { my $n = $ifaces->{$p}; die "OVS bridge '$iface' - unable to find port '$p'\n" if !$n; + $n->{autostart} = 0; if ($n->{type} eq 'eth') { $n->{type} = 'OVSPort'; $n->{ovs_bridge} = $iface; @@ -1229,6 +1230,19 @@ sub __write_etc_network_interfaces { } } + # Remove autostart from linux bridge ports + foreach my $iface (keys %$ifaces) { + my $d = $ifaces->{$iface}; + if ($d->{type} eq 'bridge' && $d->{bridge_ports}) { + foreach my $p (split (/\s+/, $d->{bridge_ports})) { + my $n = $ifaces->{$p}; + die "bridge '$iface' - unable to find port '$p'\n" + if !$n; + $n->{autostart} = 0; + } + } + } + # check OVS bond ports foreach my $iface (keys %$ifaces) { my $d = $ifaces->{$iface}; diff --git a/test/etc_network_interfaces/t.bridge_eth_remove_auto.pl b/test/etc_network_interfaces/t.bridge_eth_remove_auto.pl new file mode 100644 index 0000000..0b073d9 --- /dev/null +++ b/test/etc_network_interfaces/t.bridge_eth_remove_auto.pl @@ -0,0 +1,24 @@ +use strict; + +# access to the current config +our $config; + +# replace proc_net_dev with one with a bunch of interfaces +save('proc_net_dev', <<'/proc/net/dev'); +eth0: +eth1: +/proc/net/dev + +r(''); +update_iface('eth0', [], autostart => 1); +update_iface('eth1', [], autostart => 1); +r(w()); +die "autostart lost" if !$config->{ifaces}->{eth0}->{autostart}; +die "autostart lost" if !$config->{ifaces}->{eth1}->{autostart}; +new_iface("vmbr0", 'bridge', [{ family => 'inet' }], bridge_ports => 'eth0'); +new_iface("vmbr1", 'OVSBridge', [{ family => 'inet' }], ovs_ports => 'eth1'); +r(w()); +die "autostart not removed for linux bridge port" if $config->{ifaces}->{eth0}->{autostart}; +die "autostart not removed for ovs bridge port" if $config->{ifaces}->{eth1}->{autostart}; + +1; diff --git a/test/etc_network_interfaces/t.ovs_bridge_allow.pl b/test/etc_network_interfaces/t.ovs_bridge_allow.pl index 7a0b8ce..6d22243 100644 --- a/test/etc_network_interfaces/t.ovs_bridge_allow.pl +++ b/test/etc_network_interfaces/t.ovs_bridge_allow.pl @@ -48,19 +48,18 @@ iface vmbr0 inet static /etc/network/interfaces -# Adding an interface to the bridge needs to add allow- lines: +# Adding an interface to the bridge needs to add allow- lines and remove +# its autostart property. update_iface('vmbr0', [], ovs_ports => 'eth1 eth2'); expect load('loopback') . <<"/etc/network/interfaces"; auto eth0 iface eth0 inet manual -auto eth1 allow-vmbr0 eth1 iface eth1 inet manual ovs_type OVSPort ovs_bridge vmbr0 -auto eth2 allow-vmbr0 eth2 iface eth2 inet manual ovs_type OVSPort