summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2016-10-15 23:01:36 +0200
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2016-10-15 23:04:02 +0200
commitd63a9563033c690d8b7f572780b332fa9620ef3b (patch)
tree6025d67b63ca280a98742288b01d961b26550c37
parentad42405613da5439cab19b4c713f000eb9cb1d2e (diff)
downloadexim4-d63a9563033c690d8b7f572780b332fa9620ef3b.tar.gz
Testsuite: detect "hidden" IPs
`ifconfig -a` doesn't show all addresses, it skippes addresses that do not have a label. `ip a` show even these. Bonus: some small cosmetical changes to get a more modern Perl style.
-rwxr-xr-xtest/runtest51
1 files changed, 23 insertions, 28 deletions
diff --git a/test/runtest b/test/runtest
index 2c76f176b..71d4434f1 100755
--- a/test/runtest
+++ b/test/runtest
@@ -14,6 +14,7 @@
###############################################################################
#use strict;
+use 5.010;
use Errno;
use FileHandle;
use Socket;
@@ -82,13 +83,16 @@ $parm_port_d3 = 1227; # Additional for daemon
$parm_port_d4 = 1228; # Additional for daemon
# Manually set locale
-$ENV{'LC_ALL'} = 'C';
+$ENV{LC_ALL} = 'C';
# In some environments USER does not exists, but we
# need it for some test(s)
$ENV{USER} = getpwuid($>)
if not exists $ENV{USER};
+my ($parm_configure_owner, $parm_configure_group);
+my ($parm_ipv4, $parm_ipv6);
+my $parm_hostname;
###############################################################################
###############################################################################
@@ -2339,7 +2343,7 @@ return $yield; # Ran command and waited
###############################################################################
###############################################################################
-# Here beginneth the Main Program ...
+# Here begins the Main Program ...
###############################################################################
###############################################################################
@@ -2369,7 +2373,7 @@ umask 022;
# Check for the "less" command #
##################################################
-$more = "more" if system("which less >/dev/null 2>&1") != 0;
+$more = 'more' if system('which less >/dev/null 2>&1') != 0;
@@ -2378,7 +2382,7 @@ $more = "more" if system("which less >/dev/null 2>&1") != 0;
##################################################
print "You need to have sudo access to root to run these tests. Checking ...\n";
-if (system("sudo date >/dev/null") != 0)
+if (system('sudo true >/dev/null') != 0)
{
die "** Test for sudo failed: testing abandoned.\n";
}
@@ -3020,38 +3024,29 @@ else
# Find this host's IP addresses - there may be many, of course, but we keep
# one of each type (IPv4 and IPv6).
-$parm_ipv4 = "";
-$parm_ipv6 = "";
-
-$local_ipv4 = "";
-$local_ipv6 = "";
-
-open(IFCONFIG, "ifconfig -a|") || die "** Cannot run \"ifconfig\": $!\n";
-while (($parm_ipv4 eq "" || $parm_ipv6 eq "") && ($_ = <IFCONFIG>))
+open(IFCONFIG, 'ip address|') # show *all*, addresses w/o label
+ or open(IFCONFIG, 'ifconfig -a|') # probably skips addresses w/o label
+ or die "** Cannot run 'ifconfig' or 'ip address': $!\n";
+while (not ($parm_ipv4 and $parm_ipv6) and defined($_ = <IFCONFIG>))
{
- my($ip);
- if ($parm_ipv4 eq "" &&
- $_ =~ /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)\s/i)
+ if (not $parm_ipv4 and /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)(?:\/\d+)\s/i)
{
- $ip = $1;
- next if ($ip =~ /^127\./ || $ip =~ /^10\./);
- $parm_ipv4 = $ip;
+ next if $1 =~ /^(?:127|10)\./;
+ $parm_ipv4 = $1;
}
- if ($parm_ipv6 eq "" &&
- $_ =~ /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)/i)
+ if (not $parm_ipv6 and /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)(?:\/\d+)/i)
{
- $ip = $1;
- next if ($ip eq "::1" || $ip =~ /^fe80/i);
- $parm_ipv6 = $ip;
+ next if $1 eq '::1' or $1 =~ /^fe80/i;
+ $parm_ipv6 = $1;
}
}
close(IFCONFIG);
# Use private IP addresses if there are no public ones.
-$parm_ipv4 = $local_ipv4 if ($parm_ipv4 eq "");
-$parm_ipv6 = $local_ipv6 if ($parm_ipv6 eq "");
+$parm_ipv4 //= '172.10.10.1';
+$parm_ipv6 //= 'fd0a:c2ea:abfa::1';
# If either type of IP address is missing, we need to set the value to
# something other than empty, because that wrecks the substitutions. The value
@@ -3061,7 +3056,7 @@ $parm_ipv6 = $local_ipv6 if ($parm_ipv6 eq "");
# of IPV4 or IPv6 can be simulated by command options, which force $have_ipv4
# and $have_ipv6 false.
-if ($parm_ipv4 eq "")
+if (not $parm_ipv4)
{
$have_ipv4 = 0;
$parm_ipv4 = "<no IPv4 address found>";
@@ -3077,7 +3072,7 @@ else
$parm_running{"IPv4"} = " ";
}
-if ($parm_ipv6 eq "")
+if (not $parm_ipv6)
{
$have_ipv6 = 0;
$parm_ipv6 = "<no IPv6 address found>";
@@ -3125,7 +3120,7 @@ if ($parm_ipv6 =~ /^[\da-f]/)
# Find the host name, fully qualified.
chomp($temp = `hostname`);
-$parm_hostname = (gethostbyname($temp))[0];
+$parm_hostname = (gethostbyname($temp))[0] // $temp;
$parm_hostname = "no.host.name.found" if $parm_hostname eq "";
print "Hostname is $parm_hostname\n";