hostapd: Add some testing options
In order to test clients in scenarios where APs may (randomly) drop certain management frames, introduce some testing options into the hostapd configuration that can make it ignore certain frames. For now, these are probe requests, authentication and (re)association frames. Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
e6304cad47
commit
c2aff6b1d1
8 changed files with 104 additions and 0 deletions
|
@ -163,6 +163,13 @@ struct hostapd_config * hostapd_config_defaults(void)
|
|||
conf->ap_table_max_size = 255;
|
||||
conf->ap_table_expiration_time = 60;
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
conf->ignore_probe_probability = 0.0d;
|
||||
conf->ignore_auth_probability = 0.0d;
|
||||
conf->ignore_assoc_probability = 0.0d;
|
||||
conf->ignore_reassoc_probability = 0.0d;
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
||||
|
|
|
@ -520,6 +520,13 @@ struct hostapd_config {
|
|||
u8 vht_oper_chwidth;
|
||||
u8 vht_oper_centr_freq_seg0_idx;
|
||||
u8 vht_oper_centr_freq_seg1_idx;
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
double ignore_probe_probability;
|
||||
double ignore_auth_probability;
|
||||
double ignore_assoc_probability;
|
||||
double ignore_reassoc_probability;
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -488,6 +488,16 @@ void handle_probe_req(struct hostapd_data *hapd,
|
|||
/* TODO: verify that supp_rates contains at least one matching rate
|
||||
* with AP configuration */
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
if (hapd->iconf->ignore_probe_probability > 0.0d &&
|
||||
drand48() < hapd->iconf->ignore_probe_probability) {
|
||||
wpa_printf(MSG_INFO,
|
||||
"TESTING: ignoring probe request from " MACSTR,
|
||||
MAC2STR(mgmt->sa));
|
||||
return;
|
||||
}
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
resp = hostapd_gen_probe_resp(hapd, sta, mgmt, elems.p2p != NULL,
|
||||
&resp_len);
|
||||
if (resp == NULL)
|
||||
|
|
|
@ -557,6 +557,16 @@ static void handle_auth(struct hostapd_data *hapd,
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
if (hapd->iconf->ignore_auth_probability > 0.0d &&
|
||||
drand48() < hapd->iconf->ignore_auth_probability) {
|
||||
wpa_printf(MSG_INFO,
|
||||
"TESTING: ignoring auth frame from " MACSTR,
|
||||
MAC2STR(mgmt->sa));
|
||||
return;
|
||||
}
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
auth_alg = le_to_host16(mgmt->u.auth.auth_alg);
|
||||
auth_transaction = le_to_host16(mgmt->u.auth.auth_transaction);
|
||||
status_code = le_to_host16(mgmt->u.auth.status_code);
|
||||
|
@ -1226,6 +1236,26 @@ static void handle_assoc(struct hostapd_data *hapd,
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
if (reassoc) {
|
||||
if (hapd->iconf->ignore_reassoc_probability > 0.0d &&
|
||||
drand48() < hapd->iconf->ignore_reassoc_probability) {
|
||||
wpa_printf(MSG_INFO,
|
||||
"TESTING: ignoring reassoc request from "
|
||||
MACSTR, MAC2STR(mgmt->sa));
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (hapd->iconf->ignore_assoc_probability > 0.0d &&
|
||||
drand48() < hapd->iconf->ignore_assoc_probability) {
|
||||
wpa_printf(MSG_INFO,
|
||||
"TESTING: ignoring assoc request from "
|
||||
MACSTR, MAC2STR(mgmt->sa));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
if (reassoc) {
|
||||
capab_info = le_to_host16(mgmt->u.reassoc_req.capab_info);
|
||||
listen_interval = le_to_host16(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue