diff options
author | markj <markj@FreeBSD.org> | 2013-05-15 22:56:24 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2013-05-15 22:56:24 +0000 |
commit | e34342dafe64b19e42001c803d6709c96c3570f4 (patch) | |
tree | b1b873bc12d17d14e69652e733758633763a1821 /cddl | |
parent | c5c3f4f392975f0ffee18a566ed088e8426f41c5 (diff) | |
download | FreeBSD-src-e34342dafe64b19e42001c803d6709c96c3570f4.zip FreeBSD-src-e34342dafe64b19e42001c803d6709c96c3570f4.tar.gz |
Convert a couple of helper scripts used to test the ip provider to work on
FreeBSD. In the IPv6 case, try each interface before returning an error;
each IPv6-enabled interface will have a link-local address even if the link
isn't up.
MFC after: 1 week
Diffstat (limited to 'cddl')
-rwxr-xr-x | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl | 2 | ||||
-rwxr-xr-x | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl | 29 |
2 files changed, 20 insertions, 11 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl index 128263e..ccc247d 100755 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl @@ -73,7 +73,7 @@ die "Could not determine local IP address" if $local eq ""; # Find the first remote host that responds to an icmp echo, # which isn't a local address. # -open PING, "/sbin/ping -ns $Broadcast{$local} 56 $MAXHOSTS |" or +open PING, "/sbin/ping -n -s 56 -c $MAXHOSTS $Broadcast{$local} |" or die "Couldn't run ping: $!\n"; while (<PING>) { if (/bytes from (.*): / and not defined $Broadcast{$1}) { diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl index 837ca3c..35bea8e 100755 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl @@ -48,7 +48,9 @@ my $MULTICAST = "FF02::1"; # IPv6 multicast address # my $local = ""; my $remote = ""; +my $interf = ""; my %Local; +my %Addr; my $up; open IFCONFIG, '/sbin/ifconfig -a inet6 |' or die "Couldn't run ifconfig: $!\n"; @@ -59,27 +61,34 @@ while (<IFCONFIG>) { $up = 1 if /^[a-z].*<UP,/; $up = 0 if /^[a-z].*<,/; + if (m:(\S+\d+)\: :) { + $interf = $1; + } + # assume output is "inet6 ...": - if (m:inet6 (\S+)/:) { + if (m:inet6 (\S+) :) { my $addr = $1; $Local{$addr} = 1; - $local = $addr if $up and $local eq ""; + $Addr{$interf} = $addr; $up = 0; + $interf = ""; } } close IFCONFIG; -exit 1 if $local eq ""; # # Find the first remote host that responds to an icmp echo, -# which isn't a local address. +# which isn't a local address. Try each IPv6-enabled interface. # -open PING, "/sbin/ping -ns -A inet6 $MULTICAST 56 $MAXHOSTS |" or - die "Couldn't run ping: $!\n"; -while (<PING>) { - if (/bytes from (.*): / and not defined $Local{$1}) { - $remote = $1; - last; +foreach $interf (split(' ', `ifconfig -l -u inet6`)) { + next if $interf =~ /lo[0-9]+/; + open PING, "/sbin/ping6 -n -s 56 -c $MAXHOSTS $MULTICAST\%$interf |" or next; + while (<PING>) { + if (/bytes from (.*), / and not defined $Local{$1}) { + $remote = $1; + $local = $Addr{$interf}; + last; + } } } close PING; |