#!/bin/sh

# PROVIDE: ipv6_ndp_client_watchdog
# REQUIRE: LOGIN ndp-proxy-go ipv6_ndp_watchdog
# KEYWORD: shutdown

. /etc/rc.subr

name="ipv6_ndp_client_watchdog"
rcvar="ipv6_ndp_client_watchdog_enable"
pidfile="/var/run/${name}.pid"
command="/usr/local/sbin/ipv6-ndp-client-watchdog"

load_rc_config "${name}"
: ${ipv6_ndp_client_watchdog_enable:="NO"}

start_cmd="ipv6_ndp_client_watchdog_start"
stop_cmd="ipv6_ndp_client_watchdog_stop"
status_cmd="ipv6_ndp_client_watchdog_status"

ipv6_ndp_client_watchdog_status()
{
    if [ -r "${pidfile}" ]; then
        watchdog_pid="$(cat "${pidfile}" 2>/dev/null)"
        if [ -n "${watchdog_pid}" ] && kill -0 "${watchdog_pid}" 2>/dev/null; then
            echo "${name} is running as pid ${watchdog_pid}."
            return 0
        fi
    fi
    echo "${name} is not running."
    return 1
}

ipv6_ndp_client_watchdog_start()
{
    ipv6_ndp_client_watchdog_status >/dev/null 2>&1 && return 0
    echo "Starting ${name}."
    /usr/sbin/daemon -S -f -s notice -l daemon -T "${name}" -m 3 \
        -p "${pidfile}" "${command}" --daemon
}

ipv6_ndp_client_watchdog_stop()
{
    if ! ipv6_ndp_client_watchdog_status >/dev/null 2>&1; then
        return 0
    fi
    watchdog_pid="$(cat "${pidfile}")"
    echo "Stopping ${name}."
    kill "${watchdog_pid}"
    wait_count=0
    while kill -0 "${watchdog_pid}" 2>/dev/null && [ "${wait_count}" -lt 10 ]; do
        sleep 1
        wait_count=$((wait_count + 1))
    done
    rm -f "${pidfile}"
}

run_rc_command "$1"
