[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