sub pve_verify_cidrv4 {
my ($cidr, $noerr) = @_;
- if ($cidr =~ m!^(?:$IPV4RE)(?:/(\d+))$! && ($1 > 7) && ($1 < 32)) {
+ if ($cidr =~ m!^(?:$IPV4RE)(?:/(\d+))$! && ($1 > 7) && ($1 <= 32)) {
return $cidr;
}
my ($k, $v) = ($1, $2);
die "duplicate key in comma-separated list property: $k\n" if defined($res->{$k});
my $schema = $format->{$k};
+ if (my $alias = $schema->{alias}) {
+ $k = $alias;
+ $schema = $format->{$k};
+ }
die "invalid key in comma-separated list property: $k\n" if !$schema;
if ($schema->{type} && $schema->{type} eq 'boolean') {
$v = 1 if $v =~ m/^(1|on|yes|true)$/i;
my %required; # this is a set, all present keys are required regardless of value
foreach my $key (keys %$format) {
$allowed{$key} = 1;
- if (!$format->{$key}->{optional} && !$skipped{$key}) {
+ if (!$format->{$key}->{optional} && !$format->{$key}->{alias} && !$skipped{$key}) {
$required{$key} = 1;
}
if (!defined ($value)) {
return if $schema->{type} && $schema->{type} eq 'null';
- if (!$schema->{optional}) {
+ if (!$schema->{optional} && !$schema->{alias}) {
add_error($errors, $path, "property is missing and it is not optional");
}
return;
optional => 1,
description => "Whether this is the default key in a comma separated list property string.",
},
+ alias => {
+ type => 'string',
+ optional => 1,
+ description => "When a key represents the same property as another it can be an alias to it, causing the parsed datastructure to use the other key to store the current value under.",
+ },
default => {
type => "any",
optional => 1,