From: Dietmar Maurer Date: Tue, 20 Jan 2015 10:47:11 +0000 (+0100) Subject: Add link_down flag to network config X-Git-Url: https://git.proxmox.com/?p=qemu-server.git;a=commitdiff_plain;h=25088687fe81c2d2671c6d0a0380f6c555f6ab4a Add link_down flag to network config 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 Signed-off-by: Dietmar Maurer --- diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 05064e8..5820620 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -494,7 +494,7 @@ my $MAX_NUMA = 8; my $numadesc = { optional => 1, type => 'string', format => 'pve-qm-numanode', - typetext => "cpus=[[,hostnodes=][,policy=]]", + typetext => "cpus=[[,hostnodes=] [,policy=]]", description => "numa topology", }; PVE::JSONSchema::register_standard_option("pve-qm-numanode", $numadesc); @@ -511,7 +511,7 @@ my $nic_model_list_txt = join(' ', sort @$nic_model_list); my $netdesc = { optional => 1, type => 'string', format => 'pve-qm-net', - typetext => "MODEL=XX:XX:XX:XX:XX:XX [,bridge=][,queues=][,rate=][,tag=][,firewall=0|1]", + typetext => "MODEL=XX:XX:XX:XX:XX:XX [,bridge=][,queues=][,rate=] [,tag=][,firewall=0|1],link_down=0|1]", description => <{rate} = $1; } elsif ($kvp =~ m/^tag=(\d+)$/) { $res->{tag} = $1; - } elsif ($kvp =~ m/^firewall=(\d+)$/) { + } elsif ($kvp =~ m/^firewall=([01])$/) { $res->{firewall} = $1; + } elsif ($kvp =~ m/^link_down=([01])$/) { + $res->{link_down} = $1; } else { return undef; } @@ -1395,7 +1397,8 @@ sub print_net { $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}; return $res; } @@ -3381,6 +3384,13 @@ sub qemu_add_pci_bridge { return 1; } +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) = @_; @@ -3821,13 +3831,17 @@ sub vmconfig_update_net { 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}); } + if (&$safe_string_ne($oldnet->{link_down}, $newnet->{link_down})) { + qemu_set_link_status($vmid, $opt, !$newnet->{link_down}); + } + return 1; } } @@ -4032,6 +4046,12 @@ sub vm_start { 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}; + } } }); } diff --git a/changelog.Debian b/changelog.Debian index cd49500..70ba9c7 100644 --- a/changelog.Debian +++ b/changelog.Debian @@ -1,6 +1,8 @@ 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 Tue, 20 Jan 2015 07:15:48 +0100