& elements/process.html,
'table' => 'addr_range',
'popup_reload' => 'Address range changed',
'precheck_callback' => sub {
my ($cgi) = @_;
my $start = NetAddr::IP->new($cgi->param('start'), 0)
or return 'Illegal or empty (IP address) start: '.$cgi->param('start');
if ( length($cgi->param('end')) ) {
my $end = NetAddr::IP->new($cgi->param('end'), 0)
or return 'Illegal or empty (IP address) end: '.$cgi->param('end');
if ( $end < $start ) {
($start, $end) = ($end, $start);
$cgi->param('end', $end->addr);
$cgi->param('start', $start->addr);
}
# detect addr ranges that are too big
my ($one) = split('\.', $start->addr);
if ( $one < 128 and $start + 0x7FFFFFFF <= $end ) {
# then this is going to overflow
return "Address ranges must be < 2^31 - 1 addresses long.";
} # if the first octet is >= 128, then it's in the top half of
# address space and it CAN'T be too big
$cgi->param('length', $end - $start + 1);
} else {
$cgi->param('length', 1);
}
'';
},
&>