diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 82ac61d77..37030d08b 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -3249,6 +3249,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, PARSE_TEST_PROBABILITY(ignore_assoc_probability) PARSE_TEST_PROBABILITY(ignore_reassoc_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) { WPA_PUT_LE16(bss->bss_load_test, atoi(pos)); pos = os_strchr(pos, ':'); diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index a0071f7d8..c15cc4423 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -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_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 ################################################## # diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c index 9a96e50b7..75337103d 100644 --- a/src/ap/ap_config.c +++ b/src/ap/ap_config.c @@ -180,6 +180,7 @@ struct hostapd_config * hostapd_config_defaults(void) conf->ignore_assoc_probability = 0.0; conf->ignore_reassoc_probability = 0.0; conf->corrupt_gtk_rekey_mic_probability = 0.0; + conf->ecsa_ie_only = 0; #endif /* CONFIG_TESTING_OPTIONS */ conf->acs = 0; diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index de470a969..aa8da63bc 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -652,6 +652,7 @@ struct hostapd_config { double ignore_assoc_probability; double ignore_reassoc_probability; double corrupt_gtk_rekey_mic_probability; + int ecsa_ie_only; #endif /* CONFIG_TESTING_OPTIONS */ #ifdef CONFIG_ACS diff --git a/src/ap/beacon.c b/src/ap/beacon.c index 4c67285ff..5f1fc3eb7 100644 --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -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) { +#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) return eid;