forked from freifunk-franken/firmware
alfred: fix boot up
Signed-off-by: Tim Niemeyer <tim.niemeyer@mastersword.de> Reviewed-by: Dominik Heidler <dominik@heidler.eu> Reviewed-by: Steffen Pankratz <kratz00@gmx.de>
This commit is contained in:
parent
9addbe2e0a
commit
df9f672a35
|
@ -0,0 +1,70 @@
|
|||
From 8b91b906261348642731731ca94532d8b3455f2c Mon Sep 17 00:00:00 2001
|
||||
From: Gui Iribarren <gui@altermundi.net>
|
||||
Date: Fri, 13 Dec 2013 16:05:26 -0300
|
||||
Subject: [PATCH] alfred: workaround race condition when batmanif is not ready
|
||||
at boot time
|
||||
|
||||
Wait up to 30 seconds during init.d script on boot, so that batmanif can
|
||||
come up. If the timeout is reached, the init.d script refuses to start
|
||||
alfred and related daemons.
|
||||
|
||||
This prevents an alfred crash when it would start during early boot, before
|
||||
batmanif is available. Instead, alfred is started as soon as batmanif appears,
|
||||
if that happens during the 30-second window.
|
||||
|
||||
Signed-off-by: Gui Iribarren <gui@altermundi.net>
|
||||
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
|
||||
|
||||
Conflicts:
|
||||
alfred/Makefile
|
||||
Signed-off-by: Tim Niemeyer <tim.niemeyer@mastersword.de>
|
||||
---
|
||||
alfred/files/alfred.init | 18 +++++++++++++++++-
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/alfred/files/alfred.init b/alfred/files/alfred.init
|
||||
index e52a7bd..cdb4fff 100755
|
||||
--- a/alfred/files/alfred.init
|
||||
+++ b/alfred/files/alfred.init
|
||||
@@ -16,6 +16,7 @@ pid_file_alfred="/var/run/alfred.pid"
|
||||
pid_file_vis="/var/run/vis.pid"
|
||||
enable=0
|
||||
vis_enable=0
|
||||
+batmanif=""
|
||||
SERVICE_DAEMONIZE=1
|
||||
SERVICE_WRITE_PID=1
|
||||
|
||||
@@ -23,7 +24,7 @@ alfred_start()
|
||||
{
|
||||
local args=""
|
||||
local section="$1"
|
||||
- local disabled interface mode batmanif
|
||||
+ local disabled interface mode
|
||||
|
||||
# check if section is disabled
|
||||
config_get_bool disabled "$section" disabled 0
|
||||
@@ -62,6 +63,21 @@ start()
|
||||
if [ "$enable" = "0" ]; then
|
||||
exit 0
|
||||
fi
|
||||
+
|
||||
+ mesh_dir="/sys/class/net/$batmanif/mesh/"
|
||||
+ if ! [ -d "$mesh_dir" ] ; then
|
||||
+ timeout=30
|
||||
+ echo "${initscript}: waiting $timeout secs for $batmanif interface..."
|
||||
+ for i in $(seq $timeout); do
|
||||
+ sleep 1
|
||||
+ [ -d "$mesh_dir" ] && break
|
||||
+ if [ $i == $timeout ] ; then
|
||||
+ echo "${initscript}: $batmanif not detected, alfred not starting."
|
||||
+ exit 1
|
||||
+ fi
|
||||
+ done
|
||||
+ fi
|
||||
+
|
||||
echo "${initscript}: starting alfred"
|
||||
SERVICE_PID_FILE="$pid_file_alfred"
|
||||
service_start /usr/sbin/alfred ${alfred_args}
|
||||
--
|
||||
2.1.4
|
||||
|
|
@ -25,7 +25,8 @@ OPENWRT_OLDPACKAGES=(openwrt_oldpackages
|
|||
ROUTING=(routing
|
||||
https://github.com/openwrt-routing/packages.git
|
||||
44318d05898069300ce2ad6eb05eb40f232e7123
|
||||
../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch)
|
||||
../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch
|
||||
../../../build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch)
|
||||
ROUTING_PKGS="kmod-batman-adv alfred"
|
||||
|
||||
FASTD=(fastd
|
||||
|
|
Loading…
Reference in New Issue
Block a user