[pkg-wpa-devel] r1205 - in /wpasupplicant/trunk/debian: changelog ifupdown/functions.sh ifupdown/ifupdown.sh

kelmo-guest at users.alioth.debian.org kelmo-guest at users.alioth.debian.org
Wed Jul 2 08:24:23 UTC 2008


Author: kelmo-guest
Date: Wed Jul  2 08:24:23 2008
New Revision: 1205

URL: http://svn.debian.org/wsvn/pkg-wpa/?sc=1&rev=1205
Log:
* Add rudimentary locking system when wpa_action(8) calls ifup/ifdown, so
  that /etc/network/if-*.d/wpasupplicant can differentiate between admin
  calling ifup/ifdown or wpa_action.
* When wpa_action calls ifup/ifdown, use verbose command line option for
  more detailed log of what hook scripts are executed.

Modified:
    wpasupplicant/trunk/debian/changelog
    wpasupplicant/trunk/debian/ifupdown/functions.sh
    wpasupplicant/trunk/debian/ifupdown/ifupdown.sh

Modified: wpasupplicant/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/changelog?rev=1205&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/changelog (original)
+++ wpasupplicant/trunk/debian/changelog Wed Jul  2 08:24:23 2008
@@ -39,8 +39,13 @@
     debian/rules, making use of the WPAGUI variable, to have the correct
     version of wpa_gui installed (assist in switch to-fro different QT ports).
   * Remove possible bashisms (local(x, y)) from debian/ifupdown/functions.sh.
-
- -- Kel Modderman <kel at otaku42.de>  Mon, 30 Jun 2008 19:12:13 +1000
+  * Add rudimentary locking system when wpa_action(8) calls ifup/ifdown, so
+    that /etc/network/if-*.d/wpasupplicant can differentiate between admin
+    calling ifup/ifdown or wpa_action.
+  * When wpa_action calls ifup/ifdown, use verbose command line option for
+    more detailed log of what hook scripts are executed.
+
+ -- Kel Modderman <kel at otaku42.de>  Wed, 02 Jul 2008 18:21:05 +1000
 
 wpasupplicant (0.6.3-2) UNRELEASED; urgency=low
 

Modified: wpasupplicant/trunk/debian/ifupdown/functions.sh
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/ifupdown/functions.sh?rev=1205&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/ifupdown/functions.sh (original)
+++ wpasupplicant/trunk/debian/ifupdown/functions.sh Wed Jul  2 08:24:23 2008
@@ -40,6 +40,7 @@
 WPA_CLI_PIDFILE="/var/run/wpa_action.${WPA_IFACE}.pid"
 WPA_CLI_LOGFILE="/var/log/wpa_action.${WPA_IFACE}.log"
 WPA_CLI_TIMESTAMP="/var/run/wpa_action.${WPA_IFACE}.timestamp"
+WPA_CLI_IFUPDOWN="/var/run/wpa_action.${WPA_IFACE}.ifupdown"
 
 # sendsigs omission interface, present in initscripts (>= 2.86.ds1-48)
 if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
@@ -941,6 +942,20 @@
 	return 1
 }
 
+ifupdown_lock () {
+	ln -s lock "$WPA_CLI_IFUPDOWN"
+}
+
+ifupdown_locked () {
+	[ -L "$WPA_CLI_IFUPDOWN" ] && return 0
+
+	return 1
+}
+
+ifupdown_unlock () {
+	rm -f "$WPA_CLI_IFUPDOWN"
+}
+
 #####################################################################
 ## apply mapping logic and ifup logical interface
 # Apply mapping logic via id_str or external mapping script, check
@@ -988,13 +1003,17 @@
 		if egrep --quiet "^iface[[:space:]]+${WPA_LOGICAL_IFACE}[[:space:]]+inet" "$INTERFACES_FILE"; then
 			
 			echo "ifup $WPA_IFACE=$WPA_LOGICAL_IFACE"
+
+			ifupdown_lock
 			
 			if grep --quiet "^$WPA_IFACE=$WPA_IFACE" "$IFSTATE_FILE"; then
 				# Force settings over the unconfigured "master" IFACE
-				/sbin/ifup --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"
+				/sbin/ifup -v --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"
 			else
-				/sbin/ifup "$WPA_IFACE=$WPA_LOGICAL_IFACE"
+				/sbin/ifup -v "$WPA_IFACE=$WPA_LOGICAL_IFACE"
 			fi
+
+			ifupdown_unlock
 		else
 			echo "No network defined for \"$WPA_LOGICAL_IFACE\" in \"$INTERFACES_FILE\""
 		fi
@@ -1009,8 +1028,12 @@
 #
 ifdown () {
 	if grep --quiet "^$WPA_IFACE" "$IFSTATE_FILE"; then
+		ifupdown_lock
+
 		echo "ifdown $WPA_IFACE"
-		/sbin/ifdown "$WPA_IFACE"
+		/sbin/ifdown -v "$WPA_IFACE"
+
+		ifupdown_unlock
 	else
 		echo "Ignoring request to take \"$WPA_IFACE\" down, it is not up"
 	fi

Modified: wpasupplicant/trunk/debian/ifupdown/ifupdown.sh
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/ifupdown/ifupdown.sh?rev=1205&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/ifupdown/ifupdown.sh (original)
+++ wpasupplicant/trunk/debian/ifupdown/ifupdown.sh Wed Jul  2 08:24:23 2008
@@ -59,12 +59,17 @@
 
 do_start () {
 	if test_wpa_cli; then
-		# wpa-roam is active for this IFACE, do nothing
+		# if wpa_action is active for this IFACE, do nothing
+		wpa_msg stderr "wpa_action is managing ifup/ifdown state of $WPA_IFACE"
+		wpa_msg stderr "execute \`ifdown --force $WPA_IFACE' to stop wpa_action"
 		exit 0
 	elif ! set | grep --quiet "^IF_WPA"; then
 		# no wpa- option defined for IFACE, do nothing
 		exit 0
 	fi
+
+	# ensure stale ifupdown_lock marker is purged
+	ifupdown_unlock
 
 	# preliminary sanity checks for roaming daemon
 	if [ -n "$IF_WPA_ROAM" ]; then
@@ -110,22 +115,9 @@
 
 do_stop () {
 	if test_wpa_cli; then
-		# wpa-roam/wpa_action mode is active, we always want to keep
-		# this process alive, unless shutting down or rebooting system
-		RUNLEVEL=$(/sbin/runlevel)
-		RUNLEVEL="${RUNLEVEL#*\ }"
-		case "$RUNLEVEL" in
-			0|6)
-				# wpa_cli and wpa_supplicant are to be killed, we are in
-				# shutdown or reboot
-				wpa_msg verbose "allowing stop, runlevel: $RUNLEVEL"
-				;;
-			*)
-				# allow wpa_cli daemon (wpa-roam/wpa_action) to continue,
-				# we are in a standard runlevel
-				exit 0
-				;;
-		esac
+		# if wpa_action is active for this IFACE and calling ifdown,
+		# do nothing
+		ifupdown_locked && exit 0
 	elif test_wpa_supplicant; then
 		# wpa_supplicant process exists for this IFACE, but wpa_cli
 		# process does not. Allow stop mode to kill this process.




More information about the Pkg-wpa-devel mailing list