diff -Nur olsrd-0-5-6-fc691af9a18d.orig/Makefile olsrd-0-5-6-fc691af9a18d/Makefile --- olsrd-0-5-6-fc691af9a18d.orig/Makefile 2009-03-14 22:39:09.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/Makefile 2009-03-16 16:44:28.000000000 +0000 @@ -148,7 +148,7 @@ ifeq ($(OS),win32) SUBDIRS := dot_draw httpinfo mini pgraph secure txtinfo else -SUBDIRS := bmf dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo +SUBDIRS := bmf dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo watchdog endif endif @@ -229,6 +229,11 @@ $(MAKECMD) -C lib/arprefresh $(MAKECMD) -C lib/arprefresh DESTDIR=$(DESTDIR) install +watchdog: + $(MAKECMD) -C lib/watchdog clean + $(MAKECMD) -C lib/watchdog + $(MAKECMD) -C lib/watchdog DESTDIR=$(DESTDIR) install + build_all: all switch libs install_all: install install_libs clean_all: uberclean clean_libs diff -Nur olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/Makefile olsrd-0-5-6-fc691af9a18d/lib/watchdog/Makefile --- olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/lib/watchdog/Makefile 2009-03-13 17:13:45.000000000 +0000 @@ -0,0 +1,56 @@ +# The olsr.org Optimized Link-State Routing daemon(olsrd) +# Copyright (c) 2004-2009, the olsr.org team - see HISTORY file +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of olsr.org, olsrd nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# Visit http://www.olsr.org for more information. +# +# If you find this software useful feel free to make a donation +# to the project. For more information see the website or contact +# the copyright holders. +# + +OLSRD_PLUGIN = true +PLUGIN_NAME = olsrd_watchdog +PLUGIN_VER = 0.1 + +TOPDIR = ../.. +include $(TOPDIR)/Makefile.inc + +default_target: $(PLUGIN_FULLNAME) + +$(PLUGIN_FULLNAME): $(OBJS) version-script.txt + $(CC) $(LDFLAGS) -o $(PLUGIN_FULLNAME) $(OBJS) $(LIBS) + +install: $(PLUGIN_FULLNAME) + $(STRIP) $(PLUGIN_FULLNAME) + $(INSTALL_LIB) + +clean: + rm -f $(OBJS) $(SRCS:%.c=%.d) $(PLUGIN_FULLNAME) diff -Nur olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/README_WATCHDOG olsrd-0-5-6-fc691af9a18d/lib/watchdog/README_WATCHDOG --- olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/README_WATCHDOG 1970-01-01 00:00:00.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/lib/watchdog/README_WATCHDOG 2009-03-13 17:13:45.000000000 +0000 @@ -0,0 +1,34 @@ +--------------------------------------------------------------------- +Watchdog PLUGIN FOR OLSRD +by Henning Rogge +--------------------------------------------------------------------- + +This plugin is used for detecting a total freeze of the olsrd by an external script. +Once per timeinterval (configurable) it writes the current time into +a file. + +--------------------------------------------------------------------- +PLUGIN PARAMETERS (PlParam) +--------------------------------------------------------------------- + +PlParam "file" "/tmp/olsrd.watchdog" + Name of the "still alive" file written by the watchdog +PlParam "interval" "5" + Overwrite the file every X seconds + + +--------------------------------------------------------------------- +SAMPLE CONFIG +--------------------------------------------------------------------- + +add in /etc/olsrd.conf: + +LoadPlugin "olsrd_watchdog.so.0.1" +{ + PlParam "file" "/tmp/olsrd.watchdog" + PlParam "interval" "5" +} + + +--------------------------------------------------------------------- +EOF / 26.05.2005 diff -Nur olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/src/olsrd_plugin.c olsrd-0-5-6-fc691af9a18d/lib/watchdog/src/olsrd_plugin.c --- olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/src/olsrd_plugin.c 1970-01-01 00:00:00.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/lib/watchdog/src/olsrd_plugin.c 2009-03-16 16:51:34.000000000 +0000 @@ -0,0 +1,145 @@ + +/* + * The olsr.org Optimized Link-State Routing daemon(olsrd) + * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of olsr.org, olsrd nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Visit http://www.olsr.org for more information. + * + * If you find this software useful feel free to make a donation + * to the project. For more information see the website or contact + * the copyright holders. + * + */ + + + /* + * Example plugin for olsrd.org OLSR daemon + * Only the bare minimum + */ + + +#include "olsrd_plugin.h" +#include "plugin_util.h" +#include "olsr.h" +#include "defs.h" +#include "scheduler.h" +#include "olsr_cookie.h" + + +#include +#include +#include +#include +#define PLUGIN_INTERFACE_VERSION 5 + +static struct olsr_cookie_info *watchdog_timer_cookie; + +static char watchdog_filename[FILENAME_MAX + 1] = "/tmp/olsr.watchdog"; +static int watchdog_interval = 5; + +/** + * Plugin interface version + * Used by main olsrd to check plugin interface version + */ +int +olsrd_plugin_interface_version(void) +{ + return PLUGIN_INTERFACE_VERSION; +} + + +static int +set_watchdog_file(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) +{ + strncpy(watchdog_filename, value, FILENAME_MAX); + return 0; +} + +static int +set_watchdog_interval(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon + __attribute__ ((unused))) +{ + watchdog_interval = atoi(value); + return 0; +} + +/** + * Register parameters from config file + * Called for all plugin parameters + */ +static const struct olsrd_plugin_parameters plugin_parameters[] = { + {.name = "file",.set_plugin_parameter = &set_watchdog_file,.data = NULL}, + {.name = "interval",.set_plugin_parameter = &set_watchdog_interval,.data = NULL}, +}; + +void +olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size) +{ + *params = plugin_parameters; + *size = ARRAYSIZE(plugin_parameters); +} + +static void +olsr_watchdog_write_alivefile(void *foo __attribute__ ((unused))) +{ + FILE *file = fopen(watchdog_filename, "w"); + if (file == NULL) { + OLSR_PRINTF(3, "Error, cannot write watchdog alivefile"); + } else { + fprintf(file, "%ld\n", (long)time(NULL)); + fflush(file); + fclose(file); + } +} + +/** + * Initialize plugin + * Called after all parameters are passed + */ +int +olsrd_plugin_init(void) +{ + /* create the cookie */ + watchdog_timer_cookie = olsr_alloc_cookie("Watchdog: write alive-file", OLSR_COOKIE_TYPE_TIMER); + + /* Register the GW check */ + olsr_start_timer(watchdog_interval * MSEC_PER_SEC, 0, OLSR_TIMER_PERIODIC, + &olsr_watchdog_write_alivefile, NULL, watchdog_timer_cookie->ci_id); + + return 1; +} + +/* + * Local Variables: + * c-basic-offset: 2 + * indent-tabs-mode: nil + * End: + */ diff -Nur olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/src/olsrd_plugin.h olsrd-0-5-6-fc691af9a18d/lib/watchdog/src/olsrd_plugin.h --- olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/src/olsrd_plugin.h 1970-01-01 00:00:00.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/lib/watchdog/src/olsrd_plugin.h 2009-03-13 17:13:45.000000000 +0000 @@ -0,0 +1,69 @@ + +/* + * The olsr.org Optimized Link-State Routing daemon(olsrd) + * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of olsr.org, olsrd nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Visit http://www.olsr.org for more information. + * + * If you find this software useful feel free to make a donation + * to the project. For more information see the website or contact + * the copyright holders. + * + */ + +/* + * Dynamic linked library for the olsr.org olsr daemon + */ + +#ifndef _OLSRD_PLUGIN_MINI +#define _OLSRD_PLUGIN_MINI + + +/**************************************************************************** + * Functions that the plugin MUST provide * + ****************************************************************************/ + + +/* Initialization function */ +int + olsrd_plugin_init(void); + +int + olsrd_plugin_interface_version(void); + +#endif + +/* + * Local Variables: + * c-basic-offset: 2 + * indent-tabs-mode: nil + * End: + */ diff -Nur olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/version-script.txt olsrd-0-5-6-fc691af9a18d/lib/watchdog/version-script.txt --- olsrd-0-5-6-fc691af9a18d.orig/lib/watchdog/version-script.txt 1970-01-01 00:00:00.000000000 +0000 +++ olsrd-0-5-6-fc691af9a18d/lib/watchdog/version-script.txt 2009-03-13 17:13:45.000000000 +0000 @@ -0,0 +1,10 @@ +VERS_1.0 +{ + global: + olsrd_plugin_interface_version; + olsrd_plugin_init; + olsrd_get_plugin_parameters; + + local: + *; +};