summaryrefslogtreecommitdiffstats
path: root/src-wireless
diff options
context:
space:
mode:
authorJames Rayner <james@archlinux.org>2009-05-18 08:59:34 +0200
committerJames Rayner <james@archlinux.org>2009-05-18 08:59:34 +0200
commitbb3bade410cbfb4d19b65884b6525be7603dd686 (patch)
treed0defa7cffdfcbc084bf2124b661de249f8e79a9 /src-wireless
parent92d6bde2e758466c5e524f84e424b7a98c749863 (diff)
downloadnetctl-bb3bade410cbfb4d19b65884b6525be7603dd686.tar.gz
netctl-bb3bade410cbfb4d19b65884b6525be7603dd686.tar.xz
wireless: check if iface is real, stop wpa_supplicant on failures
Diffstat (limited to 'src-wireless')
-rwxr-xr-xsrc-wireless/wireless-dbus26
1 files changed, 15 insertions, 11 deletions
diff --git a/src-wireless/wireless-dbus b/src-wireless/wireless-dbus
index 0ddd5ab..6f53a6c 100755
--- a/src-wireless/wireless-dbus
+++ b/src-wireless/wireless-dbus
@@ -40,6 +40,13 @@ def wep_hex2dec(key):
return new_key
+def fail(msg=None):
+ if msg:
+ print " -", msg
+ kill(int(open("/var/run/wpa_supplicant.pid").read()),SIGTERM)
+ sys.exit(1)
+
+
def start(profile):
# TODO: Add check if it's even a wireless interface
# Interface up - probably redundant, should be 'ip' instead.
@@ -67,16 +74,14 @@ def start(profile):
except KeyError:
args.append("-c/etc/wpa_supplicant.conf")
elif not profile['SECURITY'] in ['wpa', 'wep', 'none']:
- print " - Invalid security chosen"
- return False
+ fail("Invalid security chosen")
# Start wpa_supplicant
supplicant = subprocess.Popen(args,stderr=subprocess.STDOUT,stdout=subprocess.PIPE)
output = supplicant.communicate()[0]
if supplicant.returncode not in [255,0]:
print output
- print " - Could not start wpa_supplicant"
- return False
+ fail("Could not start wpa_supplicant")
# Connect to wpa_supplicant
bus = dbus.SystemBus()
@@ -149,25 +154,24 @@ def start(profile):
break
if n == timeout:
- print " - Association/Authentication failed:", state
- return False
+ fail("Association/Authentication failed:" + state)
# Run ethernet and get an ip.
try:
subprocess.check_call(["/usr/lib/network/connections/ethernet-iproute", "up", sys.argv[2]])
except subprocess.CalledProcessError:
- return False
- return True
+ fail()
+ sys.exit(0)
def stop(profile):
subprocess.call(["/usr/lib/network/connections/ethernet", "down", sys.argv[2]])
kill(int(open("/var/run/wpa_supplicant.pid").read()),SIGTERM)
- return True
+ sys.exit(0)
if __name__ == "__main__":
profile = read_config("/etc/network.d/"+sys.argv[2])
if sys.argv[1] == "up":
- sys.exit(not start(profile))
+ start(profile)
elif sys.argv[1] == "down":
- sys.exit(not stop(profile))
+ stop(profile)