Original patch by Wolfgang, adopted for new hotplug implementation.
I do not verify link status, because that patch was rejected upstream.
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
my $numadesc = {
optional => 1,
type => 'string', format => 'pve-qm-numanode',
my $numadesc = {
optional => 1,
type => 'string', format => 'pve-qm-numanode',
- typetext => "cpus=<id[-id],memory=<mb>[[,hostnodes=<id[-id]>][,policy=<preferred|bind|interleave>]]",
+ typetext => "cpus=<id[-id],memory=<mb>[[,hostnodes=<id[-id]>] [,policy=<preferred|bind|interleave>]]",
description => "numa topology",
};
PVE::JSONSchema::register_standard_option("pve-qm-numanode", $numadesc);
description => "numa topology",
};
PVE::JSONSchema::register_standard_option("pve-qm-numanode", $numadesc);
my $netdesc = {
optional => 1,
type => 'string', format => 'pve-qm-net',
my $netdesc = {
optional => 1,
type => 'string', format => 'pve-qm-net',
- typetext => "MODEL=XX:XX:XX:XX:XX:XX [,bridge=<dev>][,queues=<nbqueues>][,rate=<mbps>][,tag=<vlanid>][,firewall=0|1]",
+ typetext => "MODEL=XX:XX:XX:XX:XX:XX [,bridge=<dev>][,queues=<nbqueues>][,rate=<mbps>] [,tag=<vlanid>][,firewall=0|1],link_down=0|1]",
description => <<EODESCR,
Specify network devices.
description => <<EODESCR,
Specify network devices.
$res->{rate} = $1;
} elsif ($kvp =~ m/^tag=(\d+)$/) {
$res->{tag} = $1;
$res->{rate} = $1;
} elsif ($kvp =~ m/^tag=(\d+)$/) {
$res->{tag} = $1;
- } elsif ($kvp =~ m/^firewall=(\d+)$/) {
+ } elsif ($kvp =~ m/^firewall=([01])$/) {
+ } elsif ($kvp =~ m/^link_down=([01])$/) {
+ $res->{link_down} = $1;
$res .= ",bridge=$net->{bridge}" if $net->{bridge};
$res .= ",rate=$net->{rate}" if $net->{rate};
$res .= ",tag=$net->{tag}" if $net->{tag};
$res .= ",bridge=$net->{bridge}" if $net->{bridge};
$res .= ",rate=$net->{rate}" if $net->{rate};
$res .= ",tag=$net->{tag}" if $net->{tag};
- $res .= ",firewall=$net->{firewall}" if $net->{firewall};
+ $res .= ",firewall=1" if $net->{firewall};
+ $res .= ",link_down=1" if $net->{link_down};
+sub qemu_set_link_status {
+ my ($vmid, $device, $up) = @_;
+
+ vm_mon_cmd($vmid, "set_link", name => $device,
+ up => $up ? JSON::true : JSON::false);
+}
+
sub qemu_netdevadd {
my ($vmid, $conf, $device, $deviceid) = @_;
sub qemu_netdevadd {
my ($vmid, $conf, $device, $deviceid) = @_;
PVE::Network::tap_rate_limit($iface, $newnet->{rate});
}
PVE::Network::tap_rate_limit($iface, $newnet->{rate});
}
- if(&$safe_string_ne($oldnet->{bridge}, $newnet->{bridge}) ||
- &$safe_num_ne($oldnet->{tag}, $newnet->{tag}) ||
- &$safe_num_ne($oldnet->{firewall}, $newnet->{firewall})) {
+ if (&$safe_string_ne($oldnet->{bridge}, $newnet->{bridge}) ||
+ &$safe_num_ne($oldnet->{tag}, $newnet->{tag}) ||
+ &$safe_num_ne($oldnet->{firewall}, $newnet->{firewall})) {
PVE::Network::tap_unplug($iface);
PVE::Network::tap_plug($iface, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall});
}
PVE::Network::tap_unplug($iface);
PVE::Network::tap_plug($iface, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall});
}
+ if (&$safe_string_ne($oldnet->{link_down}, $newnet->{link_down})) {
+ qemu_set_link_status($vmid, $opt, !$newnet->{link_down});
+ }
+
property => "guest-stats-polling-interval",
value => 2);
}
property => "guest-stats-polling-interval",
value => 2);
}
+
+ foreach my $opt (keys %$conf) {
+ next if $opt !~ m/^net\d+$/;
+ my $nicconf = parse_net($conf->{$opt});
+ qemu_set_link_status($vmid, $opt, 0) if $nicconf->{link_down};
+ }
qemu-server (3.3-10) unstable; urgency=low
* Support additional e1000 variants for VM machines
qemu-server (3.3-10) unstable; urgency=low
* Support additional e1000 variants for VM machines
+
+ * Add link_down flag to network config
-- Proxmox Support Team <support@proxmox.com> Tue, 20 Jan 2015 07:15:48 +0100
-- Proxmox Support Team <support@proxmox.com> Tue, 20 Jan 2015 07:15:48 +0100