General cleanup while reading through icmpmonitor.c.
authorAaron Taylor <ataylor@subgeniuskitty.com>
Sat, 21 Sep 2019 09:03:35 +0000 (02:03 -0700)
committerAaron Taylor <ataylor@subgeniuskitty.com>
Sat, 21 Sep 2019 09:03:35 +0000 (02:03 -0700)
icmpmonitor.c

index 64fa630..d222d61 100644 (file)
  * See LICENSE file for copyright and license details.
  */
 
  * See LICENSE file for copyright and license details.
  */
 
-#include <sys/param.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <stdarg.h>
 #include <signal.h>
 #include <string.h>
 #include <sys/time.h>
 #include <sys/wait.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <signal.h>
 #include <string.h>
 #include <sys/time.h>
 #include <sys/wait.h>
 #include <sys/socket.h>
 #include <sys/types.h>
-#include <fcntl.h>
-#include <sys/fcntl.h>
 #include <unistd.h>
 #include <unistd.h>
-#include <sys/stat.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
-#include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/ip_icmp.h>
 #include <netinet/ip.h>
 #include <netinet/ip_icmp.h>
-#include <stddef.h>
 #include <errno.h>
 
 #include "cfg.h"
 
 #include <errno.h>
 
 #include "cfg.h"
 
-#define        MAXPACKET       (65536 - 60 - 8) /* max packet size     */
-#define        DEFDATALEN      (64 - 8)         /* default data length */
+#define MAXPACKETSIZE  (65536 - 60 - 8) /* TODO: What are the magic numbers? */
+#define DEFAULTDATALEN (64 - 8)         /* TODO: What are the magic numbers? */
 
 
-#define VERSION "ICMPmonitor v1.2 by lord@crocodile.org"
-
-# define icmphdr                       icmp
-
-/* typedefs */
-typedef struct monitor_host
-{
-    /* following are coming from cfg */
-    char  *name;
+struct monitor_host {
+    /* From the config file */
+    char * name;
     int    ping_interval;
     int    max_delay;
     int    ping_interval;
     int    max_delay;
-    char  *upcmd;
-    char  *downcmd;
-
-    /* following values are calculated */
-    int    socket;
-    struct timeval last_ping_received;
-    struct timeval last_ping_sent;
-    int    up;
-    int    down;
+    char * upcmd;
+    char * downcmd;
+
+    /* Calculated values */
+    int                socket;
+    struct timeval     last_ping_received;
+    struct timeval     last_ping_sent;
+    /* TODO: Replace the following two values with a single boolean */
+    int                up;
+    int                down;
     struct sockaddr_in dest;
     struct sockaddr_in dest;
-
-    unsigned int sentpackets ;
-    unsigned int recvdpackets;
+    unsigned int       sentpackets;
+    unsigned int       recvdpackets;
     
     /* linked list */
     
     /* linked list */
-    struct monitor_host *next;
-} monitor_host_t;
+    struct monitor_host * next;
+};
 
 /* protos */
 
 /* protos */
-static int  gethostaddr(const char *name);
-static void read_hosts(const char *cfg_file_name);
+static int  gethostaddr(const char * name);
+static void read_hosts(const char * cfg_file_name);
 static void init_hosts(void);
 static void get_response(void);
 static void pinger(int);
 static void init_hosts(void);
 static void get_response(void);
 static void pinger(int);
-static int  in_cksum(u_short *addr, int len);
-static void read_icmp_data(monitor_host_t *p);
-static void tvsub(struct timeval *out, struct timeval *in);
-static int gcd(int x, int y);
+static int  in_cksum(unsigned short * addr, int len);
+static void read_icmp_data(struct monitor_host * p);
+static void tvsub(struct timeval * out, struct timeval * in);
+static int  gcd(int x, int y);
 
 /* globals */
 
 /* globals */
-
-static monitor_host_t **hosts      = NULL;
-static int             isVerbose   = 0;
-static int             keepBanging = 0;
-static unsigned short  ident;
-static int             send_delay  = 1;
-
-
-
-
-
-
-
-
-
-
-
-
-
-int main(int ac, char **av)
+static struct monitor_host ** hosts       = NULL;
+static int                    isVerbose   = 0;
+static int                    keepBanging = 0;
+static unsigned short         ident;
+static int                    send_delay  = 1;
+
+int
+main(int argc, char ** argv)
 {
 {
-    extern char* optarg;
-    extern int   optind;
-    char         *cfgfile=NULL;
-    int          param;
-
-    while((param = getopt(ac, av, "rvf:")) != -1)
-       switch(param)
-        { 
-       case 'v':
-            isVerbose = 1;
-           break; 
-       case 'r':
-            keepBanging = 1;
-           break; 
-       case 'f':  
-           cfgfile=strdup(optarg);  
-           break;  
-       default: 
-            fprintf(stderr,"Usage: icmpmonitor [-v] [-r] [-f cfgfile]\n");
-            exit(EXIT_FAILURE);
-       } 
+    extern char * optarg;
+    extern int optind;
+    char * cfgfile = NULL;
+    int param;
+
+    while ((param = getopt(argc, argv, "rvf:")) != -1) {
+        switch(param) { 
+            case 'v':
+                isVerbose = 1;
+                break; 
+            case 'r':
+                keepBanging = 1;
+                break; 
+            case 'f':  
+                cfgfile=strdup(optarg);  
+                break;  
+            default: 
+                fprintf(stderr,"Usage: icmpmonitor [-v] [-r] [-f cfgfile]\n");
+                exit(EXIT_FAILURE);
+        } 
+    }
     
     if (!cfgfile) {
         fprintf(stderr, "ERROR: No config file specified.\n");
     
     if (!cfgfile) {
         fprintf(stderr, "ERROR: No config file specified.\n");
@@ -128,9 +103,9 @@ int main(int ac, char **av)
     
     init_hosts();
     
     
     init_hosts();
     
-    ident=getpid() & 0xFFFF;
+    ident = getpid() & 0xFFFF;
     
     
-    (void)signal(SIGALRM, pinger);
+    signal(SIGALRM, pinger);
     alarm(send_delay); 
 
     get_response();
     alarm(send_delay); 
 
     get_response();
@@ -138,173 +113,142 @@ int main(int ac, char **av)
     exit(EXIT_SUCCESS);
 }
 
     exit(EXIT_SUCCESS);
 }
 
-
 /*
 /*
- * in_cksum --
- *     Checksum routine for Internet Protocol family headers (C Version)
+ * Checksum routine for Internet Protocol family headers
  */
 static int
  */
 static int
-in_cksum(u_short *addr, int len)
+in_cksum(unsigned short * addr, int len)
 {
 {
-    register int nleft = len;
-    register u_short *w = addr;
-    register int sum = 0;
-    u_short answer = 0;
+    int nleft = len;
+    unsigned short * w = addr;
+    int sum = 0;
+    unsigned short answer = 0;
     
     /*
      * Our algorithm is simple, using a 32 bit accumulator (sum), we add
      * sequential 16 bit words to it, and at the end, fold back all the
      * carry bits from the top 16 bits into the lower 16 bits.
      */
     
     /*
      * Our algorithm is simple, using a 32 bit accumulator (sum), we add
      * sequential 16 bit words to it, and at the end, fold back all the
      * carry bits from the top 16 bits into the lower 16 bits.
      */
-    while (nleft > 1)  {
+    while (nleft > 1) {
         sum += *w++;
         nleft -= 2;
     }
     
     /* mop up an odd byte, if necessary */
     if (nleft == 1) {
         sum += *w++;
         nleft -= 2;
     }
     
     /* mop up an odd byte, if necessary */
     if (nleft == 1) {
-        *(u_char *)(&answer) = *(u_char *)w ;
+        *(u_char *)(&answer) = *(u_char *)w;
         sum += answer;
     }
     
     /* add back carry outs from top 16 bits to low 16 bits */
         sum += answer;
     }
     
     /* add back carry outs from top 16 bits to low 16 bits */
-    sum = (sum >> 16) + (sum & 0xffff);        /* add hi 16 to low 16 */
-    sum += (sum >> 16);                        /* add carry */
-    answer = ~sum;                     /* truncate to 16 bits */
+    sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */
+    sum += (sum >> 16);                 /* add carry */
+    answer = ~sum;                      /* truncate to 16 bits */
     return(answer);
 }
 
 /*
     return(answer);
 }
 
 /*
- * pinger --
- *     Compose and transmit an ICMP ECHO REQUEST packet.  The IP packet
- * will be added on by the kernel.  The ID field is our UNIX process ID,
- * and the sequence number is an ascending integer.  The first 8 bytes
+ * Compose and transmit an ICMP ECHO REQUEST packet. The IP packet
+ * will be added on by the kernel. The ID field is our UNIX process ID,
+ * and the sequence number is an ascending integer. The first 8 bytes
  * of the data portion are used to hold a UNIX "timeval" struct in VAX
  * byte-order, to compute the round-trip time.
  */
  * of the data portion are used to hold a UNIX "timeval" struct in VAX
  * byte-order, to compute the round-trip time.
  */
-static void pinger(int ignore)
+static void
+pinger(int ignore)
 {
 {
-    register struct icmphdr *icp;
-    register int             cc;
-    int                      i;
-    monitor_host_t           *p;
-    u_char outpack[MAXPACKET];
-
-    p=hosts[0];
-    while(p)
-    {
-        if(p->socket!=-1)
-        {
+    int cc, i;
+    struct icmp * icp;
+    struct monitor_host * p;
+    u_char outpack[MAXPACKETSIZE];
+
+    p = hosts[0];
+    while (p) {
+        if (p->socket != -1) {
             struct timeval now;
             
             struct timeval now;
             
-            (void)gettimeofday(&now,(struct timezone *)NULL);
+            gettimeofday(&now, (struct timezone *) NULL);
             tvsub(&now, &p->last_ping_received);
 
             tvsub(&now, &p->last_ping_received);
 
-            if(now.tv_sec > (p->max_delay+p->ping_interval))
-            {            
-                p->up=0;
-                if((!p->down) || keepBanging)
-                {
-                   p->down = 1;
+            if (now.tv_sec > (p->max_delay + p->ping_interval)) {            
+                p->up = 0;
+                if ((!p->down) || keepBanging) {
+                    p->down = 1;
                     
                     if (isVerbose) printf("INFO: Host %s is down. Executing DOWN command.\n", p->name);
                     
                     if (isVerbose) printf("INFO: Host %s is down. Executing DOWN command.\n", p->name);
-                    if(!fork())
-                    {
+                    if (!fork()) {
                         system(p->downcmd);
                         system(p->downcmd);
-                        exit(0);
-                    } else
-                    {
+                        exit(EXIT_SUCCESS);
+                    } else {
                         wait(NULL);
                     }
                 }
             }
             
                         wait(NULL);
                     }
                 }
             }
             
-            (void)gettimeofday(&now,(struct timezone *)NULL);
+            gettimeofday(&now, (struct timezone *) NULL);
             tvsub(&now, &p->last_ping_sent);
             
             tvsub(&now, &p->last_ping_sent);
             
-            if(now.tv_sec > p->ping_interval)
-            {
-                /* Time to send ping */
-                
-                icp = (struct icmphdr *)outpack;
+            if (now.tv_sec > p->ping_interval) { /* Time to send ping */
+                icp = (struct icmp *) outpack;
                 icp->icmp_type  = ICMP_ECHO;
                 icp->icmp_code  = 0;
                 icp->icmp_cksum = 0;
                 icp->icmp_seq   = p->socket;
                 icp->icmp_type  = ICMP_ECHO;
                 icp->icmp_code  = 0;
                 icp->icmp_cksum = 0;
                 icp->icmp_seq   = p->socket;
-                icp->icmp_id    = ident;                       
+                icp->icmp_id    = ident;
 
                 if (isVerbose) printf("INFO: Sending ICMP packet to %s.\n", p->name);
                 
 
                 if (isVerbose) printf("INFO: Sending ICMP packet to %s.\n", p->name);
                 
-                (void)gettimeofday((struct timeval *)&outpack[8],
-                                   (struct timezone *)NULL);
+                gettimeofday((struct timeval *) &outpack[8], (struct timezone *) NULL);
                 
                 
-                cc = DEFDATALEN + 8;  /* skips ICMP portion */
+                cc = DEFAULTDATALEN + 8;  /* skips ICMP portion */
                 
                 
-                /* compute ICMP checksum here */
-                icp->icmp_cksum = in_cksum((u_short *)icp, cc);
+                /* compute ICMP checksum */
+                icp->icmp_cksum = in_cksum((unsigned short *) icp, cc);
                 
                 
-                i = sendto(p->socket, (char *)outpack, cc, 0, (const struct sockaddr *)(&p->dest),
-                           sizeof(struct sockaddr));
+                i = sendto(p->socket, (char *) outpack, cc, 0, (const struct sockaddr *) (&p->dest), sizeof(struct sockaddr));
                 
                 
-                (void)gettimeofday(&p->last_ping_sent,
-                                   (struct timezone *)NULL);
+                gettimeofday(&p->last_ping_sent, (struct timezone *) NULL);
                 
                 
-                if(i<0 || i!=cc)
-                {
+                if (i < 0 || i != cc) {
                     if (i<0) fprintf(stderr, "WARN: Failed sending ICMP packet to %s.\n", p->name);
                 }
                 p->sentpackets++;
             }
         }
                     if (i<0) fprintf(stderr, "WARN: Failed sending ICMP packet to %s.\n", p->name);
                 }
                 p->sentpackets++;
             }
         }
-        p=p->next;
-        
+        p = p->next;
     }
     
     }
     
-    (void)signal(SIGALRM, pinger); /* restore handler */
+    signal(SIGALRM, pinger); /* restore handler */
     alarm(send_delay);
 }
 
     alarm(send_delay);
 }
 
-static void get_response(void)
+static void
+get_response(void)
 {
     fd_set rfds;
 {
     fd_set rfds;
-    int    retval;
-    monitor_host_t *p;
-    int    maxd=-1;
+    int retval, maxd = -1;
+    struct monitor_host * p;
     
     
-    while(1)
-    {
-        p=hosts[0];
+    while (1) {
+        p = hosts[0];
         FD_ZERO(&rfds);
         FD_ZERO(&rfds);
-        while(p)
-        {
-            if(p->socket != -1)
-            {
-                if(p->socket > maxd)
-                    maxd=p->socket;
+        while (p) {
+            if (p->socket != -1) {
+                if (p->socket > maxd) maxd=p->socket;
                 FD_SET(p->socket, &rfds);
             }
             p=p->next;
         }
 
         retval = select(maxd+1, &rfds, NULL, NULL, NULL);
                 FD_SET(p->socket, &rfds);
             }
             p=p->next;
         }
 
         retval = select(maxd+1, &rfds, NULL, NULL, NULL);
-        if(retval<0)
-        {
-            /* we get her in case we are interrupted by signal.
-               it's ok. */
-        }
-        else
-        {
-            if(retval>0)
-            {
-                p=hosts[0];
-                while(p)
-                {
-                    if(p->socket!=-1 && FD_ISSET(p->socket, &rfds))
-                    {
-                        /* Read data */
-                        read_icmp_data(p);
-                    }
-                    p=p->next;
+        if (retval < 0) {
+            /* Intentionally empty. We arrive here when interrupted by a signal. No action should be taken. */
+        } else {
+            if (retval > 0) {
+                p = hosts[0];
+                while (p) {
+                    if (p->socket!=-1 && FD_ISSET(p->socket, &rfds)) read_icmp_data(p);
+                    p = p->next;
                 }
             } else {
                 /* TODO: How to handle this error? */
                 }
             } else {
                 /* TODO: How to handle this error? */
@@ -313,19 +257,18 @@ static void get_response(void)
     }
 }
 
     }
 }
 
-static void read_icmp_data(monitor_host_t *p)
+static void
+read_icmp_data(struct monitor_host * p)
 {
 {
-    socklen_t fromlen       ;
-    struct sockaddr_in from ;
-    int cc                  ;
-    struct ip   *ip         ;
-    struct icmp *icmp       ;
-    int    iphdrlen         ;
-    int    delay            ;
+    int cc, iphdrlen, delay;
+    socklen_t fromlen;
+    struct sockaddr_in from;
+    struct ip * ip;
+    struct icmp * icmp;
     struct timeval tv       ;
     struct timeval tv       ;
-    unsigned char buf[MAXPACKET]; /* read buffer */
+    unsigned char buf[MAXPACKETSIZE];
 
 
-    (void)gettimeofday(&tv, (struct timezone *)NULL);
+    gettimeofday(&tv, (struct timezone *) NULL);
     
     fromlen = sizeof(from);
     if ((cc = recvfrom(p->socket, buf, sizeof(buf), 0, (struct sockaddr *)&from, &fromlen)) < 0) {
     
     fromlen = sizeof(from);
     if ((cc = recvfrom(p->socket, buf, sizeof(buf), 0, (struct sockaddr *)&from, &fromlen)) < 0) {
@@ -334,38 +277,32 @@ static void read_icmp_data(monitor_host_t *p)
     } 
 
     /* check IP header actual len */ 
     } 
 
     /* check IP header actual len */ 
-    ip       = (struct ip *)buf               
-    iphdrlen = ip->ip_hl<<2                   
-    icmp     = (struct icmp *) (buf+iphdrlen) ;
+    ip       = (struct ip *) buf
+    iphdrlen = ip->ip_hl << 2
+    icmp     = (struct icmp *) (buf + iphdrlen);
     
     if (cc < iphdrlen + ICMP_MINLEN) {
         fprintf(stderr, "WARN: Received short packet from %s.\n", p->name);
         return;
     }
     
     
     if (cc < iphdrlen + ICMP_MINLEN) {
         fprintf(stderr, "WARN: Received short packet from %s.\n", p->name);
         return;
     }
     
-    if(icmp->icmp_type == ICMP_ECHOREPLY &&
-       icmp->icmp_id   == ident          &&
-       icmp->icmp_seq  == p->socket)
-    {
+    if (icmp->icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == ident && icmp->icmp_seq == p->socket) {
         p->recvdpackets++;
 
         memcpy(&p->last_ping_received, &tv, sizeof(tv));
         
         tvsub(&tv, (struct timeval *) &icmp->icmp_data[0]);
         p->recvdpackets++;
 
         memcpy(&p->last_ping_received, &tv, sizeof(tv));
         
         tvsub(&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(isVerbose) printf("INFO: Got ICMP reply from %s in %d ms.\n", p->name, delay);
-       p->down=0;
-        if(!p->up)
-        {
-            p->up=1;
+        if (isVerbose) printf("INFO: Got ICMP reply from %s in %d ms.\n", p->name, delay);
+        p->down = 0;
+        if (!p->up) {
+            p->up = 1;
             if (isVerbose) printf("INFO: Host %s is up. Executing UP command.\n", p->name);
             if (isVerbose) printf("INFO: Host %s is up. Executing UP command.\n", p->name);
-            if(!fork())
-            {
+            if (!fork()) {
                 system(p->upcmd);
                 system(p->upcmd);
-                exit(0);
-            } else
-            {
+                exit(EXIT_SUCCESS);
+            } else {
                 wait(NULL);
             }
         }
                 wait(NULL);
             }
         }
@@ -374,10 +311,11 @@ static void read_icmp_data(monitor_host_t *p)
     }
 }
 
     }
 }
 
-static void read_hosts(const char *cfg_file_name)
+static void
+read_hosts(const char * cfg_file_name)
 {
 {
-    int    i,n=0;
-    struct Cfg *cfg;
+    int i, n = 0;
+    struct Cfg * cfg;
     
     if ((cfg = readcfg(cfg_file_name)) == NULL) {
         fprintf(stderr, "ERROR: Failed to read config.\n");
     
     if ((cfg = readcfg(cfg_file_name)) == NULL) {
         fprintf(stderr, "ERROR: Failed to read config.\n");
@@ -385,8 +323,8 @@ static void read_hosts(const char *cfg_file_name)
     }
     
     if (cfg->nelements) {
     }
     
     if (cfg->nelements) {
-        hosts = malloc(sizeof(monitor_host_t *) * cfg->nelements);
-        for (i=0; i<cfg->nelements; i++) {
+        hosts = malloc(sizeof(struct monitor_host *) * cfg->nelements);
+        for (i = 0; i < cfg->nelements; i++) {
             if (cfg->dict[i]->nvalues < 4) {
                 fprintf(stderr, "ERROR: Not enough fields in record %d of cfg file. Got %d.\n", n, cfg->dict[i]->nvalues+1);
                 exit(EXIT_FAILURE);
             if (cfg->dict[i]->nvalues < 4) {
                 fprintf(stderr, "ERROR: Not enough fields in record %d of cfg file. Got %d.\n", n, cfg->dict[i]->nvalues+1);
                 exit(EXIT_FAILURE);
@@ -395,37 +333,32 @@ static void read_hosts(const char *cfg_file_name)
                 exit(EXIT_FAILURE);
             }
             
                 exit(EXIT_FAILURE);
             }
             
-            hosts[n]                = malloc(sizeof(monitor_host_t));
+            hosts[n]                = malloc(sizeof(struct monitor_host));
             hosts[n]->name          = strdup(cfg->dict[i]->name);
             hosts[n]->ping_interval = atoi  (cfg->dict[i]->value[0]);
             hosts[n]->max_delay     = atoi  (cfg->dict[i]->value[1]);
             hosts[n]->upcmd         = strdup(cfg->dict[i]->value[2]);
             hosts[n]->downcmd       = strdup(cfg->dict[i]->value[3]);
             
             hosts[n]->name          = strdup(cfg->dict[i]->name);
             hosts[n]->ping_interval = atoi  (cfg->dict[i]->value[0]);
             hosts[n]->max_delay     = atoi  (cfg->dict[i]->value[1]);
             hosts[n]->upcmd         = strdup(cfg->dict[i]->value[2]);
             hosts[n]->downcmd       = strdup(cfg->dict[i]->value[3]);
             
-           if(cfg->dict[i]->nvalues==4)
-           {
-               hosts[n]->down = 0;
-               hosts[n]->up   = 1;
-           } else if(strcmp(cfg->dict[i]->value[4], "up")==0)
-           {
-               hosts[n]->down = 0;
-               hosts[n]->up   = 1;
-           } else if(strcmp(cfg->dict[i]->value[4], "down")==0)
-           {
-               hosts[n]->down = 1;
-               hosts[n]->up   = 0;
-           } else if(strcmp(cfg->dict[i]->value[4], "auto")==0)
-           {
-               hosts[n]->down = 1;
-               hosts[n]->up   = 1;
-           } else if(strcmp(cfg->dict[i]->value[4], "none")==0)
-           {
-               hosts[n]->down = 0;
-               hosts[n]->up   = 0;
-           } else {
-               fprintf(stderr, "ERROR: Illegal value %s in record %n for startup condition.\n", cfg->dict[i]->value[4], n);
-               exit(EXIT_FAILURE);
-           }
+        if (cfg->dict[i]->nvalues == 4) {
+            hosts[n]->down = 0;
+            hosts[n]->up   = 1;
+        } else if (strcmp(cfg->dict[i]->value[4], "up") == 0) {
+            hosts[n]->down = 0;
+            hosts[n]->up   = 1;
+        } else if (strcmp(cfg->dict[i]->value[4], "down") == 0) {
+            hosts[n]->down = 1;
+            hosts[n]->up   = 0;
+        } else if (strcmp(cfg->dict[i]->value[4], "auto") == 0) {
+            hosts[n]->down = 1;
+            hosts[n]->up   = 1;
+        } else if (strcmp(cfg->dict[i]->value[4], "none") == 0) {
+            hosts[n]->down = 0;
+            hosts[n]->up   = 0;
+        } else {
+            fprintf(stderr, "ERROR: Illegal value %s in record %d for startup condition.\n", cfg->dict[i]->value[4], n);
+            exit(EXIT_FAILURE);
+        }
             hosts[n]->sentpackets   = 0;
             hosts[n]->recvdpackets  = 0;
 
             hosts[n]->sentpackets   = 0;
             hosts[n]->recvdpackets  = 0;
 
@@ -446,80 +379,74 @@ static void read_hosts(const char *cfg_file_name)
     }
 }
 
     }
 }
 
-static int gethostaddr(const char *name)
+static int
+gethostaddr(const char * name)
 {
 {
-    static  int  res;
-    struct hostent *he;
+    static int res;
+    struct hostent * he;
     
     
-    if((res=inet_addr(name))<0)
-    {
-       he=gethostbyname(name);
-        if(!he)
-            return -1;
-       memcpy( &res , he->h_addr , he->h_length );
+    if ((res = inet_addr(name)) < 0) {
+    he = gethostbyname(name);
+        if (!he) return -1;
+        memcpy(&res, he->h_addr, he->h_length);
     } 
     return(res);
 }
 
     } 
     return(res);
 }
 
-static void init_hosts(void)
+static void
+init_hosts(void)
 {
 {
-    monitor_host_t *p=hosts[0];
-    struct protoent   *proto;
-    int ok=0;
+    struct monitor_host * p = hosts[0];
+    struct protoent proto;
+    int ok = 0;
 
     if ((proto = getprotobyname("icmp")) == NULL) {
         fprintf(stderr, "ERROR: Unknown protocol: icmp.\n");
         exit(EXIT_FAILURE);
     }
     
 
     if ((proto = getprotobyname("icmp")) == NULL) {
         fprintf(stderr, "ERROR: Unknown protocol: icmp.\n");
         exit(EXIT_FAILURE);
     }
     
-    while(p) {
-        bzero(&p->dest,sizeof(p->dest));
-        p->dest.sin_family=AF_INET;
-        if((p->dest.sin_addr.s_addr=gethostaddr(p->name))<=0)
-        {
+    while (p) {
+        bzero(&p->dest, sizeof(p->dest));
+        p->dest.sin_family = AF_INET;
+        if ((p->dest.sin_addr.s_addr = gethostaddr(p->name)) <= 0) {
             fprintf(stderr, "WARN: Can't resolve host. Skipping client %s.\n", p->name);
             p->socket=-1;
             fprintf(stderr, "WARN: Can't resolve host. Skipping client %s.\n", p->name);
             p->socket=-1;
-        } else
-        {
-            if((p->socket=socket(AF_INET,SOCK_RAW,proto->p_proto))<0)
-            {
+        } else {
+            if ((p->socket = socket(AF_INET,SOCK_RAW,proto->p_proto)) < 0) {
                 fprintf(stderr, "WARN: Can't create socket. Skipping client %s.\n", p->name);
                 p->socket=-1;
                 fprintf(stderr, "WARN: Can't create socket. Skipping client %s.\n", p->name);
                 p->socket=-1;
-            } else
-            {
-                if(ok==0)
-                    send_delay = p->ping_interval;
-                else
-                    send_delay = gcd(send_delay, p->ping_interval);
+            } else {
+                if (ok == 0) send_delay = p->ping_interval;
+                else send_delay = gcd(send_delay, p->ping_interval);
                 ok++;
             }
         }
                 ok++;
             }
         }
-        p=p->next;
+        p = p->next;
     }
 
     }
 
-    if(!ok)
-    {
+    if (!ok) {
         fprintf(stderr, "ERROR: No hosts left to process.\n");
         exit(EXIT_FAILURE);
     }
 }
 
 /*
         fprintf(stderr, "ERROR: No hosts left to process.\n");
         exit(EXIT_FAILURE);
     }
 }
 
 /*
- * tvsub --
- *     Subtract 2 timeval structs:  out = out - in.  Out is assumed to
- * be >= in.
+ * Subtracts two timeval structs.
+ * Ensure out >= in.
+ * Modifies out = out - in.
  */
 static void
  */
 static void
-tvsub(register struct timeval *out, register struct timeval *in)
+tvsub(register struct timeval * out, register struct timeval * in)
 {
 {
-       if ((out->tv_usec -= in->tv_usec) < 0) {
-               --out->tv_sec;
-               out->tv_usec += 1000000;
-       }
-       out->tv_sec -= in->tv_sec;
+    if ((out->tv_usec -= in->tv_usec) < 0) {
+        --out->tv_sec;
+        out->tv_usec += 1000000;
+    }
+    out->tv_sec -= in->tv_sec;
 }
 
 }
 
-static int gcd(int x, int y)
+static int
+gcd(int x, int y)
 {
     int remainder = x % y;
     if (remainder == 0) return y;
 {
     int remainder = x % y;
     if (remainder == 0) return y;