]> git.proxmox.com Git - qemu-server.git/commitdiff
Add link_down flag to network config
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 20 Jan 2015 10:47:11 +0000 (11:47 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 20 Jan 2015 10:51:19 +0000 (11:51 +0100)
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>
PVE/QemuServer.pm
changelog.Debian

index 05064e87d220158933947d8a0e71ea62469db117..5820620d5462bc1f172fab6ee424e67c8ce2f68c 100644 (file)
@@ -494,7 +494,7 @@ my $MAX_NUMA = 8;
 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);
@@ -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=<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.
 
@@ -1374,8 +1374,10 @@ sub parse_net {
            $res->{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};
+           }
        }
     });
 }
index cd49500a90fb5875e9ad49818b94310e51c7c40c..70ba9c709d5f3f35b190c43e0fa47383c4311c65 100644 (file)
@@ -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 <support@proxmox.com>  Tue, 20 Jan 2015 07:15:48 +0100