Currently when updating the network configuration of a container, SDN
would always create a new entry in the IPAM. Only create a new entry
when the bridge or MAC changes or the NIC is completely new.

Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com>
---
 src/PVE/LXC/Config.pm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index 823a2b9..53662b7 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -1500,13 +1500,15 @@ sub vmconfig_apply_pending {
                my $net = $class->parse_lxc_network($conf->{pending}->{$opt});
                $conf->{pending}->{$opt} = $class->print_lxc_network($net);
                if ($have_sdn) {
-                   if($conf->{$opt}) {
+                   if ($conf->{$opt}) {
                        my $old_net = $class->parse_lxc_network($conf->{$opt});
                        if ($old_net->{bridge} ne $net->{bridge} || 
$old_net->{hwaddr} ne $net->{hwaddr}) {
                            
PVE::Network::SDN::Vnets::del_ips_from_mac($old_net->{bridge}, 
$old_net->{hwaddr}, $conf->{name});
+                           
PVE::Network::SDN::Vnets::add_next_free_cidr($net->{bridge}, $conf->{hostname}, 
$net->{hwaddr}, $vmid, undef, 1);
                        }
+                   } else {
+                       
PVE::Network::SDN::Vnets::add_next_free_cidr($net->{bridge}, $conf->{hostname}, 
$net->{hwaddr}, $vmid, undef, 1);
                    }
-                   
PVE::Network::SDN::Vnets::add_next_free_cidr($net->{bridge}, $conf->{hostname}, 
$net->{hwaddr}, $vmid, undef, 1);
                }
            }
        };
-- 
2.39.2


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to