All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.