olsrd: fix olsrd starting before network
[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 procd_set_param command "$BIN"
30 procd_append_param command -f ${CONF}
31 procd_append_param command -nofork
32 procd_append_param command -pidfile ${PID}
33
34 # restart if olsrd dies
35 procd_set_param respawn
36
37 # automatically restart olsrd if generated cfg has changed
38 procd_set_param file $CONF
39
40 procd_set_param pidfile $PID
41
42 procd_close_instance
43
44 olsrd_setup_smartgw_rules
45 }
46
47 service_triggers() {
48 # reload if config changed via uci
49 procd_add_reload_trigger "olsrd6"
50
51 # restart on ifup interface events
52 for n in $(olsrd_list_configured_interfaces $OLSRD); do
53 procd_add_reload_interface_trigger $n /etc/init.d/$OLSRD reload
54 done
55 }