#!/usr/bin/perl -T
use
SATest; sa_t_init(
"cidrs"
);
my
$tests
= 72;
$tests
+= 4
if
(HAS_NET_CIDR);
plan
tests
=>
$tests
;
my
$sa
= Mail::SpamAssassin->new({
rules_filename
=>
$localrules
,
});
sub
tryone ($@) {
my
(
$testip
,
@nets
) =
@_
;
my
$nets
= Mail::SpamAssassin::NetSet->new();
foreach
my
$net
(
@nets
) {
$nets
->add_cidr (
$net
); }
if
(
$nets
->contains_ip (
$testip
)) {
print
"\n$testip was in @nets\n"
;
return
1;
}
else
{
print
"\n$testip was not in @nets\n"
;
return
0;
}
}
sub
trynet ($@) {
my
(
$cidr
,
@nets
) =
@_
;
my
$net
= Mail::SpamAssassin::NetSet->new();
$net
->add_cidr (
$cidr
);
my
$nets
= Mail::SpamAssassin::NetSet->new();
foreach
my
$net
(
@nets
) {
$nets
->add_cidr (
$net
); }
if
(
$nets
->contains_net (
$net
->{nets}->[0])) {
print
"\n$cidr was in @nets\n"
;
return
1;
}
else
{
print
"\n$cidr was not in @nets\n"
;
return
0;
}
}
ok tryone
"127.0.0.1"
,
"127.0.0.1"
;
ok !tryone
"127.0.0.2"
,
"127.0.0.1"
;
ok tryone
"127.0.0.1"
,
"127."
;
ok tryone
"127.0.0.254"
,
"127."
;
ok tryone
"127.0.0.1"
,
"127/8"
;
ok tryone
"127.0.0.1"
,
"127.0/16"
;
ok tryone
"127.0.0.1"
,
"127.0.0/24"
;
ok tryone
"127.0.0.0"
,
"127.0.0.0/24"
;
ok tryone
"127.0.0.255"
,
"127.0.0.0/24"
;
ok !tryone
"127.0.0.0"
,
"127.0.0.1/32"
;
ok tryone
"127.0.0.1"
,
"127.0.0.1/32"
;
ok !tryone
"127.0.0.2"
,
"127.0.0.1/32"
;
ok tryone
"127.0.0.0"
,
"127.0.0.0/31"
;
ok tryone
"127.0.0.1"
,
"127.0.0.0/31"
;
ok !tryone
"127.0.0.2"
,
"127.0.0.0/31"
;
ok !tryone
"127.0.0.3"
,
"127.0.0.0/31"
;
ok tryone
"127.0.0.0"
,
"127.0.0.1/31"
;
ok tryone
"127.0.0.1"
,
"127.0.0.1/31"
;
ok !tryone
"127.0.0.2"
,
"127.0.0.1/31"
;
ok !tryone
"127.0.0.3"
,
"127.0.0.1/31"
;
ok !tryone
"127.0.0.1"
,
"127.0.0.2/31"
;
ok tryone
"127.0.0.2"
,
"127.0.0.2/31"
;
ok tryone
"127.0.0.3"
,
"127.0.0.2/31"
;
ok !tryone
"127.0.0.4"
,
"127.0.0.2/31"
;
ok !tryone
"127.0.0.15"
,
"127.0.0.16/31"
;
ok tryone
"127.0.0.16"
,
"127.0.0.16/31"
;
ok tryone
"127.0.0.17"
,
"127.0.0.16/31"
;
ok !tryone
"127.0.0.18"
,
"127.0.0.16/31"
;
ok tryone
"127.0.0.1"
,
"10."
,
"11."
,
"127.0.0.1"
;
ok tryone
"127.0.0.1"
,
"127.0."
;
ok tryone
"127.0.0.1"
,
"127.0.0."
;
ok tryone
"127.0.0.1"
,
"127."
;
ok !tryone
"128.0.0.254"
,
"127."
;
ok !tryone
"128.0.0.1"
,
"127/8"
;
ok !tryone
"128.0.0.1"
,
"127.0/16"
;
ok !tryone
"128.0.0.1"
,
"127.0.0/24"
;
ok !tryone
"128.0.0.1"
,
"127.0.0.1/32"
;
ok !tryone
"128.0.0.1"
,
"127.0.0.1/31"
;
ok !tryone
"128.0.0.1"
,
"127.0."
;
ok !tryone
"128.0.0.1"
,
"127.0.0."
;
ok !tryone
"12.9.0.1"
,
"10."
,
"11."
,
"127.0.0.1"
;
ok !tryone
"127.0.0.1"
,
"::DEAD:BEEF"
;
ok tryone
"DEAD:BEEF:0000:0102:0304:0506:0708:0a0b"
,
"DEAD:BEEF:0000:0102:0304:0506::/96"
;
ok tryone
"DEAD:BEEF:0000:0102:0304:0506:0708:0a0b"
,
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
;
ok tryone
"fec0:02::0060:1dff:fff7:2109"
,
"fec0:02::0060:1dff:fff7:2109"
;
ok tryone
"::1"
,
"::1"
;
ok tryone
"::1"
,
"0:0:0:0:0:0:0:1"
;
ok tryone
"::1"
,
"0:0:0::0:1"
;
ok tryone
"::1"
,
"::/96"
;
ok tryone
"::ffff:127.0.0.1"
,
"127/8"
;
ok tryone
"::ffff:127.0.0.1"
,
"127.0.0.1"
;
ok tryone
"::ffff:127.0.0.1"
,
"::ffff:127.0.0.1"
;
ok tryone
"127.0.0.1"
,
"::ffff:127.0.0.1"
;
ok tryone
"127.0.0.1"
,
"::ffff:7f00:0000/112"
;
ok tryone
"127.0.0.1"
,
"::ffff:7f00:0001"
;
ok tryone
"127.0.0.1"
,
"0000:0000:0000:0000:0000:ffff:127.0.0.0/112"
;
ok tryone
"127.0.0.1"
,
"0000:0000:0000:0000:0000:ffff:127.0.0.1"
;
ok !tryone
"127.0.0.1"
,
"::127.0.0.1"
;
ok !tryone
"::127.0.0.1"
,
"127.0.0.1"
;
ok !tryone
"::127.0.0.1"
,
"127/8"
;
ok !tryone
"127.0.0.1"
,
"::7f00:0000/112"
;
ok trynet
"1.1/16"
,
"1.1/16"
;
ok trynet
"1.1/16"
,
"1.1/15"
;
ok !trynet
"1.1/16"
,
"1.1/17"
;
ok !trynet
"1.1/16"
,
"1.1.1/24"
;
ok trynet
"1.1.1/24"
,
"1.1/16"
;
ok trynet
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
,
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
;
ok trynet
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
,
"DEAD:BEEF:0000:0102:0304:0506:0:0/95"
;
ok trynet
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
,
"DEAD:BEEF:0000:0102:0304:0506:1:1/90"
;
ok !trynet
"DEAD:BEEF:0000:0102:0304:0506:1:1/90"
,
"DEAD:BEEF:0000:0102:0304:0506:0:0/96"
;
ok tryone
"010.010.10.10"
,
"10.10.10.10"
;
ok !tryone
"8.8.10.10"
,
"010.010.10.10"
;
if
(HAS_NET_CIDR) {
ok tryone
"127.0.0.1"
,
"127.0.0.0-127.0.0.255"
;
ok trynet
"127.0.0.16/30"
,
"127.0.0.0-127.0.000.255"
;
ok !tryone
"127.0.0.1"
,
"127.0.0.8-127.0.0.20"
;
ok tryone
"010.50.60.1"
,
"0.0.0.0-010.255.255.255"
;
}