mirror of
https://git.openwrt.org/feed/routing.git
synced 2025-01-08 11:47:51 +08:00
0bb6aa04f6
Wait for wireless to initialize (pending="false") to ensure that any olsrd(6) configured interfaces and their associated devices are up. This provides the init script the ability to properly add all interface sections to the generated config file /tmp/etc/olsrd(6).conf Signed-off-by: Perry Melange <isprotejesvalkata@gmail.com>
80 lines
1.7 KiB
Bash
80 lines
1.7 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=olsrd
|
|
CONF=/var/etc/$OLSRD.conf
|
|
PID=/var/run/olsrd.pid
|
|
|
|
wait_for_network()
|
|
{
|
|
ubus -t 15 wait_for network.interface.$1 2>/dev/null
|
|
}
|
|
|
|
wait_for_wireless()
|
|
{
|
|
local count=0
|
|
ubus -t 15 wait_for network.wireless 2>/dev/null
|
|
while [ $count -lt 30 ]; do
|
|
if [ "$(ubus call network.wireless status | jsonfilter -e '@[*]["pending"]' | grep true | wc -l)" == "0" ]; then
|
|
break
|
|
fi
|
|
count=$((count+1))
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
boot()
|
|
{
|
|
config_load network
|
|
config_foreach wait_for_network interface
|
|
wait_for_wireless
|
|
rc_procd start_service
|
|
}
|
|
|
|
start_service() {
|
|
olsrd_generate_config $OLSRD
|
|
|
|
procd_open_instance
|
|
|
|
config_load olsrd
|
|
local _respawn_threshold
|
|
local _respawn_timeout
|
|
local _respawn_retry
|
|
|
|
config_get _respawn_threshold procd respawn_threshold 3600
|
|
config_get _respawn_timeout procd respawn_timeout 15
|
|
config_get _respawn_retry procd respawn_retry 0
|
|
|
|
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 $_respawn_threshold $_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 "olsrd"
|
|
|
|
# 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
|
|
}
|