HS 2.0: Allow Hotspot 2.0 release number to be configured
The new hostapd configuration parameter hs20_release can be used to configure the AP to advertise a specific Hotspot 2.0 release number instead of the latest supported release. This is mainly for testing purposes. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
17adac9ef9
commit
6ae04d7b34
5 changed files with 25 additions and 8 deletions
|
@ -3717,6 +3717,16 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
|||
#ifdef CONFIG_HS20
|
||||
} else if (os_strcmp(buf, "hs20") == 0) {
|
||||
bss->hs20 = atoi(pos);
|
||||
} else if (os_strcmp(buf, "hs20_release") == 0) {
|
||||
int val = atoi(pos);
|
||||
|
||||
if (val < 1 || val > (HS20_VERSION >> 4) + 1) {
|
||||
wpa_printf(MSG_ERROR,
|
||||
"Line %d: Unsupported hs20_release: %s",
|
||||
line, pos);
|
||||
return 1;
|
||||
}
|
||||
bss->hs20_release = val;
|
||||
} else if (os_strcmp(buf, "disable_dgaf") == 0) {
|
||||
bss->disable_dgaf = atoi(pos);
|
||||
} else if (os_strcmp(buf, "na_mcast_to_ucast") == 0) {
|
||||
|
|
|
@ -133,6 +133,10 @@ void hostapd_config_defaults_bss(struct hostapd_bss_config *bss)
|
|||
bss->tls_flags = TLS_CONN_DISABLE_TLSv1_3;
|
||||
|
||||
bss->send_probe_response = 1;
|
||||
|
||||
#ifdef CONFIG_HS20
|
||||
bss->hs20_release = (HS20_VERSION >> 4) + 1;
|
||||
#endif /* CONFIG_HS20 */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -557,6 +557,7 @@ struct hostapd_bss_config {
|
|||
int na_mcast_to_ucast;
|
||||
#ifdef CONFIG_HS20
|
||||
int hs20;
|
||||
int hs20_release;
|
||||
int disable_dgaf;
|
||||
u16 anqp_domain_id;
|
||||
unsigned int hs20_oper_friendly_name_count;
|
||||
|
|
|
@ -25,17 +25,20 @@ u8 * hostapd_eid_hs20_indication(struct hostapd_data *hapd, u8 *eid)
|
|||
if (!hapd->conf->hs20)
|
||||
return eid;
|
||||
*eid++ = WLAN_EID_VENDOR_SPECIFIC;
|
||||
*eid++ = 7;
|
||||
*eid++ = hapd->conf->hs20_release < 2 ? 5 : 7;
|
||||
WPA_PUT_BE24(eid, OUI_WFA);
|
||||
eid += 3;
|
||||
*eid++ = HS20_INDICATION_OUI_TYPE;
|
||||
conf = HS20_VERSION; /* Release Number */
|
||||
conf |= HS20_ANQP_DOMAIN_ID_PRESENT;
|
||||
conf = (hapd->conf->hs20_release - 1) << 4; /* Release Number */
|
||||
if (hapd->conf->hs20_release >= 2)
|
||||
conf |= HS20_ANQP_DOMAIN_ID_PRESENT;
|
||||
if (hapd->conf->disable_dgaf)
|
||||
conf |= HS20_DGAF_DISABLED;
|
||||
*eid++ = conf;
|
||||
WPA_PUT_LE16(eid, hapd->conf->anqp_domain_id);
|
||||
eid += 2;
|
||||
if (hapd->conf->hs20_release >= 2) {
|
||||
WPA_PUT_LE16(eid, hapd->conf->anqp_domain_id);
|
||||
eid += 2;
|
||||
}
|
||||
|
||||
return eid;
|
||||
}
|
||||
|
|
|
@ -682,9 +682,8 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd,
|
|||
|
||||
#ifdef CONFIG_HS20
|
||||
if (hapd->conf->hs20) {
|
||||
u8 ver = 1; /* Release 2 */
|
||||
if (HS20_VERSION > 0x10)
|
||||
ver = 2; /* Release 3 */
|
||||
u8 ver = hapd->conf->hs20_release - 1;
|
||||
|
||||
if (!radius_msg_add_wfa(
|
||||
msg, RADIUS_VENDOR_ATTR_WFA_HS20_AP_VERSION,
|
||||
&ver, 1)) {
|
||||
|
|
Loading…
Reference in a new issue