This change makes it possible to build a package not conflicting with frr, pimd nor openbgpd introducing new port option LEGACY enabled by default. If disabled, the package is called quagga-compat and has following differences: * /usr/local/bin/vtysh renamed to /usr/local/bin/qvtysh; * libraries install to /usr/local/quagga/lib instead of /usr/local/lib; * binaries install to /usr/local/quagga/sbin instead of /usr/local/sbin. * manual pages install to /usr/local/quagga/man; This is intended to ease migration from quagga to frr making it possible to stop quagga and start frr at once and fall back quickly if things go wrong. Also, remove unneeded USES=ssl. Add other distfile mirrors.
146 lines
3.4 KiB
Bash
146 lines
3.4 KiB
Bash
#!/bin/sh
|
|
|
|
# PROVIDE: quagga dynamicrouting
|
|
# REQUIRE: netif routing
|
|
# KEYWORD: nojail shutdown
|
|
|
|
# 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=""
|
|
# 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="-P 0"
|
|
# bgpd_flags="-nrP 0" and so on
|
|
# If you want to give the routing daemons a chance to catchup before
|
|
# continuing, set quagga_wait_for to a "default" or certain prefix.
|
|
# quagga_wait_for="default"
|
|
# Set the time limit for the wait.
|
|
# quagga_wait_seconds="90"
|
|
#
|
|
# 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="rm -f $pidfile"
|
|
configtest_cmd=check_config
|
|
extra_commands=configtest
|
|
command_args="-d"
|
|
|
|
load_rc_config $name
|
|
|
|
quagga_enable=${quagga_enable:-"NO"}
|
|
quagga_flags=${quagga_flags:-""}
|
|
quagga_daemons=${quagga_daemons:-"zebra ripd ripngd ospfd ospf6d bgpd isisd"}
|
|
quagga_vtysh_boot=${quagga_vtysh_boot:-"NO"}
|
|
quagga_wait_for=${quagga_wait_for:-""}
|
|
quagga_wait_seconds=${quagga_wait_seconds:-"90"}
|
|
|
|
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()
|
|
{
|
|
local waited_for
|
|
waited_for=0
|
|
# Wait only when last daemon has started.
|
|
if [ "${quagga_daemons}" = "${quagga_daemons% ${name}}" ]; then
|
|
return;
|
|
fi
|
|
if [ -n "${quagga_wait_for}" ]; then
|
|
echo Waiting for ${quagga_wait_for} route...
|
|
while [ ${waited_for} -lt ${quagga_wait_seconds} ]; do
|
|
/sbin/route -n get ${quagga_wait_for} >/dev/null 2>&1 && break;
|
|
waited_for=$((${waited_for}+1))
|
|
sleep 1;
|
|
done
|
|
[ ${waited_for} -lt ${quagga_wait_seconds} ] || echo Giving up...
|
|
fi
|
|
}
|
|
|
|
do_cmd()
|
|
{
|
|
local ret
|
|
ret=0
|
|
for daemon in ${quagga_daemons}; do
|
|
command=%%PREFIX%%/%%N%%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}
|
|
}
|
|
|
|
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 [ -n "${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
|