HS 2.0: Maintain a copy of HS 2.0 Indication from Association Request
authorJouni Malinen <jouni@qca.qualcomm.com>
Wed, 21 Nov 2012 22:19:17 +0000 (00:19 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 24 Nov 2012 10:24:31 +0000 (12:24 +0200)
This allows the AP to figure out whether a station is a HS 2.0 STA
during the association and access any information that the STA may have
included in this element.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

src/ap/drv_callbacks.c
src/ap/ieee802_11.c
src/ap/sta_info.c
src/ap/sta_info.h

index 5517294..8613975 100644 (file)
@@ -109,6 +109,15 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
        }
 #endif /* CONFIG_P2P */
 
+#ifdef CONFIG_HS20
+       wpabuf_free(sta->hs20_ie);
+       if (elems.hs20 && elems.hs20_len > 4) {
+               sta->hs20_ie = wpabuf_alloc_copy(elems.hs20 + 4,
+                                                elems.hs20_len - 4);
+       } else
+               sta->hs20_ie = NULL;
+#endif /* CONFIG_HS20 */
+
        if (hapd->conf->wpa) {
                if (ie == NULL || ielen == 0) {
 #ifdef CONFIG_WPS
index 8d5268e..0753176 100644 (file)
@@ -962,6 +962,15 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
        p2p_group_notif_assoc(hapd->p2p_group, sta->addr, ies, ies_len);
 #endif /* CONFIG_P2P */
 
+#ifdef CONFIG_HS20
+       wpabuf_free(sta->hs20_ie);
+       if (elems.hs20 && elems.hs20_len > 4) {
+               sta->hs20_ie = wpabuf_alloc_copy(elems.hs20 + 4,
+                                                elems.hs20_len - 4);
+       } else
+               sta->hs20_ie = NULL;
+#endif /* CONFIG_HS20 */
+
        return WLAN_STATUS_SUCCESS;
 }
 
index d61177f..4f57af5 100644 (file)
@@ -232,6 +232,7 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
 
        wpabuf_free(sta->wps_ie);
        wpabuf_free(sta->p2p_ie);
+       wpabuf_free(sta->hs20_ie);
 
        os_free(sta->ht_capabilities);
        os_free(sta->psk);
index abf19cb..132830f 100644 (file)
@@ -121,6 +121,7 @@ struct sta_info {
 
        struct wpabuf *wps_ie; /* WPS IE from (Re)Association Request */
        struct wpabuf *p2p_ie; /* P2P IE from (Re)Association Request */
+       struct wpabuf *hs20_ie; /* HS 2.0 IE from (Re)Association Request */
 
        struct os_time connected_time;