3 # P2P autonomous GO test cases
4 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
6 # This software may be distributed under the terms of the BSD license.
7 # See README for more details.
12 logger = logging.getLogger(__name__)
15 from wlantest import Wlantest
18 logger.info("Start autonomous GO " + go.ifname)
19 res = go.p2p_start_go()
20 logger.debug("res: " + str(res))
23 def connect_cli(go, client):
24 logger.info("Try to connect the client to the GO")
25 pin = client.wps_read_pin()
26 go.p2p_go_authorize_client(pin)
27 client.p2p_connect_group(go.p2p_dev_addr(), pin, timeout=60)
28 logger.info("Client connected")
29 hwsim_utils.test_connectivity_p2p(go, client)
32 """P2P autonomous GO and client joining group"""
34 connect_cli(dev[0], dev[1])
36 dev[1].wait_go_ending_session()
38 def test_autogo_2cli(dev):
39 """P2P autonomous GO and two clients joining group"""
41 connect_cli(dev[0], dev[1])
42 connect_cli(dev[0], dev[2])
43 hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
44 dev[0].global_request("P2P_REMOVE_CLIENT " + dev[1].p2p_dev_addr())
45 dev[1].wait_go_ending_session()
47 dev[2].wait_go_ending_session()
49 def test_autogo_tdls(dev):
50 """P2P autonomous GO and two clients using TDLS"""
53 logger.info("Start autonomous GO with fixed parameters " + go.ifname)
55 go.set_network_quoted(id, "ssid", "DIRECT-tdls")
56 go.set_network_quoted(id, "psk", "12345678")
57 go.set_network(id, "mode", "3")
58 go.set_network(id, "disabled", "2")
59 res = go.p2p_start_go(persistent=id)
60 logger.debug("res: " + str(res))
62 wt.add_passphrase("12345678")
63 connect_cli(go, dev[1])
64 connect_cli(go, dev[2])
65 hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
66 bssid = dev[0].p2p_interface_addr()
67 addr1 = dev[1].p2p_interface_addr()
68 addr2 = dev[2].p2p_interface_addr()
69 dev[1].tdls_setup(addr2)
71 hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
72 conf = wt.get_tdls_counter("setup_conf_ok", bssid, addr1, addr2);
74 raise Exception("No TDLS Setup Confirm (success) seen")
75 dl = wt.get_tdls_counter("valid_direct_link", bssid, addr1, addr2);
77 raise Exception("No valid frames through direct link")
78 wt.tdls_clear(bssid, addr1, addr2);
79 dev[1].tdls_teardown(addr2)
81 teardown = wt.get_tdls_counter("teardown", bssid, addr1, addr2);
83 raise Exception("No TDLS Setup Teardown seen")
84 wt.tdls_clear(bssid, addr1, addr2);
85 hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
86 ap_path = wt.get_tdls_counter("valid_ap_path", bssid, addr1, addr2);
88 raise Exception("No valid frames via AP path")
89 direct_link = wt.get_tdls_counter("valid_direct_link", bssid, addr1, addr2);
91 raise Exception("Unexpected frames through direct link")
92 idirect_link = wt.get_tdls_counter("invalid_direct_link", bssid, addr1,
95 raise Exception("Unexpected frames through direct link (invalid)")
100 def test_autogo_legacy(dev):
101 """P2P autonomous GO and legacy clients"""
104 logger.info("Connect P2P client")
105 connect_cli(dev[0], dev[1])
107 logger.info("Connect legacy WPS client")
108 pin = dev[2].wps_read_pin()
109 dev[0].p2p_go_authorize_client(pin)
110 dev[2].request("SET ignore_old_scan_res 1")
111 dev[2].request("P2P_SET disabled 1")
112 dev[2].dump_monitor()
113 dev[2].request("WPS_PIN any " + pin)
114 ev = dev[2].wait_event(["CTRL-EVENT-CONNECTED"], timeout=30)
116 raise Exception("Association with the GO timed out")
117 status = dev[2].get_status()
118 if status['wpa_state'] != 'COMPLETED':
119 raise Exception("Not fully connected")
120 hwsim_utils.test_connectivity_p2p_sta(dev[1], dev[2])
121 dev[2].request("DISCONNECT")
123 logger.info("Connect legacy non-WPS client")
124 dev[2].request("FLUSH")
125 dev[2].request("P2P_SET disabled 1")
126 dev[2].connect(ssid=res['ssid'], psk=res['passphrase'], proto='RSN',
127 key_mgmt='WPA-PSK', pairwise='CCMP', group='CCMP',
128 scan_freq=res['freq'])
129 hwsim_utils.test_connectivity_p2p_sta(dev[1], dev[2])
130 dev[2].request("DISCONNECT")
132 dev[0].remove_group()
133 dev[1].wait_go_ending_session()