/usr/lib/x86_64-linux-gnu/perl5/5.22/auto/NetAddr/IP/coalesce.al is in libnetaddr-ip-perl 4.078+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | # NOTE: Derived from blib/lib/NetAddr/IP.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package NetAddr::IP;
#line 1269 "blib/lib/NetAddr/IP.pm (autosplit into blib/lib/auto/NetAddr/IP/coalesce.al)"
sub coalesce
{
my $masklen = shift;
if (ref $masklen && ref $masklen eq __PACKAGE__ ) { # if called as a method
push @_,$masklen;
$masklen = shift;
}
my $number = shift;
# Addresses are at @_
return [] unless @_;
my %ret = ();
my $type = $_[0]->{isv6};
return [] unless defined $type;
for my $ip (@_)
{
return [] unless $ip->{isv6} == $type;
$type = $ip->{isv6};
my $n = NetAddr::IP->new($ip->addr . '/' . $masklen)->network;
if ($ip->masklen > $masklen)
{
$ret{$n} += $ip->num + $NetAddr::IP::Lite::Old_nth;
}
}
my @ret = ();
# Add to @ret any arguments with netmasks longer than our argument
for my $c (sort { $a->masklen <=> $b->masklen }
grep { $_->masklen <= $masklen } @_)
{
next if grep { $_->contains($c) } @ret;
push @ret, $c->network;
}
# Now add to @ret all the subnets with more than $number hits
for my $c (map { new NetAddr::IP $_ }
grep { $ret{$_} >= $number }
keys %ret)
{
next if grep { $_->contains($c) } @ret;
push @ret, $c;
}
return \@ret;
}
# end of NetAddr::IP::coalesce
1;
|