From: "Benoît Thébaudeau" <benoit.thebaudeau.dev@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v3 12/13] package/dhcp: SysV init scripts: refactor using functions
Date: Sun, 25 Oct 2015 02:59:38 +0200 [thread overview]
Message-ID: <1445734779-7212-12-git-send-email-benoit.thebaudeau.dev@gmail.com> (raw)
In-Reply-To: <1445734779-7212-1-git-send-email-benoit.thebaudeau.dev@gmail.com>
From: Beno?t Th?baudeau <benoit@wsystem.com>
Refactor these scripts using start()/stop() functions rather than having
these scripts invoke themselves.
By the way, clean up these scripts.
Signed-off-by: Beno?t Th?baudeau <benoit@wsystem.com>
---
Changes v2 -> v3: none.
Changes v1 -> v2:
- Rebase.
- Use 'printf' instead of 'echo -n' following
0f75b2635ee564fbbdb9ea631cf39fa8731d6d6c.
---
package/dhcp/S80dhcp-relay | 63 +++++++++++++++++++++-----------------
package/dhcp/S80dhcp-server | 74 +++++++++++++++++++++++++--------------------
2 files changed, 76 insertions(+), 61 deletions(-)
diff --git a/package/dhcp/S80dhcp-relay b/package/dhcp/S80dhcp-relay
index 9b8d65f..b48f72c 100755
--- a/package/dhcp/S80dhcp-relay
+++ b/package/dhcp/S80dhcp-relay
@@ -1,61 +1,68 @@
#!/bin/sh
-#
-# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $
-#
-# What servers should the DHCP relay forward requests to?
-# e.g: SERVERS="192.168.0.1"
-SERVERS=""
+NAME="dhcrelay"
+DESC="DHCP relay"
+DAEMON="/usr/sbin/${NAME}"
-# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
+# On what interfaces should the DHCP relay serve DHCP requests?
INTERFACES=""
+# What servers should the DHCP relay forward requests to?
+# E.g: SERVERS="192.168.0.1"
+SERVERS=""
+
# Additional options that are passed to the DHCP relay daemon?
OPTIONS=""
# Read configuration variable file if it is present
-CFG_FILE="/etc/default/dhcrelay"
+CFG_FILE="/etc/default/${NAME}"
[ -r "${CFG_FILE}" ] && . "${CFG_FILE}"
# PID files generated by the daemon
-PID_FILES="/var/run/dhcrelay.pid /var/run/dhcrelay6.pid"
+PID_FILES="/var/run/${NAME}.pid /var/run/${NAME}6.pid"
# Sanity checks
-test -f /usr/sbin/dhcrelay || exit 0
+test -f "${DAEMON}" || exit 0
test -n "$INTERFACES" || exit 0
test -n "$SERVERS" || exit 0
-# Build command line for interfaces (will be passed to dhrelay below.)
+# Build command line for interfaces (will be passed to dhcrelay below).
IFCMD=""
for I in $INTERFACES; do
IFCMD=${IFCMD}"-i "${I}" "
done
-DHCRELAYPID=/var/run/dhcrelay.pid
+start()
+{
+ printf "Starting ${DESC}: "
+ start-stop-daemon -S -q -x "${DAEMON}" -- -q $OPTIONS $IFCMD $SERVERS &&
+ echo "OK" || echo "FAIL"
+}
+
+stop()
+{
+ printf "Stopping ${DESC}: "
+ if start-stop-daemon -K -q -x "${DAEMON}"; then
+ # This daemon does not remove its PID file when it exits.
+ rm -f ${PID_FILES}
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+}
case "$1" in
start)
- printf "Starting DHCP relay: "
- start-stop-daemon -S -q -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS
- [ $? = 0 ] && echo "OK" || echo "FAIL"
+ start
;;
stop)
- printf "Stopping DHCP relay: "
- if start-stop-daemon -K -q -x /usr/sbin/dhcrelay; then
- # This daemon does not remove its PID file when it exits.
- rm -f ${PID_FILES}
- echo "OK"
- else
- echo "FAIL"
- fi
+ stop
;;
- restart | force-reload)
- $0 stop
- $0 start
+ restart|force-reload)
+ stop
+ start
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}"
exit 1
esac
-
-exit 0
diff --git a/package/dhcp/S80dhcp-server b/package/dhcp/S80dhcp-server
index b6f76ee..607f1ca 100755
--- a/package/dhcp/S80dhcp-server
+++ b/package/dhcp/S80dhcp-server
@@ -1,57 +1,65 @@
#!/bin/sh
-#
-# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $
-#
-# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
-# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
+NAME="dhcpd"
+DESC="DHCP server"
+DAEMON="/usr/sbin/${NAME}"
+DAEMON_CONF="/etc/dhcp/${NAME}.conf"
+DAEMON_LIB_DIR="/var/lib/dhcp"
+LEASE_FILES="${DAEMON_LIB_DIR}/${NAME}.leases ${DAEMON_LIB_DIR}/${NAME}6.leases"
+
+# On what interfaces should the DHCP server serve DHCP requests?
+# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES=""
# Additional options that are passed to the DHCP server daemon?
OPTIONS=""
# Read configuration variable file if it is present
-CFG_FILE="/etc/default/dhcpd"
+CFG_FILE="/etc/default/${NAME}"
[ -r "${CFG_FILE}" ] && . "${CFG_FILE}"
# PID files generated by the daemon
-PID_FILES="/var/run/dhcpd.pid /var/run/dhcpd6.pid"
+PID_FILES="/var/run/${NAME}.pid /var/run/${NAME}6.pid"
# Sanity checks
-test -f /usr/sbin/dhcpd || exit 0
-test -f /etc/dhcp/dhcpd.conf || exit 0
+test -f "${DAEMON}" || exit 0
+test -f "${DAEMON_CONF}" || exit 0
+
+start()
+{
+ printf "Starting ${DESC}: "
+ test -d "${DAEMON_LIB_DIR}" || mkdir -p "${DAEMON_LIB_DIR}"
+ for lease_file in ${LEASE_FILES}; do
+ test -f "${lease_file}" || touch "${lease_file}"
+ done
+ start-stop-daemon -S -q -x "${DAEMON}" -- -q $OPTIONS $INTERFACES &&
+ echo "OK" || echo "FAIL"
+}
+
+stop()
+{
+ printf "Stopping ${DESC}: "
+ if start-stop-daemon -K -q -x "${DAEMON}"; then
+ # This daemon does not remove its PID file when it exits.
+ rm -f ${PID_FILES}
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+}
case "$1" in
start)
- printf "Starting DHCP server: "
- test -d /var/lib/dhcp/ || mkdir -p /var/lib/dhcp/
- for lease_file in /var/lib/dhcp/dhcpd.leases \
- /var/lib/dhcp/dhcpd6.leases; do
- test -f "${lease_file}" || touch "${lease_file}"
- done
- start-stop-daemon -S -q -x /usr/sbin/dhcpd -- -q $OPTIONS $INTERFACES
- [ $? = 0 ] && echo "OK" || echo "FAIL"
+ start
;;
stop)
- printf "Stopping DHCP server: "
- if start-stop-daemon -K -q -x /usr/sbin/dhcpd; then
- # This daemon does not remove its PID file when it exits.
- rm -f ${PID_FILES}
- echo "OK"
- else
- echo "FAIL"
- fi
+ stop
;;
- restart | force-reload)
- $0 stop
- $0 start
- if [ "$?" != "0" ]; then
- exit 1
- fi
+ restart|force-reload)
+ stop
+ start
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}"
exit 1
esac
-
-exit 0
--
2.1.4
next prev parent reply other threads:[~2015-10-25 0:59 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-25 0:59 [Buildroot] [PATCH v3 01/13] package/dhcp: fix SysV init scripts option passing Benoît Thébaudeau
2015-10-25 0:59 ` [Buildroot] [PATCH v3 02/13] package/dhcp: systemd: rename environment file Benoît Thébaudeau
2015-11-04 9:52 ` Maxime Hadjinlian
2015-11-04 9:54 ` Maxime Hadjinlian
2015-11-04 10:01 ` Benoît Thébaudeau
2015-11-04 10:04 ` Maxime Hadjinlian
2015-11-04 10:07 ` Benoît Thébaudeau
2015-11-04 10:13 ` Maxime Hadjinlian
2015-11-04 10:18 ` Thomas Petazzoni
2015-11-04 10:24 ` Benoît Thébaudeau
2015-11-04 10:25 ` Maxime Hadjinlian
2015-11-04 18:42 ` Gabe Evans
2015-12-24 14:00 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 03/13] package/dhcp/S80dhcp-server: support extra options Benoît Thébaudeau
2015-12-24 14:00 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 04/13] package/dhcp: systemd: " Benoît Thébaudeau
2015-11-04 10:09 ` Maxime Hadjinlian
2015-12-24 14:01 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 05/13] package/dhcp/S80dhcp-server: allow empty INTERFACES Benoît Thébaudeau
2015-12-24 14:02 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 06/13] package/dhcp: systemd: allow missing environment file Benoît Thébaudeau
2015-11-04 10:14 ` Maxime Hadjinlian
2015-12-24 14:03 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 07/13] package/dhcp: fix SysV init scripts output text Benoît Thébaudeau
2015-12-24 14:05 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 08/13] package/dhcp: remove sleep from SysV init scripts restart Benoît Thébaudeau
2015-12-24 14:06 ` Thomas Petazzoni
2015-10-25 0:59 ` [Buildroot] [PATCH v3 09/13] package/dhcp: SysV init scripts: remove PID files after stop Benoît Thébaudeau
2015-12-24 14:26 ` Thomas Petazzoni
2016-01-07 20:40 ` Benoît Thébaudeau
2015-10-25 0:59 ` [Buildroot] [PATCH v3 10/13] package/dhcp/S80dhcp-server: support IPv6 lease file Benoît Thébaudeau
2015-10-25 0:59 ` [Buildroot] [PATCH v3 11/13] package/dhcp: systemd: " Benoît Thébaudeau
2015-11-04 10:21 ` Maxime Hadjinlian
2015-11-04 10:36 ` Benoît Thébaudeau
2015-11-04 10:53 ` Maxime Hadjinlian
2015-11-04 11:15 ` Benoît Thébaudeau
2015-11-04 11:31 ` Maxime Hadjinlian
2015-11-09 10:49 ` Benoît Thébaudeau
2015-11-12 10:42 ` Maxime Hadjinlian
2015-11-15 17:55 ` Benoît Thébaudeau
2015-10-25 0:59 ` Benoît Thébaudeau [this message]
2015-10-25 0:59 ` [Buildroot] [PATCH v3 13/13] package/dhcp: systemd: add dhcrelay service file Benoît Thébaudeau
2015-11-04 11:24 ` Maxime Hadjinlian
2015-11-04 13:35 ` Benoît Thébaudeau
2015-11-04 21:26 ` Arnout Vandecappelle
2015-11-15 17:36 ` Benoît Thébaudeau
2015-12-24 13:59 ` [Buildroot] [PATCH v3 01/13] package/dhcp: fix SysV init scripts option passing Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1445734779-7212-12-git-send-email-benoit.thebaudeau.dev@gmail.com \
--to=benoit.thebaudeau.dev@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox