firmware/src/packages/fff/fff-macnock/files/etc/init.d/macnock

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
}