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