From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id F0D90706F6 for ; Thu, 24 Jun 2021 15:35:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C8546C4F3 for ; Thu, 24 Jun 2021 15:35:16 +0200 (CEST) Received: from kvmformation3.odiso.net (globalOdiso.M6Lille.odiso.net [89.248.211.242]) by firstgate.proxmox.com (Proxmox) with ESMTP id 31BD5C297 for ; Thu, 24 Jun 2021 15:34:53 +0200 (CEST) Received: by kvmformation3.odiso.net (Postfix, from userid 0) id 7DC7BDE1AC; Thu, 24 Jun 2021 15:34:26 +0200 (CEST) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Thu, 24 Jun 2021 15:34:23 +0200 Message-Id: <20210624133425.3624704-6-aderumier@odiso.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210624133425.3624704-1-aderumier@odiso.com> References: <20210624133425.3624704-1-aderumier@odiso.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 1.439 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% HEADER_FROM_DIFFERENT_DOMAINS 0.25 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KHOP_HELO_FCRDNS 0.399 Relay HELO differs from its IP's reverse DNS T_SPF_HELO_TEMPERROR 0.01 SPF: test of HELO record failed (temperror) T_SPF_TEMPERROR 0.01 SPF: test of record failed (temperror) Subject: [pve-devel] [PATCH qemu-server 5/7] add vmconfig_delete_net_ip on device unplug X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jun 2021 13:35:47 -0000 Signed-off-by: Alexandre Derumier --- PVE/QemuServer.pm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index d1507d6..e646503 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4620,6 +4620,7 @@ sub vmconfig_hotplug_pending { } elsif ($opt =~ m/^net(\d+)$/) { die "skip\n" if !$hotplug_features->{network}; vm_deviceunplug($vmid, $conf, $opt); + vmconfig_delete_net_ip($conf, $vmid, $1); } elsif (is_valid_drivename($opt)) { die "skip\n" if !$hotplug_features->{disk} || $opt =~ m/(ide|sata)(\d+)/; vm_deviceunplug($vmid, $conf, $opt); @@ -4805,6 +4806,9 @@ sub vmconfig_apply_pending { } elsif (defined($conf->{$opt}) && is_valid_drivename($opt)) { vmconfig_delete_or_detach_drive($vmid, $storecfg, $conf, $opt, $force); } + if($opt =~ m/net(\d+)$/) { + vmconfig_delete_net_ip($conf, $vmid, $1); + } }; if (my $err = $@) { $add_apply_error->($opt, $err); @@ -4864,6 +4868,25 @@ sub vmconfig_update_net_ip { } +sub vmconfig_delete_net_ip { + my ($conf, $vmid, $id) = @_; + + my $netid = "net$id"; + my $ipconfigid = "ipconfig$id"; + my $net = PVE::QemuServer::parse_net($conf->{pending}->{$netid}) if $conf->{pending}->{$netid}; + my $oldnet = PVE::QemuServer::parse_net($conf->{$netid}) if $conf->{$netid}; + my $hostname = $conf->{name}; + my $pending_hostname = "pending.".$hostname; + + eval { + PVE::QemuServer::Ipam::delete_net_ip($hostname, $oldnet, undef, "vm:$vmid net:$netid") if $oldnet; + }; + + eval { + PVE::QemuServer::Ipam::delete_net_ip($pending_hostname, $net, undef, "vm:$vmid net:$netid pending:1") if $net; + }; +} + sub vmconfig_update_net { my ($storecfg, $conf, $hotplug, $vmid, $opt, $value, $arch, $machine_type) = @_; -- 2.20.1