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 (from parent 1:
2acd035
)
Changed `keepBanging` global to `retry_down_cmd`. Misc cleanup.
author
Aaron Taylor
<ataylor@subgeniuskitty.com>
Sat, 21 Sep 2019 09:56:51 +0000
(
02:56
-0700)
committer
Aaron Taylor
<ataylor@subgeniuskitty.com>
Sat, 21 Sep 2019 09:56:51 +0000
(
02:56
-0700)
icmpmonitor.c
patch
|
blob
|
blame
|
history
diff --git
a/icmpmonitor.c
b/icmpmonitor.c
index
365192f
..
98b6f5e
100644
(file)
--- a/
icmpmonitor.c
+++ b/
icmpmonitor.c
@@
-46,15
+46,18
@@
struct monitor_host {
unsigned int sentpackets;
unsigned int recvdpackets;
unsigned int sentpackets;
unsigned int recvdpackets;
- /*
l
inked list */
+ /*
L
inked list */
struct monitor_host * next;
};
struct monitor_host * next;
};
-/* globals */
-static struct monitor_host ** hosts = NULL;
-static bool verbose = false;
-static int keepBanging = 0;
-static int send_delay = 1;
+/* Globals */
+ /* Since the program is based around signals, a linked list of hosts is maintained here. */
+ static struct monitor_host ** hosts = NULL;
+ /* Set by command line flags. */
+ static bool verbose = false;
+ static bool retry_down_cmd = false;
+ /* TODO: Get rid of this global. */
+ static int send_delay = 1;
/*
* Checksum routine for Internet Protocol family headers
/*
* Checksum routine for Internet Protocol family headers
@@
-96,7
+99,7
@@
in_cksum(unsigned short * addr, int len)
* Modifies out = out - in.
*/
static void
* Modifies out = out - in.
*/
static void
-tvsub(register struct timeval * out, register struct timeval * in)
+tv
_
sub(register struct timeval * out, register struct timeval * in)
{
if ((out->tv_usec -= in->tv_usec) < 0) {
--out->tv_sec;
{
if ((out->tv_usec -= in->tv_usec) < 0) {
--out->tv_sec;
@@
-126,10
+129,10
@@
pinger(int ignore)
struct timeval now;
gettimeofday(&now, (struct timezone *) NULL);
struct timeval now;
gettimeofday(&now, (struct timezone *) NULL);
- tvsub(&now, &p->last_ping_received);
+ tv
_
sub(&now, &p->last_ping_received);
if (now.tv_sec > (p->max_delay + p->ping_interval)) {
if (now.tv_sec > (p->max_delay + p->ping_interval)) {
- if ((p->hostup) ||
keepBanging
) {
+ if ((p->hostup) ||
retry_down_cmd
) {
if (verbose) printf("INFO: Host %s stopped responding. Executing DOWN command.\n", p->name);
p->hostup = false;
if (!fork()) {
if (verbose) printf("INFO: Host %s stopped responding. Executing DOWN command.\n", p->name);
p->hostup = false;
if (!fork()) {
@@
-142,7
+145,7
@@
pinger(int ignore)
}
gettimeofday(&now, (struct timezone *) NULL);
}
gettimeofday(&now, (struct timezone *) NULL);
- tvsub(&now, &p->last_ping_sent);
+ tv
_
sub(&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;
@@
-212,7
+215,7
@@
read_icmp_data(struct monitor_host * p)
memcpy(&p->last_ping_received, &tv, sizeof(tv));
memcpy(&p->last_ping_received, &tv, sizeof(tv));
- tvsub(&tv, (struct timeval *) &icmp->icmp_data[0]);
+ tv
_
sub(&tv, (struct timeval *) &icmp->icmp_data[0]);
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);
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);
@@
-328,7
+331,7
@@
read_hosts(const char * cfg_file_name)
}
static int
}
static int
-get
host
addr(const char * name)
+get
_host_
addr(const char * name)
{
static int res;
struct hostent * he;
{
static int res;
struct hostent * he;
@@
-364,7
+367,7
@@
init_hosts(void)
while (p) {
bzero(&p->dest, sizeof(p->dest));
p->dest.sin_family = AF_INET;
while (p) {
bzero(&p->dest, sizeof(p->dest));
p->dest.sin_family = AF_INET;
- if ((p->dest.sin_addr.s_addr = get
host
addr(p->name)) <= 0) {
+ if ((p->dest.sin_addr.s_addr = get
_host_
addr(p->name)) <= 0) {
fprintf(stderr, "WARN: Can't resolve host. Skipping client %s.\n", p->name);
p->socket=-1;
} else {
fprintf(stderr, "WARN: Can't resolve host. Skipping client %s.\n", p->name);
p->socket=-1;
} else {
@@
-400,7
+403,7
@@
main(int argc, char ** argv)
verbose = true;
break;
case 'r':
verbose = true;
break;
case 'r':
-
keepBanging = 1
;
+
retry_down_cmd = true
;
break;
case 'f':
cfgfile=strdup(optarg);
break;
case 'f':
cfgfile=strdup(optarg);