[OE-core] [PATCH] wpa-supplicant.sh: updated to modern init script format, refactoring, and new restart functionality

Jens Rehsack rehsack at gmail.com
Mon Feb 29 18:59:18 UTC 2016


> Am 29.02.2016 um 18:49 schrieb Andrew Wichmann <awichmann at emacinc.com>:
> 
> Refactored the script by placing the logic of starting and stopping into separate functions,
> added a switch statement to act on $1, then refactored multiple if statements into one line tests.

Why don't re-use the one the Debian folks provide (http://lists.openembedded.org/pipermail/openembedded-core/2016-February/118235.html)?
This would free resources to develop things we cannot steal from others ;)

Cheers

> Check_socket function was extracted to increase the readability of the start function.
> Created restart functionality by calling stop then start
> Added a BEGIN INIT INFO comment section (should be verified for accuracy)
> Sourced the rcS default file to use the VERBOSE variable instead of VERBOSITY
> Defined WPA_COMMON_CTRL_IFACE = "/var/run/wpa_supplicant" that was previously acted upon but not defined.
> 
> Signed-off-by: Andrew Wichmann <awichmann at emacinc.com>
> ---
> .../wpa-supplicant/wpa-supplicant.sh               | 91 +++++++++++++---------
> 1 file changed, 54 insertions(+), 37 deletions(-)
> 
> diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
> index 5c9e5d3..3623cbe 100644
> --- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
> +++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
> @@ -1,72 +1,62 @@
> -#!/bin/sh
> +#!/bin/sh -e
> +### BEGIN INIT INFO
> +# Provides:			wpa_supplicant
> +# Required-Start:	$local_fs
> +# Required-Stop:	$local_fs
> +# Default-Start:	2 3 4 5
> +# Default-Stop:		0 1 6
> +# Short-Description: A script to start, stop, or restart the wpa_supplicant daemon.
> +### END INIT INFO
> 
> 
> +IFACE="wlan0"
> WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
> WPA_SUP_PNAME="wpa_supplicant"
> WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid"
> WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE"
> +WPA_COMMON_CTRL_IFACE="/var/run/wpa_supplicant"
> +IF_WPA_CONF="/etc/wpa_supplicant.conf"
> 
> -VERBOSITY=0
> 
> +[ -s "/etc/default/rcS" ] && . "/etc/default/rcS"
> 
> -if [ -s "$IF_WPA_CONF" ]; then
> -	WPA_SUP_CONF="-c $IF_WPA_CONF"
> -else
> -	exit 0
> -fi
> +[ ! -s "$IF_WPA_CONF" ] && exit 0
> +WPA_SUP_CONF="-c $IF_WPA_CONF"
> 
> if [ ! -x "$WPA_SUP_BIN" ]; then
> 
> -	if [ "$VERBOSITY" = "1" ]; then
> -		echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN"
> -	fi
> +	[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN"
> 
> 	exit 1
> fi
> 
> -if [ "$MODE" = "start" ] ; then
> +start() {
> 	# driver type of interface, defaults to wext when undefined
> 	if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then
> 		IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE")
> 	elif [ -z "$IF_WPA_DRIVER" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\""
> -		fi
> -
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\""
> +
> 		IF_WPA_DRIVER="wext"
> 	fi
> 
> 	# if we have passed the criteria, start wpa_supplicant
> 	if [ -n "$WPA_SUP_CONF" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER"
> -		fi
> -
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER"
> +
> 		start-stop-daemon --start --quiet \
> 			--name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
> 			--  $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER
> 	fi
> +	check_socket
> +}
> 
> -	# if the interface socket exists, then wpa_supplicant was invoked successfully
> -	if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
> -
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: ctrl_interface socket located at $WPA_COMMON_CTRL_IFACE/$IFACE"
> -		fi
> -
> -		exit 0
> -
> -	fi
> -
> -elif [ "$MODE" = "stop" ]; then
> -
> +stop() {
> 	if [ -f "$WPA_SUP_PIDFILE" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon"
> -		fi
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon"
> 
> 		start-stop-daemon --stop --quiet \
> 			--name $WPA_SUP_PNAME --pidfile	$WPA_SUP_PIDFILE
> @@ -79,7 +69,34 @@ elif [ "$MODE" = "stop" ]; then
> 			rm -f $WPA_SUP_PIDFILE
> 		fi
> 	fi
> +	exit 0
> +}
> 
> -fi
> +check_socket(){
> +	# if the interface socket exists, then wpa_supplicant was invoked successfully
> +	if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]
> +	then
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: ctrl_interface socket located at$WPA_COMMON_CTRL_IFACE/$IFACE"
> +		exit 0
> +	fi
> +	exit 1
> +}
> +
> +case "$1" in
> +	start)
> +		start
> +		;;
> +	stop)
> +		stop
> +		;;
> +	restart)
> +		stop
> +		start
> +		;;
> +	*)
> +		echo "Usage: /etc/init.d/wpa_supplicant {start|stop|restart}"
> +		exit 1
> +
> +esac
> 
> -exit 0
> +exit 1
> --
> 1.9.1
> 
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

--
Jens Rehsack - rehsack at gmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160229/34dac5af/attachment-0002.sig>


More information about the Openembedded-core mailing list