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
|
ROUTING=(routing
|
||||||
https://github.com/openwrt-routing/packages.git
|
https://github.com/openwrt-routing/packages.git
|
||||||
44318d05898069300ce2ad6eb05eb40f232e7123
|
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"
|
ROUTING_PKGS="kmod-batman-adv alfred"
|
||||||
|
|
||||||
FASTD=(fastd
|
FASTD=(fastd
|
||||||
|
|
Loading…
Reference in New Issue
Block a user