#!/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 $?
|
|
}
|
|
|