#!/bin/sh /etc/rc.common START=95 log_success_msg() { echo "$@" } log_warning_msg() { echo "$@" >&2 } log_failure_msg() { echo "$@" >&2 } # "/usr/lib/frr/frrinit.sh start somenamespace" FRR_PATHSPACE="$2" self="`dirname $0`" if [ -r "$self/frrcommon.sh" ]; then . "$self/frrcommon.sh" else . "/usr/sbin/frrcommon.sh" fi start() { daemon_list daemons watchfrr_options="$watchfrr_options $daemons" daemon_start watchfrr } stop() { all_daemon_list all_daemons # Kill any currently monitored daemons that are no longer enabled. # Traverse command line args in reverse order, bailing out when we hit # an argument that is not a daemon. Otherwise, if it's not in the # new daemon list, stop it. watchfrr_pid=`pidof watchfrr` for i in `tr '\0' '\n' < /proc/$watchfrr_pid/cmdline | sed -n '1!G;h;$p'`; do in_list $i $all_daemons || break in_list $i $daemons || daemon_stop $i done daemon_stop watchfrr # all_stop --reallyall exit ${still_running:-0} } restart() { all_daemon_list all_daemons watchfrr_pid=`pidof watchfrr` for i in `tr '\0' '\n' < /proc/$watchfrr_pid/cmdline | sed -n '1!G;h;$p'`; do in_list $i $all_daemons || break in_list $i $daemons || daemon_stop $i done daemon_stop watchfrr # all_stop --reallyall daemon_list daemons watchfrr_options="$watchfrr_options $daemons" daemon_start watchfrr } status() { fail=0 print_status watchfrr || fail=1 all_status || fail=1 exit $fail } reload() { RELOAD_SCRIPT="/usr/sbin/frr-reload" if [ ! -x "$RELOAD_SCRIPT" ]; then log_failure_msg "The frr-pythontools package is required for reload functionality." exit 1 fi # restart watchfrr to pick up added daemons. # NB: This will NOT cause the other daemons to be restarted. daemon_list daemons watchfrr_options="$watchfrr_options $daemons" daemon_stop watchfrr && \ daemon_start watchfrr NEW_CONFIG_FILE="${2:-$C_PATH/frr.conf}" [ ! -r $NEW_CONFIG_FILE ] && log_failure_msg "Unable to read new configuration file $NEW_CONFIG_FILE" && exit 1 "$RELOAD_SCRIPT" --reload "$NEW_CONFIG_FILE" exit $? }