mtr: smarter check for usable ipv6.

Handles the case of
sysctl net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1
This commit is contained in:
Sergei Golubchik 2014-02-17 11:10:18 +01:00
parent 5f1a2cf8e3
commit 3febb3ce1d

View File

@ -30,10 +30,14 @@ sub skip_combinations {
unless $::mysqld_variables{'innodb'} eq "ON";
# disable tests that use ipv6, if unsupported
use Socket;
$skip{'include/check_ipv6.inc'} = 'No IPv6'
unless socket SOCK, PF_INET6, SOCK_STREAM, getprotobyname('tcp');
close SOCK;
sub ipv6_ok() {
use Socket;
return 0 unless socket my $sock, PF_INET6, SOCK_STREAM, getprotobyname('tcp');
# eval{}, if there's no Socket::sockaddr_in6 at all, old Perl installation
eval { connect $sock, sockaddr_in6(7, Socket::IN6ADDR_LOOPBACK) };
return $! != 101;
}
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
%skip;
}