diff --git a/net/quagga/files/quagga.in b/net/quagga/files/quagga.in index a092650..45d4154 100644 --- a/net/quagga/files/quagga.in +++ b/net/quagga/files/quagga.in @@ -33,11 +33,12 @@ name=quagga rcvar=quagga_enable -start_postcmd=start_postcmd +start_precmd="quagga_checkconfig" +restart_precmd="quagga_checkconfig" stop_postcmd="rm -f $pidfile" -configtest_cmd=check_config +configtest_cmd="quagga_checkconfig" extra_commands=configtest -command_args="-d" +command_args=-d load_rc_config $name @@ -48,20 +49,7 @@ 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() +quagga_wait_for_routes() { local waited_for waited_for=0 @@ -80,69 +68,41 @@ start_postcmd() fi } -do_cmd() -{ - local ret - ret=0 +if [ -n "$2" ]; then + daemon="$2" + case " ${quagga_daemons} " in + *\ ${daemon}\ *) ;; + *) + echo "Invalid dameon: ${daemon}" + exit 1 + ;; + esac +else 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 + echo "===> quagga daemon: ${daemon}" + $0 $1 ${daemon} done - if checkyesno quagga_vtysh_boot; then - echo "Booting for integrated-vtysh-config..." - %%PREFIX%%/bin/vtysh -b + if [ "$1" = "start" -o "$1" = "onestart" -o "$1" = "forcestart" ]; then + quagga_wait_for_routes 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} +command=%%PREFIX%%/sbin/${daemon} +required_files=%%SYSCONF_DIR%%/${daemon}.conf +pidfile=%%LOCALSTATE_DIR%%/${daemon}.pid +eval flags=\$\{${daemon}_flags:-\"${quagga_flags}\"\} + +quagga_checkconfig() +{ + echo "Checking $daemon.conf" + $command $daemon_flags -C + result=$? + if [ "$result" -eq "0" ]; then + echo "OK" + else + echo "FAILED" + exit 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 +} + +run_rc_command "$1"