This increases the amount of seconds to wait before a service restart attempt from 5 to 15 seconds and allows unlimited retries. Olsrd sometimes crashes together with a network interface and 5 seconds can be too short to bring back up a crashed network interface, which is required for olsrd to restart. It also adds the ability to configure the wait time (respawn_timeout) and the number of retries (respawn_retry). Signed-off-by: Tobias Schwarz <info@tobias-schwarz.com>
63 lines
1.3 KiB
Bash
63 lines
1.3 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2008-2013 OpenWrt.org
|
|
|
|
. $IPKG_INSTROOT/lib/functions/olsrd.sh
|
|
|
|
START=65
|
|
USE_PROCD=1
|
|
BIN=/usr/sbin/olsrd
|
|
OLSRD=olsrd6
|
|
CONF=/var/etc/$OLSRD.conf
|
|
PID=/var/run/olsrd6.pid
|
|
|
|
wait_for_network()
|
|
{
|
|
ubus -t 15 wait_for network.interface.$1 2>/dev/null
|
|
}
|
|
|
|
boot()
|
|
{
|
|
config_load network
|
|
config_foreach wait_for_network interface
|
|
rc_procd start_service
|
|
}
|
|
|
|
start_service() {
|
|
olsrd_generate_config $OLSRD
|
|
|
|
procd_open_instance
|
|
|
|
config_load olsrd6
|
|
local _respawn_timeout
|
|
local _respawn_retry
|
|
|
|
config_get _respawn_timeout general respawn_timeout
|
|
config_get _respawn_retry general respawn_retry
|
|
|
|
procd_set_param command "$BIN"
|
|
procd_append_param command -f ${CONF}
|
|
procd_append_param command -nofork
|
|
procd_append_param command -pidfile ${PID}
|
|
|
|
# restart if olsrd dies
|
|
procd_set_param respawn 3600 $_respawn_timeout $_respawn_retry
|
|
|
|
# automatically restart olsrd if generated cfg has changed
|
|
procd_set_param file $CONF
|
|
|
|
procd_set_param pidfile $PID
|
|
|
|
procd_close_instance
|
|
|
|
olsrd_setup_smartgw_rules
|
|
}
|
|
|
|
service_triggers() {
|
|
# reload if config changed via uci
|
|
procd_add_reload_trigger "olsrd6"
|
|
|
|
# restart on ifup interface events
|
|
for n in $(olsrd_list_configured_interfaces $OLSRD); do
|
|
procd_add_reload_interface_trigger $n /etc/init.d/$OLSRD reload
|
|
done
|
|
}
|