}
sub add_dhcp_mapping {
- my ($vnetid, $mac) = @_;
+ my ($vnetid, $mac, $vmid, $name) = @_;
my $vnet = PVE::Network::SDN::Vnets::get_vnet($vnetid);
return if !$vnet;
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;
}