modules/freifunk: add olsrd watchdog script, remove olsrd interface defaults
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:36:00 +0000 (17:36 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Mar 2009 17:36:00 +0000 (17:36 +0000)
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 862c86d..c8eeee2 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 61bd580..a61f8b7 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