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

