fd7eb5e14ef2ab6542018df9f77137b9e391e4bb
[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_threshold
32 local _respawn_timeout
33 local _respawn_retry
34
35 config_get _respawn_threshold general _respawn_threshold 3600
36 config_get _respawn_timeout general respawn_timeout 15
37 config_get _respawn_retry general respawn_retry 0
38
39 procd_set_param command "$BIN"
40 procd_append_param command -f ${CONF}
41 procd_append_param command -nofork
42 procd_append_param command -pidfile ${PID}
43
44 # restart if olsrd dies
45 procd_set_param respawn $_respawn_threshold $_respawn_timeout $_respawn_retry
46
47 # automatically restart olsrd if generated cfg has changed
48 procd_set_param file $CONF
49
50 procd_set_param pidfile $PID
51
52 procd_close_instance
53
54 olsrd_setup_smartgw_rules
55 }
56
57 service_triggers() {
58 # reload if config changed via uci
59 procd_add_reload_trigger "olsrd6"
60
61 # restart on ifup interface events
62 for n in $(olsrd_list_configured_interfaces $OLSRD); do
63 procd_add_reload_interface_trigger $n /etc/init.d/$OLSRD reload
64 done
65 }