[pve-devel] [PATCH pve-manager 1/1] API2: Network: allow cidr-list && use cidr for address

Alexandre Derumier aderumier at odiso.com
Wed Mar 4 17:17:59 CET 2020


Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/API2/Network.pm | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm
index 84bd3c3a..82ae9037 100644
--- a/PVE/API2/Network.pm
+++ b/PVE/API2/Network.pm
@@ -153,7 +153,7 @@ my $confdesc = {
     },
     cidr => {
 	description => 'IPv4 CIDR.',
-	type => 'string', format => 'CIDRv4',
+	type => 'string', format => 'CIDRv4-list',
 	optional => 1,
     },
     mtu => {
@@ -182,7 +182,7 @@ my $confdesc = {
     },
     cidr6 => {
 	description => 'IPv6 CIDR.',
-	type => 'string', format => 'CIDRv6',
+	type => 'string', format => 'CIDRv6-list',
 	optional => 1,
     },
 };
@@ -351,11 +351,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}) {
@@ -364,10 +367,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}"];
     }
 };
 
-- 
2.20.1




More information about the pve-devel mailing list