|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
use Test::More tests => 28;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
use_ok('NetAddr::IP');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my $ip = new NetAddr::IP('192.168.21.13/15');
|
|
Packit |
0b51a0 |
my $rv;
|
|
Packit |
0b51a0 |
ok(($rv = sprintf("%s",$ip)) eq '192.168.21.13/15',"$rv eq 192.168.21.13/15");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my($plan,$masks) = $ip->_splitplan(15);
|
|
Packit |
0b51a0 |
ok($plan,'there is a plan');
|
|
Packit |
0b51a0 |
ok(!$masks,'plan returns the orignal net');
|
|
Packit |
0b51a0 |
ok(@$plan == 1,'one item plan');
|
|
Packit |
0b51a0 |
ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my $cmask = new NetAddr::IP('255.126.0.0');
|
|
Packit |
0b51a0 |
ok(($rv = sprintf("%s",$cmask)) eq '255.126.0.0/32',"$rv eq 255.126.0.0/32");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing because of bits in mask');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
$cmask = new NetAddr::IP('255.254.0.0');
|
|
Packit |
0b51a0 |
ok(($rv = sprintf("%s",$cmask)) eq '255.254.0.0/32',"$rv eq 255.254.0.0/32");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok($plan,'there is a plan');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
ok(!$masks,'plan returns the orignal net');
|
|
Packit |
0b51a0 |
ok(@$plan == 1,'one item plan');
|
|
Packit |
0b51a0 |
ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
$cmask = '255.254.0.0'; # ipV4 text cmask
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok($plan,'there is a plan');
|
|
Packit |
0b51a0 |
ok(!$masks,'plan returns the orignal net');
|
|
Packit |
0b51a0 |
ok(@$plan == 1,'one item plan');
|
|
Packit |
0b51a0 |
ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
$cmask = '255.126.0.0'; # ipV4 text cmask
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing because of bits in mask');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
$cmask = 'garbage';
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing because of garbage');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
$cmask = 14; # cidr is bigger than requested
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan($cmask);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing because of 15 overange');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
# cidr makes more nets than 2**16
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(32);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing to many nets 32 - 15 = 2**17');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(16,16,16);
|
|
Packit |
0b51a0 |
ok(!$plan,'failing because of 3 * 16 overange');
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
# test for plan that just fits
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(31);
|
|
Packit |
0b51a0 |
ok($plan,'there is a plan 31');
|
|
Packit |
0b51a0 |
ok($masks,'plan has masks');
|
|
Packit |
0b51a0 |
ok(($rv = @{$plan}) == 2 ** 16,"$rv should = 65536");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
# set netlimit internal to 4 nets
|
|
Packit |
0b51a0 |
$NetAddr::IP::_netlimit = 4;
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(17); # should fit
|
|
Packit |
0b51a0 |
ok($plan,"plan of 4 17's");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(17,17,17,17,18);
|
|
Packit |
0b51a0 |
ok(!plan,"fail plan of 4 17's + 18");
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
($plan,$masks) = $ip->_splitplan(18);
|
|
Packit |
0b51a0 |
ok(!plan,"fail plan of 8 18's");
|