Releases: dennypage/dpinger
Ability to set alarm hold over time
Log signal number on exit
This release adds logging of the signal number on exit.
Faster initial status, improved pid file support, and improved parameter checking
Send the first echo request at startup
At startup, dpinger is not able to report a valid status until it has received an echo reply or the loss interval on the first echo request has expired. Dpinger reports this indeterminate status as "0 0 0"
Previously, dpinger would wait a full send interval before sending the first echo request, which meant that the status would be indeterminate until the send interval plus the round trip time (or loss time if packets are lost). With this change, dpinger will send the first echo request without delay. In the absence of dataloss, this results in dpinger being able to determine status in one round trip time.
Enhanced pid file support
Previously, while dpinger would create a pid file, it would not check to see if the pid file already existed and was in use by another process. With this change, dpinger will not start if the pid file is owned by another running process. This prevents accidental overwriting of the pid file, report file, and report socket.
Reject negative numbers in parameters
Previously, dpinger would not detect negative numbers in parameters, usually resulting in very large values. Dpinger now detects, and rejects, negative numbers in parameters. The affected parameters include all time intervals, loss percentage, and data length.
Use accept4()
Previously, dpinger used accept() on the unix socket followed by a separate call to fcntl() to set the close on exec flag. If an alert was triggered in the narrow window between between accept() and fcntl(), the executed command would inherit the file descriptor of the socket connection. The reason dpinger previously used the accept()/fcntl() approach was to support legacy systems that did not yet offer accept4().
Now that these legacy systems have been retired from support, dpinger uses accept4(), which allows the close on exec flag to be set as part of the accept. This prevents the alert process from inheriting the open file descriptor regardless of when the alert is triggered.
The legacy accept()/fcntl() code can be re-enabled by defining DISABLE_ACCEPT4 during the build. If you encounter a currently supported platform where this is necessary, please add a comment to issue #30. If no one comments, the legacy code will be completely removed in a future release.
Optional priority receive scheduling and default parameter changes
Allow optional priority scheduling for the receive thread. Priority scheduling reduces processing delays for inbound echo reply packets, providing tighter timing on low latency connections and reducing the possibility of buffer overflows for inbound packets.
This release changes the default parameters as follows:
- Time Period from 30 seconds to 60 seconds
- Send Interval from 250 milliseconds to 500 milliseconds
- Loss Interval from 5x the Send Interval (1.125 seconds) to 4x the Send Interval (2 seconds)
The revised default values use less network bandwidth and fit better with various monitoring systems.
Parameter checking has been enhanced to ensure that there is at least one "resolved" request/reply probe at all times. It is now required that the Time Period be greater than 2x the Send Interval plus the Loss Interval. This prevents a rare issue with long Send or Loss Intervals in which no probes were available to report on, resulting in both latency and loss being reported as 0.
Defect correction for 32 bit systems
This release fixes an integer overflow affecting the standard deviation calculation on 32 bit systems.
Defect correction for 32 bit systems
This release fixes an integer overflow affecting the standard deviation calculation on 32 bit systems.
Defect correction
This release fixes a race condition seen on ultra low latency (~100us) links.
Add sample RRD scripts
Add sample scripts to create, update, and generate graphs with RRD.
Portability cleanup
Add simple Makefile for Linux.
Address issues with build for FreeBSD ports.
Add an option to specify ICMP data length
v1.5 Add -d option to allow setting data payload length