网络列表包含其他网络?

时间:2014-02-05 17:08:36

标签: perl networking subnet

我有两个清单。一个带有网络的列表(例如10.0.0.0/8等)和带有子网的第二个列表(例如10.10.1.0/24或/ 27/28等)。我想弄清楚,哪个子网适合第一个“容器”网络(使用perl)。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

CPAN上的Net::CIDR::Compare包可能就是你要找的。从示例代码:

use Net::CIDR::Compare;

my $collection = Net::CIDR::Compare->new(print_errors => 1);

my $first_list = $collection->new_list();
$collection->add_range($first_list, "10.10.0.0/16", 1);

my $second_list = $collection->new_list();
$collection->add_range($second_list, "10.10.200.0/24", 1);

$collection->process_intersection(expand_cidr => 8);
while (my $cidr_range = $collection->get_next_intersection_range()) {
    print "$cidr_range\n"; # prints 10.10.200.0/24
}

答案 1 :(得分:2)

检查NetAddr::IP

use NetAddr::IP;

my $range1 = NetAddr::IP->new("10.0.0.0/8");
my $range2 = NetAddr::IP->new("10.10.1.0/24");
print "range1 contains range2\n" if $range1->contains($range2);
相关问题