hostapd: Add testing option to use only ECSA
Some APs don't include a CSA IE when an ECSA IE is generated, and mac80211 used to fail following their channel switch. Add a testing option to hostapd to allow reproducing the behavior. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
fa53d74c9e
commit
2b6e121676
5 changed files with 13 additions and 0 deletions
|
@ -3249,6 +3249,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||||
PARSE_TEST_PROBABILITY(ignore_assoc_probability)
|
PARSE_TEST_PROBABILITY(ignore_assoc_probability)
|
||||||
PARSE_TEST_PROBABILITY(ignore_reassoc_probability)
|
PARSE_TEST_PROBABILITY(ignore_reassoc_probability)
|
||||||
PARSE_TEST_PROBABILITY(corrupt_gtk_rekey_mic_probability)
|
PARSE_TEST_PROBABILITY(corrupt_gtk_rekey_mic_probability)
|
||||||
|
} else if (os_strcmp(buf, "ecsa_ie_only") == 0) {
|
||||||
|
conf->ecsa_ie_only = atoi(pos);
|
||||||
} else if (os_strcmp(buf, "bss_load_test") == 0) {
|
} else if (os_strcmp(buf, "bss_load_test") == 0) {
|
||||||
WPA_PUT_LE16(bss->bss_load_test, atoi(pos));
|
WPA_PUT_LE16(bss->bss_load_test, atoi(pos));
|
||||||
pos = os_strchr(pos, ':');
|
pos = os_strchr(pos, ':');
|
||||||
|
|
|
@ -1844,6 +1844,10 @@ own_ip_addr=127.0.0.1
|
||||||
#
|
#
|
||||||
# Corrupt Key MIC in GTK rekey EAPOL-Key frames with the given probability
|
# Corrupt Key MIC in GTK rekey EAPOL-Key frames with the given probability
|
||||||
#corrupt_gtk_rekey_mic_probability=0.0
|
#corrupt_gtk_rekey_mic_probability=0.0
|
||||||
|
#
|
||||||
|
# Include only ECSA IE without CSA IE where possible
|
||||||
|
# (channel switch operating class is needed)
|
||||||
|
#ecsa_ie_only=0
|
||||||
|
|
||||||
##### Multiple BSSID support ##################################################
|
##### Multiple BSSID support ##################################################
|
||||||
#
|
#
|
||||||
|
|
|
@ -180,6 +180,7 @@ struct hostapd_config * hostapd_config_defaults(void)
|
||||||
conf->ignore_assoc_probability = 0.0;
|
conf->ignore_assoc_probability = 0.0;
|
||||||
conf->ignore_reassoc_probability = 0.0;
|
conf->ignore_reassoc_probability = 0.0;
|
||||||
conf->corrupt_gtk_rekey_mic_probability = 0.0;
|
conf->corrupt_gtk_rekey_mic_probability = 0.0;
|
||||||
|
conf->ecsa_ie_only = 0;
|
||||||
#endif /* CONFIG_TESTING_OPTIONS */
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
conf->acs = 0;
|
conf->acs = 0;
|
||||||
|
|
|
@ -652,6 +652,7 @@ struct hostapd_config {
|
||||||
double ignore_assoc_probability;
|
double ignore_assoc_probability;
|
||||||
double ignore_reassoc_probability;
|
double ignore_reassoc_probability;
|
||||||
double corrupt_gtk_rekey_mic_probability;
|
double corrupt_gtk_rekey_mic_probability;
|
||||||
|
int ecsa_ie_only;
|
||||||
#endif /* CONFIG_TESTING_OPTIONS */
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
#ifdef CONFIG_ACS
|
#ifdef CONFIG_ACS
|
||||||
|
|
|
@ -297,6 +297,11 @@ static u8 * hostapd_eid_wpa(struct hostapd_data *hapd, u8 *eid, size_t len)
|
||||||
|
|
||||||
static u8 * hostapd_eid_csa(struct hostapd_data *hapd, u8 *eid)
|
static u8 * hostapd_eid_csa(struct hostapd_data *hapd, u8 *eid)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_TESTING_OPTIONS
|
||||||
|
if (hapd->iface->cs_oper_class && hapd->iconf->ecsa_ie_only)
|
||||||
|
return eid;
|
||||||
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
if (!hapd->cs_freq_params.channel)
|
if (!hapd->cs_freq_params.channel)
|
||||||
return eid;
|
return eid;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue