Merge r4338-r4341
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:57:27 +0000 (17:57 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:57:27 +0000 (17:57 +0000)
applications/luci-ffwizard-leipzig/luasrc/model/cbi/ffwizard.lua
applications/luci-olsr/luasrc/i18n/olsr.de.lua
applications/luci-olsr/luasrc/i18n/olsr.en.lua
applications/luci-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua
contrib/package/olsrd-luci/Makefile
contrib/package/olsrd-luci/patches/150-add-watchdog.patch [new file with mode: 0644]
modules/freifunk/root/etc/config/freifunk
modules/freifunk/root/etc/init.d/freifunk
modules/freifunk/root/usr/sbin/ff_olsr_watchdog [new file with mode: 0755]

index 84e401af95d87c3ed76f022ed753291f7a93103d..b918da9205bc418246b0f87f0a900ec9e0b43e24 100644 (file)
@@ -284,12 +284,23 @@ function olsr.write(self, section, value)
        olsrbase.interface = device
        olsrbase.ignore    = "0"
        uci:section("olsrd", "Interface", nil, olsrbase)
-       uci:save("olsrd")
+
+       -- Delete old watchdog settings
+       uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_watchdog.so.0.1"})
+
+       -- Write new watchdog settings
+       uci:section("olsrd", "LoadPlugin", nil, {
+               library  = "olsrd_watchdog.so.0.1",
+               file     = "/var/run/olsrd.watchdog",
+               interval = "30"
+       })
 
        -- Import hosts
        uci:foreach("dhcp", "dnsmasq", function(s)
                uci:set("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
        end)
+
+       uci:save("olsrd")
        uci:save("dhcp")
 end
 
index 4e652c85d550c37de0a3ac5bdeff99634d8f8775..97a2d943e61c1ed6b193e88900e343d0fd0ae29f 100644 (file)
@@ -125,3 +125,5 @@ olsrd_loadplugin_exportroutes = 'Routen nur an Quagga oder auch an Kernel export
 olsrd_loadplugin_localpref = 'Lokale Routen immer bevorzugen'
 olsrd_loadplugin_distance = 'Distanz für exportierte Routen'
 olsrd_loadplugin_keyfile = 'Schlüsseldatei'
+olsrd_loadplugin_file = 'Watchdog Zeitstempeldatei'
+olsrd_loadplugin_interval = 'Aktualisierungsinterval in Sekunden'
index dc1e4423f4fa6c23e13622bb01629a0c0c9cab33..5b7f6d3c456048c32b368ac56cae1169f40521e4 100644 (file)
@@ -125,3 +125,5 @@ olsrd_loadplugin_exportroutes = 'Only export routes to Quagga or to kernel too'
 olsrd_loadplugin_localpref = 'Always prefer local routes'
 olsrd_loadplugin_distance = 'Distance of exported routes'
 olsrd_loadplugin_keyfile = 'Key file'
+olsrd_loadplugin_file = 'Watchdog timestamp file'
+olsrd_loadplugin_interval = 'Refresh interval in seconds'
index a0d6a235707a3a3270a71c2d91afe3923b8a98cb..9c1a8312328d2ac41aa7390abe40690e92c4218a 100644 (file)
@@ -2,6 +2,7 @@
 LuCI - Lua Configuration Interface
 
 Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2009 Jo-Philipp Wich <xm@subsignal.org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -133,6 +134,11 @@ if arg[1] then
                        { Value,                "accept",                               "10.247.200.4" }
                },
 
+               ["olsrd_watchdog.so.0.1"] = {
+                       { Value,                "file",                                 "/var/run/olsrd.watchdog" },
+                       { Value,                "interval",                             "30" }
+               },
+
                ["olsrd_arprefresh.so.0.1"]             = {},
                ["olsrd_dot_draw.so.0.3"]               = {},
                ["olsrd_dyn_gw_plain.so.0.4"]   = {},
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:
++    *;
++};
index 862c86dbb58da437d21d1934dbad14f7e367b227..c8eeee22368a2e4d13a158d04c61c093cd2b05a8 100644 (file)
@@ -76,14 +76,6 @@ config defaults dhcp
 
 
 config defaults olsr_interface
-       option  HelloInterval 6.0
-       option  HelloValidityTime 108.0
-       option  TcInterval 4.0
-       option  TcValidityTime 324.0
-       option  MidInterval 18.0
-       option  MidValidityTime 324.0
-       option  HnaInterval 18.0
-       option  HnaValidityTime 108.0
 
 
 config community leipzig
index 61bd58055b4fe6d24ec493b117c728d82e6c3c50..a61f8b7a173bce94c366e8e732c9157c0be3af4d 100755 (executable)
@@ -13,6 +13,10 @@ boot() {
                echo "* * * * *         /usr/sbin/ff_olsr_test_gw" >> /etc/crontabs/root
        }
 
+       grep -q '/usr/sbin/ff_olsr_watchdog' /etc/crontabs/root || {
+               echo "*/5 * * * *       /usr/sbin/ff_olsr_watchdog" >> /etc/crontabs/root
+       }
+
        [ -f /etc/rc.local ] && . /etc/rc.local
        [ -d /etc/rc.local.d ] && {
                for file in /etc/rc.local.d/*; do
diff --git a/modules/freifunk/root/usr/sbin/ff_olsr_watchdog b/modules/freifunk/root/usr/sbin/ff_olsr_watchdog
new file mode 100755 (executable)
index 0000000..2b4fabe
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/lua
+
+require "os"
+require "io"
+require "uci"
+require "posix"
+
+if posix.access("/var/run/olsrd.pid") then
+       local stamp, intv
+       local x = uci.cursor()
+
+       x:foreach("olsrd", "LoadPlugin",
+               function(s)
+                       if s.library == "olsrd_watchdog.so.0.1" then
+                               intv  = tonumber(s.interval)
+                               stamp = s.file
+                       end
+               end)
+
+       if intv and posix.access(stamp) then
+               local systime = os.time()
+               local wdgtime = tonumber(io.lines(stamp)())
+
+               if not wdgtime or ( systime - wdgtime ) > intv then
+                       os.execute("logger -t 'OLSR watchdog' 'Process died - restarting!'")
+                       os.execute("/etc/init.d/olsrd restart")
+               end
+       end
+end