olsrd: improve respawn settings
[feed/routing.git] / olsrd / files / olsrd6.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008-2013 OpenWrt.org
3
4 . $IPKG_INSTROOT/lib/functions/olsrd.sh
5
6 START=65
7 USE_PROCD=1
8 BIN=/usr/sbin/olsrd
9 OLSRD=olsrd6
10 CONF=/var/etc/$OLSRD.conf
11 PID=/var/run/olsrd6.pid
12
13 wait_for_network()
14 {
15 ubus -t 15 wait_for network.interface.$1 2>/dev/null
16 }
17
18 boot()
19 {
20 config_load network
21 config_foreach wait_for_network interface
22 rc_procd start_service
23 }
24
25 start_service() {
26 olsrd_generate_config $OLSRD
27
28 procd_open_instance
29
30 config_load olsrd6
31 local _respawn_timeout
32 local _respawn_retry
33
34 config_get _respawn_timeout general respawn_timeout
35 config_get _respawn_retry general respawn_retry
36
37 procd_set_param command "$BIN"
38 procd_append_param command -f ${CONF}
39 procd_append_param command -nofork
40 procd_append_param command -pidfile ${PID}
41
42 # restart if olsrd dies
43 procd_set_param respawn 3600 $_respawn_timeout $_respawn_retry
44
45 # automatically restart olsrd if generated cfg has changed
46 procd_set_param file $CONF
47
48 procd_set_param pidfile $PID
49
50 procd_close_instance
51
52 olsrd_setup_smartgw_rules
53 }
54
55 service_triggers() {
56 # reload if config changed via uci
57 procd_add_reload_trigger "olsrd6"
58
59 # restart on ifup interface events
60 for n in $(olsrd_list_configured_interfaces $OLSRD); do
61 procd_add_reload_interface_trigger $n /etc/init.d/$OLSRD reload
62 done
63 }