summaryrefslogtreecommitdiffhomepage
path: root/modules/freifunk/root/usr/sbin/ff_olsr_watchdog
diff options
context:
space:
mode:
Diffstat (limited to 'modules/freifunk/root/usr/sbin/ff_olsr_watchdog')
-rwxr-xr-xmodules/freifunk/root/usr/sbin/ff_olsr_watchdog29
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/freifunk/root/usr/sbin/ff_olsr_watchdog b/modules/freifunk/root/usr/sbin/ff_olsr_watchdog
new file mode 100755
index 000000000..2b4fabed1
--- /dev/null
+++ b/modules/freifunk/root/usr/sbin/ff_olsr_watchdog
@@ -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