liboping: use SO_TIMESTAMP when available
Current implementation of liboping relies on getting enough CPU shares
and getting those in a timely manner in order to determine correct ping
response times.
Avoid this limitation when kernel is able to provide packet reception
times using SO_TIMESTAMP. (as is done by iputils's ping utility)
Signed-off-by: Florian Forster <octo@verplant.org>
Current implementation of liboping relies on getting enough CPU shares
and getting those in a timely manner in order to determine correct ping
response times.
Avoid this limitation when kernel is able to provide packet reception
times using SO_TIMESTAMP. (as is done by iputils's ping utility)
Signed-off-by: Florian Forster <octo@verplant.org>
README: Document Linux capabilities and UNIX set-UID root solutions.
oping(8): Document the new SetUID behavior in connection with the "-f" option.
Bump version to 1.5.1; Update ChangeLog.
src/oping.c: Mark unused argument to avoid compiler warnings.
src/oping.c: Remove __attribute__ flags when using non-GNU compiler.
src/liboping.c: Always set the QoS member. Default to 0.
This should fix the following warning / error:
liboping.c:599: warning: comparison is always true due to limited
range of data type
Thanks to James Bromberger for reporting this!
This should fix the following warning / error:
liboping.c:599: warning: comparison is always true due to limited
range of data type
Thanks to James Bromberger for reporting this!
oping: Add alias for the "Voice Admit" DSCP.
Bump version to 1.5.0; Update ChangeLog.
ping_iterator_get_info(3): Document the "PING_INFO_RECV_QOS" flag.
src/oping.h: Change the default payload message.
Merge branch 'vm/qos'
oping(8): Document the displayed "qos=" field.
src/oping.c: Only print QoS information if it's not 0/0.
AUTHORS: Add Vladimir Melnikov.
src/oping.c: Add function for formatted printing of the QoS byte.
oping(8): Document the "be" and "cs<n>" DSCP abbreviations.
Rename "ToS" to "QoS" everywhere, to account for DSCP being used in IPv6 …
… and recommended for IPv4.
… and recommended for IPv4.
src/oping.c: Remove useless "strlen".
src/oping.c: Add the "be" and "cs[0-7]" DSCPs.
oping(8): Document the "-Q" option.
src/oping.c: Implement named arguments for DiffServ flags.
oping: Improve parsing of the "-z" argument.
Fix printing the ToS value.
Apparently "%#04x" prints 0 as "0000" instead of "0x00". *sigh*
Apparently "%#04x" prints 0 as "0000" instead of "0x00". *sigh*
ping_set_tos: Improve error handling.
ping_receive_one: Fix a typo.
src/liboping.c: Fix building with debugging enabled.
Rename "PING_INFO_TOS" → "PING_INFO_RECV_TOS".
ping_setopt(3): Document the new "PING_OPT_TOS" option.
src/liboping.c: Set the "IP_RECVTOS" and "IPV6_RECVTCLASS" socket options.
src/liboping.c: Use an uint8_t for storing the ToS.
Implement support for QoS / ToS fields.
Hello Florian,
I've made some functionality extension to debug QoS in the network -
ability to set tos (present in most standard "pings") and to verify
received tos field (didn't see any ping command with this feature).
May be it will need to someone else.
Best regards,
Vladimir
Hello Florian,
I've made some functionality extension to debug QoS in the network -
ability to set tos (present in most standard "pings") and to verify
received tos field (didn't see any ping command with this feature).
May be it will need to someone else.
Best regards,
Vladimir
src/Makefile.am: Use "LDADD" for applications, "LIBADD" for the library.
Use "LDFLAGS" only for "-version-info".
Use "LDFLAGS" only for "-version-info".
Relicense: Use the LGPL v2.1 (or later) for liboping.
The "oping" and "noping" utilities are still GPL v2.
Sebastian Harl, the only other copyright holder on the library, agrees
with this license change.
The "oping" and "noping" utilities are still GPL v2.
Sebastian Harl, the only other copyright holder on the library, agrees
with this license change.
oping(8): Document the colors used by noping.
Bumbed version to 1.4.0, updated ChangeLog.
oping(8): Document "noping", too.
README: Document "oping" and "noping".
README: Convert to Unicode.
src/oping.c: Define NCURSES_OPAQUE.
src/oping.c: Resizing the scrolling region seems to work with this parameters.
I don't understand what I'm doing different to previously, but whatever
it is it seems to do the trick.
I don't understand what I'm doing different to previously, but whatever
it is it seems to do the trick.
noping: Further cleanup of the curses stuff.
noping: Use colors to highlight "unusual" response times.
noping: Print host name in bold.
noping: Handle resizing of X windows gracefully.
src/oping.c: Move "context_get_packet_loss" into a separate function.
src/oping.c: Move calculation of average and stddev to separate functions.
src/oping.c: Add ncurses based front-end.
src/oping.c: Move printing header and footer into separate functions.
contrib/liboping.spec: Added "provided as is" header.
contrib/liboping.spec: Added example spec file.
I'm using collectd and the ping plugin for a project I'm working on. I noticed
that collectd is distributing a starter spec file for building RPMs but that
there wa s no such spec file for liboping. I created one which I have attached
to this email. I'm not too familiar with creating RPMs but I think it's a good
start and I was able to get a package built and installed using it. I'm giving
it to you so if you wish to put in on your website for others to start with
when creating packages t hen you may. I hope others may find this useful.
I'm using collectd and the ping plugin for a project I'm working on. I noticed
that collectd is distributing a starter spec file for building RPMs but that
there wa s no such spec file for liboping. I created one which I have attached
to this email. I'm not too familiar with creating RPMs but I think it's a good
start and I was able to get a package built and installed using it. I'm giving
it to you so if you wish to put in on your website for others to start with
when creating packages t hen you may. I hope others may find this useful.
minor doc fixes for liboping
Hello,
I was reading the documentation of your liboping library as I'd like to
use it for a small project of mine and couldn't help noticing a few typos
in the docs, please find attached a tiny patch fixing them.
Thanks for writing this library!
VZ
Signed-off-by: Florian Forster <octo@verplant.org>
Hello,
I was reading the documentation of your liboping library as I'd like to
use it for a small project of mine and couldn't help noticing a few typos
in the docs, please find attached a tiny patch fixing them.
Thanks for writing this library!
VZ
Signed-off-by: Florian Forster <octo@verplant.org>
ChangeLog: Oops, there were actually a couple more changes in that release.
Bumped version to 1.3.4 and updated ChangeLog.
src/liboping.c: ping_receive_all: Clear the timer when a FD signals an error.
The loop likely never ends if the error isn't handled, so the least we
can do is ignore the file descriptor in the future.
The loop likely never ends if the error isn't handled, so the least we
can do is ignore the file descriptor in the future.
bindings/perl: Bumped version to 1.21 and updated Changes.
bindings/perl/Oping.xs: Fix an off-by-one error when allocating a Perl string.
In the previous code the null byte was included in the Perl string,
making the string handling awkward.
In the previous code the null byte was included in the Perl string,
making the string handling awkward.
oping: Temporarily drop privileges if supported by the system.
This tries to solve the read-from-any-file-issue more elegantly by
dropping privileges first thing after start-up and regaining privileges
just to open the sockets.
This has the advantage that the "-f" option is available for all users
again and files are opened according to *their* permissions.
Systems not supporting the _POSIX_SAVED_IDS feature still behave as
before, i. e. if real and effective user IDs don't match, only "-" may
be specified as input file.
This tries to solve the read-from-any-file-issue more elegantly by
dropping privileges first thing after start-up and regaining privileges
just to open the sockets.
This has the advantage that the "-f" option is available for all users
again and files are opened according to *their* permissions.
Systems not supporting the _POSIX_SAVED_IDS feature still behave as
before, i. e. if real and effective user IDs don't match, only "-" may
be specified as input file.
ChangeLog: Updated the changelog to reflect the last change.
oping: Allow “-f -” even if uid and euid differ.
Thanks to Sebastian for the idea :)
Thanks to Sebastian for the idea :)
Bumped version to 1.3.3; Updated ChangeLog.
oping: Disable the “-f” option when real and effective user IDs don't match.
Thanks to Steve Kemp who reported this issue as Debian bug #548684.
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548684>
Thanks to Steve Kemp who reported this issue as Debian bug #548684.
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548684>
Bumped version to 1.3.2; Updated ChangeLog.
src/oping.h: Do not check HAVE_*_H for system headers.
Imho, this is not a good thing to do for an installed header since it requires
every user to define those macros as well.
Imho, this is not a good thing to do for an installed header since it requires
every user to define those macros as well.
15 years agoping_iterator_get_info(3): Document missing functionality under Debian Etch. liboping-1.3.1
ping_iterator_get_info(3): Document missing functionality under Debian Etch.
COPYING: Add GPLv2.
Bumped version to 1.3.1; Updated ChangeLog.
src/liboping.c: Fixed argument verification.
ping_iterator_get_info()'s 'buffer' argument _may_ be NULL, since the user
might only be interested in the size of the (to be) returned value. If
'buffer' is NULL, '*buffer_len' should be 0, though, to make sure nothing gets
written to 'buffer'.
This bug was introduced in commit 9ae85a09d919777c9be52e55b23c08bf2c8c1d0e.
ping_iterator_get_info()'s 'buffer' argument _may_ be NULL, since the user
might only be interested in the size of the (to be) returned value. If
'buffer' is NULL, '*buffer_len' should be 0, though, to make sure nothing gets
written to 'buffer'.
This bug was introduced in commit 9ae85a09d919777c9be52e55b23c08bf2c8c1d0e.
Net::Oping: Set the $VERSION variable correctly.
.gitignore: Add tarballs.
ChangeLog: Updated the date of the 1.3.0 entry.
Net::Oping: Bumped version to 1.20.
Net::Oping: Add the `device' method.
src/oping.h: Update OPING_VERSION.
Bumped version to 1.3.0; Updated ChangeLog.
Merge branch 'liboping-1.2'
src/oping.c: Added -D <interface name> command line option.
This option sets the outgoing network device to use.
I decided not to reuse the -I command line option for that purpose (which is
what GNU ping is doing), for the following reasons:
* In theory, an interface name could be confused with a host name.
* Imho, it's better to specify things explicitly.
* This approach is more flexible.
This option sets the outgoing network device to use.
I decided not to reuse the -I command line option for that purpose (which is
what GNU ping is doing), for the following reasons:
* In theory, an interface name could be confused with a host name.
* Imho, it's better to specify things explicitly.
* This approach is more flexible.
Added support for PING_OPT_DEVICE.
This option may be used to set the outgoing network device to be used. The
value passed must be a char-pointer to a null-terminated string specifying an
interface name (e.g. eth0).
Please note that this might not be supported by all operating systems. In that
case, ping_setopt() sets the error to "operation not supported".
This option may be used to set the outgoing network device to be used. The
value passed must be a char-pointer to a null-terminated string specifying an
interface name (e.g. eth0).
Please note that this might not be supported by all operating systems. In that
case, ping_setopt() sets the error to "operation not supported".
src/liboping.c: Catch NULL pointers passed to public functions.
Libraries should not segfault - ever - no matter what a user is doing and how
stupid that might be.
Libraries should not segfault - ever - no matter what a user is doing and how
stupid that might be.
Added .gitignore.
src/liboping.c: Let ping_setopt() return -1 if 'value' is NULL.
The manpage states that 'value' must not be NULL. Anyway, imho, it's still
better to avoid segfaults inside a library.
The manpage states that 'value' must not be NULL. Anyway, imho, it's still
better to avoid segfaults inside a library.
src/liboping.c: Fix some format strings.
src/liboping.c: Fixed the handling of multiple hosts.
ping_receive_all() used to always pass the first host object to
ping_receive_one() which used that host object to determine the expected
address family. Thus, when pinging v4 and v6 hosts in parallel, some of them
would have never been considered but assumed to be timed out.
While at it, the code has been clarified in regard to matching an ECHO_REPLY
with the appropriate host object.
ping_receive_all() used to always pass the first host object to
ping_receive_one() which used that host object to determine the expected
address family. Thus, when pinging v4 and v6 hosts in parallel, some of them
would have never been considered but assumed to be timed out.
While at it, the code has been clarified in regard to matching an ECHO_REPLY
with the appropriate host object.
src/liboping.c: Do not reset recv_ttl in ping_receive_one().
Instead, reset the value of all host object in ping_receive_all().
ping_receive_one() does not necessarily get a pointer to the host object for
which we receive a reply, since ICMP messages may be received on _any_ raw
socket.
Instead, reset the value of all host object in ping_receive_all().
ping_receive_one() does not necessarily get a pointer to the host object for
which we receive a reply, since ICMP messages may be received on _any_ raw
socket.
Minor documentation fixes.
src/oping.c: Exit successfully when using the -h option.
src/oping.c: Improved the help output.
A short description has been added for each option. Also, print the program
version and author.
A short description has been added for each option. Also, print the program
version and author.
src/oping.c: Improved and unified error messages when parsing CL options.
Bumped version to 1.2.0; Updated ChangeLog.
AUTHORS: Add Dan Sully.
oping(8): Document the new `-f' option.
src/oping.c: Change some codig style.
src/oping.c: Only treat "-" as STDIN, not all strings beginning with "-".
Allow reading of files containing hostnames.
Signed-off-by: Dan Sully <daniel-github@electricrain.com>
Signed-off-by: Florian Forster <octo@verplant.org>
Signed-off-by: Dan Sully <daniel-github@electricrain.com>
Signed-off-by: Florian Forster <octo@verplant.org>
src/liboping.c: Check if IPPROTO_IPV6 and IPV6_RECVHOPLIMIT are defined.
src/liboping.c: Made sstrerror() static.
This is a private helper function only.
This is a private helper function only.
Bumped version to 1.1.2; Updated ChangeLog.
15 years agosrc/liboping.c: Check if pointer is NULL before dereferencing it in `ping_receive_ipv4'.
src/liboping.c: Check if pointer is NULL before dereferencing it in `ping_receive_ipv4'.
Thanks to Tomasz Pala for pointing out the problem.
Thanks to Tomasz Pala for pointing out the problem.
src/oping.h: Bump the OPING_VERSION, too.
Bumped version to 1.1.1; Updated ChangeLog.