60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
#!/sbin/openrc-run
|
|
# Copyright 1999-2020 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
# default arguments
|
|
: "${EXABGP_ARGS:=--env=/etc/${RC_SVCNAME}/exabgp.env /etc/${RC_SVCNAME}/exabgp.conf}"
|
|
|
|
command="capsh"
|
|
command_args="
|
|
--groups=${EXABGP_GROUP:=exabgp}
|
|
--user=${EXABGP_USER:=exabgp}
|
|
--caps='cap_net_admin+epi cap_setuid+ep-i cap_setgid+ep-i'
|
|
-- -c \"/usr/bin/exabgp ${EXABGP_ARGS}\""
|
|
command_background="yes"
|
|
pidfile="/run/exabgp/${RC_SVCNAME}.pid"
|
|
start_stop_daemon_args="
|
|
--stdout /var/log/${RC_SVCNAME}/exabgp.log
|
|
--stderr /var/log/${RC_SVCNAME}/exabgp.log"
|
|
extra_started_commands="routes sessions"
|
|
extra_commands="checkconfig"
|
|
|
|
depend() {
|
|
need net
|
|
}
|
|
|
|
start_pre() {
|
|
checkpath -q -d -m 0755 -o "${EXABGP_USER}:${EXABGP_GROUP}" \
|
|
/run/exabgp || return
|
|
|
|
checkpath -q -p -m 0600 -o "${EXABGP_USER}:${EXABGP_GROUP}" \
|
|
/run/exabgp/${RC_SVCNAME}.{in,out} || return
|
|
|
|
checkconfig || return
|
|
}
|
|
|
|
stop_pre() {
|
|
# don't restart if the configuration is bad
|
|
if [ "${RC_CMD}" = restart ]; then
|
|
checkconfig || return
|
|
fi
|
|
}
|
|
|
|
checkconfig() {
|
|
ebegin "Checking configuration for ${RC_SVCNAME}"
|
|
exabgp -t ${EXABGP_ARGS}
|
|
eend ${?} "Invalid configuration"
|
|
}
|
|
|
|
sessions() {
|
|
ebegin "Querying sessions"
|
|
exabgpcli --env /etc/${RC_SVCNAME}/exabgp.env show neighbor summary
|
|
eend ${?} "exabgpcli failed"
|
|
}
|
|
|
|
routes() {
|
|
ebegin "Querying routes"
|
|
exabgpcli --env /etc/${RC_SVCNAME}/exabgp.env show adj-rib out
|
|
eend ${?} "exabgpcli failed"
|
|
}
|