[Date Prev] [Date Next] | [Thread Prev] [Thread Next] | [Date Index] [Thread Index] |
Re: [nocol-users] auto-update
|
> From: Steve Mickeler > Is there a way to get nocol to auto-detect any changed in the config files > such as portmon-confg or ippingmon-confg so it can start/stop monitoring > new stuff as needed ? I did some work on "reconfig ippingmon with kill -HUP" fix recently. Patches for v4.2beta5 are enclosed fwiw. Note well: my #define __USE_BSD_SIGNAL is a bone-headed linux specific hack that should be made portable! But even worse, these patches don't "intelligently" restart ippingmon: doing a kill -HUP with variables at the critical level causes the variables to go back to the warning level. This, in turn, causes problems with my up/down reporting with doing really frequent reconfigurations with large polling intervals. So it would be wonderful if someone would solve this problem by writing reinit_sites() or somesuch for pingmon. I'll probably do it (some day this spring?) if no one else does. steve -- -- -- -- Steve Rader Systems and Network Manager WiscNet--Internetworking for Wisconsin rader@wiscnet.net bash: syntax error near unexpected token `=:)' -- cut here -- *** lib/misc.c.orig Thu Mar 20 23:04:02 1997 --- lib/misc.c Tue Nov 10 14:49:55 1998 *************** *** 36,41 **** --- 36,42 ---- #include "nocol.h" #include <stdio.h> + #define __USE_BSD_SIGNAL #include <signal.h> /* signal numbers */ #include <sys/file.h> #include <errno.h> *************** *** 50,56 **** nocol_startup(pconfigfile, pdatafile) char **pconfigfile, **pdatafile; { ! void nocol_done(), usr1_handler(); char *s ; if ((s = (char *)strrchr(prognm, '/')) != NULL) --- 51,57 ---- nocol_startup(pconfigfile, pdatafile) char **pconfigfile, **pdatafile; { ! void nocol_done(), usr1_handler(), nocol_reload(); char *s ; if ((s = (char *)strrchr(prognm, '/')) != NULL) *************** *** 101,113 **** bsdsignal (SIGQUIT, nocol_done); bsdsignal (SIGTERM, nocol_done); bsdsignal (SIGINT, nocol_done); ! bsdsignal (SIGHUP, nocol_done); bsdsignal (SIGUSR1, usr1_handler); #else signal (SIGQUIT, nocol_done); /* Delete pid/data file while dying */ signal (SIGTERM, nocol_done); signal (SIGINT, nocol_done); ! signal (SIGHUP, nocol_done); signal (SIGUSR1, usr1_handler); /* toggles debug */ #endif --- 102,114 ---- bsdsignal (SIGQUIT, nocol_done); bsdsignal (SIGTERM, nocol_done); bsdsignal (SIGINT, nocol_done); ! bsdsignal (SIGHUP, nocol_reload); bsdsignal (SIGUSR1, usr1_handler); #else signal (SIGQUIT, nocol_done); /* Delete pid/data file while dying */ signal (SIGTERM, nocol_done); signal (SIGINT, nocol_done); ! signal (SIGHUP, nocol_reload); signal (SIGUSR1, usr1_handler); /* toggles debug */ #endif -- cut here -- -- cut here -- *** pingmon/pingmon.c.orig Mon Mar 31 00:25:22 1997 --- pingmon/pingmon.c Tue Nov 10 15:01:13 1998 *************** *** 37,42 **** --- 37,43 ---- #include <string.h> /* For strcat() definitions */ #include <sys/file.h> + #define __USE_BSD_SIGNAL #include <signal.h> /* For signal numbers */ /*+ *************** *** 197,202 **** --- 198,207 ---- char record[MAXLINE]; struct tm *loctime ; time_t locclock ; /* Careful, don't use 'long' */ + + if (debug) { + fprintf(stderr, "reading config file\n"); + } if ((p_nodes = fopen(configfile, "r")) == NULL) { *************** *** 278,284 **** --- 283,300 ---- } /* end: while */ fclose (p_nodes); /* Not needed any more */ + if (debug) { + fprintf(stderr, "done reading config file\n"); + } return(1); /* All OK */ } /* end: init_sites() */ + + nocol_reload ( ) { + int fdout = 0; /* File desc for output data file */ + if (debug) { fprintf(stderr,"cought HUP... reloading...\n"); } + fdout = open(datafile, O_RDWR|O_CREAT|O_TRUNC, DATAFILE_MODE); + init_sites(fdout, configfile); + return(1); + } -- cut here -- |