forked from freifunk-franken/firmware
65 lines
1.4 KiB
Bash
Executable File
65 lines
1.4 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
|
|
USE_PROCD=1
|
|
PROCD_DEBUG=9
|
|
|
|
validate_hood_section() {
|
|
if [ -z "$(uci -q get network.ethmesh.ifname)" ]; then
|
|
# false
|
|
return 1
|
|
fi
|
|
|
|
if [ -n "$(uci -q get system.@system[0].hood)" -o -n "$(uci -q get network.client.macaddr)" ]; then
|
|
# true
|
|
return 0
|
|
fi
|
|
|
|
# false
|
|
return 1
|
|
}
|
|
|
|
service_triggers()
|
|
{
|
|
local script name
|
|
|
|
script=$(readlink -f "$initscript")
|
|
name=$(basename ${script:-$initscript})
|
|
|
|
procd_add_config_trigger "config.change" "system" /etc/init.d/$name reload
|
|
procd_add_interface_trigger "interface.*" "ethmesh" /etc/init.d/$name reload
|
|
procd_add_validation validate_hood_section
|
|
}
|
|
|
|
reload_service()
|
|
{
|
|
echo "Explicitly restarting macnocker"
|
|
stop
|
|
start
|
|
}
|
|
|
|
start_service() {
|
|
validate_hood_section || {
|
|
echo "validation failed"
|
|
return 1
|
|
}
|
|
|
|
|
|
local IFACE="$(uci -q get network.ethmesh.ifname)"
|
|
local HOOD="$(uci -q get system.@system[0].hood)"
|
|
if [ -z "$HOOD" ]; then
|
|
HOOD="$(uci -q get network.client.macaddr)"
|
|
fi
|
|
|
|
procd_open_instance macnock
|
|
procd_set_param command /usr/sbin/macnock $IFACE $HOOD
|
|
procd_set_param respawn 10 10 0
|
|
procd_set_param file /etc/config/system
|
|
procd_set_param netdev $IFACE
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param user root
|
|
procd_close_instance
|
|
}
|