]> git.proxmox.com Git - pve-container.git/commitdiff
vm_destroy: remove ips from ipam for all interfaces
authorAlexandre Derumier <aderumier@odiso.com>
Fri, 17 Nov 2023 11:40:06 +0000 (12:40 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 21 Nov 2023 08:26:01 +0000 (09:26 +0100)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
src/PVE/LXC.pm

index b6df6d62cf58875e461faa5a153b116ca64bdf08..4472e0fe5ea03128a6f99368d8a7c111655b6a8e 100644 (file)
@@ -46,6 +46,7 @@ use PVE::LXC::Tools;
 my $have_sdn;
 eval {
     require PVE::Network::SDN::Zones;
+    require PVE::Network::SDN::Vnets;
     $have_sdn = 1;
 };
 
@@ -898,6 +899,8 @@ sub destroy_lxc_container {
        });
     }
 
+    delete_ifaces_ipams_ips($conf, $vmid);
+
     rmdir "/var/lib/lxc/$vmid/rootfs";
     unlink "/var/lib/lxc/$vmid/config";
     rmdir "/var/lib/lxc/$vmid";
@@ -2755,4 +2758,17 @@ sub thaw($) {
     }
 }
 
+sub delete_ifaces_ipams_ips {
+    my ($conf, $vmid) = @_;
+
+    return if !$have_sdn;
+
+    for my $opt (keys %$conf) {
+       next if $opt !~ m/^net(\d+)$/;
+       my $net = PVE::QemuServer::parse_net($conf->{$opt});
+       eval { PVE::Network::SDN::Vnets::del_ips_from_mac($net->{bridge}, $net->{hwaddr}, $conf->{hostname}) };
+       warn $@ if $@;
+    }
+}
+
 1;