diff options
Diffstat (limited to 'net/quagga-re/files/quagga.sh.in')
-rw-r--r-- | net/quagga-re/files/quagga.sh.in | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/net/quagga-re/files/quagga.sh.in b/net/quagga-re/files/quagga.sh.in new file mode 100644 index 000000000000..ceb71b62d1b2 --- /dev/null +++ b/net/quagga-re/files/quagga.sh.in @@ -0,0 +1,122 @@ +#!/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" +# 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=`set_rcvar` + +start_postcmd=start_postcmd +stop_postcmd=stop_postcmd + +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} = "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 + return ${ret} +} + +# set defaults + +load_rc_config $name + +: ${quagga_enable="NO"} +: ${quagga_flags="-d"} +: ${quagga_daemons="zebra ripd ripngd ospfd ospf6d bgpd isisd"} + +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 |