From 5de945fcc0b0773ce7f4860f5c8e653c336d5306 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sun, 1 Mar 2015 11:24:41 +0200 Subject: [PATCH] tests: cfg80211 P2P Device misuses Signed-off-by: Jouni Malinen --- tests/hwsim/test_p2p_device.py | 60 +++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/tests/hwsim/test_p2p_device.py b/tests/hwsim/test_p2p_device.py index 12d47ee14..74a213c49 100644 --- a/tests/hwsim/test_p2p_device.py +++ b/tests/hwsim/test_p2p_device.py @@ -1,5 +1,5 @@ # cfg80211 P2P Device -# Copyright (c) 2013, Jouni Malinen +# Copyright (c) 2013-2015, Jouni Malinen # # This software may be distributed under the terms of the BSD license. # See README for more details. @@ -14,6 +14,7 @@ from test_p2p_grpform import check_grpform_results from test_p2p_grpform import remove_group from test_nfc_p2p import set_ip_addr_info, check_ip_addr, grpform_events from hwsim import HWSimRadio +import hostapd import hwsim_utils def test_p2p_device_grpform(dev, apdev): @@ -116,3 +117,60 @@ def test_p2p_device_nfc_invite(dev, apdev): res = wpas.group_form_result(ev) hwsim_utils.test_connectivity_p2p(dev[0], wpas) check_ip_addr(res) + +def test_p2p_device_misuses(dev, apdev): + """cfg80211 P2P Device misuses""" + hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" }) + with HWSimRadio(use_p2p_device=True) as (radio, iface): + wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') + wpas.interface_add(iface) + + # Add a normal network profile to the P2P Device management only + # interface to verify that it does not get used. + id = int(wpas.global_request('IFNAME=p2p-dev-%s ADD_NETWORK' % iface).strip()) + wpas.global_request('IFNAME=p2p-dev-%s SET_NETWORK %d ssid "open"' % (iface, id)) + wpas.global_request('IFNAME=p2p-dev-%s SET_NETWORK %d key_mgmt NONE' % (iface, id)) + wpas.global_request('IFNAME=p2p-dev-%s ENABLE_NETWORK %d' % (iface, id)) + + # Scan requests get ignored on p2p-dev + wpas.global_request('IFNAME=p2p-dev-%s SCAN' % iface) + + dev[0].p2p_start_go(freq=2412) + addr = dev[0].p2p_interface_addr() + wpas.scan_for_bss(addr, freq=2412) + wpas.connect("open", key_mgmt="NONE", scan_freq="2412") + hwsim_utils.test_connectivity(wpas, hapd) + + pin = wpas.wps_read_pin() + dev[0].p2p_go_authorize_client(pin) + res = wpas.p2p_connect_group(dev[0].p2p_dev_addr(), pin, timeout=60, + social=True, freq=2412) + hwsim_utils.test_connectivity_p2p(dev[0], wpas) + + # Optimize scan-after-disconnect + wpas.group_request("SET_NETWORK 0 scan_freq 2412") + + dev[0].request("DISASSOCIATE " + wpas.p2p_interface_addr()) + ev = wpas.wait_group_event(["CTRL-EVENT-DISCONNECT"]) + if ev is None: + raise Exception("Did not see disconnect event on P2P group interface") + dev[0].remove_group() + + ev = wpas.wait_group_event(["CTRL-EVENT-SCAN-STARTED"], timeout=5) + if ev is None: + raise Exception("Scan not started") + ev = wpas.wait_group_event(["CTRL-EVENT-SCAN-RESULTS"], timeout=15) + if ev is None: + raise Exception("Scan not completed") + time.sleep(1) + hwsim_utils.test_connectivity(wpas, hapd) + + ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=0.1) + if ev is not None: + raise Exception("Unexpected disconnection event received from hostapd") + ev = wpas.wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.1) + if ev is not None: + raise Exception("Unexpected disconnection event received from wpa_supplicant") + + wpas.request("DISCONNECT") + wpas.wait_disconnected()