[pve-devel] [PATCH pve-common] remove autostart property from bridge ports
Wolfgang Bumiller
w.bumiller at proxmox.com
Mon Sep 14 10:52:30 CEST 2015
Fixes #711
---
src/PVE/INotify.pm | 14 +++++++++++++
.../t.bridge_eth_remove_auto.pl | 24 ++++++++++++++++++++++
test/etc_network_interfaces/t.ovs_bridge_allow.pl | 5 ++---
3 files changed, 40 insertions(+), 3 deletions(-)
create mode 100644 test/etc_network_interfaces/t.bridge_eth_remove_auto.pl
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
--
2.1.4
More information about the pve-devel
mailing list