Lines Matching refs:anqp
41 * wpa_bss_anqp_alloc - Allocate ANQP data structure for a BSS entry
42 * Returns: Allocated ANQP data structure or %NULL on failure
44 * The allocated ANQP data structure has its users count set to 1. It may be
50 struct wpa_bss_anqp *anqp;
51 anqp = os_zalloc(sizeof(*anqp));
52 if (anqp == NULL)
55 dl_list_init(&anqp->anqp_elems);
57 anqp->users = 1;
58 return anqp;
63 * wpa_bss_anqp_clone - Clone an ANQP data structure
64 * @anqp: ANQP data structure from wpa_bss_anqp_alloc()
65 * Returns: Cloned ANQP data structure or %NULL on failure
67 static struct wpa_bss_anqp * wpa_bss_anqp_clone(struct wpa_bss_anqp *anqp)
75 #define ANQP_DUP(f) if (anqp->f) n->f = wpabuf_dup(anqp->f)
105 * wpa_bss_anqp_unshare_alloc - Unshare ANQP data (if shared) in a BSS entry
109 * This function ensures the specific BSS entry has an ANQP data structure that
114 struct wpa_bss_anqp *anqp;
116 if (bss->anqp && bss->anqp->users > 1) {
118 anqp = wpa_bss_anqp_clone(bss->anqp);
119 if (anqp == NULL)
121 anqp->users = 1;
122 bss->anqp->users--;
123 bss->anqp = anqp;
127 if (bss->anqp)
131 bss->anqp = wpa_bss_anqp_alloc();
132 return bss->anqp ? 0 : -1;
137 * wpa_bss_anqp_free - Free an ANQP data structure
138 * @anqp: ANQP data structure from wpa_bss_anqp_alloc() or wpa_bss_anqp_clone()
140 static void wpa_bss_anqp_free(struct wpa_bss_anqp *anqp)
146 if (anqp == NULL)
149 anqp->users--;
150 if (anqp->users > 0) {
151 /* Another BSS entry holds a pointer to this ANQP info */
156 wpabuf_free(anqp->capability_list);
157 wpabuf_free(anqp->venue_name);
158 wpabuf_free(anqp->network_auth_type);
159 wpabuf_free(anqp->roaming_consortium);
160 wpabuf_free(anqp->ip_addr_type_availability);
161 wpabuf_free(anqp->nai_realm);
162 wpabuf_free(anqp->anqp_3gpp);
163 wpabuf_free(anqp->domain_name);
164 wpabuf_free(anqp->fils_realm_info);
166 while ((elem = dl_list_first(&anqp->anqp_elems,
174 wpabuf_free(anqp->hs20_capability_list);
175 wpabuf_free(anqp->hs20_operator_friendly_name);
176 wpabuf_free(anqp->hs20_wan_metrics);
177 wpabuf_free(anqp->hs20_connection_capability);
178 wpabuf_free(anqp->hs20_operating_class);
179 wpabuf_free(anqp->hs20_osu_providers_list);
180 wpabuf_free(anqp->hs20_operator_icon_metadata);
181 wpabuf_free(anqp->hs20_osu_providers_nai_list);
184 os_free(anqp);
247 wpa_bss_anqp_free(bss->anqp);