#!/sbin/openrc-run

description="Watchdog keepalive daemon"

KEEPALIVE_DAEMON=/usr/sbin/wd_keepalive
KEEPALIVE_PIDFILE=/var/run/wd_keepalive.pid
STOP_RETRY_SCHEDULE='TERM/10/forever/KILL/1'

run_watchdog=0
watchdog_options=""
watchdog_module="none"

depend() {
	need localmount
	before watchdog
	provide wd_keepalive
}

_load_defaults() {
	[ -f /etc/default/watchdog ] && . /etc/default/watchdog
}

start() {
	_load_defaults
	[ "$run_watchdog" = 1 ] || return 0
	[ "${watchdog_module:-none}" != "none" ] && /sbin/modprobe "$watchdog_module" || true
	ebegin "Starting watchdog keepalive daemon"
	start-stop-daemon --start --quiet --pidfile "$KEEPALIVE_PIDFILE" \
		--exec "$KEEPALIVE_DAEMON" -- $watchdog_options
	if eend $?; then
		ln -sf "$KEEPALIVE_PIDFILE" /run/sendsigs.omit.d/wd_keepalive.pid
	fi
}

stop() {
	_load_defaults
	[ "$run_watchdog" = 1 ] || return 0
	ebegin "Stopping watchdog keepalive daemon"
	start-stop-daemon --stop --quiet --oknodo --retry "$STOP_RETRY_SCHEDULE" \
		--pidfile "$KEEPALIVE_PIDFILE"
	eend $?
	rm -f /run/sendsigs.omit.d/wd_keepalive.pid
}

restart() {
	stop
	start
}

status() {
	status_of_proc -p "$KEEPALIVE_PIDFILE" "$KEEPALIVE_DAEMON" wd_keepalive
}
