#!/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 }