projects
/
icmpmonitor
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d01b48f
)
Rewrote tv_sub()
author
Aaron Taylor
<ataylor@subgeniuskitty.com>
Mon, 23 Sep 2019 06:38:54 +0000
(23:38 -0700)
committer
Aaron Taylor
<ataylor@subgeniuskitty.com>
Mon, 23 Sep 2019 06:38:54 +0000
(23:38 -0700)
icmpmonitor.c
patch
|
blob
|
blame
|
history
diff --git
a/icmpmonitor.c
b/icmpmonitor.c
index
52709af
..
44faf41
100644
(file)
--- a/
icmpmonitor.c
+++ b/
icmpmonitor.c
@@
-27,6
+27,7
@@
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <errno.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <errno.h>
+#include <assert.h>
#include "iniparser/iniparser.h"
#include "iniparser/iniparser.h"
@@
-90,18
+91,13
@@
checksum(uint16_t * data)
}
/*
}
/*
- * Subtracts two timeval structs.
- * Ensure out >= in.
- * Modifies out = out - in.
+ * Calculate difference between two timeval structs to within one second.
*/
*/
-
static
void
-t
v_sub(register struct timeval * out, register struct timeval * in
)
+void
+t
imeval_diff(struct timeval * a, const struct timeval * b
)
{
{
- if ((out->tv_usec -= in->tv_usec) < 0) {
- --out->tv_sec;
- out->tv_usec += 1000000;
- }
- out->tv_sec -= in->tv_sec;
+ assert(a->tv_sec >= b->tv_sec);
+ a->tv_sec -= b->tv_sec;
}
/*
}
/*
@@
-124,7
+120,7
@@
pinger(int ignore)
struct timeval now;
gettimeofday(&now, (struct timezone *) NULL);
struct timeval now;
gettimeofday(&now, (struct timezone *) NULL);
- t
v_sub
(&now, &p->last_ping_received);
+ t
imeval_diff
(&now, &p->last_ping_received);
if (now.tv_sec > (p->max_delay + p->ping_interval)) {
if ((p->host_up) || retry_down_cmd) {
if (now.tv_sec > (p->max_delay + p->ping_interval)) {
if ((p->host_up) || retry_down_cmd) {
@@
-140,7
+136,7
@@
pinger(int ignore)
}
gettimeofday(&now, (struct timezone *) NULL);
}
gettimeofday(&now, (struct timezone *) NULL);
- t
v_sub
(&now, &p->last_ping_sent);
+ t
imeval_diff
(&now, &p->last_ping_sent);
if (now.tv_sec > p->ping_interval) { /* Time to send ping */
icp = (struct icmp *) outpack;
if (now.tv_sec > p->ping_interval) { /* Time to send ping */
icp = (struct icmp *) outpack;
@@
-207,10
+203,10
@@
read_icmp_data(struct monitor_host * p)
memcpy(&p->last_ping_received, &tv, sizeof(tv));
memcpy(&p->last_ping_received, &tv, sizeof(tv));
- t
v_sub
(&tv, (struct timeval *) &icmp->icmp_data[0]);
+ t
imeval_diff
(&tv, (struct timeval *) &icmp->icmp_data[0]);
delay = tv.tv_sec * 1000 + (tv.tv_usec / 1000);
delay = tv.tv_sec * 1000 + (tv.tv_usec / 1000);
- if (verbose) printf("INFO: Got ICMP reply from %s
in %d ms.\n", p->name, delay
);
+ if (verbose) printf("INFO: Got ICMP reply from %s
.\n", p->name
);
if (!p->host_up) {
if (verbose) printf("INFO: Host %s started responding. Executing UP command.\n", p->name);
p->host_up = true;
if (!p->host_up) {
if (verbose) printf("INFO: Host %s started responding. Executing UP command.\n", p->name);
p->host_up = true;