Lines Matching refs:hapd
47 gas_dialog_create(struct hostapd_data *hapd, const u8 *addr, u8 dialog_token) in gas_dialog_create() argument
53 sta = ap_get_sta(hapd, addr); in gas_dialog_create()
61 sta = ap_sta_add(hapd, addr); in gas_dialog_create()
73 ap_sta_session_timeout(hapd, sta, in gas_dialog_create()
74 hapd->conf->gas_comeback_delay / 1024 + in gas_dialog_create()
77 ap_sta_replenish_timeout(hapd, sta, 5); in gas_dialog_create()
99 wpa_msg(hapd->msg_ctx, MSG_ERROR, "ANQP: Could not create dialog for " in gas_dialog_create()
108 gas_serv_dialog_find(struct hostapd_data *hapd, const u8 *addr, in gas_serv_dialog_find() argument
114 sta = ap_get_sta(hapd, addr); in gas_serv_dialog_find()
124 ap_sta_replenish_timeout(hapd, sta, 5); in gas_serv_dialog_find()
140 static void gas_serv_free_dialogs(struct hostapd_data *hapd, in gas_serv_free_dialogs() argument
146 sta = ap_get_sta(hapd, sta_addr); in gas_serv_free_dialogs()
161 static void anqp_add_hs_capab_list(struct hostapd_data *hapd, in anqp_add_hs_capab_list() argument
172 if (hapd->conf->hs20_oper_friendly_name) in anqp_add_hs_capab_list()
174 if (hapd->conf->hs20_wan_metrics) in anqp_add_hs_capab_list()
176 if (hapd->conf->hs20_connection_capability) in anqp_add_hs_capab_list()
178 if (hapd->conf->nai_realm_data) in anqp_add_hs_capab_list()
180 if (hapd->conf->hs20_operating_class) in anqp_add_hs_capab_list()
182 if (hapd->conf->hs20_osu_providers_count) in anqp_add_hs_capab_list()
184 if (hapd->conf->hs20_osu_providers_nai_count) in anqp_add_hs_capab_list()
186 if (hapd->conf->hs20_icons_count) in anqp_add_hs_capab_list()
188 if (hapd->conf->hs20_operator_icon_count) in anqp_add_hs_capab_list()
195 static struct anqp_element * get_anqp_elem(struct hostapd_data *hapd, in get_anqp_elem() argument
200 dl_list_for_each(elem, &hapd->conf->anqp_elem, struct anqp_element, in get_anqp_elem()
210 static void anqp_add_elem(struct hostapd_data *hapd, struct wpabuf *buf, in anqp_add_elem() argument
215 elem = get_anqp_elem(hapd, infoid); in anqp_add_elem()
230 static int anqp_add_override(struct hostapd_data *hapd, struct wpabuf *buf, in anqp_add_override() argument
233 if (get_anqp_elem(hapd, infoid)) { in anqp_add_override()
234 anqp_add_elem(hapd, buf, infoid); in anqp_add_override()
242 static void anqp_add_capab_list(struct hostapd_data *hapd, in anqp_add_capab_list() argument
248 if (anqp_add_override(hapd, buf, ANQP_CAPABILITY_LIST)) in anqp_add_capab_list()
253 if (hapd->conf->venue_name || get_anqp_elem(hapd, ANQP_VENUE_NAME)) in anqp_add_capab_list()
255 if (get_anqp_elem(hapd, ANQP_EMERGENCY_CALL_NUMBER)) in anqp_add_capab_list()
257 if (hapd->conf->network_auth_type || in anqp_add_capab_list()
258 get_anqp_elem(hapd, ANQP_NETWORK_AUTH_TYPE)) in anqp_add_capab_list()
260 if (hapd->conf->roaming_consortium || in anqp_add_capab_list()
261 get_anqp_elem(hapd, ANQP_ROAMING_CONSORTIUM)) in anqp_add_capab_list()
263 if (hapd->conf->ipaddr_type_configured || in anqp_add_capab_list()
264 get_anqp_elem(hapd, ANQP_IP_ADDR_TYPE_AVAILABILITY)) in anqp_add_capab_list()
266 if (hapd->conf->nai_realm_data || in anqp_add_capab_list()
267 get_anqp_elem(hapd, ANQP_NAI_REALM)) in anqp_add_capab_list()
269 if (hapd->conf->anqp_3gpp_cell_net || in anqp_add_capab_list()
270 get_anqp_elem(hapd, ANQP_3GPP_CELLULAR_NETWORK)) in anqp_add_capab_list()
272 if (get_anqp_elem(hapd, ANQP_AP_GEOSPATIAL_LOCATION)) in anqp_add_capab_list()
274 if (get_anqp_elem(hapd, ANQP_AP_CIVIC_LOCATION)) in anqp_add_capab_list()
276 if (get_anqp_elem(hapd, ANQP_AP_LOCATION_PUBLIC_URI)) in anqp_add_capab_list()
278 if (hapd->conf->domain_name || get_anqp_elem(hapd, ANQP_DOMAIN_NAME)) in anqp_add_capab_list()
280 if (get_anqp_elem(hapd, ANQP_EMERGENCY_ALERT_URI)) in anqp_add_capab_list()
282 if (get_anqp_elem(hapd, ANQP_TDLS_CAPABILITY)) in anqp_add_capab_list()
284 if (get_anqp_elem(hapd, ANQP_EMERGENCY_NAI)) in anqp_add_capab_list()
286 if (get_anqp_elem(hapd, ANQP_NEIGHBOR_REPORT)) in anqp_add_capab_list()
289 if (!dl_list_empty(&hapd->conf->fils_realms) || in anqp_add_capab_list()
290 get_anqp_elem(hapd, ANQP_FILS_REALM_INFO)) in anqp_add_capab_list()
293 if (get_anqp_elem(hapd, ANQP_CAG)) in anqp_add_capab_list()
295 if (hapd->conf->venue_url || get_anqp_elem(hapd, ANQP_VENUE_URL)) in anqp_add_capab_list()
297 if (get_anqp_elem(hapd, ANQP_ADVICE_OF_CHARGE)) in anqp_add_capab_list()
299 if (get_anqp_elem(hapd, ANQP_LOCAL_CONTENT)) in anqp_add_capab_list()
302 if (get_anqp_elem(hapd, id)) in anqp_add_capab_list()
306 anqp_add_hs_capab_list(hapd, buf); in anqp_add_capab_list()
312 static void anqp_add_venue_name(struct hostapd_data *hapd, struct wpabuf *buf) in anqp_add_venue_name() argument
314 if (anqp_add_override(hapd, buf, ANQP_VENUE_NAME)) in anqp_add_venue_name()
317 if (hapd->conf->venue_name) { in anqp_add_venue_name()
321 wpabuf_put_u8(buf, hapd->conf->venue_group); in anqp_add_venue_name()
322 wpabuf_put_u8(buf, hapd->conf->venue_type); in anqp_add_venue_name()
323 for (i = 0; i < hapd->conf->venue_name_count; i++) { in anqp_add_venue_name()
325 vn = &hapd->conf->venue_name[i]; in anqp_add_venue_name()
335 static void anqp_add_venue_url(struct hostapd_data *hapd, struct wpabuf *buf) in anqp_add_venue_url() argument
337 if (anqp_add_override(hapd, buf, ANQP_VENUE_URL)) in anqp_add_venue_url()
340 if (hapd->conf->venue_url) { in anqp_add_venue_url()
345 for (i = 0; i < hapd->conf->venue_url_count; i++) { in anqp_add_venue_url()
348 url = &hapd->conf->venue_url[i]; in anqp_add_venue_url()
358 static void anqp_add_network_auth_type(struct hostapd_data *hapd, in anqp_add_network_auth_type() argument
361 if (anqp_add_override(hapd, buf, ANQP_NETWORK_AUTH_TYPE)) in anqp_add_network_auth_type()
364 if (hapd->conf->network_auth_type) { in anqp_add_network_auth_type()
366 wpabuf_put_le16(buf, hapd->conf->network_auth_type_len); in anqp_add_network_auth_type()
367 wpabuf_put_data(buf, hapd->conf->network_auth_type, in anqp_add_network_auth_type()
368 hapd->conf->network_auth_type_len); in anqp_add_network_auth_type()
373 static void anqp_add_roaming_consortium(struct hostapd_data *hapd, in anqp_add_roaming_consortium() argument
379 if (anqp_add_override(hapd, buf, ANQP_ROAMING_CONSORTIUM)) in anqp_add_roaming_consortium()
383 for (i = 0; i < hapd->conf->roaming_consortium_count; i++) { in anqp_add_roaming_consortium()
385 rc = &hapd->conf->roaming_consortium[i]; in anqp_add_roaming_consortium()
393 static void anqp_add_ip_addr_type_availability(struct hostapd_data *hapd, in anqp_add_ip_addr_type_availability() argument
396 if (anqp_add_override(hapd, buf, ANQP_IP_ADDR_TYPE_AVAILABILITY)) in anqp_add_ip_addr_type_availability()
399 if (hapd->conf->ipaddr_type_configured) { in anqp_add_ip_addr_type_availability()
402 wpabuf_put_u8(buf, hapd->conf->ipaddr_type_availability); in anqp_add_ip_addr_type_availability()
445 static int hs20_add_nai_home_realm_matches(struct hostapd_data *hapd, in hs20_add_nai_home_realm_matches() argument
484 for (j = 0; j < hapd->conf->nai_realm_count && in hs20_add_nai_home_realm_matches()
487 realm = &hapd->conf->nai_realm_data[j]; in hs20_add_nai_home_realm_matches()
531 realm = &hapd->conf->nai_realm_data[matches[i].realm_data_idx]; in hs20_add_nai_home_realm_matches()
539 static void anqp_add_nai_realm(struct hostapd_data *hapd, struct wpabuf *buf, in anqp_add_nai_realm() argument
544 anqp_add_override(hapd, buf, ANQP_NAI_REALM)) in anqp_add_nai_realm()
547 if (nai_realm && hapd->conf->nai_realm_data) { in anqp_add_nai_realm()
551 wpabuf_put_le16(buf, hapd->conf->nai_realm_count); in anqp_add_nai_realm()
552 for (i = 0; i < hapd->conf->nai_realm_count; i++) { in anqp_add_nai_realm()
556 realm = &hapd->conf->nai_realm_data[i]; in anqp_add_nai_realm()
570 } else if (nai_home_realm && hapd->conf->nai_realm_data && home_realm) { in anqp_add_nai_realm()
571 hs20_add_nai_home_realm_matches(hapd, buf, home_realm, in anqp_add_nai_realm()
577 static void anqp_add_3gpp_cellular_network(struct hostapd_data *hapd, in anqp_add_3gpp_cellular_network() argument
580 if (anqp_add_override(hapd, buf, ANQP_3GPP_CELLULAR_NETWORK)) in anqp_add_3gpp_cellular_network()
583 if (hapd->conf->anqp_3gpp_cell_net) { in anqp_add_3gpp_cellular_network()
586 hapd->conf->anqp_3gpp_cell_net_len); in anqp_add_3gpp_cellular_network()
587 wpabuf_put_data(buf, hapd->conf->anqp_3gpp_cell_net, in anqp_add_3gpp_cellular_network()
588 hapd->conf->anqp_3gpp_cell_net_len); in anqp_add_3gpp_cellular_network()
593 static void anqp_add_domain_name(struct hostapd_data *hapd, struct wpabuf *buf) in anqp_add_domain_name() argument
595 if (anqp_add_override(hapd, buf, ANQP_DOMAIN_NAME)) in anqp_add_domain_name()
598 if (hapd->conf->domain_name) { in anqp_add_domain_name()
600 wpabuf_put_le16(buf, hapd->conf->domain_name_len); in anqp_add_domain_name()
601 wpabuf_put_data(buf, hapd->conf->domain_name, in anqp_add_domain_name()
602 hapd->conf->domain_name_len); in anqp_add_domain_name()
608 static void anqp_add_fils_realm_info(struct hostapd_data *hapd, in anqp_add_fils_realm_info() argument
613 if (anqp_add_override(hapd, buf, ANQP_FILS_REALM_INFO)) in anqp_add_fils_realm_info()
616 count = dl_list_len(&hapd->conf->fils_realms); in anqp_add_fils_realm_info()
625 dl_list_for_each(realm, &hapd->conf->fils_realms, in anqp_add_fils_realm_info()
639 static void anqp_add_operator_friendly_name(struct hostapd_data *hapd, in anqp_add_operator_friendly_name() argument
642 if (hapd->conf->hs20_oper_friendly_name) { in anqp_add_operator_friendly_name()
650 for (i = 0; i < hapd->conf->hs20_oper_friendly_name_count; i++) in anqp_add_operator_friendly_name()
653 vn = &hapd->conf->hs20_oper_friendly_name[i]; in anqp_add_operator_friendly_name()
663 static void anqp_add_wan_metrics(struct hostapd_data *hapd, in anqp_add_wan_metrics() argument
666 if (hapd->conf->hs20_wan_metrics) { in anqp_add_wan_metrics()
672 wpabuf_put_data(buf, hapd->conf->hs20_wan_metrics, 13); in anqp_add_wan_metrics()
678 static void anqp_add_connection_capability(struct hostapd_data *hapd, in anqp_add_connection_capability() argument
681 if (hapd->conf->hs20_connection_capability) { in anqp_add_connection_capability()
687 wpabuf_put_data(buf, hapd->conf->hs20_connection_capability, in anqp_add_connection_capability()
688 hapd->conf->hs20_connection_capability_len); in anqp_add_connection_capability()
694 static void anqp_add_operating_class(struct hostapd_data *hapd, in anqp_add_operating_class() argument
697 if (hapd->conf->hs20_operating_class) { in anqp_add_operating_class()
703 wpabuf_put_data(buf, hapd->conf->hs20_operating_class, in anqp_add_operating_class()
704 hapd->conf->hs20_operating_class_len); in anqp_add_operating_class()
792 static void anqp_add_osu_providers_list(struct hostapd_data *hapd, in anqp_add_osu_providers_list() argument
795 if (hapd->conf->hs20_osu_providers_count) { in anqp_add_osu_providers_list()
804 wpabuf_put_u8(buf, hapd->conf->osu_ssid_len); in anqp_add_osu_providers_list()
805 wpabuf_put_data(buf, hapd->conf->osu_ssid, in anqp_add_osu_providers_list()
806 hapd->conf->osu_ssid_len); in anqp_add_osu_providers_list()
809 wpabuf_put_u8(buf, hapd->conf->hs20_osu_providers_count); in anqp_add_osu_providers_list()
811 for (i = 0; i < hapd->conf->hs20_osu_providers_count; i++) { in anqp_add_osu_providers_list()
813 buf, hapd->conf, in anqp_add_osu_providers_list()
814 &hapd->conf->hs20_osu_providers[i]); in anqp_add_osu_providers_list()
835 static void anqp_add_osu_providers_nai_list(struct hostapd_data *hapd, in anqp_add_osu_providers_nai_list() argument
838 if (hapd->conf->hs20_osu_providers_nai_count) { in anqp_add_osu_providers_nai_list()
846 for (i = 0; i < hapd->conf->hs20_osu_providers_count; i++) { in anqp_add_osu_providers_nai_list()
848 buf, &hapd->conf->hs20_osu_providers[i]); in anqp_add_osu_providers_nai_list()
856 static void anqp_add_icon_binary_file(struct hostapd_data *hapd, in anqp_add_icon_binary_file() argument
866 for (i = 0; i < hapd->conf->hs20_icons_count; i++) { in anqp_add_icon_binary_file()
867 icon = &hapd->conf->hs20_icons[i]; in anqp_add_icon_binary_file()
873 if (i < hapd->conf->hs20_icons_count) in anqp_add_icon_binary_file()
874 icon = &hapd->conf->hs20_icons[i]; in anqp_add_icon_binary_file()
912 static void anqp_add_operator_icon_metadata(struct hostapd_data *hapd, in anqp_add_operator_icon_metadata() argument
915 struct hostapd_bss_config *bss = hapd->conf; in anqp_add_operator_icon_metadata()
939 static void anqp_add_mbo_cell_data_conn_pref(struct hostapd_data *hapd, in anqp_add_mbo_cell_data_conn_pref() argument
942 if (hapd->conf->mbo_cell_data_conn_pref >= 0) { in anqp_add_mbo_cell_data_conn_pref()
947 wpabuf_put_u8(buf, hapd->conf->mbo_cell_data_conn_pref); in anqp_add_mbo_cell_data_conn_pref()
954 static size_t anqp_get_required_len(struct hostapd_data *hapd, in anqp_get_required_len() argument
962 struct anqp_element *elem = get_anqp_elem(hapd, infoid[i]); in anqp_get_required_len()
973 gas_serv_build_gas_resp_payload(struct hostapd_data *hapd, in gas_serv_build_gas_resp_payload() argument
991 len += 2 * dl_list_len(&hapd->conf->fils_realms); in gas_serv_build_gas_resp_payload()
993 len += anqp_get_required_len(hapd, extra_req, num_extra_req); in gas_serv_build_gas_resp_payload()
1000 anqp_add_capab_list(hapd, buf); in gas_serv_build_gas_resp_payload()
1002 anqp_add_venue_name(hapd, buf); in gas_serv_build_gas_resp_payload()
1004 anqp_add_elem(hapd, buf, ANQP_EMERGENCY_CALL_NUMBER); in gas_serv_build_gas_resp_payload()
1006 anqp_add_network_auth_type(hapd, buf); in gas_serv_build_gas_resp_payload()
1008 anqp_add_roaming_consortium(hapd, buf); in gas_serv_build_gas_resp_payload()
1010 anqp_add_ip_addr_type_availability(hapd, buf); in gas_serv_build_gas_resp_payload()
1012 anqp_add_nai_realm(hapd, buf, home_realm, home_realm_len, in gas_serv_build_gas_resp_payload()
1016 anqp_add_3gpp_cellular_network(hapd, buf); in gas_serv_build_gas_resp_payload()
1018 anqp_add_elem(hapd, buf, ANQP_AP_GEOSPATIAL_LOCATION); in gas_serv_build_gas_resp_payload()
1020 anqp_add_elem(hapd, buf, ANQP_AP_CIVIC_LOCATION); in gas_serv_build_gas_resp_payload()
1022 anqp_add_elem(hapd, buf, ANQP_AP_LOCATION_PUBLIC_URI); in gas_serv_build_gas_resp_payload()
1024 anqp_add_domain_name(hapd, buf); in gas_serv_build_gas_resp_payload()
1026 anqp_add_elem(hapd, buf, ANQP_EMERGENCY_ALERT_URI); in gas_serv_build_gas_resp_payload()
1028 anqp_add_elem(hapd, buf, ANQP_TDLS_CAPABILITY); in gas_serv_build_gas_resp_payload()
1030 anqp_add_elem(hapd, buf, ANQP_EMERGENCY_NAI); in gas_serv_build_gas_resp_payload()
1035 anqp_add_fils_realm_info(hapd, buf); in gas_serv_build_gas_resp_payload()
1040 anqp_add_venue_url(hapd, buf); in gas_serv_build_gas_resp_payload()
1043 anqp_add_elem(hapd, buf, extra_req[i]); in gas_serv_build_gas_resp_payload()
1048 anqp_add_hs_capab_list(hapd, buf); in gas_serv_build_gas_resp_payload()
1050 anqp_add_operator_friendly_name(hapd, buf); in gas_serv_build_gas_resp_payload()
1052 anqp_add_wan_metrics(hapd, buf); in gas_serv_build_gas_resp_payload()
1054 anqp_add_connection_capability(hapd, buf); in gas_serv_build_gas_resp_payload()
1056 anqp_add_operating_class(hapd, buf); in gas_serv_build_gas_resp_payload()
1058 anqp_add_osu_providers_list(hapd, buf); in gas_serv_build_gas_resp_payload()
1060 anqp_add_icon_binary_file(hapd, buf, icon_name, icon_name_len); in gas_serv_build_gas_resp_payload()
1062 anqp_add_operator_icon_metadata(hapd, buf); in gas_serv_build_gas_resp_payload()
1064 anqp_add_osu_providers_nai_list(hapd, buf); in gas_serv_build_gas_resp_payload()
1069 anqp_add_mbo_cell_data_conn_pref(hapd, buf); in gas_serv_build_gas_resp_payload()
1102 static void rx_anqp_query_list_id(struct hostapd_data *hapd, u16 info_id, in rx_anqp_query_list_id() argument
1112 hapd->conf->venue_name != NULL, qi); in rx_anqp_query_list_id()
1117 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1121 hapd->conf->network_auth_type != NULL, qi); in rx_anqp_query_list_id()
1125 hapd->conf->roaming_consortium != NULL, qi); in rx_anqp_query_list_id()
1130 hapd->conf->ipaddr_type_configured, qi); in rx_anqp_query_list_id()
1134 hapd->conf->nai_realm_data != NULL, qi); in rx_anqp_query_list_id()
1139 hapd->conf->anqp_3gpp_cell_net != NULL, qi); in rx_anqp_query_list_id()
1144 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1149 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1154 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1158 hapd->conf->domain_name != NULL, qi); in rx_anqp_query_list_id()
1163 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1168 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1173 get_anqp_elem(hapd, info_id) != NULL, qi); in rx_anqp_query_list_id()
1178 !dl_list_empty(&hapd->conf->fils_realms)) { in rx_anqp_query_list_id()
1183 if (info_id == ANQP_VENUE_URL && hapd->conf->venue_url) { in rx_anqp_query_list_id()
1186 } else if (!get_anqp_elem(hapd, info_id)) { in rx_anqp_query_list_id()
1205 static void rx_anqp_query_list(struct hostapd_data *hapd, in rx_anqp_query_list() argument
1213 rx_anqp_query_list_id(hapd, WPA_GET_LE16(pos), qi); in rx_anqp_query_list()
1221 static void rx_anqp_hs_query_list(struct hostapd_data *hapd, u8 subtype, in rx_anqp_hs_query_list() argument
1232 hapd->conf->hs20_oper_friendly_name != NULL, qi); in rx_anqp_hs_query_list()
1236 hapd->conf->hs20_wan_metrics != NULL, qi); in rx_anqp_hs_query_list()
1241 hapd->conf->hs20_connection_capability != NULL, in rx_anqp_hs_query_list()
1246 hapd->conf->hs20_operating_class != NULL, qi); in rx_anqp_hs_query_list()
1250 hapd->conf->hs20_osu_providers_count, qi); in rx_anqp_hs_query_list()
1255 hapd->conf->hs20_operator_icon_count, qi); in rx_anqp_hs_query_list()
1260 hapd->conf->hs20_osu_providers_nai_count, qi); in rx_anqp_hs_query_list()
1270 static void rx_anqp_hs_nai_home_realm(struct hostapd_data *hapd, in rx_anqp_hs_nai_home_realm() argument
1277 if (hapd->conf->nai_realm_data != NULL) { in rx_anqp_hs_nai_home_realm()
1287 static void rx_anqp_hs_icon_request(struct hostapd_data *hapd, in rx_anqp_hs_icon_request() argument
1294 if (hapd->conf->hs20_icons_count) { in rx_anqp_hs_icon_request()
1304 static void rx_anqp_vendor_specific_hs20(struct hostapd_data *hapd, in rx_anqp_vendor_specific_hs20() argument
1319 rx_anqp_hs_query_list(hapd, *pos, qi); in rx_anqp_vendor_specific_hs20()
1324 rx_anqp_hs_nai_home_realm(hapd, pos, end, qi); in rx_anqp_vendor_specific_hs20()
1327 rx_anqp_hs_icon_request(hapd, pos, end, qi); in rx_anqp_vendor_specific_hs20()
1340 static void rx_anqp_vendor_specific_p2p(struct hostapd_data *hapd, in rx_anqp_vendor_specific_p2p() argument
1359 static void rx_anqp_mbo_query_list(struct hostapd_data *hapd, u8 subtype, in rx_anqp_mbo_query_list() argument
1366 hapd->conf->mbo_cell_data_conn_pref >= 0, qi); in rx_anqp_mbo_query_list()
1376 static void rx_anqp_vendor_specific_mbo(struct hostapd_data *hapd, in rx_anqp_vendor_specific_mbo() argument
1390 rx_anqp_mbo_query_list(hapd, *pos, qi); in rx_anqp_vendor_specific_mbo()
1404 static void rx_anqp_vendor_specific(struct hostapd_data *hapd, in rx_anqp_vendor_specific() argument
1427 rx_anqp_vendor_specific_p2p(hapd, qi); in rx_anqp_vendor_specific()
1432 rx_anqp_vendor_specific_hs20(hapd, pos + 1, end, qi); in rx_anqp_vendor_specific()
1437 rx_anqp_vendor_specific_mbo(hapd, pos + 1, end, qi); in rx_anqp_vendor_specific()
1448 static void gas_serv_req_local_processing(struct hostapd_data *hapd, in gas_serv_req_local_processing() argument
1455 buf = gas_serv_build_gas_resp_payload(hapd, qi->request, in gas_serv_req_local_processing()
1473 if (wpabuf_len(buf) > hapd->conf->gas_frag_limit || in gas_serv_req_local_processing()
1474 hapd->conf->gas_comeback_delay) { in gas_serv_req_local_processing()
1478 if (hapd->conf->gas_comeback_delay) { in gas_serv_req_local_processing()
1480 comeback_delay = hapd->conf->gas_comeback_delay; in gas_serv_req_local_processing()
1485 di = gas_dialog_create(hapd, sa, dialog_token); in gas_serv_req_local_processing()
1513 hostapd_drv_send_action(hapd, hapd->iface->freq, 0, sa, in gas_serv_req_local_processing()
1517 hostapd_drv_send_action_addr3_ap(hapd, hapd->iface->freq, 0, sa, in gas_serv_req_local_processing()
1525 void gas_serv_req_dpp_processing(struct hostapd_data *hapd, in gas_serv_req_dpp_processing() argument
1531 if (wpabuf_len(buf) > hapd->conf->gas_frag_limit || in gas_serv_req_dpp_processing()
1532 hapd->conf->gas_comeback_delay) { in gas_serv_req_dpp_processing()
1536 if (hapd->conf->gas_comeback_delay) { in gas_serv_req_dpp_processing()
1538 comeback_delay = hapd->conf->gas_comeback_delay; in gas_serv_req_dpp_processing()
1543 di = gas_dialog_create(hapd, sa, dialog_token); in gas_serv_req_dpp_processing()
1577 hostapd_dpp_gas_status_handler(hapd, 1); in gas_serv_req_dpp_processing()
1585 hostapd_drv_send_action(hapd, freq ? freq : hapd->iface->freq, 0, sa, in gas_serv_req_dpp_processing()
1593 static void gas_serv_rx_gas_initial_req(struct hostapd_data *hapd, in gas_serv_rx_gas_initial_req() argument
1615 wpa_msg(hapd->msg_ctx, MSG_DEBUG, in gas_serv_rx_gas_initial_req()
1620 wpa_msg(hapd->msg_ctx, MSG_DEBUG, in gas_serv_rx_gas_initial_req()
1628 wpa_msg(hapd->msg_ctx, MSG_DEBUG, in gas_serv_rx_gas_initial_req()
1646 wpa_msg(hapd->msg_ctx, MSG_DEBUG, in gas_serv_rx_gas_initial_req()
1661 hostapd_drv_send_action(hapd, hapd->iface->freq, 0, sa, in gas_serv_rx_gas_initial_req()
1665 hostapd_drv_send_action_addr3_ap(hapd, in gas_serv_rx_gas_initial_req()
1666 hapd->iface->freq, 0, in gas_serv_rx_gas_initial_req()
1687 msg = hostapd_dpp_gas_req_handler(hapd, sa, pos, slen, in gas_serv_rx_gas_initial_req()
1691 gas_serv_req_dpp_processing(hapd, sa, dialog_token, prot, msg, in gas_serv_rx_gas_initial_req()
1716 rx_anqp_query_list(hapd, pos, pos + elen, &qi); in gas_serv_rx_gas_initial_req()
1719 rx_anqp_vendor_specific(hapd, pos, pos + elen, &qi); in gas_serv_rx_gas_initial_req()
1730 gas_serv_req_local_processing(hapd, sa, dialog_token, &qi, prot, in gas_serv_rx_gas_initial_req()
1735 static void gas_serv_rx_gas_comeback_req(struct hostapd_data *hapd, in gas_serv_rx_gas_comeback_req() argument
1750 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: Dialog Token: %u", in gas_serv_rx_gas_comeback_req()
1753 dialog = gas_serv_dialog_find(hapd, sa, dialog_token); in gas_serv_rx_gas_comeback_req()
1755 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: No pending SD " in gas_serv_rx_gas_comeback_req()
1770 if (frag_len > hapd->conf->gas_frag_limit) { in gas_serv_rx_gas_comeback_req()
1771 frag_len = hapd->conf->gas_frag_limit; in gas_serv_rx_gas_comeback_req()
1774 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: resp frag_len %u", in gas_serv_rx_gas_comeback_req()
1779 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: Failed to allocate " in gas_serv_rx_gas_comeback_req()
1806 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: Tx GAS Comeback Response " in gas_serv_rx_gas_comeback_req()
1813 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: %d more bytes remain " in gas_serv_rx_gas_comeback_req()
1818 wpa_msg(hapd->msg_ctx, MSG_DEBUG, "GAS: All fragments of " in gas_serv_rx_gas_comeback_req()
1822 hostapd_dpp_gas_status_handler(hapd, 1); in gas_serv_rx_gas_comeback_req()
1825 gas_serv_free_dialogs(hapd, sa); in gas_serv_rx_gas_comeback_req()
1832 hostapd_drv_send_action(hapd, hapd->iface->freq, 0, sa, in gas_serv_rx_gas_comeback_req()
1836 hostapd_drv_send_action_addr3_ap(hapd, hapd->iface->freq, 0, sa, in gas_serv_rx_gas_comeback_req()
1846 struct hostapd_data *hapd = ctx; in gas_serv_rx_public_action() local
1864 if (hapd->conf->gas_address3 == 1) in gas_serv_rx_public_action()
1866 else if (hapd->conf->gas_address3 == 2) in gas_serv_rx_public_action()
1874 gas_serv_rx_gas_initial_req(hapd, sa, data + 1, len - 1, prot, in gas_serv_rx_public_action()
1878 gas_serv_rx_gas_comeback_req(hapd, sa, data + 1, len - 1, prot, in gas_serv_rx_public_action()
1885 int gas_serv_init(struct hostapd_data *hapd) in gas_serv_init() argument
1887 hapd->public_action_cb2 = gas_serv_rx_public_action; in gas_serv_init()
1888 hapd->public_action_cb2_ctx = hapd; in gas_serv_init()
1893 void gas_serv_deinit(struct hostapd_data *hapd) in gas_serv_deinit() argument