From: Dietmar Maurer Date: Sat, 21 Dec 2013 08:01:14 +0000 (+0100) Subject: register CIDR format X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=e272bcb73de2ad9b58721b92f4be09e4f03b2f60 register CIDR format --- diff --git a/data/PVE/JSONSchema.pm b/data/PVE/JSONSchema.pm index 8811207..94d2db2 100644 --- a/data/PVE/JSONSchema.pm +++ b/data/PVE/JSONSchema.pm @@ -5,7 +5,7 @@ use warnings; use Storable; # for dclone use Getopt::Long; use Devel::Cycle -quiet; # todo: remove? -use PVE::Tools qw(split_list); +use PVE::Tools qw(split_list $IPV6RE $IPV4RE); use PVE::Exception qw(raise); use HTTP::Status qw(:constants); use Net::IP qw(:PROC); @@ -191,6 +191,20 @@ sub pve_verify_ipv4mask { return $mask; } +register_format('CIDR', \&pve_verify_cidr); +sub pve_verify_cidr { + my ($cidr, $noerr) = @_; + + if ($cidr =~ m!^(?:$IPV4RE)(?:/(\d+))$! && ($1 > 7) && ($1 < 32)) { + return $cidr; + } elsif ($cidr =~ m!^(?:$IPV6RE)(?:/(\d+))$! && ($1 > 7) && ($1 <= 120)) { + return $cidr; + } + + return undef if $noerr; + die "value does not look like a valid CIDR network\n"; +} + register_format('email', \&pve_verify_email); sub pve_verify_email { my ($email, $noerr) = @_;