diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/distributive.c bartlby-extensions/distributive.c --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/distributive.c 2007-03-22 02:10:39.000000000 +0100 +++ bartlby-extensions/distributive.c 2008-04-03 11:21:13.000000000 +0200 @@ -35,7 +35,7 @@ dcmd = malloc(sizeof(char) * (strlen(distr_command)+5300)); - snprintf(dcmd, 5299, "%s %d %d '%s' '%s' %d '%s'", distr_command, svc->server_id, svc->service_id, svc->srv->server_name, svc->service_name, svc->current_state, svc->new_server_text); + snprintf(dcmd, 5299, "%s %ld %ld '%s' '%s' %d '%s'", distr_command, svc->server_id, svc->service_id, svc->srv->server_name, svc->service_name, svc->current_state, svc->new_server_text); fp = popen(dcmd, "r"); if(fp) { diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/extlogger.c bartlby-extensions/extlogger.c --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/extlogger.c 2007-02-15 17:25:56.000000000 +0100 +++ bartlby-extensions/extlogger.c 2008-04-03 11:21:13.000000000 +0200 @@ -23,8 +23,8 @@ static int db_connected; -#define EXTLOGGER_UPDATE "update log set endtime=UNIX_TIMESTAMP(), endmsg='%s', endstate=%d where service_id=%d and endtime=0" -#define EXTLOGGER_INSERT "insert into log (starttime, service_id, startmsg, startstate) values(UNIX_TIMESTAMP(), %d, '%s', %d)" +#define EXTLOGGER_UPDATE "update log set endtime=UNIX_TIMESTAMP(), endmsg='%s', endstate=%d where service_id=%ld and endtime=0" +#define EXTLOGGER_INSERT "insert into log (starttime, service_id, startmsg, startstate) values(UNIX_TIMESTAMP(), %ld, '%s', %d)" static void extlogger_mysql_connect(void) { diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/Makefile bartlby-extensions/Makefile --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/Makefile 2007-02-16 17:53:43.000000000 +0100 +++ bartlby-extensions/Makefile 2008-04-03 11:21:13.000000000 +0200 @@ -2,7 +2,7 @@ include ${BARTLBY_BASE}/Makefile.conf HELLOWORLD = ${BARTLBY_BASE}/src/global.o ${BARTLBY_BASE}/src/config.o helloworld.o - +WATCHDOG = ${BARTLBY_BASE}/src/global.o ${BARTLBY_BASE}/src/config.o watchdog.o NAGIOS_NSC = ${BARTLBY_BASE}/src/shm.o ${BARTLBY_BASE}/src/global.o ${BARTLBY_BASE}/src/config.o nsc.o @@ -18,25 +18,33 @@ $(CC) $(INCLUDE_MYSQL) $(EXTRAOPTIONS) $(INCLUDE_LL) -I${BARTLBY_BASE}/include -c $< -all: helloworld nagios_nsc extlogger distributive +all: helloworld nagios_nsc extlogger distributive watchdog helloworld: ${HELLOWORLD} - $(CC) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o helloworld.so ${HELLOWORLD} + $(LNK) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o helloworld.so ${HELLOWORLD} nagios_nsc: ${NAGIOS_NSC} - $(CC) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o nsc.so ${NAGIOS_NSC} + $(LNK) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o nsc.so ${NAGIOS_NSC} distributive: ${DISTRIBUTIVE} - $(CC) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o distributive.so ${DISTRIBUTIVE} + $(LNK) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o distributive.so ${DISTRIBUTIVE} extlogger: ${EXTLOGGER} - $(CC) $(INCLUDE_MYSQL) $(LMYSQL) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o extlogger.so ${EXTLOGGER} + $(LNK) $(INCLUDE_MYSQL) $(LMYSQL) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o extlogger.so ${EXTLOGGER} + + +watchdog: ${WATCHDOG} + $(LNK) $(INCLUDE_MYSQL) $(LMYSQL) $(DYNLINK) $(EXTRAOPTIONS) $(INCLUDE_LL) -o watchdog.so ${WATCHDOG} install: all $(MKDIRP) ${BARTLBY_HOME}/ext/ $(CPPVA) -m 777 nsc.so ${BARTLBY_HOME}/ext/nsc.so $(CPPVA) -m 777 extlogger.so ${BARTLBY_HOME}/ext/extlogger.so $(CPPVA) -m 777 README_EXTLOGGER.txt ${BARTLBY_HOME}/ext/ + + + $(CPPVA) -m 777 watchdog.so ${BARTLBY_HOME}/ext/watchdog.so + $(CPPVA) -m 777 README_WATCHDOG.txt ${BARTLBY_HOME}/ext/ diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/nsc.c bartlby-extensions/nsc.c --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/nsc.c 2007-02-15 17:25:56.000000000 +0100 +++ bartlby-extensions/nsc.c 2008-04-03 11:21:13.000000000 +0200 @@ -67,8 +67,8 @@ fprintf(fp,"\tcheck_type=%d\n",svc->service_type); fprintf(fp,"\tcurrent_state=%d\n",svc->current_state); fprintf(fp,"\tlast_hard_state=%d\n",svc->last_state); - fprintf(fp,"\tcurrent_attempt=%d\n",svc->service_retain_current); - fprintf(fp,"\tmax_attempts=%d\n",svc->service_retain); + fprintf(fp,"\tcurrent_attempt=%ld\n",svc->service_retain_current); + fprintf(fp,"\tmax_attempts=%ld\n",svc->service_retain); fprintf(fp,"\tstate_type=1\n"); fprintf(fp,"\tlast_state_change=%d\n",cts); fprintf(fp,"\tlast_hard_state_change=d\n"); @@ -79,7 +79,7 @@ fprintf(fp,"\tplugin_output=%s\n",clean_server_text); fprintf(fp,"\tperformance_data=\n"); fprintf(fp,"\tlast_check=%d\n",svc->last_check); - fprintf(fp,"\tnext_check=%d\n",svc->last_check + svc->check_interval); + fprintf(fp,"\tnext_check=%ld\n",svc->last_check + svc->check_interval); fprintf(fp,"\tcurrent_notification_number=0\n"); fprintf(fp,"\tlast_notification=%d\n",svc->last_notify_send); fprintf(fp,"\tnext_notification=0\n"); @@ -112,7 +112,7 @@ ext_nsc_clean_server_text(clean_server_text); hrState=bartlby_beauty_state(cs); - fprintf(fp, "[%d] SERVICE;%s;%s;%s;%d/%d;HARD;%d;%d;PASSIVE;%d;0;0;%d;0;%s;0;0;0;0;%d;1;%d;0;100;0;0;10.0;0;0;0;0;%s\n", cts, svc->srv->server_name, svc->service_name, hrState, svc->service_retain_current, svc->service_retain, svc->last_check,svc->last_check+svc->check_interval,svc->service_active, svc->notify_last_time, hrState, svc->notify_last_time, svc->notify_enabled, clean_server_text); + fprintf(fp, "[%d] SERVICE;%s;%s;%s;%ld/%ld;HARD;%d;%ld;PASSIVE;%d;0;0;%d;0;%s;0;0;0;0;%d;1;%d;0;100;0;0;10.0;0;0;0;0;%s\n", cts, svc->srv->server_name, svc->service_name, hrState, svc->service_retain_current, svc->service_retain, svc->last_check,svc->last_check+svc->check_interval,svc->service_active, svc->notify_last_time, hrState, svc->notify_last_time, svc->notify_enabled, clean_server_text); free(hrState); free(clean_server_text); } diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/README_WATCHDOG.txt bartlby-extensions/README_WATCHDOG.txt --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/README_WATCHDOG.txt 1970-01-01 01:00:00.000000000 +0100 +++ bartlby-extensions/README_WATCHDOG.txt 2008-04-03 11:21:13.000000000 +0200 @@ -0,0 +1,2 @@ +you have your /dev/watchdog device up and running +bartlby will then, when extension is loaded tick the device diff -Nur /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/watchdog.c bartlby-extensions/watchdog.c --- /var/www/htdocs/bartlby.januschka.com/cvs/last_full//bartlby-extensions/watchdog.c 1970-01-01 01:00:00.000000000 +0100 +++ bartlby-extensions/watchdog.c 2008-04-03 11:21:13.000000000 +0200 @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + + +static struct shm_hdr * gHdr; +static void * gDataLoaderHandle; +static char * gCFG; + + +static int bartlby_watchdog_fd; + + + + +int bartlby_extension_dispatcher(int type, void * data) { + int dummy; + //Just initiate a tick to reset HW timer + ioctl(bartlby_watchdog_fd, WDIOC_KEEPALIVE, &dummy); + + return EXTENSION_OK; +} + + +int bartlby_extension_startup(void * shm_addr, void * dataLoaderHandle, char * configfile) { + _log("watchdog: %s", configfile); + gHdr=shm_addr; + gDataLoaderHandle=dataLoaderHandle; + gCFG=configfile; + + + bartlby_watchdog_fd = open("/dev/watchdog",O_WRONLY); + if(bartlby_watchdog_fd == -1) { + _log("watchdog: /dev/watchdog is not available..unloading module"); + return EXTENSION_NOK; + } + _log("watchdog: card initializing"); + ioctl(bartlby_watchdog_fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD); + _log("watchdog: card initialized"); + return EXTENSION_OK; + + + + return EXTENSION_OK; +} +int bartlby_extension_shutdown(int scheduler_end_code) { + ioctl(bartlby_watchdog_fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD); + _log("watchdog: disabled"); + _log("watchdog: scheduler ended with %d", scheduler_end_code); + + return EXTENSION_OK; +}