tests: Add test reconnecting on assoc failure

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>
This commit is contained in:
Johannes Berg 2019-02-02 23:16:03 +01:00 committed by Jouni Malinen
parent 73f285dad2
commit 3691db26f7

View file

@ -129,6 +129,36 @@ def test_ap_open_assoc_timeout(dev, apdev):
hapd.set("ext_mgmt_frame_handling", "0") hapd.set("ext_mgmt_frame_handling", "0")
dev[0].wait_connected(timeout=15) 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 @remote_compatible
def test_ap_open_id_str(dev, apdev): def test_ap_open_id_str(dev, apdev):
"""AP with open mode and id_str""" """AP with open mode and id_str"""