hostapd: Add wps_config ctrl_interface command for configuring AP
This command can be used to configure the AP using the internal WPS registrar. It works in the same way as new AP settings received from an ER.
This commit is contained in:
parent
7374b68ee9
commit
450eddcfae
7 changed files with 177 additions and 0 deletions
|
@ -1286,3 +1286,52 @@ void hostapd_wps_update_ie(struct hostapd_data *hapd)
|
|||
{
|
||||
hostapd_wps_for_each(hapd, wps_update_ie, NULL);
|
||||
}
|
||||
|
||||
|
||||
int hostapd_wps_config_ap(struct hostapd_data *hapd, const char *ssid,
|
||||
const char *auth, const char *encr, const char *key)
|
||||
{
|
||||
struct wps_credential cred;
|
||||
size_t len;
|
||||
|
||||
os_memset(&cred, 0, sizeof(cred));
|
||||
|
||||
len = os_strlen(ssid);
|
||||
if ((len & 1) || len > 2 * sizeof(cred.ssid) ||
|
||||
hexstr2bin(ssid, cred.ssid, len / 2))
|
||||
return -1;
|
||||
cred.ssid_len = len / 2;
|
||||
|
||||
if (os_strncmp(auth, "OPEN", 4) == 0)
|
||||
cred.auth_type = WPS_AUTH_OPEN;
|
||||
else if (os_strncmp(auth, "WPAPSK", 6) == 0)
|
||||
cred.auth_type = WPS_AUTH_WPAPSK;
|
||||
else if (os_strncmp(auth, "WPA2PSK", 7) == 0)
|
||||
cred.auth_type = WPS_AUTH_WPA2PSK;
|
||||
else
|
||||
return -1;
|
||||
|
||||
if (encr) {
|
||||
if (os_strncmp(encr, "NONE", 4) == 0)
|
||||
cred.encr_type = WPS_ENCR_NONE;
|
||||
else if (os_strncmp(encr, "WEP", 3) == 0)
|
||||
cred.encr_type = WPS_ENCR_WEP;
|
||||
else if (os_strncmp(encr, "TKIP", 4) == 0)
|
||||
cred.encr_type = WPS_ENCR_TKIP;
|
||||
else if (os_strncmp(encr, "CCMP", 4) == 0)
|
||||
cred.encr_type = WPS_ENCR_AES;
|
||||
else
|
||||
return -1;
|
||||
} else
|
||||
cred.encr_type = WPS_ENCR_NONE;
|
||||
|
||||
if (key) {
|
||||
len = os_strlen(key);
|
||||
if ((len & 1) || len > 2 * sizeof(cred.key) ||
|
||||
hexstr2bin(key, cred.key, len / 2))
|
||||
return -1;
|
||||
cred.key_len = len / 2;
|
||||
}
|
||||
|
||||
return wps_registrar_config_ap(hapd->wps->registrar, &cred);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue