[Date Prev]   [Date Next] [Thread Prev]   [Thread Next] [Date Index]   [Thread Index]

 

     Re: [nocol-users] Sighup Handler for Portmon

*sigh* Fixed it. Sorry folks, I'm used to how I have my normal development
cycle where I have two directories (orig_src and src) and I do "diff.sh
patchname" and it generates "patchname.patch".

Spoiled myself into carelessness, I guess. =)

--Nathan

On Wed, 12 Jan 2000, Michael Douglass wrote:

> Date: Wed, 12 Jan 2000 11:09:01 -0600
> From: Michael Douglass <mikedoug@staff.texas.net>
> To: "Nathan Clemons [Staff]" <nathan@ici.net>
> Subject: Re: [nocol-users] Sighup Handler for Portmon
> 
> 
> You did your diff backwards. :)
> 
> On Wed, Jan 12, 2000 at 11:33:38AM -0500, Nathan Clemons [Staff] said:
> > This is for 4.2.1. Let me know how it works for you if you do use it.
> > 
> > --Nathan
> > 
> > 
> > ____________________________________________________________________
> > Nathan Clemons, Systems Engineer
> > WinStar Internet and Hosting Services
> > 
> > 800 South Main St. Mansfield, MA  02048
> > ____________________________________________________________________  
> > nclemons@winstar.com    www.winstar.com    (v) 800-234-0002 ext.1109
> > nathan@ici.net                             (f) 508-261-0430
> > 
> 
> > *** nocol-4.2.1/portmon/portmon.c	Wed Jan 12 11:11:28 2000
> > --- tmp/portmon.c	Thu Aug 13 07:32:45 1998
> > ***************
> > *** 22,31 ****
> >   
> >   /*
> >    * $Log: portmon.c,v $
> > -  *
> > -  * Revision 1.9  2000/01/11 12:00:00  nathan
> > -  * Added signal handling to reread config files on a HUP signal
> > -  *
> >    * Revision 1.8  1998/08/13 11:31:48  vikas
> >    * Changed goto into a while() loop. Was core dumping on Solaris with
> >    * gcc v2.8.1. Patch sent in by durrell@innocence.com.
> > --- 22,27 ----
> > ***************
> > *** 75,82 ****
> >   
> >   extern char	*skip_spaces() ;		/* in libnocol */
> >   
> > - void    sighuphandler();		/* for SIGHUP config rereading */
> > - 
> >   main(ac, av)
> >     int ac;
> >     char **av;
> > --- 71,76 ----
> > ***************
> > *** 127,135 ****
> >     if (readconfig(fdout) == -1)
> >       nocol_done();
> >   
> > -   /* Set up the signal handler */
> > -   (void) signal(SIGHUP, sighuphandler);
> > - 
> >     lseek(fdout, (off_t)0, SEEK_SET);	/* rewind file */
> >     while (1)	/* forever */
> >     {
> > --- 121,126 ----
> > ***************
> > *** 714,756 ****
> >   
> >   }
> >   
> > - /*
> > -  * reread config files when you get this...
> > -  */
> > - void sighuphandler () {
> > -    struct _harray tmp[MAXHOSTS];
> > -    int count_new, count_old;
> > -    int found, match;
> > - 
> > -    bzero ((char *)tmp, sizeof(tmp));
> > -    for (count_new = 0; hostarray[count_new].hname; ++count_new) {
> > -        /* have to be careful of NULL values, particularly on the send...
> > -           --nathan */
> > -        tmp[count_new].hname       = strdup(hostarray[count_new].hname);
> > -        tmp[count_new].ipaddr      = strdup(hostarray[count_new].ipaddr);
> > -        tmp[count_new].port        = hostarray[count_new].port;
> > -        tmp[count_new].maxseverity = hostarray[count_new].maxseverity;
> > -        tmp[count_new].timeouts[0] = hostarray[count_new].timeouts[0];
> > -        tmp[count_new].timeouts[1] = hostarray[count_new].timeouts[1];
> > -        tmp[count_new].timeouts[2] = hostarray[count_new].timeouts[2];
> > -    }
> > - 
> > -    fprintf(stderr, "Rereading the config file...");
> > -    readconfig(fdout);
> > -    for (count_new = 0; hostarray[count_new].hname; ++count_new) {
> > -        found = 0;
> > -        for (count_old = 0; (tmp[count_old].hname && !found); ++count_old) {
> > -            if (hostarray[count_new].hname &&
> > -                !strcmp(hostarray[count_new].hname, tmp[count_old].hname) &&
> > -                !strcmp(hostarray[count_new].ipaddr, tmp[count_old].ipaddr) &&
> > -                (hostarray[count_new].port == tmp[count_old].port)) {
> > -               hostarray[count_new].maxseverity = tmp[count_old].maxseverity;
> > -               hostarray[count_new].timeouts[0] = tmp[count_old].timeouts[0];
> > -               hostarray[count_new].timeouts[1] = tmp[count_old].timeouts[1];
> > -               hostarray[count_new].timeouts[2] = tmp[count_old].timeouts[2];
> > -               found = 1;
> > -            }
> > -        }
> > -    } 
> > -    fprintf(stderr, " done saving state information.\n");
> > - }
> > --- 705,707 ----
> 
> 
> -- 
> Michael Douglass
> Texas Networking, Inc.
> 
>   Any sufficiently advanced bug is indistinguishable for a feature.
>     -- from some indian guy
> 

____________________________________________________________________
Nathan Clemons, Systems Engineer
WinStar Internet and Hosting Services

800 South Main St. Mansfield, MA  02048
____________________________________________________________________  
nclemons@winstar.com    www.winstar.com    (v) 800-234-0002 ext.1109
nathan@ici.net                             (f) 508-261-0430

*** tmp/portmon.c	Thu Aug 13 07:32:45 1998
--- nocol-4.2.1/portmon/portmon.c	Wed Jan 12 11:11:28 2000
***************
*** 22,27 ****
--- 22,31 ----
  
  /*
   * $Log: portmon.c,v $
+  *
+  * Revision 1.9  2000/01/11 12:00:00  nathan
+  * Added signal handling to reread config files on a HUP signal
+  *
   * Revision 1.8  1998/08/13 11:31:48  vikas
   * Changed goto into a while() loop. Was core dumping on Solaris with
   * gcc v2.8.1. Patch sent in by durrell@innocence.com.
***************
*** 71,76 ****
--- 75,82 ----
  
  extern char	*skip_spaces() ;		/* in libnocol */
  
+ void    sighuphandler();		/* for SIGHUP config rereading */
+ 
  main(ac, av)
    int ac;
    char **av;
***************
*** 121,126 ****
--- 127,135 ----
    if (readconfig(fdout) == -1)
      nocol_done();
  
+   /* Set up the signal handler */
+   (void) signal(SIGHUP, sighuphandler);
+ 
    lseek(fdout, (off_t)0, SEEK_SET);	/* rewind file */
    while (1)	/* forever */
    {
***************
*** 705,707 ****
--- 714,756 ----
  
  }
  
+ /*
+  * reread config files when you get this...
+  */
+ void sighuphandler () {
+    struct _harray tmp[MAXHOSTS];
+    int count_new, count_old;
+    int found, match;
+ 
+    bzero ((char *)tmp, sizeof(tmp));
+    for (count_new = 0; hostarray[count_new].hname; ++count_new) {
+        /* have to be careful of NULL values, particularly on the send...
+           --nathan */
+        tmp[count_new].hname       = strdup(hostarray[count_new].hname);
+        tmp[count_new].ipaddr      = strdup(hostarray[count_new].ipaddr);
+        tmp[count_new].port        = hostarray[count_new].port;
+        tmp[count_new].maxseverity = hostarray[count_new].maxseverity;
+        tmp[count_new].timeouts[0] = hostarray[count_new].timeouts[0];
+        tmp[count_new].timeouts[1] = hostarray[count_new].timeouts[1];
+        tmp[count_new].timeouts[2] = hostarray[count_new].timeouts[2];
+    }
+ 
+    fprintf(stderr, "Rereading the config file...");
+    readconfig(fdout);
+    for (count_new = 0; hostarray[count_new].hname; ++count_new) {
+        found = 0;
+        for (count_old = 0; (tmp[count_old].hname && !found); ++count_old) {
+            if (hostarray[count_new].hname &&
+                !strcmp(hostarray[count_new].hname, tmp[count_old].hname) &&
+                !strcmp(hostarray[count_new].ipaddr, tmp[count_old].ipaddr) &&
+                (hostarray[count_new].port == tmp[count_old].port)) {
+               hostarray[count_new].maxseverity = tmp[count_old].maxseverity;
+               hostarray[count_new].timeouts[0] = tmp[count_old].timeouts[0];
+               hostarray[count_new].timeouts[1] = tmp[count_old].timeouts[1];
+               hostarray[count_new].timeouts[2] = tmp[count_old].timeouts[2];
+               found = 1;
+            }
+        }
+    } 
+    fprintf(stderr, " done saving state information.\n");
+ }