X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=data%2FPVE%2FNetwork.pm;h=4677bf94009d1fe79eaba999eaf5d30ce4f61b6f;hp=dc7ee8663c68cca63b8c5674160900e4b1c2c369;hb=5ffa7628c5c099b555a337d679c6894c5c7afefd;hpb=eee4b32a6528a56f1028e9a622bb14a998d6e6e5 diff --git a/data/PVE/Network.pm b/data/PVE/Network.pm index dc7ee86..4677bf9 100644 --- a/data/PVE/Network.pm +++ b/data/PVE/Network.pm @@ -165,6 +165,14 @@ sub activate_bridge_vlan { my $bridgevlan = "${bridge}v$tag"; + my @ifaces = (); + my $dir = "/sys/class/net/$bridge/brif"; + PVE::Tools::dir_glob_foreach($dir, '((eth|bond)\d+)', sub { + push @ifaces, $_[0]; + }); + + die "no physical interface on bridge '$bridge'\n" if scalar(@ifaces) == 0; + # add bridgevlan if it doesn't already exist if (! -d "/sys/class/net/$bridgevlan") { system("/sbin/brctl addbr $bridgevlan") == 0 || @@ -172,15 +180,9 @@ sub activate_bridge_vlan { } # for each physical interface (eth or bridge) bind them to bridge vlan - my $ifcount = 0; - my $dir = "/sys/class/net/$bridge/brif"; - PVE::Tools::dir_glob_foreach($dir, '((eth|bond)\d+)', sub { - my ($slave) = @_; - activate_bridge_vlan_slave($bridgevlan, $slave, $tag); - $ifcount++; - }); - - die "no physical interface on bridge '$bridge'\n" if $ifcount == 0; + foreach my $iface (@ifaces) { + activate_bridge_vlan_slave($bridgevlan, $iface, $tag); + } #fixme: set other bridge flags