SAE H2E: Testing option to report extra rejected groups
"SET extra_sae_rejected_groups <groups>" can now be used to enable test mode in which wpa_supplicant will report additional groups (configured as space separated integers) when using SAE H2E. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
4d16d7cc8d
commit
b834e97003
3 changed files with 51 additions and 8 deletions
|
@ -665,6 +665,28 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
|
|||
wpa_s->ignore_assoc_disallow);
|
||||
} else if (os_strcasecmp(cmd, "ignore_sae_h2e_only") == 0) {
|
||||
wpa_s->ignore_sae_h2e_only = !!atoi(value);
|
||||
} else if (os_strcasecmp(cmd, "extra_sae_rejected_groups") == 0) {
|
||||
char *pos;
|
||||
|
||||
os_free(wpa_s->extra_sae_rejected_groups);
|
||||
wpa_s->extra_sae_rejected_groups = NULL;
|
||||
pos = value;
|
||||
while (pos && pos[0]) {
|
||||
int group;
|
||||
|
||||
group = atoi(pos);
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"TESTING: Extra rejection of SAE group %d",
|
||||
group);
|
||||
if (group)
|
||||
int_array_add_unique(
|
||||
&wpa_s->extra_sae_rejected_groups,
|
||||
group);
|
||||
pos = os_strchr(pos, ' ');
|
||||
if (!pos)
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
} else if (os_strcasecmp(cmd, "reject_btm_req_reason") == 0) {
|
||||
wpa_s->reject_btm_req_reason = atoi(value);
|
||||
} else if (os_strcasecmp(cmd, "get_pref_freq_list_override") == 0) {
|
||||
|
@ -8054,6 +8076,8 @@ static void wpa_supplicant_ctrl_iface_flush(struct wpa_supplicant *wpa_s)
|
|||
wpa_s->get_pref_freq_list_override = NULL;
|
||||
wpabuf_free(wpa_s->sae_commit_override);
|
||||
wpa_s->sae_commit_override = NULL;
|
||||
os_free(wpa_s->extra_sae_rejected_groups);
|
||||
wpa_s->extra_sae_rejected_groups = NULL;
|
||||
#ifdef CONFIG_DPP
|
||||
os_free(wpa_s->dpp_config_obj_override);
|
||||
wpa_s->dpp_config_obj_override = NULL;
|
||||
|
|
|
@ -499,6 +499,8 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
|
|||
wpa_s->get_pref_freq_list_override = NULL;
|
||||
wpabuf_free(wpa_s->last_assoc_req_wpa_ie);
|
||||
wpa_s->last_assoc_req_wpa_ie = NULL;
|
||||
os_free(wpa_s->extra_sae_rejected_groups);
|
||||
wpa_s->extra_sae_rejected_groups = NULL;
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
if (wpa_s->conf != NULL) {
|
||||
|
@ -1972,6 +1974,28 @@ static void wpa_s_setup_sae_pt(struct wpa_config *conf, struct wpa_ssid *ssid)
|
|||
}
|
||||
|
||||
|
||||
static void wpa_s_clear_sae_rejected(struct wpa_supplicant *wpa_s)
|
||||
{
|
||||
#if defined(CONFIG_SAE) && defined(CONFIG_SME)
|
||||
os_free(wpa_s->sme.sae_rejected_groups);
|
||||
wpa_s->sme.sae_rejected_groups = NULL;
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
if (wpa_s->extra_sae_rejected_groups) {
|
||||
int i, *groups = wpa_s->extra_sae_rejected_groups;
|
||||
|
||||
for (i = 0; groups[i]; i++) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"TESTING: Indicate rejection of an extra SAE group %d",
|
||||
groups[i]);
|
||||
int_array_add_unique(&wpa_s->sme.sae_rejected_groups,
|
||||
groups[i]);
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
#endif /* CONFIG_SAE && CONFIG_SME */
|
||||
}
|
||||
|
||||
|
||||
static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit);
|
||||
|
||||
/**
|
||||
|
@ -2020,10 +2044,7 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|||
}
|
||||
} else {
|
||||
#ifdef CONFIG_SAE
|
||||
#ifdef CONFIG_SME
|
||||
os_free(wpa_s->sme.sae_rejected_groups);
|
||||
wpa_s->sme.sae_rejected_groups = NULL;
|
||||
#endif /* CONFIG_SME */
|
||||
wpa_s_clear_sae_rejected(wpa_s);
|
||||
wpa_s_setup_sae_pt(wpa_s->conf, ssid);
|
||||
#endif /* CONFIG_SAE */
|
||||
}
|
||||
|
@ -4039,10 +4060,7 @@ void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s,
|
|||
|
||||
wpa_s->disconnected = 0;
|
||||
wpa_s->reassociate = 1;
|
||||
#if defined(CONFIG_SAE) && defined(CONFIG_SME)
|
||||
os_free(wpa_s->sme.sae_rejected_groups);
|
||||
wpa_s->sme.sae_rejected_groups = NULL;
|
||||
#endif /* CONFIG_SAE && CONFIG_SME */
|
||||
wpa_s_clear_sae_rejected(wpa_s);
|
||||
wpa_s->last_owe_group = 0;
|
||||
if (ssid) {
|
||||
ssid->owe_transition_bss_select_count = 0;
|
||||
|
|
|
@ -1125,6 +1125,7 @@ struct wpa_supplicant {
|
|||
u8 last_tk[WPA_TK_MAX_LEN];
|
||||
size_t last_tk_len;
|
||||
struct wpabuf *last_assoc_req_wpa_ie;
|
||||
int *extra_sae_rejected_groups;
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
struct wmm_ac_assoc_data *wmm_ac_assoc_info;
|
||||
|
|
Loading…
Reference in a new issue