]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Add test reconnecting on assoc failure
authorJohannes Berg <johannes.berg@intel.com>
Sat, 2 Feb 2019 22:16:03 +0000 (23:16 +0100)
committerJouni Malinen <j@w1.fi>
Tue, 5 Feb 2019 21:51:31 +0000 (23:51 +0200)
Add a test that drops the authentication frame, so that
hostapd thinks the station is unknown, and then sends one
by itself, so the station thinks it's associated. This
tests mostly the kernel's capability to recover from this
scenario.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
tests/hwsim/test_ap_open.py

index 3907925352ea110fff62e93213c44fc273bbbd96..c60b325ccb8be9475225d1b5284c44b827313847 100644 (file)
@@ -129,6 +129,36 @@ def test_ap_open_assoc_timeout(dev, apdev):
     hapd.set("ext_mgmt_frame_handling", "0")
     dev[0].wait_connected(timeout=15)
 
+def test_ap_open_auth_drop_sta(dev, apdev):
+    """AP dropping station after successful authentication"""
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
+    dev[0].scan(freq="2412")
+    hapd.set("ext_mgmt_frame_handling", "1")
+    dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
+                   wait_connect=False)
+    for i in range(0, 10):
+        req = hapd.mgmt_rx()
+        if req is None:
+            raise Exception("MGMT RX wait timed out")
+        if req['subtype'] == 11:
+            break
+        req = None
+    if not req:
+        raise Exception("Authentication frame not received")
+
+    # turn off before sending successful response
+    hapd.set("ext_mgmt_frame_handling", "0")
+
+    resp = {}
+    resp['fc'] = req['fc']
+    resp['da'] = req['sa']
+    resp['sa'] = req['da']
+    resp['bssid'] = req['bssid']
+    resp['payload'] = struct.pack('<HHH', 0, 2, 0)
+    hapd.mgmt_tx(resp)
+
+    dev[0].wait_connected(timeout=15)
+
 @remote_compatible
 def test_ap_open_id_str(dev, apdev):
     """AP with open mode and id_str"""