]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
FILS: Add Realm Information ANQP-element in BSS data
authorJouni Malinen <j@w1.fi>
Sat, 17 Dec 2016 20:01:02 +0000 (22:01 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 18 Dec 2016 09:41:51 +0000 (11:41 +0200)
Add a named BSS command output entry for FILS Realm Information
ANQP-element (anqp_fils_realm_info).

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/bss.c
wpa_supplicant/bss.h
wpa_supplicant/ctrl_iface.c
wpa_supplicant/interworking.c

index 44a9a7b2c4a95731e716cb082dba37e375b28325..37ac84475dbb7ad65629ac22b841d33c89c53d5d 100644 (file)
@@ -93,6 +93,7 @@ static struct wpa_bss_anqp * wpa_bss_anqp_clone(struct wpa_bss_anqp *anqp)
        ANQP_DUP(nai_realm);
        ANQP_DUP(anqp_3gpp);
        ANQP_DUP(domain_name);
+       ANQP_DUP(fils_realm_info);
 #endif /* CONFIG_INTERWORKING */
 #ifdef CONFIG_HS20
        ANQP_DUP(hs20_capability_list);
@@ -168,6 +169,7 @@ static void wpa_bss_anqp_free(struct wpa_bss_anqp *anqp)
        wpabuf_free(anqp->nai_realm);
        wpabuf_free(anqp->anqp_3gpp);
        wpabuf_free(anqp->domain_name);
+       wpabuf_free(anqp->fils_realm_info);
 
        while ((elem = dl_list_first(&anqp->anqp_elems,
                                     struct wpa_bss_anqp_elem, list))) {
index 84e8fb07461e42472cec28a0e3f60b05ebf55561..97ab0707e3c4fb6e678da495d16393bfd7a1a686 100644 (file)
@@ -40,6 +40,7 @@ struct wpa_bss_anqp {
        struct wpabuf *nai_realm;
        struct wpabuf *anqp_3gpp;
        struct wpabuf *domain_name;
+       struct wpabuf *fils_realm_info;
        struct dl_list anqp_elems; /* list of struct wpa_bss_anqp_elem */
 #endif /* CONFIG_INTERWORKING */
 #ifdef CONFIG_HS20
index 4439efbe2b46a5e881398fac145d658bffa779cb..cd10fa84c235d2ddac9160261007cea86975a3a0 100644 (file)
@@ -4381,6 +4381,8 @@ static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
                pos = anqp_add_hex(pos, end, "anqp_3gpp", anqp->anqp_3gpp);
                pos = anqp_add_hex(pos, end, "anqp_domain_name",
                                   anqp->domain_name);
+               pos = anqp_add_hex(pos, end, "anqp_fils_realm_info",
+                                  anqp->fils_realm_info);
 #ifdef CONFIG_HS20
                pos = anqp_add_hex(pos, end, "hs20_capability_list",
                                   anqp->hs20_capability_list);
index 5c0e109ebbe8f4a640b4ee439ec12fcf3ea4fc8e..30b9c88a7bbcb0025e3be87849fa62b2883afd0a 100644 (file)
@@ -2893,6 +2893,18 @@ static void interworking_parse_rx_anqp_resp(struct wpa_supplicant *wpa_s,
                        anqp->domain_name = wpabuf_alloc_copy(pos, slen);
                }
                break;
+#ifdef CONFIG_FILS
+       case ANQP_FILS_REALM_INFO:
+               wpa_msg(wpa_s, MSG_INFO, RX_ANQP MACSTR
+                       " FILS Realm Information", MAC2STR(sa));
+               wpa_hexdump_ascii(MSG_MSGDUMP, "ANQP: FILS Realm Information",
+                       pos, slen);
+               if (anqp) {
+                       wpabuf_free(anqp->fils_realm_info);
+                       anqp->fils_realm_info = wpabuf_alloc_copy(pos, slen);
+               }
+               break;
+#endif /* CONFIG_FILS */
        case ANQP_VENDOR_SPECIFIC:
                if (slen < 3)
                        return;