default => 'text',
});
+register_standard_option('pve-snapshot-name', {
+ description => "The name of the snapshot.",
+ type => 'string', format => 'pve-configid',
+ maxLength => 40,
+});
+
my $format_list = {};
sub register_format {
return $node;
}
+register_format('mac-addr', \&pve_verify_mac_addr);
+sub pve_verify_mac_addr {
+ my ($mac_addr, $noerr) = @_;
+
+ # don't allow I/G bit to be set, most of the time it breaks things, see:
+ # https://pve.proxmox.com/pipermail/pve-devel/2019-March/035998.html
+ if ($mac_addr !~ m/^[a-f0-9][02468ace](?::[a-f0-9]{2}){5}$/i) {
+ return undef if $noerr;
+ die "value does not look like a valid unicast MAC address\n";
+ }
+ return $mac_addr;
+
+}
+register_standard_option('mac-addr', {
+ type => 'string',
+ description => 'Unicast MAC address.',
+ verbose_description => 'A common MAC address with the I/G (Individual/Group) bit not set.',
+ format_description => "XX:XX:XX:XX:XX:XX",
+ optional => 1,
+ format => 'mac-addr',
+});
+
register_format('ipv4', \&pve_verify_ipv4);
sub pve_verify_ipv4 {
my ($ipv4, $noerr) = @_;
}
my $ipv4_mask_hash = {
+ '0.0.0.0' => 0,
'128.0.0.0' => 1,
'192.0.0.0' => 2,
'224.0.0.0' => 3,
'255.255.255.255' => 32,
};
+sub get_netmask_bits {
+ my ($mask) = @_;
+ return $ipv4_mask_hash->{$mask};
+}
+
register_format('ipv4mask', \&pve_verify_ipv4mask);
sub pve_verify_ipv4mask {
my ($mask, $noerr) = @_;
sub pve_verify_email {
my ($email, $noerr) = @_;
- # we use same regex as in Utils.js
- if ($email !~ /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,63}$/) {
+ if ($email !~ /^[\w\+\-\~]+(\.[\w\+\-\~]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$/) {
return undef if $noerr;
die "value does not look like a valid email address\n";
}
my $bwlimit_format = {
default => {
%bwlimit_opt,
- description => 'default bandwidth limit in MiB/s',
+ description => 'default bandwidth limit in KiB/s',
},
restore => {
%bwlimit_opt,
- description => 'bandwidth limit in MiB/s for restoring guests from backups',
+ description => 'bandwidth limit in KiB/s for restoring guests from backups',
},
migration => {
%bwlimit_opt,
- description => 'bandwidth limit in MiB/s for migrating guests',
+ description => 'bandwidth limit in KiB/s for migrating guests (including moving local disks)',
},
clone => {
%bwlimit_opt,
- description => 'bandwidth limit in MiB/s for cloning disks',
+ description => 'bandwidth limit in KiB/s for cloning disks',
},
move => {
%bwlimit_opt,
- description => 'bandwidth limit in MiB/s for moving disks',
+ description => 'bandwidth limit in KiB/s for moving disks',
},
};
register_format('bwlimit', $bwlimit_format);
}
}
- retturn $res;
+ return $res;
}
PVE::JSONSchema::register_standard_option('pve-startup-order', {