openwrt-packages/net/frr/files/frr

88 lines
2.0 KiB
Bash

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