11.1Slukem#!/bin/sh 21.1Slukem# 31.11Sskrll# $NetBSD: rtadvd,v 1.11 2020/07/04 06:24:53 skrll Exp $ 41.1Slukem# 51.1Slukem 61.1Slukem# PROVIDE: rtadvd 71.2Slukem# REQUIRE: DAEMON 81.5Sthorpej# BEFORE: LOGIN 91.1Slukem 101.6Smycroft$_rc_subr_loaded . /etc/rc.subr 111.1Slukem 121.8Sroyname=rtadvd 131.4Slukemrcvar=$name 141.8Sroycommand="/usr/sbin/$name" 151.7Sroypidfile="/var/run/$name.pid" 161.8Sroyextra_commands=reload 171.8Sroystart_precmd=rtadvd_prestart 181.8Sroyreload_precmd=rtadvd_prereload 191.1Slukem 201.8Sroyrtadvd_prereload() 211.1Slukem{ 221.8Sroy local chdir="$(getent passwd _rtadvd | cut -d: -f6)" 231.8Sroy local conf=/etc/rtadvd.conf myflags o confdir 241.9Skre local cflag=false 251.11Sskrll 261.9Skre [ -z "${chdir}" ] || [ "/${chdir}" = // ] && return 0 271.8Sroy 281.9Skre if [ -n "${flags}" ]; then 291.9Skre myflags=${flags} 301.8Sroy else 311.8Sroy eval myflags=\$${name}_flags 321.8Sroy fi 331.8Sroy set -- ${myflags} 341.8Sroy while getopts c:dDfM:Rs o; do 351.9Skre # ignore other args, they are processed by rtadvd itself 361.9Skre case "${o}" in 371.9Skre c) conf="${OPTARG}" 381.9Skre case "${conf}" in 391.9Skre /*) ;; 401.9Skre *) echo "${name}: config file (${conf}) must be" \ 411.9Skre "full pathname" 421.9Skre return 1 431.9Skre ;; 441.9Skre esac 451.9Skre cflag=true;; 461.8Sroy esac 471.8Sroy done 481.8Sroy 491.9Skre ${cflag} || test -f "${conf}" && { 501.9Skre confdir=$(dirname "${conf}") 511.9Skre echo "${name}: copying ${conf} to ${chdir}${conf}" 521.9Skre mkdir -p "${chdir}${confdir}" 531.9Skre cp "${conf}" "${chdir}${conf}" || return 1 541.9Skre } 551.9Skre 561.9Skre # Make sure /var/run exists in the chroot 571.9Skre mkdir -p "${chdir}/var/run" 581.9Skre 591.10Skre # Provide a link to the chrooted dump file 601.9Skre ln -snf "${chdir}/var/run/${name}.dump" /var/run 611.9Skre 621.9Skre # Note: actual chroot is done by rtadvd itself 631.9Skre 641.9Skre return 0 651.8Sroy} 661.8Sroy 671.8Sroyrtadvd_prestart() 681.8Sroy{ 691.8Sroy if [ "$ip6mode" != router ]; then 701.1Slukem warn \ 711.1Slukem "${name} cannot be used on IPv6 host, only on an IPv6 router." 721.1Slukem return 1 731.1Slukem fi 741.8Sroy 751.8Sroy rtadvd_prereload 761.1Slukem} 771.1Slukem 781.3Slukemload_rc_config $name 791.1Slukemrun_rc_command "$1" 80