HS 2.0: Add support to update the HS20 Capability List into the BSS
authorASHUTOSH NARAYAN <ashutoshx.narayan@intel.com>
Wed, 18 Feb 2015 02:35:09 +0000 (21:35 -0500)
committerJouni Malinen <j@w1.fi>
Sat, 21 Feb 2015 14:07:53 +0000 (16:07 +0200)
In addition, add support for returning the capability list through the
BSS control interface command.

Signed-off-by: ASHUTOSH NARAYAN <ashutoshx.narayan@intel.com>
wpa_supplicant/bss.c
wpa_supplicant/bss.h
wpa_supplicant/ctrl_iface.c
wpa_supplicant/hs20_supplicant.c

index 1798439..d4d0c77 100644 (file)
@@ -94,6 +94,7 @@ static struct wpa_bss_anqp * wpa_bss_anqp_clone(struct wpa_bss_anqp *anqp)
        ANQP_DUP(domain_name);
 #endif /* CONFIG_INTERWORKING */
 #ifdef CONFIG_HS20
+       ANQP_DUP(hs20_capability_list);
        ANQP_DUP(hs20_operator_friendly_name);
        ANQP_DUP(hs20_wan_metrics);
        ANQP_DUP(hs20_connection_capability);
@@ -163,6 +164,7 @@ static void wpa_bss_anqp_free(struct wpa_bss_anqp *anqp)
        wpabuf_free(anqp->domain_name);
 #endif /* CONFIG_INTERWORKING */
 #ifdef CONFIG_HS20
+       wpabuf_free(anqp->hs20_capability_list);
        wpabuf_free(anqp->hs20_operator_friendly_name);
        wpabuf_free(anqp->hs20_wan_metrics);
        wpabuf_free(anqp->hs20_connection_capability);
index 4a624c5..cd9eea1 100644 (file)
@@ -35,6 +35,7 @@ struct wpa_bss_anqp {
        struct wpabuf *domain_name;
 #endif /* CONFIG_INTERWORKING */
 #ifdef CONFIG_HS20
+       struct wpabuf *hs20_capability_list;
        struct wpabuf *hs20_operator_friendly_name;
        struct wpabuf *hs20_wan_metrics;
        struct wpabuf *hs20_connection_capability;
index bbc6bd6..440fa72 100644 (file)
@@ -4190,6 +4190,8 @@ static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
                pos = anqp_add_hex(pos, end, "anqp_domain_name",
                                   anqp->domain_name);
 #ifdef CONFIG_HS20
+               pos = anqp_add_hex(pos, end, "hs20_capability_list",
+                                  anqp->hs20_capability_list);
                pos = anqp_add_hex(pos, end, "hs20_operator_friendly_name",
                                   anqp->hs20_operator_friendly_name);
                pos = anqp_add_hex(pos, end, "hs20_wan_metrics",
index eb18ed2..b9cd681 100644 (file)
@@ -380,6 +380,11 @@ void hs20_parse_rx_hs20_anqp_resp(struct wpa_supplicant *wpa_s,
                wpa_msg(wpa_s, MSG_INFO, "RX-HS20-ANQP " MACSTR
                        " HS Capability List", MAC2STR(sa));
                wpa_hexdump_ascii(MSG_DEBUG, "HS Capability List", pos, slen);
+               if (anqp) {
+                       wpabuf_free(anqp->hs20_capability_list);
+                       anqp->hs20_capability_list =
+                               wpabuf_alloc_copy(pos, slen);
+               }
                break;
        case HS20_STYPE_OPERATOR_FRIENDLY_NAME:
                wpa_msg(wpa_s, MSG_INFO, "RX-HS20-ANQP " MACSTR