1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-25 00:51:21 +00:00
freebsd-ports/net/xorp/files/xorp.in
Doug Barton 1d6b4b3f91 Begin the process of deprecating sysutils/rc_subr by
s#. %%RC_SUBR%%#. /etc/rc.subr#
2010-03-27 00:15:24 +00:00

105 lines
2.1 KiB
Bash

#!/bin/sh
#
# $FreeBSD$
#
# A sample XORP startup script.
#
# PROVIDE: xorp
# REQUIRE: netif routing mountcritlocal
# BEFORE: NETWORKING
# Add the following lines to /etc/rc.conf to enable xorp:
#
# xorp_enable="YES"
# xorp_flags="<set as needed>"
# xorp_config_boot="%%PREFIX%%/etc/xorp.conf.sample"
. /etc/rc.subr
name="xorp"
rcvar=`set_rcvar`
load_rc_config $name
: ${xorp_enable="NO"}
: ${xorp_config_boot="%%PREFIX%%/etc/xorp.conf"}
: ${xorp_rtrmgr_pidfile="/var/run/xorp_rtrmgr.pid"}
: ${xorp_rtrmgr_logfile="/var/log/xorp_rtrmgr.log"}
: ${xorp_rtrmgr_poll_enable=true}
: ${xorp_rtrmgr_poll_timeout=90}
: ${xorp_hardkill_enable=false}
required_files=${xorp_config_boot}
command=%%PREFIX%%/bin/xorp_rtrmgr
command_args="-b ${xorp_config_boot}"
pidfile=${xorp_rtrmgr_pidfile}
sig_stop=INT
start_precmd="xorp_prestart"
start_cmd="xorp_start"
stop_postcmd="xorp_poststop"
xorp_prestart()
{
touch ${xorp_rtrmgr_logfile}
return 0
}
xorp_start()
{
pidfile=${xorp_rtrmgr_pidfile}
echo -n 'Starting XORP router processes:'
echo -n ' xorp_rtrmgr'
if ! daemon </dev/null >>${xorp_rtrmgr_logfile} 2>&1 -c -p ${pidfile} \
${command} ${command_args} ; then
warn 'could not bring up xorp_rtrmgr.'
return 1
fi
${xorp_rtrmgr_poll_enable} || return 0
# If startup polling is enabled, then poll xorp_rtrmgr every
# second to see if it died, or if it logged successful bringup.
# XXX This may be racy on very fast machines, but without
# daemonizing support from xorp_rtrmgr it's difficult not to race.
pid=$(cat ${xorp_rtrmgr_pidfile})
timeout=${xorp_rtrmgr_poll_timeout}
tick=0
fail=true
until [ $tick = $timeout ];
do
sleep 1 ; kill -0 ${pid} || break
if ( tail -5 ${xorp_rtrmgr_logfile} | \
grep 'No more tasks to run' > /dev/null 2>&1 ) ; then
fail=false
break
fi
tick=$((tick + 1))
done
if $fail ; then
warn 'xorp_rtrmgr failed to start'
return 1
fi
echo '.'
return 0
}
xorp_poststop()
{
rm -f ${xorp_rtrmgr_pidfile} >/dev/null 2>&1 || true
${xorp_hardkill_enable} || return 0
killall -9 -m xorp_\* || true
return 0
}
run_rc_command "$1"