contrib/packages/olsrd-luci: add watchdog plugin (grabbed from ninux.org and modified...
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:11:06 +0000 (17:11 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:11:06 +0000 (17:11 +0000)
contrib/package/olsrd-luci/Makefile
contrib/package/olsrd-luci/patches/150-add-watchdog.patch [new file with mode: 0644]

index c0ccf46d283b2abd71cae8a72edc63feb105e766..2828dd7d6337aa060db440d642dd01548cb6c5ae 100644 (file)
@@ -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 (file)
index 0000000..121e8a1
--- /dev/null
@@ -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 <hrogge@googlemail.com>
++---------------------------------------------------------------------
++
++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 <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <time.h>
++#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:
++    *;
++};