X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=bindings%2Fperl%2Flib%2FNet%2FOping.pm;fp=bindings%2Fperl%2Flib%2FNet%2FOping.pm;h=b14cc52a21e29a8a2d7ffea85a2026e0dfdde30f;hb=578ac00444a46b2159bace62c74e2b493ffdd9ed;hp=838fb589fc41e582c9e633390fc0a6532798b89c;hpb=ac4b351e41eff1e6854d72b96a9ac591ff161e3e;p=liboping.git diff --git a/bindings/perl/lib/Net/Oping.pm b/bindings/perl/lib/Net/Oping.pm index 838fb58..b14cc52 100644 --- a/bindings/perl/lib/Net/Oping.pm +++ b/bindings/perl/lib/Net/Oping.pm @@ -263,7 +263,56 @@ sub ping } return ($data); -} +} # ping + +=item my I<$dropped> = I<$obj>-EB () + +Returns a hash reference holding the number of "drops" (echo requests which +were not answered in time) for each host. An example return +values would be: + + $droprate = { host1 => 0, host2 => 3, host3 => undef, ... }; + +Hosts to which no data has been sent yet will return C ("host3" in thie +example). + +=cut + +sub get_dropped +{ + my $obj = shift; + my $iter; + my $data = {}; + + $iter = _ping_iterator_get ($obj->{'c_obj'}); + if (!$iter) + { + $obj->{'err_msg'} = "" . _ping_get_error ($obj->{'c_obj'}); + return; + } + + while ($iter) + { + my $host = _ping_iterator_get_hostname ($iter); + if (!$host) + { + $iter = _ping_iterator_next ($iter); + next; + } + + my $dropped = _ping_iterator_get_dropped ($iter); + if ($dropped < 0) + { + $dropped = undef; + } + + $data->{$host} = $dropped; + + $iter = _ping_iterator_next ($iter); + } + + return ($data); +} # get_dropped =item my I<$errmsg> = I<$obj>-EB ();