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