diff options
Diffstat (limited to 'net-misc/bird/files/initd-bird-2')
-rw-r--r-- | net-misc/bird/files/initd-bird-2 | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/net-misc/bird/files/initd-bird-2 b/net-misc/bird/files/initd-bird-2 new file mode 100644 index 000000000000..06030d4b3016 --- /dev/null +++ b/net-misc/bird/files/initd-bird-2 @@ -0,0 +1,51 @@ +#!/sbin/openrc-run +# Copyright 1999-2019 Gentoo Authors +# Copyright 2019 Alarig Le Lay <alarig@grifon.fr> +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" + +pidfile="/run/${RC_SVCNAME}.pid" +command="/usr/sbin/${RC_SVCNAME}" +retry=15 + +CONF_FILE="/etc/${RC_SVCNAME}.conf" +SOCK="/run/${RC_SVCNAME}.ctl" + +client_args="-s ${SOCK}" +command_args="${client_args} -c ${CONF_FILE} -P ${pidfile}" +client_args="${client_args} -r" + +depend() { + need net + use logger +} + +check_run() { + BIRD_CHECK_CONF="birdc ${client_args} configure check \"${CONF_FILE}\"" + # Check if the bird parser returns what we want + # We can’t use $? because it’s always 0 if the sock works + STATE=$(${BIRD_CHECK_CONF} | grep 'Configuration OK') + + if [ -n "${STATE}" ]; then + return 0 + else + # We remove the first three lines (garbage informations), the + # errors begin after that + eerror "$(${BIRD_CHECK_CONF} | sed '1,3d')" + return 1 + fi +} + +reload() { + check_run || return 1 + ebegin "Reloading BIRD" + start-stop-daemon --signal HUP --pidfile "${pidfile}" + eend $? +} + +stop_pre() { + if [ "${RC_CMD}" = "restart" ] ; then + check_run || return 1 + fi +} |