freebsd-ports/net/xorp-devel/files/xorp.in
Doug Barton 29813d5397 Remove painful examples of foo="", with particular prejudice against
constructions that parse out to [ -z "$foo" ] && foo=""

These are bad examples that get copied and pasted into new code, so the
hope is that with less bad examples there will be less need for me to
bring this up in review.

In a few of these files all that were changed were comments so that next
time I search for these patterns I won't trip on the file for no reason.

In a few places, add $FreeBSD$

No functional changes, so no PORTREVISION bumps
2011-05-15 02:49:17 +00:00

108 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_conf="%%PREFIX%%/etc/xorp.conf.sample"
#
# xorp_flags (Set as needed)
. /etc/rc.subr
name="xorp"
rcvar=`set_rcvar`
load_rc_config $name
: ${xorp_enable="NO"}
: ${xorp_conf="%%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_conf}
command=%%PREFIX%%/sbin/xorp_rtrmgr
command_args="-c ${xorp_conf}"
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
}
# FIXME use XORP's built-in syslog capability
xorp_start()
{
pidfile=${xorp_rtrmgr_pidfile}
echo -n 'Starting XORP router processes:'
# FIXME use XORP's built-in daemonization
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"