Lines Matching refs:anqp
528 static struct nai_realm * nai_realm_parse(struct wpabuf *anqp, u16 *count) in nai_realm_parse() argument
535 if (anqp == NULL) in nai_realm_parse()
537 left = wpabuf_len(anqp); in nai_realm_parse()
541 pos = wpabuf_head_u8(anqp); in nai_realm_parse()
738 static int plmn_id_match(struct wpabuf *anqp, const char *imsi, int mnc_len) in plmn_id_match() argument
764 if (anqp == NULL) in plmn_id_match()
766 pos = wpabuf_head_u8(anqp); in plmn_id_match()
767 end = pos + wpabuf_len(anqp); in plmn_id_match()
989 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL) in interworking_connect_3gpp()
1141 static int oi_anqp_match(const struct wpabuf *anqp, const u8 *oi, in oi_anqp_match() argument
1147 if (anqp == NULL) in oi_anqp_match()
1150 pos = wpabuf_head(anqp); in oi_anqp_match()
1151 end = pos + wpabuf_len(anqp); in oi_anqp_match()
1167 static int oi_match(const u8 *ie, const struct wpabuf *anqp, in oi_match() argument
1171 oi_anqp_match(anqp, oi, oi_len); in oi_match()
1175 static int cred_home_ois_match(const u8 *ie, const struct wpabuf *anqp, in cred_home_ois_match() argument
1181 if (oi_match(ie, anqp, cred->home_ois[i], in cred_home_ois_match()
1191 const struct wpabuf *anqp, in cred_roaming_consortiums_match() argument
1197 if (oi_match(ie, anqp, cred->roaming_consortiums[i], in cred_roaming_consortiums_match()
1217 (bss->anqp == NULL || bss->anqp->roaming_consortium == NULL)) in cred_no_required_oi_match()
1223 if (!oi_match(ie, bss->anqp ? in cred_no_required_oi_match()
1224 bss->anqp->roaming_consortium : NULL, in cred_no_required_oi_match()
1268 if (bss->anqp == NULL || bss->anqp->hs20_wan_metrics == NULL) in cred_below_min_backhaul()
1271 wan = wpabuf_head(bss->anqp->hs20_wan_metrics); in cred_below_min_backhaul()
1293 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ? in cred_below_min_backhaul()
1294 bss->anqp->domain_name : NULL); in cred_below_min_backhaul()
1325 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ? in cred_over_max_bss_load()
1326 bss->anqp->domain_name : NULL); in cred_over_max_bss_load()
1376 if (bss->anqp == NULL || bss->anqp->hs20_connection_capability == NULL) in cred_conn_capab_missing()
1380 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ? in cred_conn_capab_missing()
1381 bss->anqp->domain_name : NULL); in cred_conn_capab_missing()
1385 capab = wpabuf_head(bss->anqp->hs20_connection_capability); in cred_conn_capab_missing()
1386 end = capab + wpabuf_len(bss->anqp->hs20_connection_capability); in cred_conn_capab_missing()
1416 const struct wpabuf *anqp; in interworking_credentials_available_roaming_consortium() local
1420 anqp = bss->anqp ? bss->anqp->roaming_consortium : NULL; in interworking_credentials_available_roaming_consortium()
1422 if (!ie && !anqp) in interworking_credentials_available_roaming_consortium()
1443 if (!cred_home_ois_match(ie, anqp, cred) && in interworking_credentials_available_roaming_consortium()
1444 !cred_roaming_consortiums_match(ie, anqp, cred)) in interworking_credentials_available_roaming_consortium()
1627 const struct wpabuf *anqp; in interworking_connect_roaming_consortium() local
1659 anqp = bss->anqp ? bss->anqp->roaming_consortium : NULL; in interworking_connect_roaming_consortium()
1660 for (i = 0; (ie || anqp) && i < cred->num_roaming_consortiums; i++) { in interworking_connect_roaming_consortium()
1661 if (!oi_match(ie, anqp, cred->roaming_consortiums[i], in interworking_connect_roaming_consortium()
1821 realm = nai_realm_parse(bss->anqp ? bss->anqp->nai_realm : NULL, in interworking_connect()
1998 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL) { in interworking_credentials_available_3gpp()
2001 bss->anqp, bss->anqp ? bss->anqp->anqp_3gpp : NULL); in interworking_credentials_available_3gpp()
2074 ret = plmn_id_match(bss->anqp->anqp_3gpp, imsi, mnc_len); in interworking_credentials_available_3gpp()
2122 if (bss->anqp == NULL || bss->anqp->nai_realm == NULL) in interworking_credentials_available_realm()
2130 realm = nai_realm_parse(bss->anqp->nai_realm, &count); in interworking_credentials_available_realm()
2413 if (bss->anqp == NULL || bss->anqp->domain_name == NULL) { in roaming_prio()
2418 if (interworking_home_sp_cred(wpa_s, cred, bss->anqp->domain_name) > 0) in roaming_prio()
2426 bss->anqp->domain_name)) { in roaming_prio()
2527 res = interworking_home_sp(wpa_s, bss->anqp ? in interworking_select_network()
2528 bss->anqp->domain_name : NULL); in interworking_select_network()
2660 if (other->anqp == NULL) in interworking_match_anqp_info()
2662 if (other->anqp->roaming_consortium == NULL && in interworking_match_anqp_info()
2663 other->anqp->nai_realm == NULL && in interworking_match_anqp_info()
2664 other->anqp->anqp_3gpp == NULL && in interworking_match_anqp_info()
2665 other->anqp->domain_name == NULL) in interworking_match_anqp_info()
2679 other->anqp->users++; in interworking_match_anqp_info()
2680 return other->anqp; in interworking_match_anqp_info()
2720 if (bss->anqp == NULL) { in interworking_next_anqp_fetch()
2721 bss->anqp = interworking_match_anqp_info(wpa_s, in interworking_next_anqp_fetch()
2723 if (bss->anqp) { in interworking_next_anqp_fetch()
2727 bss->anqp = wpa_bss_anqp_alloc(); in interworking_next_anqp_fetch()
2728 if (bss->anqp == NULL) in interworking_next_anqp_fetch()
2886 struct wpa_bss_anqp *anqp, u16 info_id, in anqp_add_extra() argument
2891 if (!anqp) in anqp_add_extra()
2894 dl_list_for_each(tmp, &anqp->anqp_elems, struct wpa_bss_anqp_elem, in anqp_add_extra()
2907 dl_list_add(&anqp->anqp_elems, &elem->list); in anqp_add_extra()
2953 struct wpa_bss_anqp *anqp = NULL; in interworking_parse_rx_anqp_resp() local
2958 anqp = bss->anqp; in interworking_parse_rx_anqp_resp()
2966 if (anqp) { in interworking_parse_rx_anqp_resp()
2967 wpabuf_free(anqp->capability_list); in interworking_parse_rx_anqp_resp()
2968 anqp->capability_list = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
2975 if (anqp) { in interworking_parse_rx_anqp_resp()
2976 wpabuf_free(anqp->venue_name); in interworking_parse_rx_anqp_resp()
2977 anqp->venue_name = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
2986 if (anqp) { in interworking_parse_rx_anqp_resp()
2987 wpabuf_free(anqp->network_auth_type); in interworking_parse_rx_anqp_resp()
2988 anqp->network_auth_type = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
2996 if (anqp) { in interworking_parse_rx_anqp_resp()
2997 wpabuf_free(anqp->roaming_consortium); in interworking_parse_rx_anqp_resp()
2998 anqp->roaming_consortium = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
3007 if (anqp) { in interworking_parse_rx_anqp_resp()
3008 wpabuf_free(anqp->ip_addr_type_availability); in interworking_parse_rx_anqp_resp()
3009 anqp->ip_addr_type_availability = in interworking_parse_rx_anqp_resp()
3017 if (anqp) { in interworking_parse_rx_anqp_resp()
3018 wpabuf_free(anqp->nai_realm); in interworking_parse_rx_anqp_resp()
3019 anqp->nai_realm = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
3027 if (anqp) { in interworking_parse_rx_anqp_resp()
3028 wpabuf_free(anqp->anqp_3gpp); in interworking_parse_rx_anqp_resp()
3029 anqp->anqp_3gpp = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
3036 if (anqp) { in interworking_parse_rx_anqp_resp()
3037 wpabuf_free(anqp->domain_name); in interworking_parse_rx_anqp_resp()
3038 anqp->domain_name = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
3047 if (anqp) { in interworking_parse_rx_anqp_resp()
3048 wpabuf_free(anqp->fils_realm_info); in interworking_parse_rx_anqp_resp()
3049 anqp->fils_realm_info = wpabuf_alloc_copy(pos, slen); in interworking_parse_rx_anqp_resp()
3057 anqp_add_extra(wpa_s, anqp, info_id, pos, slen, in interworking_parse_rx_anqp_resp()
3112 anqp_add_extra(wpa_s, anqp, info_id, data, slen, in interworking_parse_rx_anqp_resp()