#! /bin/bash # # This is special script for start,stop,restart of quagga daemons # progname=$0 usage() { echo "Usage: $progname {start|stop|reload} {bgp|ospf|rip|ripng}" exit 1; } if [ $# -lt 2 ]; then usage fi protocol=$2 daemon=${protocol}d exe_file=/usr/sbin/vyatta-$daemon pid_dir=/var/run/vyatta/quagga pid_file=$pid_dir/${daemon}.pid log_dir=/var/log/vyatta/quagga if [ ! -x $exe_file ]; then echo "Unknown protocol: $protocol"; exit 1; fi case "$1" in start) echo -n "Starting $protocol..." sudo start-stop-daemon --start --quiet \ --chdir $log_dir \ --exec $exe_file \ -- -d -P 0 -i $pid_dir/${daemon}.pid sudo start-stop-daemon --start --quiet \ --chdir $log_dir \ --pidfile $pid_dir/watch-${daemon}.pid \ --exec /usr/sbin/vyatta-watchquagga \ -- -dz -R "/opt/vyatta/sbin/vyatta-quagga reload $protocol" $daemon echo "done." ;; stop) echo -n "Stopping $protocol..." sudo start-stop-daemon --stop --quiet --oknodo --retry 2 \ --pidfile $pid_dir/watch-${daemon}.pid sudo start-stop-daemon --stop --quiet --oknodo --retry 2 \ --exec $exe_file echo "done." ;; reload) echo -n "Reloading $1..." # Start new transaction /opt/vyatta/sbin/vyatta-cfg-cmd-wrapper begin # In case of error undo trap "/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper end" EXIT HUP INT QUIT TERM # Save current configuration tmp=/tmp/${protocol}-restart.$$ /opt/vyatta/sbin/vyatta-save-config.pl $tmp # Erase active configuration for that protocol rm -fr /opt/vyatta/config/active/protocols/$protocol # Reload causing configuration to activate - implies commit /opt/vyatta/sbin/vyatta-load-config.pl $TMP echo "done." ;; *) usage;; esac