This commit is contained in:
Jamie Cameron
2018-01-09 21:58:33 -08:00
parent bad3e5272f
commit 8e85ae44bc
2 changed files with 35 additions and 4 deletions

View File

@@ -2847,8 +2847,8 @@ for($i=2; $i<@_; $i++) {
local $v6size = $2;
local $v6addr = &canonicalize_ip6($1);
local $bytes = $v6size / 8;
@mo = split(/:/, $v6addr);
local @io6 = split(/:/, &canonicalize_ip6($_[0]));
@mo = &expand_ipv6_bytes($v6addr);
local @io6 = &expand_ipv6_bytes(&canonicalize_ip6($_[0]));
for($j=0; $j<$bytes; $j++) {
if ($mo[$j] ne $io6[$j]) {
$mismatch = 1;
@@ -6235,6 +6235,19 @@ foreach my $w (@w) {
return lc(join(":", @w));
}
# expand_ipv6_bytes(address)
# Given a canonical IPv6 address, split it into an array of bytes
sub expand_ipv6_bytes
{
my ($addr) = @_;
my @rv;
foreach my $w (split(/:/, $addr)) {
$w =~ /^(..)(..)$/ || return ( );
push(@rv, hex($1), hex($2));
}
return @rv;
}
sub get_somaxconn
{
return defined(&SOMAXCONN) ? SOMAXCONN : 128;

View File

@@ -1549,8 +1549,8 @@ for(my $i=1; $i<@_; $i++) {
my $v6size = $2;
my $v6addr = &canonicalize_ip6($1);
my $bytes = $v6size / 8;
my @mo = split(/:/, $v6addr);
my @io = split(/:/, &canonicalize_ip6($_[0]));
my @mo = &expand_ipv6_bytes($v6addr);
my @io = &expand_ipv6_bytes(&canonicalize_ip6($_[0]));
for(my $j=0; $j<$bytes; $j++) {
if ($mo[$j] ne $io[$j]) {
$mismatch = 1;
@@ -1566,6 +1566,24 @@ for(my $i=1; $i<@_; $i++) {
return 0;
}
=head2 expand_ipv6_bytes(address)
Given a canonical IPv6 address, split it into an array of bytes
=cut
sub expand_ipv6_bytes
{
my ($addr) = @_;
my @rv;
foreach my $w (split(/:/, $addr)) {
$w =~ /^(..)(..)$/ || return ( );
push(@rv, hex($1), hex($2));
}
return @rv;
}
=head2 prefix_to_mask(prefix)
Converts a number like 24 to a mask like 255.255.255.0.