aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Poelke <epoelke@hsdp.io>2019-09-28 15:41:41 -0700
committerRasmus Thomsen <oss@cogitri.dev>2019-10-20 22:33:00 +0200
commit1821885206db3e3c0b7647f1c46adaf6163c28ed (patch)
treeaa669580578bb064658ce81068050efbdc55131d
parent350b70c69d140b6a855f5306cfcaa926fff5d4f2 (diff)
downloadaports-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/APKBUILD2
-rw-r--r--testing/bird/bird.initd45
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
+}