tests: Convert test skipping to use exception
Instead of returning "skip" from the test function, raise the new HwsimSkip exception to indicate a test case was skipped. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
9c8779daf6
commit
81e787b750
26 changed files with 164 additions and 321 deletions
|
@ -433,14 +433,11 @@ def main():
|
||||||
params = {}
|
params = {}
|
||||||
params['logdir'] = args.logdir
|
params['logdir'] = args.logdir
|
||||||
params['long'] = args.long
|
params['long'] = args.long
|
||||||
res = t(dev, apdev, params)
|
t(dev, apdev, params)
|
||||||
elif t.func_code.co_argcount > 1:
|
elif t.func_code.co_argcount > 1:
|
||||||
res = t(dev, apdev)
|
t(dev, apdev)
|
||||||
else:
|
|
||||||
res = t(dev)
|
|
||||||
if res == "skip":
|
|
||||||
result = "SKIP"
|
|
||||||
else:
|
else:
|
||||||
|
t(dev)
|
||||||
result = "PASS"
|
result = "PASS"
|
||||||
except HwsimSkip, e:
|
except HwsimSkip, e:
|
||||||
logger.info("Skip test case: %s" % e)
|
logger.info("Skip test case: %s" % e)
|
||||||
|
|
|
@ -11,10 +11,11 @@ import os.path
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def check_cipher(dev, ap, cipher):
|
def check_cipher(dev, ap, cipher):
|
||||||
if cipher not in dev.get_capability("pairwise"):
|
if cipher not in dev.get_capability("pairwise"):
|
||||||
return "skip"
|
raise HwsimSkip("Cipher %s not supported" % cipher)
|
||||||
params = { "ssid": "test-wpa2-psk",
|
params = { "ssid": "test-wpa2-psk",
|
||||||
"wpa_passphrase": "12345678",
|
"wpa_passphrase": "12345678",
|
||||||
"wpa": "2",
|
"wpa": "2",
|
||||||
|
@ -27,13 +28,13 @@ def check_cipher(dev, ap, cipher):
|
||||||
|
|
||||||
def test_ap_cipher_tkip(dev, apdev):
|
def test_ap_cipher_tkip(dev, apdev):
|
||||||
"""WPA2-PSK/TKIP connection"""
|
"""WPA2-PSK/TKIP connection"""
|
||||||
return check_cipher(dev[0], apdev[0], "TKIP")
|
check_cipher(dev[0], apdev[0], "TKIP")
|
||||||
|
|
||||||
def test_ap_cipher_tkip_countermeasures_ap(dev, apdev):
|
def test_ap_cipher_tkip_countermeasures_ap(dev, apdev):
|
||||||
"""WPA-PSK/TKIP countermeasures (detected by AP)"""
|
"""WPA-PSK/TKIP countermeasures (detected by AP)"""
|
||||||
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (dev[0].get_driver_status_field("phyname"), dev[0].ifname)
|
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (dev[0].get_driver_status_field("phyname"), dev[0].ifname)
|
||||||
if not os.path.exists(testfile):
|
if not os.path.exists(testfile):
|
||||||
return "skip"
|
raise HwsimSkip("tkip_mic_test not supported in mac80211")
|
||||||
|
|
||||||
params = { "ssid": "tkip-countermeasures",
|
params = { "ssid": "tkip-countermeasures",
|
||||||
"wpa_passphrase": "12345678",
|
"wpa_passphrase": "12345678",
|
||||||
|
@ -73,7 +74,7 @@ def test_ap_cipher_tkip_countermeasures_sta(dev, apdev):
|
||||||
|
|
||||||
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
|
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
|
||||||
if not os.path.exists(testfile):
|
if not os.path.exists(testfile):
|
||||||
return "skip"
|
raise HwsimSkip("tkip_mic_test not supported in mac80211")
|
||||||
|
|
||||||
dev[0].connect("tkip-countermeasures", psk="12345678",
|
dev[0].connect("tkip-countermeasures", psk="12345678",
|
||||||
pairwise="TKIP", group="TKIP", scan_freq="2412")
|
pairwise="TKIP", group="TKIP", scan_freq="2412")
|
||||||
|
@ -97,19 +98,19 @@ def test_ap_cipher_tkip_countermeasures_sta(dev, apdev):
|
||||||
|
|
||||||
def test_ap_cipher_ccmp(dev, apdev):
|
def test_ap_cipher_ccmp(dev, apdev):
|
||||||
"""WPA2-PSK/CCMP connection"""
|
"""WPA2-PSK/CCMP connection"""
|
||||||
return check_cipher(dev[0], apdev[0], "CCMP")
|
check_cipher(dev[0], apdev[0], "CCMP")
|
||||||
|
|
||||||
def test_ap_cipher_gcmp(dev, apdev):
|
def test_ap_cipher_gcmp(dev, apdev):
|
||||||
"""WPA2-PSK/GCMP connection"""
|
"""WPA2-PSK/GCMP connection"""
|
||||||
return check_cipher(dev[0], apdev[0], "GCMP")
|
check_cipher(dev[0], apdev[0], "GCMP")
|
||||||
|
|
||||||
def test_ap_cipher_ccmp_256(dev, apdev):
|
def test_ap_cipher_ccmp_256(dev, apdev):
|
||||||
"""WPA2-PSK/CCMP-256 connection"""
|
"""WPA2-PSK/CCMP-256 connection"""
|
||||||
return check_cipher(dev[0], apdev[0], "CCMP-256")
|
check_cipher(dev[0], apdev[0], "CCMP-256")
|
||||||
|
|
||||||
def test_ap_cipher_gcmp_256(dev, apdev):
|
def test_ap_cipher_gcmp_256(dev, apdev):
|
||||||
"""WPA2-PSK/GCMP-256 connection"""
|
"""WPA2-PSK/GCMP-256 connection"""
|
||||||
return check_cipher(dev[0], apdev[0], "GCMP-256")
|
check_cipher(dev[0], apdev[0], "GCMP-256")
|
||||||
|
|
||||||
def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
|
def test_ap_cipher_mixed_wpa_wpa2(dev, apdev):
|
||||||
"""WPA2-PSK/CCMP/ and WPA-PSK/TKIP mixed configuration"""
|
"""WPA2-PSK/CCMP/ and WPA-PSK/TKIP mixed configuration"""
|
||||||
|
|
|
@ -10,6 +10,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def connect(dev, apdev):
|
def connect(dev, apdev):
|
||||||
params = { "ssid": "ap-csa",
|
params = { "ssid": "ap-csa",
|
||||||
|
@ -31,12 +32,12 @@ def switch_channel(ap, count, freq):
|
||||||
# WpaSupplicant or Hostapd supports CSA.
|
# WpaSupplicant or Hostapd supports CSA.
|
||||||
def csa_supported(dev):
|
def csa_supported(dev):
|
||||||
res = dev.get_driver_status()
|
res = dev.get_driver_status()
|
||||||
return (int(res['capa.flags'], 0) & 0x80000000) != 0
|
if (int(res['capa.flags'], 0) & 0x80000000) == 0:
|
||||||
|
raise HwsimSkip("CSA not supported")
|
||||||
|
|
||||||
def test_ap_csa_1_switch(dev, apdev):
|
def test_ap_csa_1_switch(dev, apdev):
|
||||||
"""AP Channel Switch, one switch"""
|
"""AP Channel Switch, one switch"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -45,8 +46,7 @@ def test_ap_csa_1_switch(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_2_switches(dev, apdev):
|
def test_ap_csa_2_switches(dev, apdev):
|
||||||
"""AP Channel Switch, two switches"""
|
"""AP Channel Switch, two switches"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -57,8 +57,7 @@ def test_ap_csa_2_switches(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_1_switch_count_0(dev, apdev):
|
def test_ap_csa_1_switch_count_0(dev, apdev):
|
||||||
"""AP Channel Switch, one switch with count 0"""
|
"""AP Channel Switch, one switch with count 0"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -68,8 +67,7 @@ def test_ap_csa_1_switch_count_0(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_2_switches_count_0(dev, apdev):
|
def test_ap_csa_2_switches_count_0(dev, apdev):
|
||||||
"""AP Channel Switch, two switches with count 0"""
|
"""AP Channel Switch, two switches with count 0"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -82,8 +80,7 @@ def test_ap_csa_2_switches_count_0(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_1_switch_count_1(dev, apdev):
|
def test_ap_csa_1_switch_count_1(dev, apdev):
|
||||||
"""AP Channel Switch, one switch with count 1"""
|
"""AP Channel Switch, one switch with count 1"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -93,8 +90,7 @@ def test_ap_csa_1_switch_count_1(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_2_switches_count_1(dev, apdev):
|
def test_ap_csa_2_switches_count_1(dev, apdev):
|
||||||
"""AP Channel Switch, two switches with count 1"""
|
"""AP Channel Switch, two switches with count 1"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
@ -107,8 +103,7 @@ def test_ap_csa_2_switches_count_1(dev, apdev):
|
||||||
|
|
||||||
def test_ap_csa_1_switch_count_2(dev, apdev):
|
def test_ap_csa_1_switch_count_2(dev, apdev):
|
||||||
"""AP Channel Switch, one switch with count 2"""
|
"""AP Channel Switch, one switch with count 2"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
ap = connect(dev[0], apdev)
|
ap = connect(dev[0], apdev)
|
||||||
|
|
||||||
hwsim_utils.test_connectivity(dev[0], ap)
|
hwsim_utils.test_connectivity(dev[0], ap)
|
||||||
|
|
|
@ -15,8 +15,13 @@ import os
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_ap_psk import check_mib, find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
from test_ap_psk import check_mib, find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
||||||
|
|
||||||
|
def check_hlr_auc_gw_support():
|
||||||
|
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
||||||
|
raise HwsimSkip("No hlr_auc_gw available")
|
||||||
|
|
||||||
def read_pem(fname):
|
def read_pem(fname):
|
||||||
with open(fname, "r") as f:
|
with open(fname, "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
@ -103,9 +108,7 @@ def eap_reauth(dev, method, rsn=True, sha256=False, expect_failure=False):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_sim(dev, apdev):
|
def test_ap_wpa2_eap_sim(dev, apdev):
|
||||||
"""WPA2-Enterprise connection using EAP-SIM"""
|
"""WPA2-Enterprise connection using EAP-SIM"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
eap_connect(dev[0], apdev[0], "SIM", "1232010000000000",
|
eap_connect(dev[0], apdev[0], "SIM", "1232010000000000",
|
||||||
|
@ -156,13 +159,11 @@ def test_ap_wpa2_eap_sim(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_sim_sql(dev, apdev, params):
|
def test_ap_wpa2_eap_sim_sql(dev, apdev, params):
|
||||||
"""WPA2-Enterprise connection using EAP-SIM (SQL)"""
|
"""WPA2-Enterprise connection using EAP-SIM (SQL)"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No sqlite3 module available")
|
||||||
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
params['auth_server_port'] = "1814"
|
params['auth_server_port'] = "1814"
|
||||||
|
@ -248,14 +249,12 @@ def test_ap_wpa2_eap_sim_config(dev, apdev):
|
||||||
def test_ap_wpa2_eap_sim_ext(dev, apdev):
|
def test_ap_wpa2_eap_sim_ext(dev, apdev):
|
||||||
"""WPA2-Enterprise connection using EAP-SIM and external GSM auth"""
|
"""WPA2-Enterprise connection using EAP-SIM and external GSM auth"""
|
||||||
try:
|
try:
|
||||||
return _test_ap_wpa2_eap_sim_ext(dev, apdev)
|
_test_ap_wpa2_eap_sim_ext(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET external_sim 0")
|
dev[0].request("SET external_sim 0")
|
||||||
|
|
||||||
def _test_ap_wpa2_eap_sim_ext(dev, apdev):
|
def _test_ap_wpa2_eap_sim_ext(dev, apdev):
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
hostapd.add_ap(apdev[0]['ifname'], params)
|
hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
dev[0].request("SET external_sim 1")
|
dev[0].request("SET external_sim 1")
|
||||||
|
@ -380,9 +379,7 @@ def _test_ap_wpa2_eap_sim_ext(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_aka(dev, apdev):
|
def test_ap_wpa2_eap_aka(dev, apdev):
|
||||||
"""WPA2-Enterprise connection using EAP-AKA"""
|
"""WPA2-Enterprise connection using EAP-AKA"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
eap_connect(dev[0], apdev[0], "AKA", "0232010000000000",
|
eap_connect(dev[0], apdev[0], "AKA", "0232010000000000",
|
||||||
|
@ -436,13 +433,11 @@ def test_ap_wpa2_eap_aka(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_aka_sql(dev, apdev, params):
|
def test_ap_wpa2_eap_aka_sql(dev, apdev, params):
|
||||||
"""WPA2-Enterprise connection using EAP-AKA (SQL)"""
|
"""WPA2-Enterprise connection using EAP-AKA (SQL)"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No sqlite3 module available")
|
||||||
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
params['auth_server_port'] = "1814"
|
params['auth_server_port'] = "1814"
|
||||||
|
@ -505,14 +500,12 @@ def test_ap_wpa2_eap_aka_config(dev, apdev):
|
||||||
def test_ap_wpa2_eap_aka_ext(dev, apdev):
|
def test_ap_wpa2_eap_aka_ext(dev, apdev):
|
||||||
"""WPA2-Enterprise connection using EAP-AKA and external UMTS auth"""
|
"""WPA2-Enterprise connection using EAP-AKA and external UMTS auth"""
|
||||||
try:
|
try:
|
||||||
return _test_ap_wpa2_eap_aka_ext(dev, apdev)
|
_test_ap_wpa2_eap_aka_ext(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET external_sim 0")
|
dev[0].request("SET external_sim 0")
|
||||||
|
|
||||||
def _test_ap_wpa2_eap_aka_ext(dev, apdev):
|
def _test_ap_wpa2_eap_aka_ext(dev, apdev):
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
hostapd.add_ap(apdev[0]['ifname'], params)
|
hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
dev[0].request("SET external_sim 1")
|
dev[0].request("SET external_sim 1")
|
||||||
|
@ -680,9 +673,7 @@ def _test_ap_wpa2_eap_aka_ext(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_aka_prime(dev, apdev):
|
def test_ap_wpa2_eap_aka_prime(dev, apdev):
|
||||||
"""WPA2-Enterprise connection using EAP-AKA'"""
|
"""WPA2-Enterprise connection using EAP-AKA'"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
eap_connect(dev[0], apdev[0], "AKA'", "6555444333222111",
|
eap_connect(dev[0], apdev[0], "AKA'", "6555444333222111",
|
||||||
|
@ -705,13 +696,11 @@ def test_ap_wpa2_eap_aka_prime(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_aka_prime_sql(dev, apdev, params):
|
def test_ap_wpa2_eap_aka_prime_sql(dev, apdev, params):
|
||||||
"""WPA2-Enterprise connection using EAP-AKA' (SQL)"""
|
"""WPA2-Enterprise connection using EAP-AKA' (SQL)"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No sqlite3 module available")
|
||||||
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
con = sqlite3.connect(os.path.join(params['logdir'], "hostapd.db"))
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
params['auth_server_port'] = "1814"
|
params['auth_server_port'] = "1814"
|
||||||
|
@ -2064,9 +2053,7 @@ def test_ap_wpa2_eap_request_identity_message(dev, apdev):
|
||||||
|
|
||||||
def test_ap_wpa2_eap_sim_aka_result_ind(dev, apdev):
|
def test_ap_wpa2_eap_sim_aka_result_ind(dev, apdev):
|
||||||
"""WPA2-Enterprise using EAP-SIM/AKA and protected result indication"""
|
"""WPA2-Enterprise using EAP-SIM/AKA and protected result indication"""
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
check_hlr_auc_gw_support()
|
||||||
logger.info("No hlr_auc_gw available");
|
|
||||||
return "skip"
|
|
||||||
params = int_eap_server_params()
|
params = int_eap_server_params()
|
||||||
params['eap_sim_db'] = "unix:/tmp/hlr_auc_gw.sock"
|
params['eap_sim_db'] = "unix:/tmp/hlr_auc_gw.sock"
|
||||||
params['eap_sim_aka_result_ind'] = "1"
|
params['eap_sim_aka_result_ind'] = "1"
|
||||||
|
@ -2142,7 +2129,7 @@ def test_ap_wpa2_eap_sql(dev, apdev, params):
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No sqlite3 module available")
|
||||||
dbfile = os.path.join(params['logdir'], "eap-user.db")
|
dbfile = os.path.join(params['logdir'], "eap-user.db")
|
||||||
try:
|
try:
|
||||||
os.remove(dbfile)
|
os.remove(dbfile)
|
||||||
|
@ -2301,11 +2288,9 @@ def test_wpa2_eap_ttls_pap_key_lifetime_in_memory(dev, apdev, params):
|
||||||
get_key_locations(buf, msk, "MSK")
|
get_key_locations(buf, msk, "MSK")
|
||||||
get_key_locations(buf, emsk, "EMSK")
|
get_key_locations(buf, emsk, "EMSK")
|
||||||
if password not in buf:
|
if password not in buf:
|
||||||
print("Password not found while associated")
|
raise HwsimSkip("Password not found while associated")
|
||||||
return "skip"
|
|
||||||
if pmk not in buf:
|
if pmk not in buf:
|
||||||
print("PMK not found while associated")
|
raise HwsimSkip("PMK not found while associated")
|
||||||
return "skip"
|
|
||||||
if kck not in buf:
|
if kck not in buf:
|
||||||
raise Exception("KCK not found while associated")
|
raise Exception("KCK not found while associated")
|
||||||
if kek not in buf:
|
if kek not in buf:
|
||||||
|
|
|
@ -13,6 +13,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from wlantest import Wlantest
|
from wlantest import Wlantest
|
||||||
from test_ap_psk import check_mib, find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
from test_ap_psk import check_mib, find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
||||||
|
|
||||||
|
@ -514,14 +515,11 @@ def test_ft_psk_key_lifetime_in_memory(dev, apdev, params):
|
||||||
get_key_locations(buf, pmkr0, "PMK-R0")
|
get_key_locations(buf, pmkr0, "PMK-R0")
|
||||||
get_key_locations(buf, pmkr1, "PMK-R1")
|
get_key_locations(buf, pmkr1, "PMK-R1")
|
||||||
if pmk not in buf:
|
if pmk not in buf:
|
||||||
print("PMK not found while associated")
|
raise HwsimSkip("PMK not found while associated")
|
||||||
return "skip"
|
|
||||||
if pmkr0 not in buf:
|
if pmkr0 not in buf:
|
||||||
print("PMK-R0 not found while associated")
|
raise HwsimSkip("PMK-R0 not found while associated")
|
||||||
return "skip"
|
|
||||||
if pmkr1 not in buf:
|
if pmkr1 not in buf:
|
||||||
print("PMK-R1 not found while associated")
|
raise HwsimSkip("PMK-R1 not found while associated")
|
||||||
return "skip"
|
|
||||||
if kck not in buf:
|
if kck not in buf:
|
||||||
raise Exception("KCK not found while associated")
|
raise Exception("KCK not found while associated")
|
||||||
if kek not in buf:
|
if kek not in buf:
|
||||||
|
|
|
@ -16,6 +16,7 @@ import socket
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
from wlantest import Wlantest
|
from wlantest import Wlantest
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
@ -95,12 +96,9 @@ def check_sp_type(dev, sp_type):
|
||||||
|
|
||||||
def hlr_auc_gw_available():
|
def hlr_auc_gw_available():
|
||||||
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
if not os.path.exists("/tmp/hlr_auc_gw.sock"):
|
||||||
logger.info("No hlr_auc_gw available");
|
raise HwsimSkip("No hlr_auc_gw socket available")
|
||||||
return False
|
|
||||||
if not os.path.exists("../../hostapd/hlr_auc_gw"):
|
if not os.path.exists("../../hostapd/hlr_auc_gw"):
|
||||||
logger.info("No hlr_auc_gw available");
|
raise HwsimSkip("No hlr_auc_gw available")
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def interworking_ext_sim_connect(dev, bssid, method):
|
def interworking_ext_sim_connect(dev, bssid, method):
|
||||||
dev.request("INTERWORKING_CONNECT " + bssid)
|
dev.request("INTERWORKING_CONNECT " + bssid)
|
||||||
|
@ -275,7 +273,7 @@ def test_ap_nai_home_realm_query(dev, apdev):
|
||||||
def test_ap_interworking_scan_filtering(dev, apdev):
|
def test_ap_interworking_scan_filtering(dev, apdev):
|
||||||
"""Interworking scan filtering with HESSID and access network type"""
|
"""Interworking scan filtering with HESSID and access network type"""
|
||||||
try:
|
try:
|
||||||
return _test_ap_interworking_scan_filtering(dev, apdev)
|
_test_ap_interworking_scan_filtering(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET hessid 00:00:00:00:00:00")
|
dev[0].request("SET hessid 00:00:00:00:00:00")
|
||||||
dev[0].request("SET access_network_type 15")
|
dev[0].request("SET access_network_type 15")
|
||||||
|
@ -411,8 +409,7 @@ def hs20_simulated_sim(dev, ap, method):
|
||||||
|
|
||||||
def test_ap_hs20_sim(dev, apdev):
|
def test_ap_hs20_sim(dev, apdev):
|
||||||
"""Hotspot 2.0 with simulated SIM and EAP-SIM"""
|
"""Hotspot 2.0 with simulated SIM and EAP-SIM"""
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
hs20_simulated_sim(dev[0], apdev[0], "SIM")
|
hs20_simulated_sim(dev[0], apdev[0], "SIM")
|
||||||
dev[0].request("INTERWORKING_SELECT auto freq=2412")
|
dev[0].request("INTERWORKING_SELECT auto freq=2412")
|
||||||
ev = dev[0].wait_event(["INTERWORKING-ALREADY-CONNECTED"], timeout=15)
|
ev = dev[0].wait_event(["INTERWORKING-ALREADY-CONNECTED"], timeout=15)
|
||||||
|
@ -421,20 +418,17 @@ def test_ap_hs20_sim(dev, apdev):
|
||||||
|
|
||||||
def test_ap_hs20_aka(dev, apdev):
|
def test_ap_hs20_aka(dev, apdev):
|
||||||
"""Hotspot 2.0 with simulated USIM and EAP-AKA"""
|
"""Hotspot 2.0 with simulated USIM and EAP-AKA"""
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
hs20_simulated_sim(dev[0], apdev[0], "AKA")
|
hs20_simulated_sim(dev[0], apdev[0], "AKA")
|
||||||
|
|
||||||
def test_ap_hs20_aka_prime(dev, apdev):
|
def test_ap_hs20_aka_prime(dev, apdev):
|
||||||
"""Hotspot 2.0 with simulated USIM and EAP-AKA'"""
|
"""Hotspot 2.0 with simulated USIM and EAP-AKA'"""
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
hs20_simulated_sim(dev[0], apdev[0], "AKA'")
|
hs20_simulated_sim(dev[0], apdev[0], "AKA'")
|
||||||
|
|
||||||
def test_ap_hs20_ext_sim(dev, apdev):
|
def test_ap_hs20_ext_sim(dev, apdev):
|
||||||
"""Hotspot 2.0 with external SIM processing"""
|
"""Hotspot 2.0 with external SIM processing"""
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
bssid = apdev[0]['bssid']
|
bssid = apdev[0]['bssid']
|
||||||
params = hs20_ap_params()
|
params = hs20_ap_params()
|
||||||
params['hessid'] = bssid
|
params['hessid'] = bssid
|
||||||
|
@ -454,8 +448,7 @@ def test_ap_hs20_ext_sim(dev, apdev):
|
||||||
|
|
||||||
def test_ap_hs20_ext_sim_roaming(dev, apdev):
|
def test_ap_hs20_ext_sim_roaming(dev, apdev):
|
||||||
"""Hotspot 2.0 with external SIM processing in roaming network"""
|
"""Hotspot 2.0 with external SIM processing in roaming network"""
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
bssid = apdev[0]['bssid']
|
bssid = apdev[0]['bssid']
|
||||||
params = hs20_ap_params()
|
params = hs20_ap_params()
|
||||||
params['hessid'] = bssid
|
params['hessid'] = bssid
|
||||||
|
@ -1274,13 +1267,12 @@ def test_ap_hs20_max_bss_load2(dev, apdev):
|
||||||
def test_ap_hs20_multi_cred_sp_prio(dev, apdev):
|
def test_ap_hs20_multi_cred_sp_prio(dev, apdev):
|
||||||
"""Hotspot 2.0 multi-cred sp_priority"""
|
"""Hotspot 2.0 multi-cred sp_priority"""
|
||||||
try:
|
try:
|
||||||
return _test_ap_hs20_multi_cred_sp_prio(dev, apdev)
|
_test_ap_hs20_multi_cred_sp_prio(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET external_sim 0")
|
dev[0].request("SET external_sim 0")
|
||||||
|
|
||||||
def _test_ap_hs20_multi_cred_sp_prio(dev, apdev):
|
def _test_ap_hs20_multi_cred_sp_prio(dev, apdev):
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
bssid = apdev[0]['bssid']
|
bssid = apdev[0]['bssid']
|
||||||
params = hs20_ap_params()
|
params = hs20_ap_params()
|
||||||
params['hessid'] = bssid
|
params['hessid'] = bssid
|
||||||
|
@ -1317,13 +1309,12 @@ def _test_ap_hs20_multi_cred_sp_prio(dev, apdev):
|
||||||
def test_ap_hs20_multi_cred_sp_prio2(dev, apdev):
|
def test_ap_hs20_multi_cred_sp_prio2(dev, apdev):
|
||||||
"""Hotspot 2.0 multi-cred sp_priority with two BSSes"""
|
"""Hotspot 2.0 multi-cred sp_priority with two BSSes"""
|
||||||
try:
|
try:
|
||||||
return _test_ap_hs20_multi_cred_sp_prio2(dev, apdev)
|
_test_ap_hs20_multi_cred_sp_prio2(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET external_sim 0")
|
dev[0].request("SET external_sim 0")
|
||||||
|
|
||||||
def _test_ap_hs20_multi_cred_sp_prio2(dev, apdev):
|
def _test_ap_hs20_multi_cred_sp_prio2(dev, apdev):
|
||||||
if not hlr_auc_gw_available():
|
hlr_auc_gw_available()
|
||||||
return "skip"
|
|
||||||
bssid = apdev[0]['bssid']
|
bssid = apdev[0]['bssid']
|
||||||
params = hs20_ap_params()
|
params = hs20_ap_params()
|
||||||
params['hessid'] = bssid
|
params['hessid'] = bssid
|
||||||
|
@ -2180,7 +2171,7 @@ def test_ap_hs20_remediation_sql(dev, apdev, params):
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No sqlite3 module available")
|
||||||
dbfile = os.path.join(params['logdir'], "eap-user.db")
|
dbfile = os.path.join(params['logdir'], "eap-user.db")
|
||||||
try:
|
try:
|
||||||
os.remove(dbfile)
|
os.remove(dbfile)
|
||||||
|
@ -2342,8 +2333,7 @@ def _test_ap_hs20_proxyarp(dev, apdev):
|
||||||
hapd.enable()
|
hapd.enable()
|
||||||
except:
|
except:
|
||||||
# For now, do not report failures due to missing kernel support
|
# For now, do not report failures due to missing kernel support
|
||||||
logger.info("Could not start hostapd - assume proxyarp not supported in kernel version")
|
raise HwsimSkip("Could not start hostapd - assume proxyarp not supported in kernel version")
|
||||||
return "skip"
|
|
||||||
ev = hapd.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=10)
|
ev = hapd.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("AP startup timed out")
|
raise Exception("AP startup timed out")
|
||||||
|
@ -2413,17 +2403,14 @@ def _test_ap_hs20_proxyarp(dev, apdev):
|
||||||
|
|
||||||
def test_ap_hs20_proxyarp(dev, apdev):
|
def test_ap_hs20_proxyarp(dev, apdev):
|
||||||
"""Hotspot 2.0 and ProxyARP"""
|
"""Hotspot 2.0 and ProxyARP"""
|
||||||
res = None
|
|
||||||
try:
|
try:
|
||||||
res = _test_ap_hs20_proxyarp(dev, apdev)
|
_test_ap_hs20_proxyarp(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
|
|
||||||
return res
|
|
||||||
|
|
||||||
def _test_ap_hs20_proxyarp_dgaf(dev, apdev, disabled):
|
def _test_ap_hs20_proxyarp_dgaf(dev, apdev, disabled):
|
||||||
bssid = apdev[0]['bssid']
|
bssid = apdev[0]['bssid']
|
||||||
params = hs20_ap_params()
|
params = hs20_ap_params()
|
||||||
|
@ -2437,8 +2424,7 @@ def _test_ap_hs20_proxyarp_dgaf(dev, apdev, disabled):
|
||||||
hapd.enable()
|
hapd.enable()
|
||||||
except:
|
except:
|
||||||
# For now, do not report failures due to missing kernel support
|
# For now, do not report failures due to missing kernel support
|
||||||
logger.info("Could not start hostapd - assume proxyarp not supported in kernel version")
|
raise HwsimSkip("Could not start hostapd - assume proxyarp not supported in kernel version")
|
||||||
return "skip"
|
|
||||||
ev = hapd.wait_event(["AP-ENABLED"], timeout=10)
|
ev = hapd.wait_event(["AP-ENABLED"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("AP startup timed out")
|
raise Exception("AP startup timed out")
|
||||||
|
@ -2512,30 +2498,24 @@ def _test_ap_hs20_proxyarp_dgaf(dev, apdev, disabled):
|
||||||
|
|
||||||
def test_ap_hs20_proxyarp_disable_dgaf(dev, apdev):
|
def test_ap_hs20_proxyarp_disable_dgaf(dev, apdev):
|
||||||
"""Hotspot 2.0 and ProxyARP with DGAF disabled"""
|
"""Hotspot 2.0 and ProxyARP with DGAF disabled"""
|
||||||
res = None
|
|
||||||
try:
|
try:
|
||||||
res = _test_ap_hs20_proxyarp_dgaf(dev, apdev, True)
|
_test_ap_hs20_proxyarp_dgaf(dev, apdev, True)
|
||||||
finally:
|
finally:
|
||||||
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
|
|
||||||
return res
|
|
||||||
|
|
||||||
def test_ap_hs20_proxyarp_enable_dgaf(dev, apdev):
|
def test_ap_hs20_proxyarp_enable_dgaf(dev, apdev):
|
||||||
"""Hotspot 2.0 and ProxyARP with DGAF enabled"""
|
"""Hotspot 2.0 and ProxyARP with DGAF enabled"""
|
||||||
res = None
|
|
||||||
try:
|
try:
|
||||||
res = _test_ap_hs20_proxyarp_dgaf(dev, apdev, False)
|
_test_ap_hs20_proxyarp_dgaf(dev, apdev, False)
|
||||||
finally:
|
finally:
|
||||||
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
subprocess.call(['ip', 'link', 'set', 'dev', 'ap-br0', 'down'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
|
|
||||||
return res
|
|
||||||
|
|
||||||
def ip_checksum(buf):
|
def ip_checksum(buf):
|
||||||
sum = 0
|
sum = 0
|
||||||
if len(buf) & 0x01:
|
if len(buf) & 0x01:
|
||||||
|
@ -2787,8 +2767,7 @@ def _test_proxyarp_open(dev, apdev, params):
|
||||||
hapd.enable()
|
hapd.enable()
|
||||||
except:
|
except:
|
||||||
# For now, do not report failures due to missing kernel support
|
# For now, do not report failures due to missing kernel support
|
||||||
logger.info("Could not start hostapd - assume proxyarp not supported in kernel version")
|
raise HwsimSkip("Could not start hostapd - assume proxyarp not supported in kernel version")
|
||||||
return "skip"
|
|
||||||
ev = hapd.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=10)
|
ev = hapd.wait_event(["AP-ENABLED", "AP-DISABLED"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("AP startup timed out")
|
raise Exception("AP startup timed out")
|
||||||
|
@ -3046,9 +3025,8 @@ def _test_proxyarp_open(dev, apdev, params):
|
||||||
|
|
||||||
def test_proxyarp_open(dev, apdev, params):
|
def test_proxyarp_open(dev, apdev, params):
|
||||||
"""ProxyARP with open network"""
|
"""ProxyARP with open network"""
|
||||||
res = None
|
|
||||||
try:
|
try:
|
||||||
res = _test_proxyarp_open(dev, apdev, params)
|
_test_proxyarp_open(dev, apdev, params)
|
||||||
finally:
|
finally:
|
||||||
try:
|
try:
|
||||||
subprocess.call(['ebtables', '-F', 'FORWARD'])
|
subprocess.call(['ebtables', '-F', 'FORWARD'])
|
||||||
|
@ -3059,5 +3037,3 @@ def test_proxyarp_open(dev, apdev, params):
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
subprocess.call(['brctl', 'delbr', 'ap-br0'],
|
||||||
stderr=open('/dev/null', 'w'))
|
stderr=open('/dev/null', 'w'))
|
||||||
|
|
||||||
return res
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import struct
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
from test_ap_csa import csa_supported
|
from test_ap_csa import csa_supported
|
||||||
|
|
||||||
|
@ -630,8 +631,7 @@ def test_ap_ht_40mhz_intolerant_ap(dev, apdev):
|
||||||
|
|
||||||
def test_ap_ht40_csa(dev, apdev):
|
def test_ap_ht40_csa(dev, apdev):
|
||||||
"""HT with 40 MHz channel width and CSA"""
|
"""HT with 40 MHz channel width and CSA"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
hapd = None
|
hapd = None
|
||||||
params = { "ssid": "ht",
|
params = { "ssid": "ht",
|
||||||
|
@ -675,8 +675,7 @@ def test_ap_ht40_csa(dev, apdev):
|
||||||
|
|
||||||
def test_ap_ht40_csa2(dev, apdev):
|
def test_ap_ht40_csa2(dev, apdev):
|
||||||
"""HT with 40 MHz channel width and CSA"""
|
"""HT with 40 MHz channel width and CSA"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
hapd = None
|
hapd = None
|
||||||
params = { "ssid": "ht",
|
params = { "ssid": "ht",
|
||||||
|
@ -720,8 +719,7 @@ def test_ap_ht40_csa2(dev, apdev):
|
||||||
|
|
||||||
def test_ap_ht40_csa3(dev, apdev):
|
def test_ap_ht40_csa3(dev, apdev):
|
||||||
"""HT with 40 MHz channel width and CSA"""
|
"""HT with 40 MHz channel width and CSA"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
hapd = None
|
hapd = None
|
||||||
params = { "ssid": "ht",
|
params = { "ssid": "ht",
|
||||||
|
@ -769,8 +767,7 @@ def test_ap_ht_smps(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
except:
|
except:
|
||||||
logger.info("Assume mac80211_hwsim was not recent enough to support SMPS")
|
raise HwsimSkip("Assume mac80211_hwsim was not recent enough to support SMPS")
|
||||||
return "skip"
|
|
||||||
params = { "ssid": "ht2", "ht_capab": "[SMPS-DYNAMIC]" }
|
params = { "ssid": "ht2", "ht_capab": "[SMPS-DYNAMIC]" }
|
||||||
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
|
hapd2 = hostapd.add_ap(apdev[1]['ifname'], params)
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import subprocess
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
|
|
||||||
def check_mib(dev, vals):
|
def check_mib(dev, vals):
|
||||||
|
@ -940,8 +941,7 @@ def test_wpa2_psk_key_lifetime_in_memory(dev, apdev, params):
|
||||||
logger.info("Checking keys in memory while associated")
|
logger.info("Checking keys in memory while associated")
|
||||||
get_key_locations(buf, pmk, "PMK")
|
get_key_locations(buf, pmk, "PMK")
|
||||||
if pmk not in buf:
|
if pmk not in buf:
|
||||||
print("PMK not found while associated")
|
raise HwsimSkip("PMK not found while associated")
|
||||||
return "skip"
|
|
||||||
if kck not in buf:
|
if kck not in buf:
|
||||||
raise Exception("KCK not found while associated")
|
raise Exception("KCK not found while associated")
|
||||||
if kek not in buf:
|
if kek not in buf:
|
||||||
|
|
|
@ -11,6 +11,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from wlantest import Wlantest
|
from wlantest import Wlantest
|
||||||
|
|
||||||
def check_qos_map(ap, hapd, dev, sta, dscp, tid, ap_tid=None):
|
def check_qos_map(ap, hapd, dev, sta, dscp, tid, ap_tid=None):
|
||||||
|
@ -36,7 +37,7 @@ def test_ap_qosmap(dev, apdev):
|
||||||
"""QoS mapping"""
|
"""QoS mapping"""
|
||||||
drv_flags = dev[0].get_driver_status_field("capa.flags")
|
drv_flags = dev[0].get_driver_status_field("capa.flags")
|
||||||
if int(drv_flags, 0) & 0x40000000 == 0:
|
if int(drv_flags, 0) & 0x40000000 == 0:
|
||||||
return "skip"
|
raise HwsimSkip("Driver does not support QoS Map")
|
||||||
ssid = "test-qosmap"
|
ssid = "test-qosmap"
|
||||||
params = { "ssid": ssid }
|
params = { "ssid": ssid }
|
||||||
params['qos_map_set'] = '53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55'
|
params['qos_map_set'] = '53,2,22,6,8,15,0,7,255,255,16,31,32,39,255,255,40,47,48,55'
|
||||||
|
|
|
@ -13,6 +13,7 @@ import hwsim_utils
|
||||||
from hostapd import HostapdGlobal
|
from hostapd import HostapdGlobal
|
||||||
from hostapd import Hostapd
|
from hostapd import Hostapd
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from wlantest import Wlantest
|
from wlantest import Wlantest
|
||||||
|
|
||||||
def start_ap_wpa2_psk(ifname):
|
def start_ap_wpa2_psk(ifname):
|
||||||
|
@ -363,8 +364,7 @@ def test_tdls_chan_switch(dev, apdev):
|
||||||
"""Open AP and two stations using TDLS"""
|
"""Open AP and two stations using TDLS"""
|
||||||
flags = int(dev[0].get_driver_status_field('capa.flags'), 16)
|
flags = int(dev[0].get_driver_status_field('capa.flags'), 16)
|
||||||
if flags & 0x800000000 == 0:
|
if flags & 0x800000000 == 0:
|
||||||
logger.info("Driver does not support TDLS channel switching")
|
raise HwsimSkip("Driver does not support TDLS channel switching")
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
|
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-open" })
|
||||||
connect_2sta_open(dev, hapd)
|
connect_2sta_open(dev, hapd)
|
||||||
|
|
|
@ -12,6 +12,7 @@ import subprocess, time
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_dfs import wait_dfs_event
|
from test_dfs import wait_dfs_event
|
||||||
from test_ap_csa import csa_supported
|
from test_ap_csa import csa_supported
|
||||||
|
|
||||||
|
@ -42,8 +43,7 @@ def test_ap_vht80(dev, apdev):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
||||||
if not vht_supported():
|
if not vht_supported():
|
||||||
logger.info("80 MHz channel not supported in regulatory information")
|
raise HwsimSkip("80 MHz channel not supported in regulatory information")
|
||||||
return "skip"
|
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -82,8 +82,7 @@ def test_ap_vht80_params(dev, apdev):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
||||||
if not vht_supported():
|
if not vht_supported():
|
||||||
logger.info("80 MHz channel not supported in regulatory information")
|
raise HwsimSwkip("80 MHz channel not supported in regulatory information")
|
||||||
return "skip"
|
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -202,7 +201,7 @@ def test_ap_vht160(dev, apdev):
|
||||||
# Not all systems have recent enough CRDA version and
|
# Not all systems have recent enough CRDA version and
|
||||||
# wireless-regdb changes to support 160 MHz and DFS. For now,
|
# wireless-regdb changes to support 160 MHz and DFS. For now,
|
||||||
# do not report failures for this test case.
|
# do not report failures for this test case.
|
||||||
return "skip"
|
raise HwsimSkip("CRDA or wireless-regdb did not support 160 MHz")
|
||||||
raise Exception("Unexpected interface state: " + state)
|
raise Exception("Unexpected interface state: " + state)
|
||||||
|
|
||||||
params = { "ssid": "vht2",
|
params = { "ssid": "vht2",
|
||||||
|
@ -277,8 +276,7 @@ def test_ap_vht160(dev, apdev):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
||||||
if not vht_supported():
|
if not vht_supported():
|
||||||
logger.info("80/160 MHz channel not supported in regulatory information")
|
raise HwsimSkip("80/160 MHz channel not supported in regulatory information")
|
||||||
return "skip"
|
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -347,8 +345,7 @@ def test_ap_vht80plus80(dev, apdev):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
||||||
if not vht_supported():
|
if not vht_supported():
|
||||||
logger.info("80/160 MHz channel not supported in regulatory information")
|
raise HwsimSkip("80/160 MHz channel not supported in regulatory information")
|
||||||
return "skip"
|
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
@ -363,8 +360,7 @@ def test_ap_vht80plus80(dev, apdev):
|
||||||
|
|
||||||
def test_ap_vht80_csa(dev, apdev):
|
def test_ap_vht80_csa(dev, apdev):
|
||||||
"""VHT with 80 MHz channel width and CSA"""
|
"""VHT with 80 MHz channel width and CSA"""
|
||||||
if not csa_supported(dev[0]):
|
csa_supported(dev[0])
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
hapd = None
|
hapd = None
|
||||||
params = { "ssid": "vht",
|
params = { "ssid": "vht",
|
||||||
|
@ -406,8 +402,7 @@ def test_ap_vht80_csa(dev, apdev):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
if isinstance(e, Exception) and str(e) == "AP startup failed":
|
||||||
if not vht_supported():
|
if not vht_supported():
|
||||||
logger.info("80 MHz channel not supported in regulatory information")
|
raise HwsimSkip("80 MHz channel not supported in regulatory information")
|
||||||
return "skip"
|
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
|
|
|
@ -20,6 +20,7 @@ import StringIO
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def test_ap_wps_init(dev, apdev):
|
def test_ap_wps_init(dev, apdev):
|
||||||
"""Initial AP configuration with first WPS Enrollee"""
|
"""Initial AP configuration with first WPS Enrollee"""
|
||||||
|
@ -1569,8 +1570,7 @@ def test_ap_wps_auto_setup_with_config_file(dev, apdev):
|
||||||
def test_ap_wps_pbc_timeout(dev, apdev, params):
|
def test_ap_wps_pbc_timeout(dev, apdev, params):
|
||||||
"""wpa_supplicant PBC walk time [long]"""
|
"""wpa_supplicant PBC walk time [long]"""
|
||||||
if not params['long']:
|
if not params['long']:
|
||||||
logger.info("Skip test case with long duration due to --long not specified")
|
raise HwsimSkip("Skip test case with long duration due to --long not specified")
|
||||||
return "skip"
|
|
||||||
ssid = "test-wps"
|
ssid = "test-wps"
|
||||||
hostapd.add_ap(apdev[0]['ifname'],
|
hostapd.add_ap(apdev[0]['ifname'],
|
||||||
{ "ssid": ssid, "eap_server": "1", "wps_state": "1" })
|
{ "ssid": ssid, "eap_server": "1", "wps_state": "1" })
|
||||||
|
|
|
@ -298,7 +298,7 @@ def test_dbus_invalid_method(dev, apdev):
|
||||||
def test_dbus_get_set_wps(dev, apdev):
|
def test_dbus_get_set_wps(dev, apdev):
|
||||||
"""D-Bus Get/Set for WPS properties"""
|
"""D-Bus Get/Set for WPS properties"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_get_set_wps(dev, apdev)
|
_test_dbus_get_set_wps(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
dev[0].request("SET config_methods display keypad virtual_display nfc_interface")
|
dev[0].request("SET config_methods display keypad virtual_display nfc_interface")
|
||||||
|
@ -427,7 +427,7 @@ def test_dbus_wps_invalid(dev, apdev):
|
||||||
def test_dbus_wps_pbc(dev, apdev):
|
def test_dbus_wps_pbc(dev, apdev):
|
||||||
"""D-Bus WPS/PBC operation and signals"""
|
"""D-Bus WPS/PBC operation and signals"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_wps_pbc(dev, apdev)
|
_test_dbus_wps_pbc(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -490,7 +490,7 @@ def _test_dbus_wps_pbc(dev, apdev):
|
||||||
def test_dbus_wps_pin(dev, apdev):
|
def test_dbus_wps_pin(dev, apdev):
|
||||||
"""D-Bus WPS/PIN operation and signals"""
|
"""D-Bus WPS/PIN operation and signals"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_wps_pin(dev, apdev)
|
_test_dbus_wps_pin(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ def _test_dbus_wps_pin(dev, apdev):
|
||||||
def test_dbus_wps_pin2(dev, apdev):
|
def test_dbus_wps_pin2(dev, apdev):
|
||||||
"""D-Bus WPS/PIN operation and signals (PIN from wpa_supplicant)"""
|
"""D-Bus WPS/PIN operation and signals (PIN from wpa_supplicant)"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_wps_pin2(dev, apdev)
|
_test_dbus_wps_pin2(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -614,7 +614,7 @@ def _test_dbus_wps_pin2(dev, apdev):
|
||||||
def test_dbus_wps_pin_m2d(dev, apdev):
|
def test_dbus_wps_pin_m2d(dev, apdev):
|
||||||
"""D-Bus WPS/PIN operation and signals with M2D"""
|
"""D-Bus WPS/PIN operation and signals with M2D"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_wps_pin_m2d(dev, apdev)
|
_test_dbus_wps_pin_m2d(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -677,7 +677,7 @@ def _test_dbus_wps_pin_m2d(dev, apdev):
|
||||||
def test_dbus_wps_reg(dev, apdev):
|
def test_dbus_wps_reg(dev, apdev):
|
||||||
"""D-Bus WPS/Registrar operation and signals"""
|
"""D-Bus WPS/Registrar operation and signals"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_wps_reg(dev, apdev)
|
_test_dbus_wps_reg(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -1460,7 +1460,7 @@ def test_dbus_pkcs11(dev, apdev):
|
||||||
def test_dbus_apscan(dev, apdev):
|
def test_dbus_apscan(dev, apdev):
|
||||||
"""D-Bus Get/Set ApScan"""
|
"""D-Bus Get/Set ApScan"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_apscan(dev, apdev)
|
_test_dbus_apscan(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("AP_SCAN 1")
|
dev[0].request("AP_SCAN 1")
|
||||||
|
|
||||||
|
@ -1585,7 +1585,7 @@ def test_dbus_bss_expire(dev, apdev):
|
||||||
def test_dbus_country(dev, apdev):
|
def test_dbus_country(dev, apdev):
|
||||||
"""D-Bus Get/Set Country"""
|
"""D-Bus Get/Set Country"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_country(dev, apdev)
|
_test_dbus_country(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET country 00")
|
dev[0].request("SET country 00")
|
||||||
subprocess.call(['iw', 'reg', 'set', '00'])
|
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||||
|
|
|
@ -555,7 +555,7 @@ def test_dbus_old_connect_eap(dev, apdev):
|
||||||
def test_dbus_old_wps_pbc(dev, apdev):
|
def test_dbus_old_wps_pbc(dev, apdev):
|
||||||
"""The old D-Bus interface and WPS/PBC"""
|
"""The old D-Bus interface and WPS/PBC"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_old_wps_pbc(dev, apdev)
|
_test_dbus_old_wps_pbc(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ def _test_dbus_old_wps_pbc(dev, apdev):
|
||||||
def test_dbus_old_wps_pin(dev, apdev):
|
def test_dbus_old_wps_pin(dev, apdev):
|
||||||
"""The old D-Bus interface and WPS/PIN"""
|
"""The old D-Bus interface and WPS/PIN"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_old_wps_pin(dev, apdev)
|
_test_dbus_old_wps_pin(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
@ -677,7 +677,7 @@ def _test_dbus_old_wps_pin(dev, apdev):
|
||||||
def test_dbus_old_wps_reg(dev, apdev):
|
def test_dbus_old_wps_reg(dev, apdev):
|
||||||
"""The old D-Bus interface and WPS/Registar"""
|
"""The old D-Bus interface and WPS/Registar"""
|
||||||
try:
|
try:
|
||||||
return _test_dbus_old_wps_reg(dev, apdev)
|
_test_dbus_old_wps_reg(dev, apdev)
|
||||||
finally:
|
finally:
|
||||||
dev[0].request("SET wps_cred_processing 0")
|
dev[0].request("SET wps_cred_processing 0")
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def wait_dfs_event(hapd, event, timeout):
|
def wait_dfs_event(hapd, event, timeout):
|
||||||
dfs_events = [ "DFS-RADAR-DETECTED", "DFS-NEW-CHANNEL",
|
dfs_events = [ "DFS-RADAR-DETECTED", "DFS-NEW-CHANNEL",
|
||||||
|
@ -68,7 +69,9 @@ def start_dfs_ap(ap, allow_failure=False, ssid="dfs", ht=True, ht40=False,
|
||||||
if state != "DFS":
|
if state != "DFS":
|
||||||
if allow_failure:
|
if allow_failure:
|
||||||
logger.info("Interface state not DFS: " + state)
|
logger.info("Interface state not DFS: " + state)
|
||||||
return None
|
if not os.path.exists("dfs"):
|
||||||
|
raise HwsimSkip("Assume DFS testing not supported")
|
||||||
|
raise Exception("Failed to start DFS AP")
|
||||||
raise Exception("Unexpected interface state: " + state)
|
raise Exception("Unexpected interface state: " + state)
|
||||||
|
|
||||||
return hapd
|
return hapd
|
||||||
|
@ -84,10 +87,6 @@ def test_dfs(dev, apdev):
|
||||||
"""DFS CAC functionality on clear channel"""
|
"""DFS CAC functionality on clear channel"""
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], allow_failure=True)
|
hapd = start_dfs_ap(apdev[0], allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
|
|
||||||
ev = wait_dfs_event(hapd, "DFS-CAC-COMPLETED", 70)
|
ev = wait_dfs_event(hapd, "DFS-CAC-COMPLETED", 70)
|
||||||
if "success=1" not in ev:
|
if "success=1" not in ev:
|
||||||
|
@ -141,10 +140,6 @@ def test_dfs_radar(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd2 = None
|
hapd2 = None
|
||||||
hapd = start_dfs_ap(apdev[0], allow_failure=True)
|
hapd = start_dfs_ap(apdev[0], allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
@ -231,10 +226,6 @@ def test_dfs_radar_chanlist(dev, apdev):
|
||||||
"""DFS chanlist when radar is detected"""
|
"""DFS chanlist when radar is detected"""
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], chanlist="40 44", allow_failure=True)
|
hapd = start_dfs_ap(apdev[0], chanlist="40 44", allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
@ -269,10 +260,6 @@ def test_dfs_radar_chanlist_vht80(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], chanlist="36", ht40=True, vht80=True,
|
hapd = start_dfs_ap(apdev[0], chanlist="36", ht40=True, vht80=True,
|
||||||
allow_failure=True)
|
allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
@ -310,10 +297,6 @@ def test_dfs_radar_chanlist_vht20(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], chanlist="36", vht20=True,
|
hapd = start_dfs_ap(apdev[0], chanlist="36", vht20=True,
|
||||||
allow_failure=True)
|
allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
@ -348,10 +331,6 @@ def test_dfs_radar_no_ht(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], chanlist="36", ht=False,
|
hapd = start_dfs_ap(apdev[0], chanlist="36", ht=False,
|
||||||
allow_failure=True)
|
allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
@ -386,10 +365,6 @@ def test_dfs_radar_ht40minus(dev, apdev):
|
||||||
try:
|
try:
|
||||||
hapd = start_dfs_ap(apdev[0], chanlist="36", ht40minus=True,
|
hapd = start_dfs_ap(apdev[0], chanlist="36", ht40minus=True,
|
||||||
allow_failure=True)
|
allow_failure=True)
|
||||||
if hapd is None:
|
|
||||||
if not os.path.exists("dfs"):
|
|
||||||
return "skip"
|
|
||||||
raise Exception("Failed to start DFS AP")
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dfs_simulate_radar(hapd)
|
dfs_simulate_radar(hapd)
|
||||||
|
|
|
@ -13,6 +13,7 @@ import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
EAP_CODE_REQUEST = 1
|
EAP_CODE_REQUEST = 1
|
||||||
EAP_CODE_RESPONSE = 2
|
EAP_CODE_RESPONSE = 2
|
||||||
|
@ -53,7 +54,7 @@ def start_radius_server(eap_handler):
|
||||||
import pyrad.packet
|
import pyrad.packet
|
||||||
import pyrad.dictionary
|
import pyrad.dictionary
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return None
|
raise HwsimSkip("No pyrad modules available")
|
||||||
|
|
||||||
class TestServer(pyrad.server.Server):
|
class TestServer(pyrad.server.Server):
|
||||||
def _HandleAuthPacket(self, pkt):
|
def _HandleAuthPacket(self, pkt):
|
||||||
|
@ -260,8 +261,6 @@ def test_eap_proto(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(eap_handler)
|
srv = start_radius_server(eap_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -528,8 +527,6 @@ def test_eap_proto_sake(dev, apdev):
|
||||||
return sake_challenge(ctx)
|
return sake_challenge(ctx)
|
||||||
|
|
||||||
srv = start_radius_server(sake_handler)
|
srv = start_radius_server(sake_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -704,8 +701,6 @@ def test_eap_proto_leap(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(leap_handler)
|
srv = start_radius_server(leap_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -766,8 +761,6 @@ def test_eap_proto_md5(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(md5_handler)
|
srv = start_radius_server(md5_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -819,8 +812,6 @@ def test_eap_proto_otp(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(otp_handler)
|
srv = start_radius_server(otp_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -1274,8 +1265,6 @@ def test_eap_proto_gpsk(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(gpsk_handler)
|
srv = start_radius_server(gpsk_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -1582,8 +1571,6 @@ def test_eap_proto_eke(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(eke_handler)
|
srv = start_radius_server(eke_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -1904,8 +1891,6 @@ def test_eap_proto_pax(dev, apdev):
|
||||||
return struct.pack(">BBH", EAP_CODE_FAILURE, ctx['id'], 4)
|
return struct.pack(">BBH", EAP_CODE_FAILURE, ctx['id'], 4)
|
||||||
|
|
||||||
srv = start_radius_server(pax_handler)
|
srv = start_radius_server(pax_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -2043,8 +2028,6 @@ def test_eap_proto_psk(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(psk_handler)
|
srv = start_radius_server(psk_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -2786,8 +2769,6 @@ def test_eap_proto_aka(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(aka_handler)
|
srv = start_radius_server(aka_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -3133,8 +3114,6 @@ def test_eap_proto_aka_prime(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(aka_prime_handler)
|
srv = start_radius_server(aka_prime_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -3539,8 +3518,6 @@ def test_eap_proto_sim(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(sim_handler)
|
srv = start_radius_server(sim_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
@ -4002,8 +3979,6 @@ def test_eap_proto_ikev2(dev, apdev):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
srv = start_radius_server(ikev2_handler)
|
srv = start_radius_server(ikev2_handler)
|
||||||
if srv is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hapd = start_ap(apdev[0]['ifname'])
|
hapd = start_ap(apdev[0]['ifname'])
|
||||||
|
|
|
@ -11,9 +11,15 @@ import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_ap_eap import int_eap_server_params
|
from test_ap_eap import int_eap_server_params
|
||||||
from test_ap_psk import find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
from test_ap_psk import find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
||||||
|
|
||||||
|
def check_erp_capa(dev):
|
||||||
|
capab = dev.get_capability("erp")
|
||||||
|
if not capab or 'ERP' not in capab:
|
||||||
|
raise HwsimSkip("ERP not supported in the build")
|
||||||
|
|
||||||
def test_erp_initiate_reauth_start(dev, apdev):
|
def test_erp_initiate_reauth_start(dev, apdev):
|
||||||
"""Authenticator sending EAP-Initiate/Re-auth-Start, but ERP disabled on peer"""
|
"""Authenticator sending EAP-Initiate/Re-auth-Start, but ERP disabled on peer"""
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
|
@ -43,9 +49,7 @@ def test_erp_enabled_on_server(dev, apdev):
|
||||||
|
|
||||||
def test_erp(dev, apdev):
|
def test_erp(dev, apdev):
|
||||||
"""ERP enabled on server and peer"""
|
"""ERP enabled on server and peer"""
|
||||||
capab = dev[0].get_capability("erp")
|
check_erp_capa(dev[0])
|
||||||
if not capab or 'ERP' not in capab:
|
|
||||||
return "skip"
|
|
||||||
params = int_eap_server_params()
|
params = int_eap_server_params()
|
||||||
params['erp_send_reauth_start'] = '1'
|
params['erp_send_reauth_start'] = '1'
|
||||||
params['erp_domain'] = 'example.com'
|
params['erp_domain'] = 'example.com'
|
||||||
|
@ -71,9 +75,7 @@ def test_erp(dev, apdev):
|
||||||
|
|
||||||
def test_erp_server_no_match(dev, apdev):
|
def test_erp_server_no_match(dev, apdev):
|
||||||
"""ERP enabled on server and peer, but server has no key match"""
|
"""ERP enabled on server and peer, but server has no key match"""
|
||||||
capab = dev[0].get_capability("erp")
|
check_erp_capa(dev[0])
|
||||||
if not capab or 'ERP' not in capab:
|
|
||||||
return "skip"
|
|
||||||
params = int_eap_server_params()
|
params = int_eap_server_params()
|
||||||
params['erp_send_reauth_start'] = '1'
|
params['erp_send_reauth_start'] = '1'
|
||||||
params['erp_domain'] = 'example.com'
|
params['erp_domain'] = 'example.com'
|
||||||
|
@ -125,9 +127,7 @@ def start_erp_as(apdev):
|
||||||
|
|
||||||
def test_erp_radius(dev, apdev):
|
def test_erp_radius(dev, apdev):
|
||||||
"""ERP enabled on RADIUS server and peer"""
|
"""ERP enabled on RADIUS server and peer"""
|
||||||
capab = dev[0].get_capability("erp")
|
check_erp_capa(dev[0])
|
||||||
if not capab or 'ERP' not in capab:
|
|
||||||
return "skip"
|
|
||||||
start_erp_as(apdev[1])
|
start_erp_as(apdev[1])
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
params['auth_server_port'] = "18128"
|
params['auth_server_port'] = "18128"
|
||||||
|
@ -175,9 +175,7 @@ def erp_test(dev, hapd, **kwargs):
|
||||||
|
|
||||||
def test_erp_radius_eap_methods(dev, apdev):
|
def test_erp_radius_eap_methods(dev, apdev):
|
||||||
"""ERP enabled on RADIUS server and peer"""
|
"""ERP enabled on RADIUS server and peer"""
|
||||||
capab = dev[0].get_capability("erp")
|
check_erp_capa(dev[0])
|
||||||
if not capab or 'ERP' not in capab:
|
|
||||||
return "skip"
|
|
||||||
start_erp_as(apdev[1])
|
start_erp_as(apdev[1])
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
|
||||||
params['auth_server_port'] = "18128"
|
params['auth_server_port'] = "18128"
|
||||||
|
@ -222,9 +220,7 @@ def test_erp_radius_eap_methods(dev, apdev):
|
||||||
|
|
||||||
def test_erp_key_lifetime_in_memory(dev, apdev, params):
|
def test_erp_key_lifetime_in_memory(dev, apdev, params):
|
||||||
"""ERP and key lifetime in memory"""
|
"""ERP and key lifetime in memory"""
|
||||||
capab = dev[0].get_capability("erp")
|
check_erp_capa(dev[0])
|
||||||
if not capab or 'ERP' not in capab:
|
|
||||||
return "skip"
|
|
||||||
p = int_eap_server_params()
|
p = int_eap_server_params()
|
||||||
p['erp_send_reauth_start'] = '1'
|
p['erp_send_reauth_start'] = '1'
|
||||||
p['erp_domain'] = 'example.com'
|
p['erp_domain'] = 'example.com'
|
||||||
|
@ -298,11 +294,9 @@ def test_erp_key_lifetime_in_memory(dev, apdev, params):
|
||||||
get_key_locations(buf, rRK, "rRK")
|
get_key_locations(buf, rRK, "rRK")
|
||||||
get_key_locations(buf, rIK, "rIK")
|
get_key_locations(buf, rIK, "rIK")
|
||||||
if password not in buf:
|
if password not in buf:
|
||||||
print("Password not found while associated")
|
raise HwsimSkip("Password not found while associated")
|
||||||
return "skip"
|
|
||||||
if pmk not in buf:
|
if pmk not in buf:
|
||||||
print("PMK not found while associated")
|
raise HwsimSkip("PMK not found while associated")
|
||||||
return "skip"
|
|
||||||
if kck not in buf:
|
if kck not in buf:
|
||||||
raise Exception("KCK not found while associated")
|
raise Exception("KCK not found while associated")
|
||||||
if kek not in buf:
|
if kek not in buf:
|
||||||
|
|
|
@ -11,6 +11,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import utils
|
import utils
|
||||||
|
from utils import HwsimSkip
|
||||||
from wlantest import Wlantest
|
from wlantest import Wlantest
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
|
||||||
|
@ -340,7 +341,7 @@ def test_autogo_chan_switch(dev):
|
||||||
if "FAIL" in res:
|
if "FAIL" in res:
|
||||||
# for now, skip test since mac80211_hwsim support is not yet widely
|
# for now, skip test since mac80211_hwsim support is not yet widely
|
||||||
# deployed
|
# deployed
|
||||||
return 'skip'
|
raise HwsimSkip("Assume mac80211_hwsim did not support channel switching")
|
||||||
ev = dev[0].wait_event(["AP-CSA-FINISHED"], timeout=10)
|
ev = dev[0].wait_event(["AP-CSA-FINISHED"], timeout=10)
|
||||||
if ev is None:
|
if ev is None:
|
||||||
raise Exception("CSA finished event timed out")
|
raise Exception("CSA finished event timed out")
|
||||||
|
|
|
@ -14,6 +14,7 @@ import os
|
||||||
import hostapd
|
import hostapd
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import utils
|
import utils
|
||||||
|
from utils import HwsimSkip
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
|
||||||
def check_grpform_results(i_res, r_res):
|
def check_grpform_results(i_res, r_res):
|
||||||
|
@ -728,8 +729,7 @@ def test_grpform_goneg_fail_with_group_iface(dev):
|
||||||
def test_grpform_cred_ready_timeout(dev, apdev, params):
|
def test_grpform_cred_ready_timeout(dev, apdev, params):
|
||||||
"""P2P GO Negotiation wait for credentials to become ready [long]"""
|
"""P2P GO Negotiation wait for credentials to become ready [long]"""
|
||||||
if not params['long']:
|
if not params['long']:
|
||||||
logger.info("Skip test case with long duration due to --long not specified")
|
raise HwsimSkip("Skip test case with long duration due to --long not specified")
|
||||||
return "skip"
|
|
||||||
|
|
||||||
dev[1].p2p_listen()
|
dev[1].p2p_listen()
|
||||||
addr1 = dev[1].p2p_dev_addr()
|
addr1 = dev[1].p2p_dev_addr()
|
||||||
|
|
|
@ -15,6 +15,7 @@ import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def connect(dev, ssid, wait_connect=True):
|
def connect(dev, ssid, wait_connect=True):
|
||||||
dev.connect(ssid, key_mgmt="WPA-EAP", scan_freq="2412",
|
dev.connect(ssid, key_mgmt="WPA-EAP", scan_freq="2412",
|
||||||
|
@ -237,7 +238,7 @@ def test_radius_das_disconnect(dev, apdev):
|
||||||
import pyrad.dictionary
|
import pyrad.dictionary
|
||||||
import radius_das
|
import radius_das
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No pyrad modules available")
|
||||||
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="radius-das")
|
params = hostapd.wpa2_eap_params(ssid="radius-das")
|
||||||
params['radius_das_port'] = "3799"
|
params['radius_das_port'] = "3799"
|
||||||
|
@ -504,7 +505,7 @@ def test_radius_das_coa(dev, apdev):
|
||||||
import pyrad.dictionary
|
import pyrad.dictionary
|
||||||
import radius_das
|
import radius_das
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No pyrad modules available")
|
||||||
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="radius-das")
|
params = hostapd.wpa2_eap_params(ssid="radius-das")
|
||||||
params['radius_das_port'] = "3799"
|
params['radius_das_port'] = "3799"
|
||||||
|
@ -626,7 +627,7 @@ def test_radius_protocol(dev, apdev):
|
||||||
import pyrad.packet
|
import pyrad.packet
|
||||||
import pyrad.dictionary
|
import pyrad.dictionary
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No pyrad modules available")
|
||||||
|
|
||||||
class TestServer(pyrad.server.Server):
|
class TestServer(pyrad.server.Server):
|
||||||
def _HandleAuthPacket(self, pkt):
|
def _HandleAuthPacket(self, pkt):
|
||||||
|
@ -734,7 +735,7 @@ def test_radius_psk(dev, apdev):
|
||||||
import pyrad.packet
|
import pyrad.packet
|
||||||
import pyrad.dictionary
|
import pyrad.dictionary
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return "skip"
|
raise HwsimSkip("No pyrad modules available")
|
||||||
|
|
||||||
class TestServer(pyrad.server.Server):
|
class TestServer(pyrad.server.Server):
|
||||||
def _HandleAuthPacket(self, pkt):
|
def _HandleAuthPacket(self, pkt):
|
||||||
|
|
|
@ -13,6 +13,7 @@ from hostapd import HostapdGlobal
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
from rfkill import RFKill
|
from rfkill import RFKill
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def get_rfkill(dev):
|
def get_rfkill(dev):
|
||||||
phy = dev.get_driver_status_field("phyname")
|
phy = dev.get_driver_status_field("phyname")
|
||||||
|
@ -21,15 +22,12 @@ def get_rfkill(dev):
|
||||||
if r.name == phy:
|
if r.name == phy:
|
||||||
return r
|
return r
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.info("No rfkill available: " + str(e))
|
raise HwsimSkip("No rfkill available: " + str(e))
|
||||||
|
raise HwsimSkip("No rfkill match found for the interface")
|
||||||
return None
|
|
||||||
|
|
||||||
def test_rfkill_open(dev, apdev):
|
def test_rfkill_open(dev, apdev):
|
||||||
"""rfkill block/unblock during open mode connection"""
|
"""rfkill block/unblock during open mode connection"""
|
||||||
rfk = get_rfkill(dev[0])
|
rfk = get_rfkill(dev[0])
|
||||||
if rfk is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
||||||
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
|
dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
|
||||||
|
@ -59,8 +57,6 @@ def test_rfkill_open(dev, apdev):
|
||||||
def test_rfkill_wpa2_psk(dev, apdev):
|
def test_rfkill_wpa2_psk(dev, apdev):
|
||||||
"""rfkill block/unblock during WPA2-PSK connection"""
|
"""rfkill block/unblock during WPA2-PSK connection"""
|
||||||
rfk = get_rfkill(dev[0])
|
rfk = get_rfkill(dev[0])
|
||||||
if rfk is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
ssid = "test-wpa2-psk"
|
ssid = "test-wpa2-psk"
|
||||||
passphrase = 'qwertyuiop'
|
passphrase = 'qwertyuiop'
|
||||||
|
@ -84,11 +80,7 @@ def test_rfkill_wpa2_psk(dev, apdev):
|
||||||
def test_rfkill_autogo(dev, apdev):
|
def test_rfkill_autogo(dev, apdev):
|
||||||
"""rfkill block/unblock for autonomous P2P GO"""
|
"""rfkill block/unblock for autonomous P2P GO"""
|
||||||
rfk0 = get_rfkill(dev[0])
|
rfk0 = get_rfkill(dev[0])
|
||||||
if rfk0 is None:
|
|
||||||
return "skip"
|
|
||||||
rfk1 = get_rfkill(dev[1])
|
rfk1 = get_rfkill(dev[1])
|
||||||
if rfk1 is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
dev[0].p2p_start_go()
|
dev[0].p2p_start_go()
|
||||||
dev[1].request("SET p2p_no_group_iface 0")
|
dev[1].request("SET p2p_no_group_iface 0")
|
||||||
|
@ -129,8 +121,6 @@ def test_rfkill_hostapd(dev, apdev):
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
||||||
|
|
||||||
rfk = get_rfkill(hapd)
|
rfk = get_rfkill(hapd)
|
||||||
if rfk is None:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rfk.block()
|
rfk.block()
|
||||||
|
@ -169,8 +159,6 @@ def test_rfkill_wpas(dev, apdev):
|
||||||
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
||||||
wpas.interface_add("wlan5")
|
wpas.interface_add("wlan5")
|
||||||
rfk = get_rfkill(wpas)
|
rfk = get_rfkill(wpas)
|
||||||
if rfk is None:
|
|
||||||
return "skip"
|
|
||||||
wpas.interface_remove("wlan5")
|
wpas.interface_remove("wlan5")
|
||||||
try:
|
try:
|
||||||
rfk.block()
|
rfk.block()
|
||||||
|
|
|
@ -13,6 +13,7 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_ap_psk import find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
from test_ap_psk import find_wpas_process, read_process_memory, verify_not_present, get_key_locations
|
||||||
|
|
||||||
def test_sae(dev, apdev):
|
def test_sae(dev, apdev):
|
||||||
|
@ -228,11 +229,9 @@ def test_sae_key_lifetime_in_memory(dev, apdev, params):
|
||||||
get_key_locations(buf, password, "Password")
|
get_key_locations(buf, password, "Password")
|
||||||
get_key_locations(buf, pmk, "PMK")
|
get_key_locations(buf, pmk, "PMK")
|
||||||
if password not in buf:
|
if password not in buf:
|
||||||
print("Password not found while associated")
|
raise HwsimSkip("Password not found while associated")
|
||||||
return "skip"
|
|
||||||
if pmk not in buf:
|
if pmk not in buf:
|
||||||
print("PMK not found while associated")
|
raise HwsimSkip("PMK not found while associated")
|
||||||
return "skip"
|
|
||||||
if kck not in buf:
|
if kck not in buf:
|
||||||
raise Exception("KCK not found while associated")
|
raise Exception("KCK not found while associated")
|
||||||
if kek not in buf:
|
if kek not in buf:
|
||||||
|
|
|
@ -9,11 +9,12 @@ import logging
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def test_suite_b(dev, apdev):
|
def test_suite_b(dev, apdev):
|
||||||
"""WPA2-PSK/GCMP connection"""
|
"""WPA2-PSK/GCMP connection"""
|
||||||
if "GCMP" not in dev[0].get_capability("pairwise"):
|
if "GCMP" not in dev[0].get_capability("pairwise"):
|
||||||
return "skip"
|
raise HwsimSkip("GCMP not supported")
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-suite-b")
|
params = hostapd.wpa2_eap_params(ssid="test-suite-b")
|
||||||
params["wpa_key_mgmt"] = "WPA-EAP-SUITE-B"
|
params["wpa_key_mgmt"] = "WPA-EAP-SUITE-B"
|
||||||
params['rsn_pairwise'] = "GCMP"
|
params['rsn_pairwise'] = "GCMP"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
import hostapd
|
import hostapd
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_ap_eap import int_eap_server_params
|
from test_ap_eap import int_eap_server_params
|
||||||
|
|
||||||
def test_tnc_peap_soh(dev, apdev):
|
def test_tnc_peap_soh(dev, apdev):
|
||||||
|
@ -47,8 +48,7 @@ def test_tnc_ttls(dev, apdev):
|
||||||
hostapd.add_ap(apdev[0]['ifname'], params)
|
hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
|
|
||||||
if not os.path.exists("tnc/libhostap_imc.so"):
|
if not os.path.exists("tnc/libhostap_imc.so"):
|
||||||
logger.info("No IMC installed - skip")
|
raise HwsimSkip("No IMC installed")
|
||||||
return "skip"
|
|
||||||
|
|
||||||
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
|
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
|
||||||
eap="TTLS", identity="DOMAIN\mschapv2 user",
|
eap="TTLS", identity="DOMAIN\mschapv2 user",
|
||||||
|
@ -69,8 +69,7 @@ def test_tnc_fast(dev, apdev):
|
||||||
hostapd.add_ap(apdev[0]['ifname'], params)
|
hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
|
|
||||||
if not os.path.exists("tnc/libhostap_imc.so"):
|
if not os.path.exists("tnc/libhostap_imc.so"):
|
||||||
logger.info("No IMC installed - skip")
|
raise HwsimSkip("No IMC installed")
|
||||||
return "skip"
|
|
||||||
|
|
||||||
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
|
dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
|
||||||
eap="FAST", identity="user",
|
eap="FAST", identity="user",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Deprecated WEXT driver interface in wpa_supplicant
|
# Deprecated WEXT driver interface in wpa_supplicant
|
||||||
# Copyright (c) 2013-2014, Jouni Malinen <j@w1.fi>
|
# Copyright (c) 2013-2015, Jouni Malinen <j@w1.fi>
|
||||||
#
|
#
|
||||||
# This software may be distributed under the terms of the BSD license.
|
# This software may be distributed under the terms of the BSD license.
|
||||||
# See README for more details.
|
# See README for more details.
|
||||||
|
@ -11,26 +11,23 @@ import os
|
||||||
import hostapd
|
import hostapd
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
from utils import HwsimSkip
|
||||||
from test_rfkill import get_rfkill
|
from test_rfkill import get_rfkill
|
||||||
|
|
||||||
def get_wext_interface():
|
def get_wext_interface():
|
||||||
if not os.path.exists("/proc/net/wireless"):
|
if not os.path.exists("/proc/net/wireless"):
|
||||||
logger.info("WEXT support not included in the kernel")
|
raise HwsimSkip("WEXT support not included in the kernel")
|
||||||
return
|
|
||||||
|
|
||||||
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
||||||
try:
|
try:
|
||||||
wpas.interface_add("wlan5", driver="wext")
|
wpas.interface_add("wlan5", driver="wext")
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.info("WEXT driver support not included in wpa_supplicant")
|
raise HwsimSkip("WEXT driver support not included in wpa_supplicant")
|
||||||
return
|
|
||||||
return wpas
|
return wpas
|
||||||
|
|
||||||
def test_wext_open(dev, apdev):
|
def test_wext_open(dev, apdev):
|
||||||
"""WEXT driver interface with open network"""
|
"""WEXT driver interface with open network"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
params = { "ssid": "wext-open" }
|
params = { "ssid": "wext-open" }
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
|
@ -41,8 +38,6 @@ def test_wext_open(dev, apdev):
|
||||||
def test_wext_wpa2_psk(dev, apdev):
|
def test_wext_wpa2_psk(dev, apdev):
|
||||||
"""WEXT driver interface with WPA2-PSK"""
|
"""WEXT driver interface with WPA2-PSK"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
params = hostapd.wpa2_params(ssid="wext-wpa2-psk", passphrase="12345678")
|
params = hostapd.wpa2_params(ssid="wext-wpa2-psk", passphrase="12345678")
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
|
@ -59,14 +54,12 @@ def test_wext_wpa2_psk(dev, apdev):
|
||||||
def test_wext_wpa_psk(dev, apdev):
|
def test_wext_wpa_psk(dev, apdev):
|
||||||
"""WEXT driver interface with WPA-PSK"""
|
"""WEXT driver interface with WPA-PSK"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
params = hostapd.wpa_params(ssid="wext-wpa-psk", passphrase="12345678")
|
params = hostapd.wpa_params(ssid="wext-wpa-psk", passphrase="12345678")
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
|
testfile = "/sys/kernel/debug/ieee80211/%s/netdev:%s/tkip_mic_test" % (hapd.get_driver_status_field("phyname"), apdev[0]['ifname'])
|
||||||
if not os.path.exists(testfile):
|
if not os.path.exists(testfile):
|
||||||
return "skip"
|
raise HwsimSkip("tkip_mic_test not supported in mac80211")
|
||||||
|
|
||||||
wpas.connect("wext-wpa-psk", psk="12345678")
|
wpas.connect("wext-wpa-psk", psk="12345678")
|
||||||
hwsim_utils.test_connectivity(wpas, hapd)
|
hwsim_utils.test_connectivity(wpas, hapd)
|
||||||
|
@ -87,8 +80,6 @@ def test_wext_wpa_psk(dev, apdev):
|
||||||
def test_wext_pmksa_cache(dev, apdev):
|
def test_wext_pmksa_cache(dev, apdev):
|
||||||
"""PMKSA caching with WEXT"""
|
"""PMKSA caching with WEXT"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
params = hostapd.wpa2_eap_params(ssid="test-pmksa-cache")
|
params = hostapd.wpa2_eap_params(ssid="test-pmksa-cache")
|
||||||
hostapd.add_ap(apdev[0]['ifname'], params)
|
hostapd.add_ap(apdev[0]['ifname'], params)
|
||||||
|
@ -155,8 +146,6 @@ def test_wext_pmksa_cache(dev, apdev):
|
||||||
def test_wext_wep_open_auth(dev, apdev):
|
def test_wext_wep_open_auth(dev, apdev):
|
||||||
"""WEP Open System authentication"""
|
"""WEP Open System authentication"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'],
|
hapd = hostapd.add_ap(apdev[0]['ifname'],
|
||||||
{ "ssid": "wep-open",
|
{ "ssid": "wep-open",
|
||||||
|
@ -170,8 +159,6 @@ def test_wext_wep_open_auth(dev, apdev):
|
||||||
def test_wext_wep_shared_key_auth(dev, apdev):
|
def test_wext_wep_shared_key_auth(dev, apdev):
|
||||||
"""WEP Shared Key authentication"""
|
"""WEP Shared Key authentication"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'],
|
hapd = hostapd.add_ap(apdev[0]['ifname'],
|
||||||
{ "ssid": "wep-shared-key",
|
{ "ssid": "wep-shared-key",
|
||||||
|
@ -188,8 +175,6 @@ def test_wext_wep_shared_key_auth(dev, apdev):
|
||||||
def test_wext_pmf(dev, apdev):
|
def test_wext_pmf(dev, apdev):
|
||||||
"""WEXT driver interface with WPA2-PSK and PMF"""
|
"""WEXT driver interface with WPA2-PSK and PMF"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
params = hostapd.wpa2_params(ssid="wext-wpa2-psk", passphrase="12345678")
|
params = hostapd.wpa2_params(ssid="wext-wpa2-psk", passphrase="12345678")
|
||||||
params["wpa_key_mgmt"] = "WPA-PSK-SHA256";
|
params["wpa_key_mgmt"] = "WPA-PSK-SHA256";
|
||||||
|
@ -208,8 +193,6 @@ def test_wext_pmf(dev, apdev):
|
||||||
def test_wext_scan_hidden(dev, apdev):
|
def test_wext_scan_hidden(dev, apdev):
|
||||||
"""WEXT with hidden SSID"""
|
"""WEXT with hidden SSID"""
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-scan",
|
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "test-scan",
|
||||||
"ignore_broadcast_ssid": "1" })
|
"ignore_broadcast_ssid": "1" })
|
||||||
|
@ -244,13 +227,9 @@ def test_wext_rfkill(dev, apdev):
|
||||||
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
|
||||||
wpas.interface_add("wlan5")
|
wpas.interface_add("wlan5")
|
||||||
rfk = get_rfkill(wpas)
|
rfk = get_rfkill(wpas)
|
||||||
if rfk is None:
|
|
||||||
return "skip"
|
|
||||||
wpas.interface_remove("wlan5")
|
wpas.interface_remove("wlan5")
|
||||||
|
|
||||||
wpas = get_wext_interface()
|
wpas = get_wext_interface()
|
||||||
if not wpas:
|
|
||||||
return "skip"
|
|
||||||
|
|
||||||
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" })
|
||||||
wpas.connect("open", key_mgmt="NONE", scan_freq="2412")
|
wpas.connect("open", key_mgmt="NONE", scan_freq="2412")
|
||||||
|
|
|
@ -11,12 +11,12 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
import hwsim_utils
|
import hwsim_utils
|
||||||
from wpasupplicant import WpaSupplicant
|
from wpasupplicant import WpaSupplicant
|
||||||
|
from utils import HwsimSkip
|
||||||
|
|
||||||
def mesh_supported(dev):
|
def check_mesh_support(dev):
|
||||||
flags = int(dev.get_driver_status_field('capa.flags'), 16)
|
flags = int(dev.get_driver_status_field('capa.flags'), 16)
|
||||||
if flags & 0x100000000:
|
if flags & 0x100000000 == 0:
|
||||||
return True
|
raise HwsimSkip("Driver does not support mesh")
|
||||||
return False
|
|
||||||
|
|
||||||
def check_mesh_scan(dev, params, other_started=False, beacon_int=0):
|
def check_mesh_scan(dev, params, other_started=False, beacon_int=0):
|
||||||
if not other_started:
|
if not other_started:
|
||||||
|
@ -116,8 +116,7 @@ def add_open_mesh_network(dev, ht_mode=False, freq="2412", start=True,
|
||||||
|
|
||||||
def test_wpas_mesh_group_added(dev):
|
def test_wpas_mesh_group_added(dev):
|
||||||
"""wpa_supplicant MESH group add"""
|
"""wpa_supplicant MESH group add"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0])
|
add_open_mesh_network(dev[0])
|
||||||
|
|
||||||
# Check for MESH-GROUP-STARTED event
|
# Check for MESH-GROUP-STARTED event
|
||||||
|
@ -126,8 +125,7 @@ def test_wpas_mesh_group_added(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_group_remove(dev):
|
def test_wpas_mesh_group_remove(dev):
|
||||||
"""wpa_supplicant MESH group remove"""
|
"""wpa_supplicant MESH group remove"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0], ht_mode="NOHT")
|
add_open_mesh_network(dev[0], ht_mode="NOHT")
|
||||||
# Check for MESH-GROUP-STARTED event
|
# Check for MESH-GROUP-STARTED event
|
||||||
check_mesh_group_added(dev[0])
|
check_mesh_group_added(dev[0])
|
||||||
|
@ -138,8 +136,7 @@ def test_wpas_mesh_group_remove(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_peer_connected(dev):
|
def test_wpas_mesh_peer_connected(dev):
|
||||||
"""wpa_supplicant MESH peer connected"""
|
"""wpa_supplicant MESH peer connected"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0], ht_mode="HT20", beacon_int=160)
|
add_open_mesh_network(dev[0], ht_mode="HT20", beacon_int=160)
|
||||||
add_open_mesh_network(dev[1], ht_mode="HT20", beacon_int=160)
|
add_open_mesh_network(dev[1], ht_mode="HT20", beacon_int=160)
|
||||||
|
|
||||||
|
@ -154,8 +151,7 @@ def test_wpas_mesh_peer_connected(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_peer_disconnected(dev):
|
def test_wpas_mesh_peer_disconnected(dev):
|
||||||
"""wpa_supplicant MESH peer disconnected"""
|
"""wpa_supplicant MESH peer disconnected"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0])
|
add_open_mesh_network(dev[0])
|
||||||
add_open_mesh_network(dev[1])
|
add_open_mesh_network(dev[1])
|
||||||
|
|
||||||
|
@ -175,8 +171,7 @@ def test_wpas_mesh_peer_disconnected(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_mode_scan(dev):
|
def test_wpas_mesh_mode_scan(dev):
|
||||||
"""wpa_supplicant MESH scan support"""
|
"""wpa_supplicant MESH scan support"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0], ht_mode="HT40+")
|
add_open_mesh_network(dev[0], ht_mode="HT40+")
|
||||||
add_open_mesh_network(dev[1], ht_mode="HT40+", beacon_int=175)
|
add_open_mesh_network(dev[1], ht_mode="HT40+", beacon_int=175)
|
||||||
|
|
||||||
|
@ -189,8 +184,7 @@ def test_wpas_mesh_mode_scan(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_open(dev, apdev):
|
def test_wpas_mesh_open(dev, apdev):
|
||||||
"""wpa_supplicant open MESH network connectivity"""
|
"""wpa_supplicant open MESH network connectivity"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
add_open_mesh_network(dev[0], ht_mode="HT40-", freq="2462")
|
add_open_mesh_network(dev[0], ht_mode="HT40-", freq="2462")
|
||||||
add_open_mesh_network(dev[1], ht_mode="HT40-", freq="2462")
|
add_open_mesh_network(dev[1], ht_mode="HT40-", freq="2462")
|
||||||
|
|
||||||
|
@ -207,8 +201,7 @@ def test_wpas_mesh_open(dev, apdev):
|
||||||
|
|
||||||
def test_wpas_mesh_open_no_auto(dev, apdev):
|
def test_wpas_mesh_open_no_auto(dev, apdev):
|
||||||
"""wpa_supplicant open MESH network connectivity"""
|
"""wpa_supplicant open MESH network connectivity"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
id = add_open_mesh_network(dev[0], start=False)
|
id = add_open_mesh_network(dev[0], start=False)
|
||||||
dev[0].set_network(id, "dot11MeshMaxRetries", "16")
|
dev[0].set_network(id, "dot11MeshMaxRetries", "16")
|
||||||
dev[0].set_network(id, "dot11MeshRetryTimeout", "255")
|
dev[0].set_network(id, "dot11MeshRetryTimeout", "255")
|
||||||
|
@ -241,8 +234,7 @@ def add_mesh_secure_net(dev, psk=True):
|
||||||
|
|
||||||
def test_wpas_mesh_secure(dev, apdev):
|
def test_wpas_mesh_secure(dev, apdev):
|
||||||
"""wpa_supplicant secure MESH network connectivity"""
|
"""wpa_supplicant secure MESH network connectivity"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
dev[0].request("SET sae_groups ")
|
dev[0].request("SET sae_groups ")
|
||||||
id = add_mesh_secure_net(dev[0])
|
id = add_mesh_secure_net(dev[0])
|
||||||
dev[0].mesh_group_add(id)
|
dev[0].mesh_group_add(id)
|
||||||
|
@ -264,8 +256,7 @@ def test_wpas_mesh_secure(dev, apdev):
|
||||||
|
|
||||||
def test_wpas_mesh_secure_sae_group_mismatch(dev, apdev):
|
def test_wpas_mesh_secure_sae_group_mismatch(dev, apdev):
|
||||||
"""wpa_supplicant secure MESH and SAE group mismatch"""
|
"""wpa_supplicant secure MESH and SAE group mismatch"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
addr0 = dev[0].p2p_interface_addr()
|
addr0 = dev[0].p2p_interface_addr()
|
||||||
addr1 = dev[1].p2p_interface_addr()
|
addr1 = dev[1].p2p_interface_addr()
|
||||||
addr2 = dev[2].p2p_interface_addr()
|
addr2 = dev[2].p2p_interface_addr()
|
||||||
|
@ -316,8 +307,7 @@ def test_wpas_mesh_secure_sae_group_mismatch(dev, apdev):
|
||||||
|
|
||||||
def test_wpas_mesh_secure_sae_missing_password(dev, apdev):
|
def test_wpas_mesh_secure_sae_missing_password(dev, apdev):
|
||||||
"""wpa_supplicant secure MESH and missing SAE password"""
|
"""wpa_supplicant secure MESH and missing SAE password"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
id = add_mesh_secure_net(dev[0], psk=False)
|
id = add_mesh_secure_net(dev[0], psk=False)
|
||||||
dev[0].set_network(id, "psk", "8f20b381f9b84371d61b5080ad85cac3c61ab3ca9525be5b2d0f4da3d979187a")
|
dev[0].set_network(id, "psk", "8f20b381f9b84371d61b5080ad85cac3c61ab3ca9525be5b2d0f4da3d979187a")
|
||||||
dev[0].mesh_group_add(id)
|
dev[0].mesh_group_add(id)
|
||||||
|
@ -333,8 +323,7 @@ def test_wpas_mesh_secure_sae_missing_password(dev, apdev):
|
||||||
|
|
||||||
def test_wpas_mesh_secure_no_auto(dev, apdev):
|
def test_wpas_mesh_secure_no_auto(dev, apdev):
|
||||||
"""wpa_supplicant secure MESH network connectivity"""
|
"""wpa_supplicant secure MESH network connectivity"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
dev[0].request("SET sae_groups 19")
|
dev[0].request("SET sae_groups 19")
|
||||||
id = add_mesh_secure_net(dev[0])
|
id = add_mesh_secure_net(dev[0])
|
||||||
dev[0].mesh_group_add(id)
|
dev[0].mesh_group_add(id)
|
||||||
|
@ -360,8 +349,7 @@ def test_wpas_mesh_secure_no_auto(dev, apdev):
|
||||||
|
|
||||||
def test_wpas_mesh_ctrl(dev):
|
def test_wpas_mesh_ctrl(dev):
|
||||||
"""wpa_supplicant ctrl_iface mesh command error cases"""
|
"""wpa_supplicant ctrl_iface mesh command error cases"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
if "FAIL" not in dev[0].request("MESH_GROUP_ADD 123"):
|
if "FAIL" not in dev[0].request("MESH_GROUP_ADD 123"):
|
||||||
raise Exception("Unexpected MESH_GROUP_ADD success")
|
raise Exception("Unexpected MESH_GROUP_ADD success")
|
||||||
id = dev[0].add_network()
|
id = dev[0].add_network()
|
||||||
|
@ -377,8 +365,7 @@ def test_wpas_mesh_ctrl(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_dynamic_interface(dev):
|
def test_wpas_mesh_dynamic_interface(dev):
|
||||||
"""wpa_supplicant mesh with dynamic interface"""
|
"""wpa_supplicant mesh with dynamic interface"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
mesh0 = None
|
mesh0 = None
|
||||||
mesh1 = None
|
mesh1 = None
|
||||||
try:
|
try:
|
||||||
|
@ -455,8 +442,7 @@ def test_wpas_mesh_dynamic_interface(dev):
|
||||||
|
|
||||||
def test_wpas_mesh_max_peering(dev, apdev):
|
def test_wpas_mesh_max_peering(dev, apdev):
|
||||||
"""Mesh max peering limit"""
|
"""Mesh max peering limit"""
|
||||||
if not mesh_supported(dev[0]):
|
check_mesh_support(dev[0])
|
||||||
return "skip"
|
|
||||||
try:
|
try:
|
||||||
dev[0].request("SET max_peer_links 1")
|
dev[0].request("SET max_peer_links 1")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue