Lines Matching refs:bss

27 #include "bss.h"
50 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
53 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
230 static int additional_roaming_consortiums(struct wpa_bss *bss)
233 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
248 struct wpa_bss *bss)
259 MAC2STR(bss->bssid));
260 wpa_s->interworking_gas_bss = bss;
268 additional_roaming_consortiums(bss)))
284 if (wpa_bss_get_vendor_ie(bss, HS20_IE_VENDOR_TYPE)) {
319 res = gas_query_req(wpa_s->gas, bss->bssid, bss->freq, 0, buf,
881 struct wpa_cred *cred, struct wpa_bss *bss)
893 if (ssid->ssid_len != bss->ssid_len ||
894 os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) != 0)
908 struct wpa_bss *bss)
915 if (ssid->ssid_len != bss->ssid_len ||
916 os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) != 0)
970 struct wpa_bss *bss, int only_add)
978 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL)
982 " (3GPP)", MAC2STR(bss->bssid));
984 if (already_connected(wpa_s, cred, bss)) {
986 MAC2STR(bss->bssid));
990 remove_duplicate_network(wpa_s, cred, bss);
1001 ssid->ssid = os_zalloc(bss->ssid_len + 1);
1004 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
1005 ssid->ssid_len = bss->ssid_len;
1170 static int cred_no_required_oi_match(struct wpa_cred *cred, struct wpa_bss *bss)
1177 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
1180 (bss->anqp == NULL || bss->anqp->roaming_consortium == NULL))
1184 bss->anqp ?
1185 bss->anqp->roaming_consortium : NULL,
1191 static int cred_excluded_ssid(struct wpa_cred *cred, struct wpa_bss *bss)
1200 if (bss->ssid_len == e->ssid_len &&
1201 os_memcmp(bss->ssid, e->ssid, e->ssid_len) == 0)
1210 struct wpa_cred *cred, struct wpa_bss *bss)
1226 if (bss->anqp == NULL || bss->anqp->hs20_wan_metrics == NULL)
1229 wan = wpabuf_head(bss->anqp->hs20_wan_metrics);
1251 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1252 bss->anqp->domain_name : NULL);
1271 struct wpa_cred *cred, struct wpa_bss *bss)
1279 ie = wpa_bss_get_ie(bss, WLAN_EID_BSS_LOAD);
1283 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1284 bss->anqp->domain_name : NULL);
1323 struct wpa_cred *cred, struct wpa_bss *bss)
1334 if (bss->anqp == NULL || bss->anqp->hs20_connection_capability == NULL)
1338 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1339 bss->anqp->domain_name : NULL);
1343 capab = wpabuf_head(bss->anqp->hs20_connection_capability);
1344 end = capab + wpabuf_len(bss->anqp->hs20_connection_capability);
1369 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
1377 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
1378 anqp = bss->anqp ? bss->anqp->roaming_consortium : NULL;
1401 if (cred_no_required_oi_match(cred, bss))
1403 if (!ignore_bw && cred_below_min_backhaul(wpa_s, cred, bss))
1405 if (!ignore_bw && cred_over_max_bss_load(wpa_s, cred, bss))
1407 if (!ignore_bw && cred_conn_capab_missing(wpa_s, cred, bss))
1409 if (cred_excluded_ssid(cred, bss)) {
1561 struct wpa_bss *bss, int only_add)
1569 " based on roaming consortium match", MAC2STR(bss->bssid));
1571 if (already_connected(wpa_s, cred, bss)) {
1573 MAC2STR(bss->bssid));
1577 remove_duplicate_network(wpa_s, cred, bss);
1587 ssid->ssid = os_zalloc(bss->ssid_len + 1);
1590 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
1591 ssid->ssid_len = bss->ssid_len;
1596 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
1597 anqp = bss->anqp ? bss->anqp->roaming_consortium : NULL;
1642 int interworking_connect(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
1654 if (wpa_s->conf->cred == NULL || bss == NULL)
1656 if (disallowed_bssid(wpa_s, bss->bssid) ||
1657 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len)) {
1660 MACSTR, MAC2STR(bss->bssid));
1666 MAC2STR(bss->bssid));
1668 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN)) {
1679 wpa_s, bss, 0, excl);
1688 cred = interworking_credentials_available_realm(wpa_s, bss, 0, excl);
1697 cred_3gpp = interworking_credentials_available_3gpp(wpa_s, bss, 0,
1711 wpa_s, bss, 1, excl);
1720 cred = interworking_credentials_available_realm(wpa_s, bss, 1,
1730 cred_3gpp = interworking_credentials_available_3gpp(wpa_s, bss,
1745 bss, only_add);
1749 return interworking_connect_3gpp(wpa_s, cred_3gpp, bss,
1756 MACSTR, MAC2STR(bss->bssid));
1760 realm = nai_realm_parse(bss->anqp ? bss->anqp->nai_realm : NULL,
1765 MACSTR, MAC2STR(bss->bssid));
1780 MACSTR, MAC2STR(bss->bssid));
1786 MAC2STR(bss->bssid));
1788 if (already_connected(wpa_s, cred, bss)) {
1790 MAC2STR(bss->bssid));
1795 remove_duplicate_network(wpa_s, cred, bss);
1807 ssid->ssid = os_zalloc(bss->ssid_len + 1);
1810 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
1811 ssid->ssid_len = bss->ssid_len;
1928 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
1937 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL) {
1940 bss->anqp, bss->anqp ? bss->anqp->anqp_3gpp : NULL);
2012 MAC2STR(bss->bssid));
2013 ret = plmn_id_match(bss->anqp->anqp_3gpp, imsi, mnc_len);
2017 if (cred_no_required_oi_match(cred, bss))
2020 cred_below_min_backhaul(wpa_s, cred, bss))
2023 cred_over_max_bss_load(wpa_s, cred, bss))
2026 cred_conn_capab_missing(wpa_s, cred, bss))
2028 if (cred_excluded_ssid(cred, bss)) {
2053 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
2061 if (bss->anqp == NULL || bss->anqp->nai_realm == NULL)
2068 MACSTR, MAC2STR(bss->bssid));
2069 realm = nai_realm_parse(bss->anqp->nai_realm, &count);
2073 MACSTR, MAC2STR(bss->bssid));
2085 if (cred_no_required_oi_match(cred, bss))
2088 cred_below_min_backhaul(wpa_s, cred, bss))
2091 cred_over_max_bss_load(wpa_s, cred, bss))
2094 cred_conn_capab_missing(wpa_s, cred, bss))
2096 if (cred_excluded_ssid(cred, bss)) {
2129 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
2135 if (disallowed_bssid(wpa_s, bss->bssid) ||
2136 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len)) {
2138 MACSTR, MAC2STR(bss->bssid));
2142 cred = interworking_credentials_available_realm(wpa_s, bss, ignore_bw,
2144 cred2 = interworking_credentials_available_3gpp(wpa_s, bss, ignore_bw,
2157 wpa_s, bss, ignore_bw, &excluded2);
2175 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int *excluded)
2181 cred = interworking_credentials_available_helper(wpa_s, bss, 0,
2185 return interworking_credentials_available_helper(wpa_s, bss, 1,
2305 struct wpa_bss *bss;
2308 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2313 if (ssid->ssid_len != bss->ssid_len ||
2314 os_memcmp(ssid->ssid, bss->ssid, ssid->ssid_len) !=
2348 struct wpa_bss *bss)
2352 if (bss->anqp == NULL || bss->anqp->domain_name == NULL) {
2357 if (interworking_home_sp_cred(wpa_s, cred, bss->anqp->domain_name) > 0)
2365 bss->anqp->domain_name)) {
2381 struct wpa_bss *bss;
2395 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2396 if (bss == selected)
2398 cred2 = interworking_credentials_available(wpa_s, bss, NULL);
2401 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN))
2403 prio = roaming_prio(wpa_s, cred2, bss);
2405 MACSTR " (cred=%d)", prio, MAC2STR(bss->bssid),
2412 bh2 = cred_below_min_backhaul(wpa_s, cred2, bss);
2413 load2 = cred_over_max_bss_load(wpa_s, cred2, bss);
2414 conn2 = cred_conn_capab_missing(wpa_s, cred2, bss);
2418 wpa_printf(MSG_DEBUG, "Interworking: Better roaming partner " MACSTR " selected", MAC2STR(bss->bssid));
2420 selected = bss;
2431 struct wpa_bss *bss, *selected = NULL, *selected_home = NULL;
2445 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2448 cred = interworking_credentials_available(wpa_s, bss,
2453 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN)) {
2461 MAC2STR(bss->bssid));
2466 res = interworking_home_sp(wpa_s, bss->anqp ?
2467 bss->anqp->domain_name : NULL);
2474 bh = cred_below_min_backhaul(wpa_s, cred, bss);
2475 bss_load = cred_over_max_bss_load(wpa_s, cred, bss);
2476 conn_capab = cred_conn_capab_missing(wpa_s, cred, bss);
2479 MAC2STR(bss->bssid), type,
2493 selected2 = bss;
2501 selected2_home = bss;
2508 selected = bss;
2516 selected_home = bss;
2591 interworking_match_anqp_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
2595 if (is_zero_ether_addr(bss->hessid))
2598 dl_list_for_each(other, &wpa_s->bss, struct wpa_bss, list) {
2599 if (other == bss)
2610 if (os_memcmp(bss->hessid, other->hessid, ETH_ALEN) != 0)
2612 if (bss->ssid_len != other->ssid_len ||
2613 os_memcmp(bss->ssid, other->ssid, bss->ssid_len) != 0)
2619 MAC2STR(other->bssid), MAC2STR(bss->bssid));
2630 struct wpa_bss *bss;
2651 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2652 if (!(bss->caps & IEEE80211_CAP_ESS))
2654 if (!wpa_bss_ext_capab(bss, WLAN_EXT_CAPAB_INTERWORKING))
2656 if (disallowed_bssid(wpa_s, bss->bssid) ||
2657 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len))
2660 if (!(bss->flags & WPA_BSS_ANQP_FETCH_TRIED)) {
2661 if (bss->anqp == NULL) {
2662 bss->anqp = interworking_match_anqp_info(wpa_s,
2663 bss);
2664 if (bss->anqp) {
2668 bss->anqp = wpa_bss_anqp_alloc();
2669 if (bss->anqp == NULL)
2673 bss->flags |= WPA_BSS_ANQP_FETCH_TRIED;
2676 MAC2STR(bss->bssid), MAC2STR(bss->hessid));
2677 interworking_anqp_send_req(wpa_s, bss);
2707 struct wpa_bss *bss;
2709 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list)
2710 bss->flags &= ~WPA_BSS_ANQP_FETCH_TRIED;
2754 struct wpa_bss *bss;
2757 bss = wpa_bss_get_bssid(wpa_s, dst);
2758 if (!bss) {
2765 wpa_bss_anqp_unshare_alloc(bss);
2766 freq = bss->freq;
2785 mbo = mbo_build_anqp_buf(wpa_s, bss, mbo_subtypes);
2878 struct wpa_bss *bss, const u8 *sa,
2887 if (bss)
2888 anqp = bss->anqp;
3012 hs20_parse_rx_hs20_anqp_resp(wpa_s, bss, sa,
3019 mbo_parse_rx_anqp_resp(wpa_s, bss, sa,
3056 struct wpa_bss *bss = NULL, *tmp;
3089 dl_list_for_each_reverse(tmp, &wpa_s->bss, struct wpa_bss, list) {
3092 bss = tmp;
3096 if (bss == NULL)
3097 bss = wpa_bss_get_bssid(wpa_s, dst);
3122 interworking_parse_rx_anqp_resp(wpa_s, bss, dst, info_id, pos,
3205 struct wpa_bss *bss;
3211 bss = wpa_bss_get_bssid(wpa_s, dst);
3212 if (bss)
3213 freq = bss->freq;