diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/debian-bookworm/man3/Net::Ping.3perl | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/debian-bookworm/man3/Net::Ping.3perl')
-rw-r--r-- | upstream/debian-bookworm/man3/Net::Ping.3perl | 665 |
1 files changed, 665 insertions, 0 deletions
diff --git a/upstream/debian-bookworm/man3/Net::Ping.3perl b/upstream/debian-bookworm/man3/Net::Ping.3perl new file mode 100644 index 00000000..a1745062 --- /dev/null +++ b/upstream/debian-bookworm/man3/Net::Ping.3perl @@ -0,0 +1,665 @@ +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "Net::Ping 3perl" +.TH Net::Ping 3perl "2023-11-25" "perl v5.36.0" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +Net::Ping \- check a remote host for reachability +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& use Net::Ping; +\& +\& $p = Net::Ping\->new(); +\& print "$host is alive.\en" if $p\->ping($host); +\& $p\->close(); +\& +\& $p = Net::Ping\->new("icmp"); +\& $p\->bind($my_addr); # Specify source interface of pings +\& foreach $host (@host_array) +\& { +\& print "$host is "; +\& print "NOT " unless $p\->ping($host, 2); +\& print "reachable.\en"; +\& sleep(1); +\& } +\& $p\->close(); +\& +\& $p = Net::Ping\->new("icmpv6"); +\& $ip = "[fd00:dead:beef::4e]"; +\& print "$ip is alive.\en" if $p\->ping($ip); +\& +\& $p = Net::Ping\->new("tcp", 2); +\& # Try connecting to the www port instead of the echo port +\& $p\->port_number(scalar(getservbyname("http", "tcp"))); +\& while ($stop_time > time()) +\& { +\& print "$host not reachable ", scalar(localtime()), "\en" +\& unless $p\->ping($host); +\& sleep(300); +\& } +\& undef($p); +\& +\& # Like tcp protocol, but with many hosts +\& $p = Net::Ping\->new("syn"); +\& $p\->port_number(getservbyname("http", "tcp")); +\& foreach $host (@host_array) { +\& $p\->ping($host); +\& } +\& while (($host,$rtt,$ip) = $p\->ack) { +\& print "HOST: $host [$ip] ACKed in $rtt seconds.\en"; +\& } +\& +\& # High precision syntax (requires Time::HiRes) +\& $p = Net::Ping\->new(); +\& $p\->hires(); +\& ($ret, $duration, $ip) = $p\->ping($host, 5.5); +\& printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\en", +\& 1000 * $duration) +\& if $ret; +\& $p\->close(); +\& +\& # For backward compatibility +\& print "$host is alive.\en" if pingecho($host); +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This module contains methods to test the reachability of remote +hosts on a network. A ping object is first created with optional +parameters, a variable number of hosts may be pinged multiple +times and then the connection is closed. +.PP +You may choose one of six different protocols to use for the +ping. The \*(L"tcp\*(R" protocol is the default. Note that a live remote host +may still fail to be pingable by one or more of these protocols. For +example, www.microsoft.com is generally alive but not \*(L"icmp\*(R" pingable. +.PP +With the \*(L"tcp\*(R" protocol the \fBping()\fR method attempts to establish a +connection to the remote host's echo port. If the connection is +successfully established, the remote host is considered reachable. No +data is actually echoed. This protocol does not require any special +privileges but has higher overhead than the \*(L"udp\*(R" and \*(L"icmp\*(R" protocols. +.PP +Specifying the \*(L"udp\*(R" protocol causes the \fBping()\fR method to send a udp +packet to the remote host's echo port. If the echoed packet is +received from the remote host and the received packet contains the +same data as the packet that was sent, the remote host is considered +reachable. This protocol does not require any special privileges. +It should be borne in mind that, for a udp ping, a host +will be reported as unreachable if it is not running the +appropriate echo service. For Unix-like systems see \fBinetd\fR\|(8) +for more information. +.PP +If the \*(L"icmp\*(R" protocol is specified, the \fBping()\fR method sends an icmp +echo message to the remote host, which is what the \s-1UNIX\s0 ping program +does. If the echoed message is received from the remote host and +the echoed information is correct, the remote host is considered +reachable. Specifying the \*(L"icmp\*(R" protocol requires that the program +be run as root or that the program be setuid to root. +.PP +If the \*(L"external\*(R" protocol is specified, the \fBping()\fR method attempts to +use the \f(CW\*(C`Net::Ping::External\*(C'\fR module to ping the remote host. +\&\f(CW\*(C`Net::Ping::External\*(C'\fR interfaces with your system's default \f(CW\*(C`ping\*(C'\fR +utility to perform the ping, and generally produces relatively +accurate results. If \f(CW\*(C`Net::Ping::External\*(C'\fR if not installed on your +system, specifying the \*(L"external\*(R" protocol will result in an error. +.PP +If the \*(L"syn\*(R" protocol is specified, the \*(L"ping\*(R" method will only +send a \s-1TCP SYN\s0 packet to the remote host then immediately return. +If the syn packet was sent successfully, it will return a true value, +otherwise it will return false. \s-1NOTE:\s0 Unlike the other protocols, +the return value does \s-1NOT\s0 determine if the remote host is alive or +not since the full \s-1TCP\s0 three-way handshake may not have completed +yet. The remote host is only considered reachable if it receives +a \s-1TCP ACK\s0 within the timeout specified. To begin waiting for the +\&\s-1ACK\s0 packets, use the \*(L"ack\*(R" method as explained below. Use the +\&\*(L"syn\*(R" protocol instead the \*(L"tcp\*(R" protocol to determine reachability +of multiple destinations simultaneously by sending parallel \s-1TCP +SYN\s0 packets. It will not block while testing each remote host. +This protocol does not require any special privileges. +.SS "Functions" +.IX Subsection "Functions" +.IP "Net::Ping\->new([proto, timeout, bytes, device, tos, ttl, family, host, port, bind, gateway, retrans, pingstring, source_verify econnrefused dontfrag \s-1IPV6_USE_MIN_MTU IPV6_RECVPATHMTU\s0])" 4 +.IX Xref "new" +.IX Item "Net::Ping->new([proto, timeout, bytes, device, tos, ttl, family, host, port, bind, gateway, retrans, pingstring, source_verify econnrefused dontfrag IPV6_USE_MIN_MTU IPV6_RECVPATHMTU])" +Create a new ping object. All of the parameters are optional and can +be passed as hash ref. All options besides the first 7 must be passed +as hash ref. +.Sp +\&\f(CW\*(C`proto\*(C'\fR specifies the protocol to use when doing a ping. The current +choices are \*(L"tcp\*(R", \*(L"udp\*(R", \*(L"icmp\*(R", \*(L"icmpv6\*(R", \*(L"stream\*(R", \*(L"syn\*(R", or +\&\*(L"external\*(R". The default is \*(L"tcp\*(R". +.Sp +If a \f(CW\*(C`timeout\*(C'\fR in seconds is provided, it is used +when a timeout is not given to the \fBping()\fR method (below). The timeout +must be greater than 0 and the default, if not specified, is 5 seconds. +.Sp +If the number of data bytes (\f(CW\*(C`bytes\*(C'\fR) is given, that many data bytes +are included in the ping packet sent to the remote host. The number of +data bytes is ignored if the protocol is \*(L"tcp\*(R". The minimum (and +default) number of data bytes is 1 if the protocol is \*(L"udp\*(R" and 0 +otherwise. The maximum number of data bytes that can be specified is +65535, but staying below the \s-1MTU\s0 (1472 bytes for \s-1ICMP\s0) is recommended. +Many small devices cannot deal with fragmented \s-1ICMP\s0 packets. +.Sp +If \f(CW\*(C`device\*(C'\fR is given, this device is used to bind the source endpoint +before sending the ping packet. I believe this only works with +superuser privileges and with udp and icmp protocols at this time. +.Sp +If <tos> is given, this ToS is configured into the socket. +.Sp +For icmp, \f(CW\*(C`ttl\*(C'\fR can be specified to set the \s-1TTL\s0 of the outgoing packet. +.Sp +Valid \f(CW\*(C`family\*(C'\fR values for IPv4: +.Sp +.Vb 1 +\& 4, v4, ip4, ipv4, AF_INET (constant) +.Ve +.Sp +Valid \f(CW\*(C`family\*(C'\fR values for IPv6: +.Sp +.Vb 1 +\& 6, v6, ip6, ipv6, AF_INET6 (constant) +.Ve +.Sp +The \f(CW\*(C`host\*(C'\fR argument implicitly specifies the family if the family +argument is not given. +.Sp +The \f(CW\*(C`port\*(C'\fR argument is only valid for a udp, tcp or stream ping, and will not +do what you think it does. ping returns true when we get a \*(L"Connection refused\*(R"! +The default is the echo port. +.Sp +The \f(CW\*(C`bind\*(C'\fR argument specifies the local_addr to bind to. +By specifying a bind argument you don't need the bind method. +.Sp +The \f(CW\*(C`gateway\*(C'\fR argument is only valid for IPv6, and requires a IPv6 +address. +.Sp +The \f(CW\*(C`retrans\*(C'\fR argument the exponential backoff rate, default 1.2. +It matches the \f(CW$def_factor\fR global. +.Sp +The \f(CW\*(C`dontfrag\*(C'\fR argument sets the \s-1IP_DONTFRAG\s0 bit, but note that +\&\s-1IP_DONTFRAG\s0 is not yet defined by Socket, and not available on many +systems. Then it is ignored. On linux it also sets \s-1IP_MTU_DISCOVER\s0 to +\&\s-1IP_PMTUDISC_DO\s0 but need we don't chunk oversized packets. You need to +set \f(CW$data_size\fR manually. +.ie n .IP "$p\->ping($host [, $timeout [, $family]]);" 4 +.el .IP "\f(CW$p\fR\->ping($host [, \f(CW$timeout\fR [, \f(CW$family\fR]]);" 4 +.IX Xref "ping" +.IX Item "$p->ping($host [, $timeout [, $family]]);" +Ping the remote host and wait for a response. \f(CW$host\fR can be either the +hostname or the \s-1IP\s0 number of the remote host. The optional timeout +must be greater than 0 seconds and defaults to whatever was specified +when the ping object was created. Returns a success flag. If the +hostname cannot be found or there is a problem with the \s-1IP\s0 number, the +success flag returned will be undef. Otherwise, the success flag will +be 1 if the host is reachable and 0 if it is not. For most practical +purposes, undef and 0 and can be treated as the same case. In array +context, the elapsed time as well as the string form of the ip the +host resolved to are also returned. The elapsed time value will +be a float, as returned by the \fBTime::HiRes::time()\fR function, if \fBhires()\fR +has been previously called, otherwise it is returned as an integer. +.ie n .IP "$p\->source_verify( { 0 | 1 } );" 4 +.el .IP "\f(CW$p\fR\->source_verify( { 0 | 1 } );" 4 +.IX Xref "source_verify" +.IX Item "$p->source_verify( { 0 | 1 } );" +Allows source endpoint verification to be enabled or disabled. +This is useful for those remote destinations with multiples +interfaces where the response may not originate from the same +endpoint that the original destination endpoint was sent to. +This only affects udp and icmp protocol pings. +.Sp +This is enabled by default. +.ie n .IP "$p\->service_check( { 0 | 1 } );" 4 +.el .IP "\f(CW$p\fR\->service_check( { 0 | 1 } );" 4 +.IX Xref "service_check" +.IX Item "$p->service_check( { 0 | 1 } );" +Set whether or not the connect behavior should enforce +remote service availability as well as reachability. Normally, +if the remote server reported \s-1ECONNREFUSED,\s0 it must have been +reachable because of the status packet that it reported. +With this option enabled, the full three-way tcp handshake +must have been established successfully before it will +claim it is reachable. \s-1NOTE:\s0 It still does nothing more +than connect and disconnect. It does not speak any protocol +(i.e., \s-1HTTP\s0 or \s-1FTP\s0) to ensure the remote server is sane in +any way. The remote server \s-1CPU\s0 could be grinding to a halt +and unresponsive to any clients connecting, but if the kernel +throws the \s-1ACK\s0 packet, it is considered alive anyway. To +really determine if the server is responding well would be +application specific and is beyond the scope of Net::Ping. +For udp protocol, enabling this option demands that the +remote server replies with the same udp data that it was sent +as defined by the udp echo service. +.Sp +This affects the \*(L"udp\*(R", \*(L"tcp\*(R", and \*(L"syn\*(R" protocols. +.Sp +This is disabled by default. +.ie n .IP "$p\->tcp_service_check( { 0 | 1 } );" 4 +.el .IP "\f(CW$p\fR\->tcp_service_check( { 0 | 1 } );" 4 +.IX Xref "tcp_service_check" +.IX Item "$p->tcp_service_check( { 0 | 1 } );" +Deprecated method, but does the same as \fBservice_check()\fR method. +.ie n .IP "$p\->hires( { 0 | 1 } );" 4 +.el .IP "\f(CW$p\fR\->hires( { 0 | 1 } );" 4 +.IX Xref "hires" +.IX Item "$p->hires( { 0 | 1 } );" +With 1 causes this module to use Time::HiRes module, allowing milliseconds +to be returned by subsequent calls to \fBping()\fR. +.ie n .IP "$p\->time" 4 +.el .IP "\f(CW$p\fR\->time" 4 +.IX Xref "time" +.IX Item "$p->time" +The current time, hires or not. +.ie n .IP "$p\->socket_blocking_mode( $fh, $mode );" 4 +.el .IP "\f(CW$p\fR\->socket_blocking_mode( \f(CW$fh\fR, \f(CW$mode\fR );" 4 +.IX Xref "socket_blocking_mode" +.IX Item "$p->socket_blocking_mode( $fh, $mode );" +Sets or clears the O_NONBLOCK flag on a file handle. +.ie n .IP "$p\->\s-1IPV6_USE_MIN_MTU\s0" 4 +.el .IP "\f(CW$p\fR\->\s-1IPV6_USE_MIN_MTU\s0" 4 +.IX Xref "IPV6_USE_MIN_MTU" +.IX Item "$p->IPV6_USE_MIN_MTU" +With argument sets the option. +Without returns the option value. +.ie n .IP "$p\->\s-1IPV6_RECVPATHMTU\s0" 4 +.el .IP "\f(CW$p\fR\->\s-1IPV6_RECVPATHMTU\s0" 4 +.IX Xref "IPV6_RECVPATHMTU" +.IX Item "$p->IPV6_RECVPATHMTU" +Notify an according IPv6 \s-1MTU.\s0 +.Sp +With argument sets the option. +Without returns the option value. +.ie n .IP "$p\->\s-1IPV6_HOPLIMIT\s0" 4 +.el .IP "\f(CW$p\fR\->\s-1IPV6_HOPLIMIT\s0" 4 +.IX Xref "IPV6_HOPLIMIT" +.IX Item "$p->IPV6_HOPLIMIT" +With argument sets the option. +Without returns the option value. +.ie n .IP "$p\->\s-1IPV6_REACHCONF\s0 \fI\s-1NYI\s0\fR" 4 +.el .IP "\f(CW$p\fR\->\s-1IPV6_REACHCONF\s0 \fI\s-1NYI\s0\fR" 4 +.IX Xref "IPV6_REACHCONF" +.IX Item "$p->IPV6_REACHCONF NYI" +Sets ipv6 reachability +\&\s-1IPV6_REACHCONF\s0 was removed in \s-1RFC3542.\s0 ping6 \-R supports it. +\&\s-1IPV6_REACHCONF\s0 requires root/admin permissions. +.Sp +With argument sets the option. +Without returns the option value. +.Sp +Not yet implemented. +.ie n .IP "$p\->bind($local_addr);" 4 +.el .IP "\f(CW$p\fR\->bind($local_addr);" 4 +.IX Xref "bind" +.IX Item "$p->bind($local_addr);" +Sets the source address from which pings will be sent. This must be +the address of one of the interfaces on the local host. \f(CW$local_addr\fR +may be specified as a hostname or as a text \s-1IP\s0 address such as +\&\*(L"192.168.1.1\*(R". +.Sp +If the protocol is set to \*(L"tcp\*(R", this method may be called any +number of times, and each call to the \fBping()\fR method (below) will use +the most recent \f(CW$local_addr\fR. If the protocol is \*(L"icmp\*(R" or \*(L"udp\*(R", +then \fBbind()\fR must be called at most once per object, and (if it is +called at all) must be called before the first call to \fBping()\fR for that +object. +.Sp +The \fBbind()\fR call can be omitted when specifying the \f(CW\*(C`bind\*(C'\fR option to +\&\fBnew()\fR. +.ie n .IP "$p\->message_type([$ping_type]);" 4 +.el .IP "\f(CW$p\fR\->message_type([$ping_type]);" 4 +.IX Xref "message_type" +.IX Item "$p->message_type([$ping_type]);" +When you are using the \*(L"icmp\*(R" protocol, this call permit to change the +message type to 'echo' or 'timestamp' (only for IPv4, see \s-1RFC 792\s0). +.Sp +Without argument, it returns the currently used icmp protocol message type. +By default, it returns 'echo'. +.ie n .IP "$p\->open($host);" 4 +.el .IP "\f(CW$p\fR\->open($host);" 4 +.IX Xref "open" +.IX Item "$p->open($host);" +When you are using the \*(L"stream\*(R" protocol, this call pre-opens the +tcp socket. It's only necessary to do this if you want to +provide a different timeout when creating the connection, or +remove the overhead of establishing the connection from the +first ping. If you don't call \f(CW\*(C`open()\*(C'\fR, the connection is +automatically opened the first time \f(CW\*(C`ping()\*(C'\fR is called. +This call simply does nothing if you are using any protocol other +than stream. +.Sp +The \f(CW$host\fR argument can be omitted when specifying the \f(CW\*(C`host\*(C'\fR option to +\&\fBnew()\fR. +.ie n .IP "$p\->ack( [ $host ] );" 4 +.el .IP "\f(CW$p\fR\->ack( [ \f(CW$host\fR ] );" 4 +.IX Xref "ack" +.IX Item "$p->ack( [ $host ] );" +When using the \*(L"syn\*(R" protocol, use this method to determine +the reachability of the remote host. This method is meant +to be called up to as many times as \fBping()\fR was called. Each +call returns the host (as passed to \fBping()\fR) that came back +with the \s-1TCP ACK.\s0 The order in which the hosts are returned +may not necessarily be the same order in which they were +\&\s-1SYN\s0 queued using the \fBping()\fR method. If the timeout is +reached before the \s-1TCP ACK\s0 is received, or if the remote +host is not listening on the port attempted, then the \s-1TCP\s0 +connection will not be established and \fBack()\fR will return +undef. In list context, the host, the ack time, the dotted ip +string, and the port number will be returned instead of just the host. +If the optional \f(CW$host\fR argument is specified, the return +value will be pertaining to that host only. +This call simply does nothing if you are using any protocol +other than \*(L"syn\*(R". +.Sp +When \*(L"new\*(R" had a host option, this host will be used. +Without \f(CW$host\fR argument, all hosts are scanned. +.ie n .IP "$p\->nack( $failed_ack_host );" 4 +.el .IP "\f(CW$p\fR\->nack( \f(CW$failed_ack_host\fR );" 4 +.IX Xref "nack" +.IX Item "$p->nack( $failed_ack_host );" +The reason that \f(CW\*(C`host $failed_ack_host\*(C'\fR did not receive a +valid \s-1ACK.\s0 Useful to find out why when \f(CW\*(C`ack($fail_ack_host)\*(C'\fR +returns a false value. +.ie n .IP "$p\->ack_unfork($host)" 4 +.el .IP "\f(CW$p\fR\->ack_unfork($host)" 4 +.IX Xref "ack_unfork" +.IX Item "$p->ack_unfork($host)" +The variant called by \*(L"ack\*(R" with the \*(L"syn\*(R" protocol and \f(CW$syn_forking\fR +enabled. +.ie n .IP "$p\->ping_icmp([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_icmp([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_icmp" +.IX Item "$p->ping_icmp([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the icmp protocol. +.ie n .IP "$p\->ping_icmpv6([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_icmpv6([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_icmpv6" +.IX Item "$p->ping_icmpv6([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the icmpv6 protocol. +.ie n .IP "$p\->ping_stream([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_stream([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_stream" +.IX Item "$p->ping_stream([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the stream protocol. +.Sp +Perform a stream ping. If the tcp connection isn't +already open, it opens it. It then sends some data and waits for +a reply. It leaves the stream open on exit. +.ie n .IP "$p\->ping_syn([$host, $ip, $start_time, $stop_time])" 4 +.el .IP "\f(CW$p\fR\->ping_syn([$host, \f(CW$ip\fR, \f(CW$start_time\fR, \f(CW$stop_time\fR])" 4 +.IX Xref "ping_syn" +.IX Item "$p->ping_syn([$host, $ip, $start_time, $stop_time])" +The \*(L"ping\*(R" method used with the syn protocol. +Sends a \s-1TCP SYN\s0 packet to host specified. +.ie n .IP "$p\->ping_syn_fork([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_syn_fork([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_syn_fork" +.IX Item "$p->ping_syn_fork([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the forking syn protocol. +.ie n .IP "$p\->ping_tcp([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_tcp([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_tcp" +.IX Item "$p->ping_tcp([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the tcp protocol. +.ie n .IP "$p\->ping_udp([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_udp([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_udp" +.IX Item "$p->ping_udp([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the udp protocol. +.Sp +Perform a udp echo ping. Construct a message of +at least the one-byte sequence number and any additional data bytes. +Send the message out and wait for a message to come back. If we +get a message, make sure all of its parts match. If they do, we are +done. Otherwise go back and wait for the message until we run out +of time. Return the result of our efforts. +.ie n .IP "$p\->ping_external([$host, $timeout, $family])" 4 +.el .IP "\f(CW$p\fR\->ping_external([$host, \f(CW$timeout\fR, \f(CW$family\fR])" 4 +.IX Xref "ping_external" +.IX Item "$p->ping_external([$host, $timeout, $family])" +The \*(L"ping\*(R" method used with the external protocol. +Uses Net::Ping::External to do an external ping. +.ie n .IP "$p\->tcp_connect([$ip, $timeout])" 4 +.el .IP "\f(CW$p\fR\->tcp_connect([$ip, \f(CW$timeout\fR])" 4 +.IX Xref "tcp_connect" +.IX Item "$p->tcp_connect([$ip, $timeout])" +Initiates a \s-1TCP\s0 connection, for a tcp ping. +.ie n .IP "$p\->tcp_echo([$ip, $timeout, $pingstring])" 4 +.el .IP "\f(CW$p\fR\->tcp_echo([$ip, \f(CW$timeout\fR, \f(CW$pingstring\fR])" 4 +.IX Xref "tcp_echo" +.IX Item "$p->tcp_echo([$ip, $timeout, $pingstring])" +Performs a \s-1TCP\s0 echo. +It writes the given string to the socket and then reads it +back. It returns 1 on success, 0 on failure. +.ie n .IP "$p\->\fBclose()\fR;" 4 +.el .IP "\f(CW$p\fR\->\fBclose()\fR;" 4 +.IX Xref "close" +.IX Item "$p->close();" +Close the network connection for this ping object. The network +connection is also closed by \*(L"undef \f(CW$p\fR\*(R". The network connection is +automatically closed if the ping object goes out of scope (e.g. \f(CW$p\fR is +local to a subroutine and you leave the subroutine). +.ie n .IP "$p\->port_number([$port_number])" 4 +.el .IP "\f(CW$p\fR\->port_number([$port_number])" 4 +.IX Xref "port_number" +.IX Item "$p->port_number([$port_number])" +When called with a port number, the port number used to ping is set to +\&\f(CW$port_number\fR rather than using the echo port. It also has the effect +of calling \f(CW\*(C`$p\->service_check(1)\*(C'\fR causing a ping to return a successful +response only if that specific port is accessible. This function returns +the value of the port that \*(L"ping\*(R" will connect to. +.ie n .IP "$p\->mselect" 4 +.el .IP "\f(CW$p\fR\->mselect" 4 +.IX Xref "mselect" +.IX Item "$p->mselect" +A \f(CW\*(C`select()\*(C'\fR wrapper that compensates for platform +peculiarities. +.ie n .IP "$p\->ntop" 4 +.el .IP "\f(CW$p\fR\->ntop" 4 +.IX Xref "ntop" +.IX Item "$p->ntop" +Platform abstraction over \f(CW\*(C`inet_ntop()\*(C'\fR +.ie n .IP "$p\->checksum($msg)" 4 +.el .IP "\f(CW$p\fR\->checksum($msg)" 4 +.IX Xref "checksum" +.IX Item "$p->checksum($msg)" +Do a checksum on the message. Basically sum all of +the short words and fold the high order bits into the low order bits. +.ie n .IP "$p\->icmp_result" 4 +.el .IP "\f(CW$p\fR\->icmp_result" 4 +.IX Xref "icmp_result" +.IX Item "$p->icmp_result" +Returns a list of addr, type, subcode. +.ie n .IP "pingecho($host [, $timeout]);" 4 +.el .IP "pingecho($host [, \f(CW$timeout\fR]);" 4 +.IX Xref "pingecho" +.IX Item "pingecho($host [, $timeout]);" +To provide backward compatibility with the previous version of +Net::Ping, a \f(CW\*(C`pingecho()\*(C'\fR subroutine is available with the same +functionality as before. \f(CW\*(C`pingecho()\*(C'\fR uses the tcp protocol. The +return values and parameters are the same as described for the \*(L"ping\*(R" +method. This subroutine is obsolete and may be removed in a future +version of Net::Ping. +.IP "wakeonlan($mac, [$host, [$port]])" 4 +.IX Xref "wakeonlan" +.IX Item "wakeonlan($mac, [$host, [$port]])" +Emit the popular wake-on-lan magic udp packet to wake up a local +device. See also Net::Wake, but this has the mac address as 1st arg. +\&\f(CW$host\fR should be the local gateway. Without it will broadcast. +.Sp +Default host: '255.255.255.255' +Default port: 9 +.Sp +.Vb 1 +\& perl \-MNet::Ping=wakeonlan \-e\*(Aqwakeonlan "e0:69:95:35:68:d2"\*(Aq +.Ve +.SH "NOTES" +.IX Header "NOTES" +There will be less network overhead (and some efficiency in your +program) if you specify either the udp or the icmp protocol. The tcp +protocol will generate 2.5 times or more traffic for each ping than +either udp or icmp. If many hosts are pinged frequently, you may wish +to implement a small wait (e.g. 25ms or more) between each ping to +avoid flooding your network with packets. +.PP +The icmp and icmpv6 protocols requires that the program be run as root +or that it be setuid to root. The other protocols do not require +special privileges, but not all network devices implement tcp or udp +echo. +.PP +Local hosts should normally respond to pings within milliseconds. +However, on a very congested network it may take up to 3 seconds or +longer to receive an echo packet from the remote host. If the timeout +is set too low under these conditions, it will appear that the remote +host is not reachable (which is almost the truth). +.PP +Reachability doesn't necessarily mean that the remote host is actually +functioning beyond its ability to echo packets. tcp is slightly better +at indicating the health of a system than icmp because it uses more +of the networking stack to respond. +.PP +Because of a lack of anything better, this module uses its own +routines to pack and unpack \s-1ICMP\s0 packets. It would be better for a +separate module to be written which understands all of the different +kinds of \s-1ICMP\s0 packets. +.SH "INSTALL" +.IX Header "INSTALL" +The latest source tree is available via git: +.PP +.Vb 2 +\& git clone https://github.com/rurban/Net\-Ping.git +\& cd Net\-Ping +.Ve +.PP +The tarball can be created as follows: +.PP +.Vb 1 +\& perl Makefile.PL ; make ; make dist +.Ve +.PP +The latest Net::Ping releases are included in cperl and perl5. +.SH "BUGS" +.IX Header "BUGS" +For a list of known issues, visit: +.PP +<https://rt.cpan.org/NoAuth/Bugs.html?Dist=Net\-Ping> +and +<https://github.com/rurban/Net\-Ping/issues> +.PP +To report a new bug, visit: +.PP +<https://github.com/rurban/Net\-Ping/issues> +.SH "AUTHORS" +.IX Header "AUTHORS" +.Vb 3 +\& Current maintainers: +\& perl11 (for cperl, with IPv6 support and more) +\& p5p (for perl5) +\& +\& Previous maintainers: +\& bbb@cpan.org (Rob Brown) +\& Steve Peters +\& +\& External protocol: +\& colinm@cpan.org (Colin McMillen) +\& +\& Stream protocol: +\& bronson@trestle.com (Scott Bronson) +\& +\& Wake\-on\-lan: +\& 1999\-2003 Clinton Wong +\& +\& Original pingecho(): +\& karrer@bernina.ethz.ch (Andreas Karrer) +\& pmarquess@bfsec.bt.co.uk (Paul Marquess) +\& +\& Original Net::Ping author: +\& mose@ns.ccsn.edu (Russell Mosemann) +.Ve +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 2017\-2020, Reini Urban. All rights reserved. +.PP +Copyright (c) 2016, cPanel Inc. All rights reserved. +.PP +Copyright (c) 2012, Steve Peters. All rights reserved. +.PP +Copyright (c) 2002\-2003, Rob Brown. All rights reserved. +.PP +Copyright (c) 2001, Colin McMillen. All rights reserved. +.PP +This program is free software; you may redistribute it and/or +modify it under the same terms as Perl itself. |