1#!/bin/sh 2# 3# $NetBSD: rtadvd,v 1.11 2020/07/04 06:24:53 skrll Exp $ 4# 5 6# PROVIDE: rtadvd 7# REQUIRE: DAEMON 8# BEFORE: LOGIN 9 10$_rc_subr_loaded . /etc/rc.subr 11 12name=rtadvd 13rcvar=$name 14command="/usr/sbin/$name" 15pidfile="/var/run/$name.pid" 16extra_commands=reload 17start_precmd=rtadvd_prestart 18reload_precmd=rtadvd_prereload 19 20rtadvd_prereload() 21{ 22 local chdir="$(getent passwd _rtadvd | cut -d: -f6)" 23 local conf=/etc/rtadvd.conf myflags o confdir 24 local cflag=false 25 26 [ -z "${chdir}" ] || [ "/${chdir}" = // ] && return 0 27 28 if [ -n "${flags}" ]; then 29 myflags=${flags} 30 else 31 eval myflags=\$${name}_flags 32 fi 33 set -- ${myflags} 34 while getopts c:dDfM:Rs o; do 35 # ignore other args, they are processed by rtadvd itself 36 case "${o}" in 37 c) conf="${OPTARG}" 38 case "${conf}" in 39 /*) ;; 40 *) echo "${name}: config file (${conf}) must be" \ 41 "full pathname" 42 return 1 43 ;; 44 esac 45 cflag=true;; 46 esac 47 done 48 49 ${cflag} || test -f "${conf}" && { 50 confdir=$(dirname "${conf}") 51 echo "${name}: copying ${conf} to ${chdir}${conf}" 52 mkdir -p "${chdir}${confdir}" 53 cp "${conf}" "${chdir}${conf}" || return 1 54 } 55 56 # Make sure /var/run exists in the chroot 57 mkdir -p "${chdir}/var/run" 58 59 # Provide a link to the chrooted dump file 60 ln -snf "${chdir}/var/run/${name}.dump" /var/run 61 62 # Note: actual chroot is done by rtadvd itself 63 64 return 0 65} 66 67rtadvd_prestart() 68{ 69 if [ "$ip6mode" != router ]; then 70 warn \ 71 "${name} cannot be used on IPv6 host, only on an IPv6 router." 72 return 1 73 fi 74 75 rtadvd_prereload 76} 77 78load_rc_config $name 79run_rc_command "$1" 80