]>
Commit | Line | Data |
---|---|---|
fdae3c40 JM |
1 | #!/usr/bin/python |
2 | # | |
3 | # IBSS test cases | |
4 | # Copyright (c) 2013, Jouni Malinen <j@w1.fi> | |
5 | # | |
6 | # This software may be distributed under the terms of the BSD license. | |
7 | # See README for more details. | |
8 | ||
9 | import logging | |
10 | logger = logging.getLogger(__name__) | |
11 | import time | |
12 | ||
13 | import hwsim_utils | |
14 | ||
15 | def connect_ibss_cmd(dev, id): | |
16 | dev.dump_monitor() | |
17 | dev.select_network(id) | |
18 | ||
19 | def wait_ibss_connection(dev): | |
20 | ev = dev.wait_event(["CTRL-EVENT-CONNECTED"], timeout=20) | |
21 | if ev is None: | |
22 | raise Exception("Connection to the IBSS timed out") | |
23 | dev.dump_monitor() | |
24 | ||
25 | def add_ibss(dev, ssid, psk=None, proto=None, key_mgmt=None, pairwise=None, group=None): | |
26 | id = dev.add_network() | |
27 | dev.set_network(id, "mode", "1") | |
28 | dev.set_network(id, "frequency", "2412") | |
29 | dev.set_network_quoted(id, "ssid", ssid) | |
30 | if psk: | |
31 | dev.set_network_quoted(id, "psk", psk) | |
32 | if proto: | |
33 | dev.set_network(id, "proto", proto) | |
34 | if key_mgmt: | |
35 | dev.set_network(id, "key_mgmt", key_mgmt) | |
36 | if pairwise: | |
37 | dev.set_network(id, "pairwise", pairwise) | |
38 | if group: | |
39 | dev.set_network(id, "group", group) | |
40 | return id | |
41 | ||
42 | def add_ibss_rsn(dev, ssid): | |
43 | return add_ibss(dev, ssid, "12345678", "RSN", "WPA-PSK", "CCMP", "CCMP") | |
44 | ||
45 | def test_ibss_rsn(dev): | |
46 | """IBSS RSN""" | |
47 | ssid="ibss-rsn" | |
48 | ||
49 | logger.info("Start IBSS on the first STA") | |
50 | id = add_ibss_rsn(dev[0], ssid) | |
51 | connect_ibss_cmd(dev[0], id) | |
52 | wait_ibss_connection(dev[0]) | |
53 | ||
54 | logger.info("Join two STAs to the IBSS") | |
55 | ||
56 | id = add_ibss_rsn(dev[1], ssid) | |
57 | connect_ibss_cmd(dev[1], id) | |
58 | ||
59 | id = add_ibss_rsn(dev[2], ssid) | |
60 | connect_ibss_cmd(dev[2], id) | |
61 | ||
62 | wait_ibss_connection(dev[1]) | |
63 | wait_ibss_connection(dev[2]) | |
64 | ||
65 | # Allow some time for all peers to complete key setup | |
66 | time.sleep(3) | |
67 | hwsim_utils.test_connectivity(dev[0].ifname, dev[1].ifname) | |
68 | hwsim_utils.test_connectivity(dev[0].ifname, dev[2].ifname) | |
69 | time.sleep(2) | |
70 | hwsim_utils.test_connectivity(dev[1].ifname, dev[2].ifname) |