Multi-AP: WPS support for different Multi-AP profiles
Update EAP-WSC parameters to include Multi-AP profile info to pass the profile information through the provisioning steps. This is needed for provisioning the STA configuration when different profiles are used. Signed-off-by: Manoj Sekar <quic_sekar@quicinc.com>
This commit is contained in:
parent
69d0862989
commit
024d4bca13
5 changed files with 27 additions and 5 deletions
|
@ -255,8 +255,18 @@ static void * eap_wsc_init(struct eap_sm *sm)
|
|||
cfg.new_ap_settings = &new_ap_settings;
|
||||
}
|
||||
|
||||
if (os_strstr(phase1, "multi_ap=1"))
|
||||
cfg.multi_ap_backhaul_sta = 1;
|
||||
pos = os_strstr(phase1, "multi_ap=");
|
||||
if (pos) {
|
||||
u16 id = atoi(pos + 9);
|
||||
|
||||
if (id != 0) {
|
||||
cfg.multi_ap_backhaul_sta = 1;
|
||||
cfg.multi_ap_profile = id;
|
||||
} else {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"EAP-WSC: Invalid multi_ap setting");
|
||||
}
|
||||
}
|
||||
|
||||
data->wps = wps_init(&cfg);
|
||||
if (data->wps == NULL) {
|
||||
|
|
|
@ -146,6 +146,7 @@ struct wps_data * wps_init(const struct wps_config *cfg)
|
|||
}
|
||||
|
||||
data->multi_ap_backhaul_sta = cfg->multi_ap_backhaul_sta;
|
||||
data->multi_ap_profile = cfg->multi_ap_profile;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
|
|
@ -195,6 +195,11 @@ struct wps_config {
|
|||
* enrollee
|
||||
*/
|
||||
int multi_ap_backhaul_sta;
|
||||
|
||||
/*
|
||||
* multi_ap_profile - Get the Multi-AP Profile
|
||||
*/
|
||||
int multi_ap_profile;
|
||||
};
|
||||
|
||||
struct wps_data * wps_init(const struct wps_config *cfg);
|
||||
|
|
|
@ -127,6 +127,7 @@ struct wps_data {
|
|||
struct wps_nfc_pw_token *nfc_pw_token;
|
||||
|
||||
int multi_ap_backhaul_sta;
|
||||
int multi_ap_profile;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1208,14 +1208,19 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
|
|||
}
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
os_snprintf(phase1, sizeof(phase1), "pbc=1%s",
|
||||
multi_ap_backhaul_sta ? " multi_ap=1" : "");
|
||||
if (multi_ap_backhaul_sta)
|
||||
os_snprintf(phase1, sizeof(phase1), "pbc=1 multi_ap=%d",
|
||||
multi_ap_backhaul_sta);
|
||||
else
|
||||
os_snprintf(phase1, sizeof(phase1), "pbc=1");
|
||||
if (wpa_config_set_quoted(ssid, "phase1", phase1) < 0)
|
||||
return -1;
|
||||
if (wpa_s->wps_fragment_size)
|
||||
ssid->eap.fragment_size = wpa_s->wps_fragment_size;
|
||||
if (multi_ap_backhaul_sta)
|
||||
if (multi_ap_backhaul_sta) {
|
||||
ssid->multi_ap_backhaul_sta = 1;
|
||||
ssid->multi_ap_profile = multi_ap_backhaul_sta;
|
||||
}
|
||||
wpa_s->supp_pbc_active = true;
|
||||
wpa_s->wps_overlap = false;
|
||||
wpa_supplicant_wps_event(wpa_s, WPS_EV_PBC_ACTIVE, NULL);
|
||||
|
|
Loading…
Reference in a new issue