diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/PVE/Network/SDN/Vnets.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/PVE/Network/SDN/Vnets.pm b/src/PVE/Network/SDN/Vnets.pm index 09378ff..0dfdfd7 100644 --- a/src/PVE/Network/SDN/Vnets.pm +++ b/src/PVE/Network/SDN/Vnets.pm @@ -186,7 +186,7 @@ sub del_ips_from_mac { } sub add_dhcp_mapping { - my ($vnetid, $mac) = @_; + my ($vnetid, $mac, $vmid, $name) = @_; my $vnet = PVE::Network::SDN::Vnets::get_vnet($vnetid); return if !$vnet; @@ -195,7 +195,13 @@ sub add_dhcp_mapping { return if !$zone->{ipam} || !$zone->{dhcp}; - my ($ip4,$ip6) = PVE::Network::SDN::Vnets::get_ips_from_mac($vnetid, $mac); + my ($ip4, $ip6) = PVE::Network::SDN::Vnets::get_ips_from_mac($vnetid, $mac); + if ( ! ($ip4 || $ip6) ) { + print "No IP found for MAC: $mac for VMID:$vmid\n"; + add_next_free_cidr($vnetid, $name, $mac, "$vmid", undef, 1); + ($ip4, $ip6) = PVE::Network::SDN::Vnets::get_ips_from_mac($vnetid, $mac); + print "got new IP from IPAM: $ip4 $ip6\n"; + } PVE::Network::SDN::Dhcp::add_mapping($vnetid, $mac, $ip4, $ip6) if $ip4 || $ip6; } |
