If the gateway IP is last remaining IP in the subnet (in IPAM), allow deleting the subnet.
Signed-off-by: Stefan Lendl <s.le...@proxmox.com> --- src/PVE/Network/SDN/Ipams/PVEPlugin.pm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/PVE/Network/SDN/Ipams/PVEPlugin.pm b/src/PVE/Network/SDN/Ipams/PVEPlugin.pm index 3e8ffc5..c5ad260 100644 --- a/src/PVE/Network/SDN/Ipams/PVEPlugin.pm +++ b/src/PVE/Network/SDN/Ipams/PVEPlugin.pm @@ -56,6 +56,16 @@ sub add_subnet { die "$@" if $@; } +sub only_gateway_remains { + my ($ips) = @_; + + if (keys %{$ips} == 1 && + (values %{$ips})[0]->{gateway} == 1) { + return 1; + } + return 0; +}; + sub del_subnet { my ($class, $plugin_config, $subnetid, $subnet) = @_; @@ -71,7 +81,11 @@ sub del_subnet { my $dbsubnet = $dbzone->{subnets}->{$cidr}; die "subnet '$cidr' doesn't exist in IPAM DB\n" if !$dbsubnet; - die "cannot delete subnet '$cidr', not empty\n" if keys %{$dbsubnet->{ips}} > 0; + my $ips = $dbsubnet->{ips}; + + if (keys %{$ips} > 0 && !only_gateway_remains($ips)) { + die "cannot delete subnet '$cidr', not empty\n"; + } delete $dbzone->{subnets}->{$cidr}; -- 2.41.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel