Date: Wed, 15 May 2013 22:56:24 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r250685 - head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip Message-ID: <201305152256.r4FMuOl1042394@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markj Date: Wed May 15 22:56:24 2013 New Revision: 250685 URL: http://svnweb.freebsd.org/changeset/base/250685 Log: 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 Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl ============================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl Wed May 15 21:37:08 2013 (r250684) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl Wed May 15 22:56:24 2013 (r250685) @@ -73,7 +73,7 @@ die "Could not determine local IP addres # 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}) { Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl ============================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl Wed May 15 21:37:08 2013 (r250684) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl Wed May 15 22:56:24 2013 (r250685) @@ -48,7 +48,9 @@ my $MULTICAST = "FF02::1"; # IPv6 multi # 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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305152256.r4FMuOl1042394>