mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-29 05:38:00 +00:00
2c30c4dabb
PR: 177303 Submitted by: Boris Kovalenko <boris@tagnet.ru> (maintainer) - add "--no_kernel" option decription to man-page PR: 173624 Reported by: Rasmus G. Andersen <rga@abiosis.dk> - add integrated-vtysh-config mode to rc-script PR: 176223 Submitted by: Michael deMan <freebsd@deman.com> - add config file testing before start/restart in rc-script PR: 176995 Submitted by: Alexander Brovikov <alexander@brovikov.ru>
146 lines
3.0 KiB
Bash
146 lines
3.0 KiB
Bash
#!/bin/sh
|
|
|
|
# $FreeBSD$
|
|
#
|
|
# PROVIDE: quagga
|
|
# REQUIRE: netif routing
|
|
# KEYWORD: nojail
|
|
|
|
#
|
|
# Add the following line to /etc/rc.conf to enable quagga:
|
|
#quagga_enable="YES"
|
|
#
|
|
# You may also wish to use the following variables to fine-tune startup:
|
|
# quagga_flags="-d"
|
|
# quagga_daemons="zebra ripd ripngd ospfd ospf6d bgpd isisd"
|
|
# quagga_vysh_boot="YES"
|
|
# Per daemon tuning may be done with daemon_name_flags
|
|
# zebra_flags="-dP 0"
|
|
# bgpd_flags="-dnrP 0" and so on
|
|
# If you want to give the routing deamons a chance to catchup before
|
|
# continueing, set quagga_wait_for to a "default" or certain prefix.
|
|
# quagga_wait_for="default"
|
|
#
|
|
# If the quagga daemons require additional shared libraries to start,
|
|
# use the following variable to run ldconfig(8) in advance:
|
|
#quagga_extralibs_path="/usr/local/lib ..."
|
|
#
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="quagga"
|
|
rcvar=quagga_enable
|
|
|
|
start_postcmd=start_postcmd
|
|
stop_postcmd=stop_postcmd
|
|
configtest_cmd=check_config
|
|
extra_commands="configtest"
|
|
|
|
check_config() {
|
|
echo "Checking $daemon.conf"
|
|
$command $daemon_flags -C
|
|
result=$?
|
|
if [ "$result" -eq "0" ]; then
|
|
echo "OK"
|
|
else
|
|
echo "FAILED"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
start_postcmd()
|
|
{
|
|
# Wait only when last daemon has started.
|
|
if [ "${quagga_daemons}" = "${quagga_daemons% ${name}}" ]; then
|
|
return;
|
|
fi
|
|
if [ ${quagga_wait_for} ]; then
|
|
echo Waiting for ${quagga_wait_for} route...
|
|
while true; do
|
|
/sbin/route -n get ${quagga_wait_for} >/dev/null 2>&1 && break;
|
|
sleep 1;
|
|
done
|
|
fi
|
|
}
|
|
|
|
stop_postcmd()
|
|
{
|
|
rm -f $pidfile
|
|
}
|
|
|
|
do_cmd()
|
|
{
|
|
local ret
|
|
ret=0
|
|
for daemon in ${quagga_daemons}; do
|
|
command=%%PREFIX%%/sbin/${daemon}
|
|
required_files=%%SYSCONF_DIR%%/${daemon}.conf
|
|
pidfile=%%LOCALSTATE_DIR%%/${daemon}.pid
|
|
if [ ${quagga_cmd} = "restart" -o ${quagga_cmd} = "start" ]; then
|
|
check_config
|
|
fi
|
|
if [ ${quagga_cmd} = "start" -a ! -f ${required_files} ]; then
|
|
continue
|
|
fi
|
|
if [ ${quagga_cmd} = "stop" -a -z $(check_process ${command}) ]; then
|
|
continue
|
|
fi
|
|
eval flags=\$\{${daemon}_flags:-\"${quagga_flags}\"\}
|
|
name=${daemon}
|
|
_rc_restart_done=false
|
|
run_rc_command "$1" || ret=1
|
|
done
|
|
if checkyesno quagga_vtysh_boot; then
|
|
echo "Booting for integrated-vtysh-config..."
|
|
%%PREFIX%%/bin/vtysh -b
|
|
fi
|
|
return ${ret}
|
|
}
|
|
|
|
# set defaults
|
|
|
|
load_rc_config $name
|
|
|
|
: ${quagga_enable="NO"}
|
|
: ${quagga_flags="-d"}
|
|
: ${quagga_daemons="zebra ripd ripngd ospfd ospf6d bgpd isisd"}
|
|
: ${quagga_vtysh_boot="NO"}
|
|
|
|
quagga_cmd=$1
|
|
|
|
case "$1" in
|
|
force*)
|
|
quagga_cmd=${quagga_cmd#force}
|
|
;;
|
|
fast*)
|
|
quagga_cmd=${quagga_cmd#fast}
|
|
;;
|
|
esac
|
|
shift
|
|
|
|
if [ $# -ge 1 ]; then
|
|
quagga_daemons="$*"
|
|
fi
|
|
|
|
case "${quagga_cmd}" in
|
|
start)
|
|
if [ ! -z ${quagga_extralibs_path} ]; then
|
|
/sbin/ldconfig -m ${quagga_extralibs_path}
|
|
fi
|
|
do_cmd "start"
|
|
;;
|
|
stop)
|
|
quagga_daemons=$(reverse_list ${quagga_daemons})
|
|
do_cmd "stop"
|
|
;;
|
|
restart)
|
|
quagga_daemons=$(reverse_list ${quagga_daemons})
|
|
do_cmd "stop"
|
|
quagga_daemons=$(reverse_list ${quagga_daemons})
|
|
do_cmd "start"
|
|
;;
|
|
*)
|
|
do_cmd "${quagga_cmd}"
|
|
;;
|
|
esac
|