#!/sbin/openrc-run # Copyright 1999-2023 Gentoo Authors # 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 description="IPv6 Router Advertisement Daemon" extra_commands="configtest" extra_started_commands="reload" description_configtest="Test the configuration and run startup tests" description_reload="Reload the radvd configuration file" 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 } configtest() { ebegin "Checking ${RC_SVCNAME} configuration" checkconfig eend $? } start() { if [ "${FORWARD}" != "no" ]; then ebegin "Enabling IPv6 forwarding" sysctl -w "${SYSCTL_FORWARD}=1" >/dev/null eend $? fi checkconfig || return 1 checkpath -d -o radvd:radvd "${PIDFILE%/*}" 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 checkpath -d -o radvd:radvd "${PIDFILE%/*}" ebegin "Reloading IPv6 Router Advertisement Daemon" start-stop-daemon --signal HUP \ --exec /usr/sbin/radvd --pidfile "${PIDFILE}" eend $? }