line |
true |
false |
branch |
113
|
1 |
40 |
if (ref $proto eq 'HASH') |
119
|
2 |
17 |
if (exists $proto->{$k}) |
122
|
0 |
2 |
if ($k eq 'pingstring') |
123
|
0 |
2 |
if ($k eq 'source_verify') |
125
|
0 |
2 |
if $k eq 'timeout' |
126
|
0 |
2 |
if $k eq 'data_size' |
127
|
0 |
2 |
if $k eq 'device' |
128
|
0 |
2 |
if $k eq 'tos' |
129
|
1 |
1 |
if $k eq 'ttl' |
130
|
0 |
2 |
if $k eq 'family' |
134
|
0 |
1 |
if (%$proto) |
140
|
2 |
39 |
unless $proto |
141
|
1 |
40 |
unless $proto =~ /^(icmp|icmpv6|udp|tcp|syn|stream|external)$/ |
145
|
22 |
18 |
unless defined $timeout |
146
|
1 |
39 |
if $timeout <= 0 |
154
|
0 |
39 |
if ($self->{'host'}) |
156
|
0 |
0 |
unless my $ip = $self->_resolv($host) |
162
|
0 |
39 |
if ($self->{'bind'}) { } |
164
|
0 |
0 |
unless my $ip = $self->_resolv($addr) |
171
|
11 |
28 |
if ($self->{'proto'} eq 'icmp') |
172
|
2 |
2 |
if $ttl and $ttl < 0 || $ttl > 255 |
177
|
0 |
37 |
if ($family) { } |
178
|
0 |
0 |
if ($family =~ /$qr_family/) { } |
179
|
0 |
0 |
if ($family =~ /$qr_family4/) { } |
188
|
1 |
36 |
if ($self->{'proto'} eq 'icmpv6') { } |
195
|
4 |
33 |
$proto eq 'udp' ? : |
196
|
35 |
2 |
unless defined $data_size and $proto ne 'tcp' |
198
|
2 |
35 |
if $data_size < $min_datasize or $data_size > $Net::Ping::max_datasize |
200
|
2 |
33 |
if $self->{'proto'} eq 'udp' |
210
|
35 |
0 |
unless exists $self->{'retrans'} |
212
|
35 |
0 |
unless exists $self->{'econnrefused'} |
215
|
2 |
33 |
if ($self->{'proto'} eq 'udp') { } |
|
9 |
24 |
elsif ($self->{'proto'} eq 'icmp') { } |
|
1 |
23 |
elsif ($self->{'proto'} eq 'icmpv6') { } |
|
15 |
8 |
elsif ($self->{'proto'} eq 'tcp' or $self->{'proto'} eq 'stream') { } |
|
8 |
0 |
elsif ($self->{'proto'} eq 'syn') { } |
224
|
0 |
2 |
unless socket $self->{'fh'}, 2, 2, $self->{'proto_num'} |
230
|
0 |
9 |
unless _isroot() |
235
|
0 |
9 |
unless socket $self->{'fh'}, 2, 3, $self->{'proto_num'} |
238
|
2 |
7 |
if ($self->{'ttl'}) |
239
|
0 |
2 |
unless setsockopt $self->{'fh'}, 0, 2, pack('I*', $self->{'ttl'}) |
247
|
0 |
1 |
if $self->{'family'} and $self->{'family'} != $AF_INET6 |
253
|
0 |
1 |
unless socket $self->{'fh'}, $AF_INET6, 3, $self->{'proto_num'} |
256
|
0 |
1 |
if ($self->{'gateway'}) |
258
|
0 |
0 |
unless my $ip = $self->_resolv($g) |
260
|
0 |
0 |
unless $self->{'family'} eq $AF_INET6 |
262
|
0 |
0 |
unless $ip->{'family'} eq $AF_INET6 |
265
|
0 |
0 |
unless setsockopt $self->{'fh'}, $IPPROTO_IPV6, $IPV6_NEXTHOP, &_pack_sockaddr_in($ip) |
268
|
0 |
1 |
if (exists $self->{'IPV6_USE_MIN_MTU'}) |
271
|
0 |
0 |
unless setsockopt $self->{'fh'}, $IPPROTO_IPV6, $IPV6_USE_MIN_MTU, pack('I*', $self->{'IPV6_USE_MIN_MT'}) |
274
|
0 |
1 |
if (exists $self->{'IPV6_RECVPATHMTU'}) |
277
|
0 |
0 |
unless setsockopt $self->{'fh'}, $IPPROTO_IPV6, $IPV6_RECVPATHMTU, pack('I*', $self->{'RECVPATHMTU'}) |
280
|
0 |
1 |
if ($self->{'tos'}) |
281
|
0 |
0 |
$self->{'family'} == 2 ? : |
282
|
0 |
0 |
unless setsockopt $self->{'fh'}, $proto, 1, pack('I*', $self->{'tos'}) |
285
|
0 |
1 |
if ($self->{'ttl'}) |
286
|
0 |
0 |
$self->{'family'} == 2 ? : |
287
|
0 |
0 |
unless setsockopt $self->{'fh'}, $proto, 2, pack('I*', $self->{'ttl'}) |
306
|
0 |
8 |
if ($Net::Ping::syn_forking) { } |
336
|
0 |
0 |
unless @_ == 2 |
338
|
0 |
0 |
if defined $self->{'local_addr'} and $self->{'proto'} eq 'udp' || $self->{'proto'} eq 'icmp' |
341
|
0 |
0 |
unless defined $ip |
344
|
0 |
0 |
if ($self->{'proto'} ne 'udp' and $self->{'proto'} ne 'icmp' and $self->{'proto'} ne 'tcp' and $self->{'proto'} ne 'syn') |
359
|
0 |
64 |
if ($_[3] > 0 and $^O eq 'MSWin32') { } |
368
|
0 |
0 |
if $gran > $t |
370
|
0 |
0 |
if $nfound == -1 |
372
|
0 |
0 |
if $nfound or not defined $nfound or $t <= 0 |
380
|
0 |
63 |
if $nfound == -1 |
392
|
0 |
0 |
defined $self && ref $self ? : |
|
0 |
0 |
unless defined($Net::Ping::source_verify = defined $self && ref $self ? shift() : $self) |
404
|
0 |
14 |
unless defined($self->{'econnrefused'} = shift()) |
423
|
0 |
0 |
unless $^O eq 'MSWin32' or $^O eq 'cygwin' |
424
|
0 |
0 |
unless eval {
do {
require Win32
}
} |
425
|
0 |
0 |
unless defined &Win32::IsAdminUser |
430
|
0 |
16 |
if ($> and $^O ne 'VMS' and $^O ne 'cygwin' or $^O eq 'MSWin32' || $^O eq 'cygwin' and not _IsAdminUser() or $^O eq 'VMS' and `write sys\$output f\$privilege("SYSPRV")` =~ /FALSE/) { } |
449
|
0 |
0 |
if ($on) { } |
451
|
0 |
0 |
unless ($reachconf) |
455
|
0 |
0 |
unless (_isroot()) |
472
|
0 |
0 |
if (defined $on) { } |
478
|
0 |
0 |
$on ? : |
480
|
0 |
0 |
unless setsockopt $self->{'fh'}, $IPPROTO_IPV6, $IPV6_USE_MIN_MTU, pack('I*', $self->{'IPV6_USE_MIN_MT'}) |
494
|
0 |
0 |
if ($on) { } |
502
|
0 |
0 |
unless setsockopt $self->{'fh'}, $IPPROTO_IPV6, $IPV6_RECVPATHMTU, pack('I*', $self->{'IPV6_RECVPATHMTU'}) |
517
|
3 |
0 |
defined $self && ref $self ? : |
|
1 |
2 |
unless defined($Net::Ping::hires = defined $self && ref $self ? shift() : $self) |
523
|
109 |
0 |
$Net::Ping::hires ? : |
536
|
0 |
83 |
if ($^O eq 'MSWin32' or $^O eq 'VMS') |
540
|
0 |
0 |
$block ? : |
541
|
0 |
0 |
unless ioctl $fh, $f, $v |
544
|
83 |
0 |
if ($flags = fcntl($fh, 3, 0)) { } |
545
|
28 |
55 |
$block ? : |
546
|
0 |
83 |
if (not fcntl($fh, 4, $flags)) |
571
|
0 |
0 |
if not defined $host and $self->{'host'} |
572
|
0 |
61 |
if @_ > 4 or not $host |
573
|
61 |
0 |
unless $timeout |
574
|
0 |
61 |
if $timeout <= 0 |
576
|
0 |
61 |
if ($family) { } |
577
|
0 |
0 |
if ($family =~ /$qr_family/) { } |
578
|
0 |
0 |
if ($family =~ /$qr_family4/) { } |
591
|
0 |
61 |
unless defined $ip |
595
|
0 |
61 |
if ($self->{'proto'} eq 'external') { } |
|
1 |
60 |
elsif ($self->{'proto'} eq 'udp') { } |
|
4 |
56 |
elsif ($self->{'proto'} eq 'icmp') { } |
|
1 |
55 |
elsif ($self->{'proto'} eq 'icmpv6') { } |
|
29 |
26 |
elsif ($self->{'proto'} eq 'tcp') { } |
|
0 |
26 |
elsif ($self->{'proto'} eq 'stream') { } |
|
26 |
0 |
elsif ($self->{'proto'} eq 'syn') { } |
619
|
1 |
59 |
wantarray ? : |
630
|
0 |
0 |
if not defined $ip and $self->{'host'} |
631
|
0 |
0 |
if not defined $timeout and $self->{'timeout'} |
634
|
0 |
0 |
exists $ip->{'addr_in'} ? : |
636
|
0 |
0 |
unless eval {
do {
local(@INC) = @INC;
pop @INC if $INC[-1] eq '.';
require Net::Ping::External
}
} |
638
|
0 |
0 |
if $INC[-1] eq '.' |
673
|
4 |
2 |
unless $self->{'proto'} eq 'icmp' |
675
|
1 |
1 |
unless defined $type |
678
|
1 |
0 |
unless $type =~ /^echo|timestamp$/i |
714
|
0 |
0 |
if not defined $ip and $self->{'host'} |
715
|
0 |
0 |
if not defined $timeout and $self->{'timeout'} |
716
|
0 |
5 |
$self->{'message_type'} && $self->{'message_type'} eq 'timestamp' ? : |
718
|
0 |
5 |
unless socket $self->{'fh'}, $ip->{'family'}, 3, $self->{'proto_num'} |
721
|
0 |
5 |
if (defined $self->{'local_addr'} and not CORE::bind($self->{'fh'}, &_pack_sockaddr_in(0, $self->{'local_addr'}))) |
729
|
4 |
1 |
if ($ip->{'family'} == 2) { } |
730
|
0 |
4 |
if ($timestamp_msg) { } |
745
|
4 |
1 |
if ($ip->{'family'} == 2) { } |
746
|
0 |
4 |
if ($timestamp_msg) { } |
773
|
0 |
9 |
if (not defined $nfound) { } |
|
8 |
1 |
elsif ($nfound) { } |
789
|
8 |
0 |
$ip->{'family'} == 2 ? : |
791
|
0 |
8 |
if ($from_type == 14) { } |
|
4 |
4 |
elsif ($from_type == 0 or $from_type == 129) { } |
|
0 |
4 |
elsif ($from_type == 140) { } |
792
|
0 |
0 |
if length $recv_msg >= $off + 8 |
796
|
4 |
0 |
if $recv_msg_len == $off + 8 |
800
|
0 |
0 |
if $ip->{'family'} == $AF_INET6 and length $recv_msg == 8 |
803
|
0 |
4 |
if length $recv_msg >= $off + 36 |
809
|
4 |
4 |
if $from_pid != $self->{'pid'} |
810
|
0 |
4 |
if $from_seq != $self->{'seq'} |
811
|
4 |
0 |
if (not $Net::Ping::source_verify or $self->ntop($from_ip) eq $self->ntop($ip)) |
812
|
4 |
0 |
if (not $timestamp_msg and $from_type == 0 || $from_type == 129) { } |
|
0 |
0 |
elsif ($timestamp_msg and $from_type == 14) { } |
|
0 |
0 |
elsif ($from_type == 3 or $from_type == 1) { } |
|
0 |
0 |
elsif ($from_type == 11) { } |
840
|
0 |
0 |
unless 4 == length $addr |
865
|
0 |
5 |
if $len_msg % 2 |
890
|
0 |
0 |
if not defined $ip and $self->{'host'} |
891
|
0 |
0 |
if not defined $timeout and $self->{'timeout'} |
895
|
12 |
16 |
if (not $self->{'econnrefused'} and $! == 111) |
911
|
0 |
0 |
if not defined $ip and $self->{'host'} |
912
|
0 |
0 |
if not defined $timeout and $self->{'timeout'} |
919
|
0 |
29 |
unless socket $self->{'fh'}, $ip->{'family'}, 1, $self->{'proto_num'} |
921
|
0 |
29 |
if (defined $self->{'local_addr'} and not CORE::bind($self->{'fh'}, &_pack_sockaddr_in(0, $self->{'local_addr'}))) |
938
|
29 |
0 |
if (not connect($self->{'fh'}, $saddr)) { } |
939
|
0 |
29 |
if ($! == 111) { } |
|
0 |
29 |
elsif ($! != 115 and $^O ne 'MSWin32' || $! != 11) { } |
940
|
0 |
0 |
unless $self->{'econnrefused'} |
956
|
0 |
29 |
$^O eq 'MSWin32' ? : |
960
|
0 |
28 |
unless defined $nfound |
962
|
22 |
6 |
if ($nfound and vec $wout, $self->{'fh'}->fileno, 1) { } |
967
|
9 |
13 |
if (getpeername $self->{'fh'}) { } |
977
|
0 |
13 |
if $! == 11 and $^O =~ /cygwin/i |
980
|
12 |
1 |
if not $self->{'econnrefused'} and $! == 111 |
985
|
0 |
6 |
if ($^O =~ /MSWin32/) |
990
|
0 |
0 |
if ($nfound and vec $wexc, $self->{'fh'}->fileno, 1) |
1008
|
0 |
29 |
if ($Net::Ping::syn_forking) { } |
1017
|
0 |
0 |
unless ($self->{'tcp_chld'}) |
1018
|
0 |
0 |
unless (defined $self->{'tcp_chld'}) |
1027
|
0 |
0 |
if (&{$do_connect;}()) { } |
1034
|
0 |
0 |
$! <= 255 ? : |
1052
|
0 |
0 |
if ($child == $self->{'tcp_chld'}) { } |
1053
|
0 |
0 |
if ($self->{'proto'} eq 'stream') |
1084
|
0 |
15 |
if ($self->{'proto'} eq 'tcp' and $self->{'tcp_chld'}) |
1099
|
0 |
0 |
if not defined $timeout and $self->{'timeout'} |
1100
|
0 |
0 |
if not defined $pingstring and $self->{'pingstring'} |
1161
|
0 |
0 |
unless (defined $self->{'fh'}->fileno) |
1162
|
0 |
0 |
unless $self->tcp_connect($ip, $timeout) |
1166
|
0 |
0 |
if $self->{'ip'} ne $ip->{'addr_in'} |
1182
|
0 |
0 |
unless defined $host |
1184
|
0 |
0 |
if ($family) { } |
1185
|
0 |
0 |
if ($family =~ /$qr_family/) { } |
1186
|
0 |
0 |
if ($family =~ /$qr_family4/) { } |
1198
|
0 |
0 |
unless $timeout |
1201
|
0 |
0 |
if ($self->{'proto'} eq 'stream') |
1202
|
0 |
0 |
if (defined $self->{'fh'}->fileno) { } |
1205
|
0 |
0 |
unless $ip |
1215
|
0 |
0 |
if ($IP_DONTFRAG) |
1217
|
0 |
0 |
unless setsockopt $self->{'fh'}, 0, $IP_DONTFRAG, pack('I*', $i) |
1224
|
0 |
0 |
if ($^O eq 'linux') |
1226
|
0 |
0 |
unless setsockopt $self->{'fh'}, 0, 10, pack('I*', $i) |
1235
|
0 |
73 |
if ($self->{'device'}) |
1236
|
0 |
0 |
unless setsockopt $self->{'fh'}, 1, 25, pack('Z*', $self->{'device'}) |
1239
|
2 |
71 |
if ($self->{'tos'}) |
1240
|
0 |
2 |
unless setsockopt $self->{'fh'}, 0, 1, pack('I*', $self->{'tos'}) |
1243
|
0 |
73 |
if ($self->{'dontfrag'}) |
1284
|
0 |
1 |
unless socket $self->{'fh'}, $ip->{'family'}, 2, $self->{'proto_num'} |
1287
|
0 |
1 |
if (defined $self->{'local_addr'} and not CORE::bind($self->{'fh'}, &_pack_sockaddr_in(0, $self->{'local_addr'}))) |
1294
|
0 |
1 |
if ($self->{'connected'}) { } |
1295
|
0 |
0 |
if ($self->{'connected'} ne $saddr) |
1311
|
0 |
1 |
if ($flush) |
1320
|
1 |
0 |
if ($flush or $connect) |
1335
|
1 |
0 |
if ($factor > 1) |
1337
|
1 |
0 |
if $timeout > $retrans |
1344
|
0 |
1 |
if (not defined $nfound) { } |
|
1 |
0 |
elsif ($nfound) { } |
|
0 |
0 |
elsif ($timeout <= 0) { } |
1353
|
1 |
0 |
if (not $from_saddr) { } |
1355
|
1 |
0 |
if (not $self->{'econnrefused'} and $! == 111 || $! == 104) |
1365
|
0 |
0 |
ref $ip eq 'HASH' ? : |
1366
|
0 |
0 |
if (not $Net::Ping::source_verify or $from_ip eq $addr_in and $from_port == $self->{'port_num'} and $from_msg eq $msg) |
1383
|
0 |
0 |
if (send $self->{'fh'}, $msg, 0) { } |
1388
|
0 |
0 |
if (not $self->{'econnrefused'} and $! == 111) |
1410
|
0 |
26 |
if ($Net::Ping::syn_forking) |
1418
|
0 |
26 |
unless (socket $fh, $ip->{'family'}, 1, $self->{'proto_num'}) |
1422
|
0 |
26 |
if (defined $self->{'local_addr'} and not CORE::bind($fh, &_pack_sockaddr_in(0, $self->{'local_addr'}))) |
1433
|
0 |
26 |
if (connect $fh, $saddr) { } |
1440
|
26 |
0 |
if ($! == 115 or $^O eq 'MSWin32' and $! == 11) { } |
1452
|
26 |
0 |
if ($self->{'stop_time'} < $stop_time) |
1467
|
0 |
0 |
if (defined $pid) { } |
1468
|
0 |
0 |
if ($pid) { } |
1472
|
0 |
0 |
if ($self->{'stop_time'} < $stop_time) |
1480
|
0 |
0 |
unless (socket $self->{'fh'}, $ip->{'family'}, 1, $self->{'proto_num'}) |
1484
|
0 |
0 |
if (defined $self->{'local_addr'} and not CORE::bind($self->{'fh'}, &_pack_sockaddr_in(0, $self->{'local_addr'}))) |
1516
|
28 |
0 |
if ($self->{'proto'} eq 'syn') |
1517
|
0 |
28 |
if ($Net::Ping::syn_forking) |
1519
|
0 |
0 |
wantarray ? : |
1523
|
8 |
20 |
if (my $host = shift() or $self->{'host'}) { } |
1525
|
0 |
8 |
unless defined $host |
1526
|
0 |
8 |
if (exists $self->{'bad'}{$host}) |
1527
|
0 |
0 |
if (not $self->{'econnrefused'} and $self->{'bad'}{$host} and ($! = 111) > 0 and $self->{'bad'}{$host} eq "$!") { } |
1541
|
8 |
8 |
if ($entry->[0] eq $host) |
1548
|
0 |
8 |
unless defined $host_fd |
1562
|
6 |
19 |
if $timeout <= 0.01 |
1569
|
68 |
171 |
if (vec $wout, $fd, 1) |
1572
|
68 |
0 |
if (my $entry = $self->{'syn'}{$fd}) |
1573
|
0 |
68 |
if ($self->{'bad'}{$entry->[0]}) |
1582
|
22 |
3 |
if (defined $winner_fd or my $nfound = mselect(undef, $wout = $wbits, undef, $timeout)) { } |
|
3 |
0 |
elsif (defined $nfound) { } |
1583
|
0 |
22 |
if (defined $winner_fd) { } |
1594
|
22 |
0 |
if (my $entry = $self->{'syn'}{$fd}) { } |
1599
|
0 |
22 |
if (not $self->{'econnrefused'} and $self->{'bad'}{$entry->[0]} and ($! = 111) > 0 and $self->{'bad'}{$entry->[0]} eq "$!") { } |
|
19 |
3 |
elsif (getpeername $entry->[2]) { } |
1617
|
2 |
1 |
if (not $self->{'econnrefused'} and $! == 111 || $! == 11 && $^O =~ /cygwin/i) { } |
1629
|
6 |
15 |
wantarray ? : |
1639
|
4 |
6 |
if (vec $wbits, $fd, 1) |
1661
|
0 |
0 |
if ($host) |
1663
|
0 |
0 |
if (my $entry = $self->{'good'}{$host}) |
1672
|
0 |
0 |
if (keys %{$$self{'syn'};}) { } |
1677
|
0 |
0 |
if $timeout < 0.01 |
1683
|
0 |
0 |
if ($timeout > 0) |
1688
|
0 |
0 |
unless (sysread $self->{'fork_rd'}, $_, 16) |
1693
|
0 |
0 |
if ($pid) { } |
1696
|
0 |
0 |
if (my $entry = $self->{'syn'}{$pid}) { } |
1699
|
0 |
0 |
if (not $how or not $self->{'econnrefused'} and $how == 111) |
1702
|
0 |
0 |
if ($host and $entry->[0] ne $host) |
1719
|
0 |
0 |
if (defined $nfound) { } |
1726
|
0 |
0 |
if (my(@synners) = keys %{$$self{'syn'};}) |
1752
|
0 |
3 |
if ($self->{'proto'} eq 'syn') { } |
|
0 |
3 |
elsif ($self->{'proto'} eq 'tcp') { } |
|
0 |
3 |
elsif ($self->{'proto'} eq 'external') { } |
1765
|
8 |
0 |
if (@_) |
1784
|
0 |
15 |
if $error |
1792
|
0 |
0 |
unless (defined $host) |
1793
|
0 |
0 |
unless (defined $port and $port =~ /^\d+$/) |
1829
|
61 |
0 |
if (defined $self->{'family_local'}) |
1840
|
60 |
1 |
if ($cnt == 0) { } |
|
0 |
1 |
elsif ($cnt == 1) { } |
|
1 |
0 |
elsif ($cnt >= 2) { } |
1848
|
0 |
1 |
if ($name =~ /^\[.*\]:\d{1,5}$/) { } |
1860
|
0 |
0 |
if (defined $h{'port'} and !($h{'port'} =~ /^\d{1,5}$/) || $h{'port'} < 1 || $h{'port'} > 65535) |
1868
|
61 |
0 |
if ($Socket_VERSION > 1.94) { } |
1877
|
33 |
28 |
if (defined $getaddr[0]) |
1880
|
32 |
1 |
if ($h{'family'} == 2) { } |
1891
|
0 |
0 |
if (defined $ret and _inet_ntoa($ret) eq $h{'host'}) |
1901
|
28 |
0 |
if ($Socket_VERSION >= 1.94) { } |
1908
|
28 |
0 |
if (defined $getaddr[0]) { } |
1910
|
28 |
0 |
if (defined $address) { } |
1914
|
28 |
0 |
if ($h{'family'} == 2) { } |
1925
|
0 |
0 |
$family == 2 ? : |
1931
|
0 |
0 |
if ($family == $AF_INET6) |
1937
|
0 |
0 |
if (defined $gethost[4]) { } |
1955
|
72 |
4 |
ref $ip eq 'HASH' ? : |
1956
|
75 |
1 |
if (length $addr <= 4) { } |
1969
|
8 |
0 |
if ($family == 2 or not defined $family and length $addr <= 16) { } |
1982
|
0 |
0 |
if ($Socket_VERSION >= 1.94) { } |
1984
|
0 |
0 |
if (defined $address) { } |