diff options
author | Eric Poelke <epoelke@hsdp.io> | 2019-09-28 15:41:41 -0700 |
---|---|---|
committer | Rasmus Thomsen <oss@cogitri.dev> | 2019-10-20 22:33:00 +0200 |
commit | 1821885206db3e3c0b7647f1c46adaf6163c28ed (patch) | |
tree | aa669580578bb064658ce81068050efbdc55131d | |
parent | 350b70c69d140b6a855f5306cfcaa926fff5d4f2 (diff) | |
download | aports-1821885206db3e3c0b7647f1c46adaf6163c28ed.tar.bz2 aports-1821885206db3e3c0b7647f1c46adaf6163c28ed.tar.xz |
testing/bird: Fix bird init script.
The bird init script had a bug in it that prevented restart form working
properly. Gentoo's bird init script seems much more mature with proper
pid file handling, updated openrc environment variables, and support for
reload via openrc.
-rw-r--r-- | testing/bird/APKBUILD | 2 | ||||
-rw-r--r-- | testing/bird/bird.initd | 45 |
2 files changed, 36 insertions, 11 deletions
diff --git a/testing/bird/APKBUILD b/testing/bird/APKBUILD index 74e39b29dc..57b5d5c822 100644 --- a/testing/bird/APKBUILD +++ b/testing/bird/APKBUILD @@ -35,4 +35,4 @@ package() { sha512sums="22aa676e171cf5ddf6dedbf0dfe9bb36a959efdf9cb278b7e969d5b08b06fe483e3b30ef40c1f9980387ed6ac6ee6626f3d85704925256c22dae91fa7d23267d bird-2.0.6.tar.gz e0a9bab1bb84ab4efbf51c4c015bf35196d146560f737979d3a17c44dc2397d9578e61a3bba0c58f3cdbb108074f17288bf536db5d8d4dce87c91f1be3dc6282 bird-make-test-bsprintf.patch -59245af3fd514421d0babcefed556597022a36d14615d596bb5c08c7dd0a6ed4519928e35a0b7ff14fe27ecfa50fa8011283c92bfc9b8355b15b3263df189d5d bird.initd" +da2fd6eaf5e468eed1054c23299ae899d5b1152c94a500db2242c63cdd543a32218e45373470ff367d5736022ced18e6a427f6b98e69a34ae2d3bf811550d828 bird.initd" diff --git a/testing/bird/bird.initd b/testing/bird/bird.initd index fb29c19bb0..94b953974b 100644 --- a/testing/bird/bird.initd +++ b/testing/bird/bird.initd @@ -1,12 +1,20 @@ #!/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" -name=bird -command=/usr/sbin/$name +pidfile="/run/${RC_SVCNAME}.pid" +command="/usr/sbin/${RC_SVCNAME}" +retry=15 -sock="/var/run/$name.ctl" -command_args="-c /etc/${name}.conf -s $sock" +CONF_FILE="/etc/${RC_SVCNAME}.conf" +SOCK="/run/${RC_SVCNAME}.ctl" + +client_args="-s ${SOCK}" +command_args="${client_args} -R -c ${CONF_FILE} -P ${pidfile}" +client_args="${client_args} -r" depend() { need net @@ -14,14 +22,31 @@ depend() { after firewall } -start_pre() { - [ -f "/etc/$name.conf" ] && return 0 - eerror "Please create /etc/$name.conf" - return 1 +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() { - ebegin "Reloading $name" - killall -HUP $command + 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 +} |