diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm index a32f6c01..17101583 100644 --- a/PVE/API2/Network.pm +++ b/PVE/API2/Network.pm @@ -152,7 +152,7 @@ my $confdesc = { }, cidr => { description => 'IPv4 CIDR.', - type => 'string', format => 'CIDRv4', + type => 'string', format => 'CIDRv4-list', optional => 1, }, mtu => { @@ -181,7 +181,7 @@ my $confdesc = { }, cidr6 => { description => 'IPv6 CIDR.', - type => 'string', format => 'CIDRv6', + type => 'string', format => 'CIDRv6-list', optional => 1, }, }; @@ -326,11 +326,14 @@ my $map_cidr_to_address_netmask = sub { if $param->{address}; raise_param_exc({ netmask => "netmask conflicts with cidr" }) if $param->{netmask}; + my @cidrs = split /,/, $param->{cidr}; + foreach my $cidr (@cidrs) { + push @{$param->{address}}, $cidr; + } - my ($address, $netmask) = $param->{cidr} =~ m!^(.*)/(\d+)$!; - $param->{address} = $address; - $param->{netmask} = $netmask; delete $param->{cidr}; + } elsif ($param->{address} && $param->{netmask}) { + $param->{address} = ["$param->{address}/$param->{netmask}"]; } if ($param->{cidr6}) { @@ -339,10 +342,14 @@ my $map_cidr_to_address_netmask = sub { raise_param_exc({ netmask6 => "netmask6 conflicts with cidr6" }) if $param->{netmask6}; - my ($address, $netmask) = $param->{cidr6} =~ m!^(.*)/(\d+)$!; - $param->{address6} = $address; - $param->{netmask6} = $netmask; + my @cidrs = split /,/, $param->{cidr6}; + foreach my $cidr (@cidrs) { + push @{$param->{address6}}, $cidr; + } delete $param->{cidr6}; + + } elsif ($param->{address6} && $param->{netmask6}) { + $param->{address} = ["$param->{address6}/$param->{netmask6}"]; } };