.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" 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 .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "liboping 3" .TH liboping 3 "2018-11-01" "1.10.0" "liboping" .\" 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" liboping \- Library to send ICMPv4/ICMPv6 echo packets to multiple hosts .SH "DESCRIPTION" .IX Header "DESCRIPTION" This is an overview of liboping, a C library to send \s-1ICMP ECHO_REQUEST\s0 packets to remote hosts and measure the time it takes for replies to be received. This method, often simply called \*(L"ping\*(R", is a common way to measure network latency and/or host reachability. .PP The goals of this library are to provide the above functionality in a platform and protocol independent manner. The interface is simple, object oriented and (hopefully) ANSI-C compliant. .SH "GENERAL USAGE" .IX Header "GENERAL USAGE" There are two main types that are used by applications. Both are \*(L"opaque types\*(R", meaning they are structures that are \fBnot\fR completely defined in the header file, so you cannot access the structures' members. You don't need to, don't do it. These structures are subject to change without notice. .ie n .IP """pingobj_t""" 4 .el .IP "\f(CWpingobj_t\fR" 4 .IX Item "pingobj_t" A ping-object. You can set specific options for this object, add and remove hosts to/from it and send \s-1ICMP\s0 packets to all associated hosts. This is often called a \*(L"handle\*(R". .ie n .IP """pingobj_iter_t""" 4 .el .IP "\f(CWpingobj_iter_t\fR" 4 .IX Item "pingobj_iter_t" An iterator over the hosts associated with a \f(CW\*(C`pingobj_t\*(C'\fR object. This iterator can be used to query more information about a host, for example the hostname, the measured latency or the current \s-1ICMP\s0 sequence. .PP Upon startup you usually create one or more \f(CW\*(C`pingobj_t\*(C'\fR objects and add hosts to it using the \f(CW\*(C`ping_host_add\*(C'\fR method (see below). You periodically send \&\*(L"echo requests\*(R" using the \f(CW\*(C`ping_send\*(C'\fR method, iterate over all hosts using \&\f(CW\*(C`ping_iterator_get\*(C'\fR and \f(CW\*(C`ping_iterator_next\*(C'\fR. For each host you call \&\f(CW\*(C`ping_iterator_get_info\*(C'\fR to read the current latency and do something with it. .PP If an error occurs you can use \f(CW\*(C`ping_get_error\*(C'\fR so get information on what failed. .SH "LINKING WITH LIBOPING" .IX Header "LINKING WITH LIBOPING" Depending on you platform you don't need any extra libraries (e.g. GNU/Linux) or \f(CW\*(C`libsocket\*(C'\fR (using \f(CW\*(C`\-lsocket\*(C'\fR) if the \f(CW\*(C`socket\*(C'\fR function is not in the C\-library. The latter is the case for the Solaris operating system. .SH "SYMBOL NAMES" .IX Header "SYMBOL NAMES" All \*(L"official\*(R" function or method names are prefixed with \*(L"ping_\*(R". Don't use any other functions or methods. Although no such functions should exist. .SH "THREAD SAFETY" .IX Header "THREAD SAFETY" liboping has been designed to be as thread safe a possible. However, this has not been tested and may need some additional work. Use at your own risk and please report back any problems or success messages. Thank you :) .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBping_construct\fR\|(3), \&\fBping_setopt\fR\|(3), \&\fBping_host_add\fR\|(3), \&\fBping_send\fR\|(3), \&\fBping_get_error\fR\|(3), \&\fBping_iterator_count\fR\|(3), \&\fBping_iterator_get\fR\|(3), \&\fBping_iterator_get_info\fR\|(3), \&\fBping_iterator_get_context\fR\|(3) .SH "LICENSE" .IX Header "LICENSE" liboping is licensed under the \s-1LGPL 2.1\s0 or later. .SH "AUTHOR" .IX Header "AUTHOR" liboping is written by Florian \*(L"octo\*(R" Forster . Its homepage can be found at . .PP Copyright (c) 2006\-2017 by Florian \*(L"octo\*(R" Forster.