#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

CONFIGFILE=/etc/radvd.conf
PIDFILE=/run/radvd/radvd.pid
SYSCTL_FORWARD=net.ipv6.conf.all.forwarding

extra_started_commands="reload"

depend() {
	need net
}

checkconfig() {
	if [ ! -f "${CONFIGFILE}" ]; then
		eerror "Configuration file ${CONFIGFILE} not found"
		return 1
	fi

	if ! /usr/sbin/radvd -c -C "${CONFIGFILE}" ; then
		eerror "Configuration file ${CONFIGFILE} failed test"
		return 1
	fi

	checkpath -d -o radvd:radvd ${PIDFILE%/*}
}

start() {
	if [ "${FORWARD}" != "no" ]; then
		ebegin "Enabling IPv6 forwarding"
		sysctl -w "${SYSCTL_FORWARD}=1" >/dev/null
		eend $?
	fi

	checkconfig || return 1

	ebegin "Starting IPv6 Router Advertisement Daemon"
	start-stop-daemon --start --exec /usr/sbin/radvd \
		--pidfile "${PIDFILE}" \
		-- -C "${CONFIGFILE}" -p "${PIDFILE}" -u radvd ${OPTIONS}
	eend $?
}

stop() {
	ebegin "Stopping IPv6 Router Advertisement Daemon"
	start-stop-daemon --stop --exec /usr/sbin/radvd --pidfile "${PIDFILE}"
	eend $?

	if [ "${FORWARD}" != "no" ]; then
		ebegin "Disabling IPv6 forwarding"
		sysctl -w "${SYSCTL_FORWARD}=0" > /dev/null
		eend $?
	fi
}

reload() {
	if [ "${FORWARD}" != "no" ]; then
		ebegin "Enabling IPv6 forwarding"
		sysctl -w "${SYSCTL_FORWARD}=1" >/dev/null
		eend $?
	fi

	checkconfig || return 1

	ebegin "Reloading IPv6 Router Advertisement Daemon"
	start-stop-daemon --signal HUP \
		--exec /usr/sbin/radvd --pidfile "${PIDFILE}"
	eend $?
}
