From: Jo-Philipp Wich Date: Mon, 16 Mar 2009 17:11:06 +0000 (+0000) Subject: contrib/packages/olsrd-luci: add watchdog plugin (grabbed from ninux.org and modified... X-Git-Tag: 0.9.0~590 X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=129be80785b60b8e4bda7be8a211c1716a29f27a contrib/packages/olsrd-luci: add watchdog plugin (grabbed from ninux.org and modified for olsrd 0.5.6) --- diff --git a/contrib/package/olsrd-luci/Makefile b/contrib/package/olsrd-luci/Makefile index c0ccf46d28..2828dd7d63 100644 --- a/contrib/package/olsrd-luci/Makefile +++ b/contrib/package/olsrd-luci/Makefile @@ -13,7 +13,7 @@ PKG_BASENAME:=olsrd PKG_NAME:=$(PKG_BASENAME)-luci PKG_BASEVER:=0.5.6-r3 PKG_VERSION:=$(PKG_BASEVER)+hg1765 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_HGREV:=fc691af9a18d PKG_SOURCE:=$(PKG_HGREV).tar.gz @@ -119,13 +119,20 @@ define Package/olsrd-luci-mod-quagga DEPENDS:=olsrd-luci endef +define Package/olsrd-luci-mod-watchdog + $(call Package/olsrd-luci/common_info) + MENU:=1 + TITLE:=OLSR - Watchdog Plugin + DEPENDS:=olsrd-luci +endef + TARGET_CFLAGS += $(FPIC) define Build/Compile $(MAKE) -C "$(PKG_BUILD_DIR)" olsrd libs \ $(TARGET_CONFIGURE_OPTS) \ NODEBUG=1 \ - CFLAGS="$(TARGET_CFLAGS) -DSVEN_OLA_UNBLOAT" \ + CFLAGS="$(TARGET_CFLAGS) -DSVEN_OLA_UNBLOAT -DNODEBUG" \ OS="linux" \ INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ LIBDIR="$(PKG_INSTALL_DIR)/usr/lib" \ @@ -134,7 +141,7 @@ define Build/Compile MANDIR="$(PKG_INSTALL_DIR)/usr/share/man" \ STRIP="true" \ INSTALL_LIB="true" \ - SUBDIRS="arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo nameservice secure txtinfo quagga" + SUBDIRS="arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo nameservice secure txtinfo quagga watchdog" endef define Package/olsrd-luci/install @@ -196,6 +203,11 @@ define Package/olsrd-luci-mod-quagga/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/quagga/olsrd_quagga.so.* $(1)/usr/lib/ endef +define Package/olsrd-luci-mod-watchdog/install + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/watchdog/olsrd_watchdog.so.* $(1)/usr/lib/ +endef + $(eval $(call BuildPackage,olsrd-luci)) $(eval $(call BuildPackage,olsrd-luci-mod-arprefresh)) @@ -208,3 +220,4 @@ $(eval $(call BuildPackage,olsrd-luci-mod-nameservice)) $(eval $(call BuildPackage,olsrd-luci-mod-secure)) $(eval $(call BuildPackage,olsrd-luci-mod-txtinfo)) $(eval $(call BuildPackage,olsrd-luci-mod-quagga)) +$(eval $(call BuildPackage,olsrd-luci-mod-watchdog)) diff --git a/contrib/package/olsrd-luci/patches/150-add-watchdog.patch b/contrib/package/olsrd-luci/patches/150-add-watchdog.patch new file mode 100644 index 0000000000..121e8a1c83 --- /dev/null +++ b/contrib/package/olsrd-luci/patches/150-add-watchdog.patch @@ -0,0 +1,358 @@ +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: ++ *; ++};