#! /bin/sh # # $FreeBSD$ # # Start or stop isc-dhcrelay. # rc_file=${0##*/} rc_arg=$1 # override these variables in ${PREFIX}/etc/rc.isc-dhcrelay.conf dhcrelay_options= # command option(s) dhcrelay_ifaces= # ethernet interface(s) dhcrelay_servers= # dhcpd server(s) if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/${rc_file}\$"); then echo "${rc_file}: Cannot determine PREFIX." >&2 echo "Please use the complete pathname." >&2 exit 64 fi rcconf_dir=${PREFIX}/etc rcconf_file=rc.${rc_file%.sh}.conf rcconf_path=${rcconf_dir}/${rcconf_file} if [ -f ${rcconf_path} ]; then . ${rcconf_path} fi program_dir=${PREFIX}/sbin program_file=dhcrelay program_path=${program_dir}/${program_file} pid_dir=/var/run pid_file=${program_file}.pid pid_path=${pid_dir}/${pid_file} syslog_facility=daemon.err case "$rc_arg" in start) if [ ! -x ${program_path} ]; then logger -sp ${syslog_facility} -t ${program_file} \ "unable to start: ${program_path} is missing." exit 72 fi if [ -z "${dhcrelay_servers}" ]; then logger -sp ${syslog_facility} -t ${program_file} \ "unable to start: no dhcpd server(s) configured." exit 64 fi ifaces= for iface in ${dhcrelay_ifaces}; do ifaces="$ifaces -i $iface" done ${program_path} ${dhcrelay_options} ${ifaces} ${dhcrelay_servers} && echo -n " ${program_file}" ;; stop) if [ -r ${pid_path} ]; then kill $(cat ${pid_path}) 2> /dev/null else killall ${program_file} 2> /dev/null fi ;; restart) $0 stop $0 start ;; status) ps -auxww | egrep ${program_file} | egrep -v "($0|egrep)" ;; *) echo "usage: ${rc_file} {start|stop|restart|status}" >&2 ;; esac exit 0