diff options
Diffstat (limited to 'meta-openvuplus/recipes-connectivity/wpa-supplicant/wpa-supplicant/action_wpa.sh')
-rw-r--r-- | meta-openvuplus/recipes-connectivity/wpa-supplicant/wpa-supplicant/action_wpa.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/meta-openvuplus/recipes-connectivity/wpa-supplicant/wpa-supplicant/action_wpa.sh b/meta-openvuplus/recipes-connectivity/wpa-supplicant/wpa-supplicant/action_wpa.sh new file mode 100644 index 0000000..6d90fa6 --- /dev/null +++ b/meta-openvuplus/recipes-connectivity/wpa-supplicant/wpa-supplicant/action_wpa.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# Action script to enable/disable wpa-roam interfaces in reaction to +# ifplugd events. +# +# Copyright: Copyright (c) 2008-2010, Kel Modderman <kel@otaku42.de> +# License: GPL-2 +# + +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +if [ ! -x /usr/sbin/wpa_action ]; then + exit 0 +fi + +# ifplugd(8) - <iface> <action> +# +# If an ifplugd managed interface is brought up, disconnect any +# wpa-roam managed interfaces so that only one "roaming" interface +# remains active on the system. + +IFPLUGD_IFACE="${1}" + +case "${2}" in + up) + COMMAND=disconnect + ;; + down) + COMMAND=reconnect + ;; + *) + echo "$0: unknown arguments: ${@}" >&2 + exit 1 + ;; +esac + +for CTRL in /var/run/wpa_supplicant/*; do + [ -S "${CTRL}" ] || continue + + IFACE="${CTRL#/var/run/wpa_supplicant/}" + + # skip if ifplugd is managing this interface + if [ "${IFPLUGD_IFACE}" = "${IFACE}" ]; then + continue + fi + + if wpa_action "${IFACE}" check; then + wpa_cli -i "${IFACE}" "${COMMAND}" + fi +done |