+ # add $ifacevlan to the bridge
+ system("/sbin/brctl addif $bridgevlan $ifacevlan") == 0 ||
+ die "can't add interface $ifacevlan to bridge $bridgevlan\n";
+}
+
+sub activate_bridge_vlan {
+ my ($bridge, $tag_param) = @_;
+
+ die "bridge '$bridge' is not active\n" if ! -d "/sys/class/net/$bridge";
+
+ return $bridge if !defined($tag_param); # no vlan, simply return
+
+ my $tag = int($tag_param);
+
+ die "got strange vlan tag '$tag_param'\n" if $tag < 1 || $tag > 4094;
+
+ 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 $ifcount == 0;
+