Merge r4338-r4341

This commit is contained in:
Jo-Philipp Wich 2009-03-16 17:57:27 +00:00
parent 907f27f8b2
commit 0bdf302f9f
9 changed files with 429 additions and 12 deletions

View 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

View 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'

View 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'

View 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"] = {},

View 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))

View file

@ -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:
+ *;
+};

View 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

View file

@ -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

View file

@ -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