]> git.proxmox.com Git - qemu-server.git/commitdiff
nic online bridge/vlan change: link disconnect/reconnect
authorAlexandre Derumier <aderumier@odiso.com>
Fri, 17 Nov 2023 11:40:04 +0000 (12:40 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 21 Nov 2023 12:24:50 +0000 (13:24 +0100)
We want to notify guest of the change, so it can resubmit dhcp request,
or send gratuitous arp,...

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/QemuServer.pm

index b376612bea59e212f74fa259ea5de5ada9ac4f6c..0d738cd18703961893cc2eb6b02723987b5c83ce 100644 (file)
@@ -5339,6 +5339,12 @@ sub vmconfig_update_net {
                safe_num_ne($oldnet->{firewall}, $newnet->{firewall})) {
                PVE::Network::tap_unplug($iface);
 
+               #set link_down in guest if bridge or vlan change to notify guest (dhcp renew for example)
+               if (safe_string_ne($oldnet->{bridge}, $newnet->{bridge}) ||
+                   safe_num_ne($oldnet->{tag}, $newnet->{tag})) {
+                   qemu_set_link_status($vmid, $opt, 0);
+               }
+
                if (safe_string_ne($oldnet->{bridge}, $newnet->{bridge})) {
                    if ($have_sdn) {
                        PVE::Network::SDN::Vnets::del_ips_from_mac($oldnet->{bridge}, $oldnet->{macaddr}, $conf->{name});
@@ -5351,6 +5357,13 @@ sub vmconfig_update_net {
                } else {
                    PVE::Network::tap_plug($iface, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
                }
+
+               #set link_up in guest if bridge or vlan change to notify guest (dhcp renew for example)
+               if (safe_string_ne($oldnet->{bridge}, $newnet->{bridge}) ||
+                   safe_num_ne($oldnet->{tag}, $newnet->{tag})) {
+                   qemu_set_link_status($vmid, $opt, 1);
+               }
+
            } elsif (safe_num_ne($oldnet->{rate}, $newnet->{rate})) {
                # Rate can be applied on its own but any change above needs to
                # include the rate in tap_plug since OVS resets everything.