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,
226 static int additional_roaming_consortiums(struct wpa_bss *bss)
229 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
244 struct wpa_bss *bss)
255 MAC2STR(bss->bssid));
256 wpa_s->interworking_gas_bss = bss;
264 additional_roaming_consortiums(bss)))
280 if (wpa_bss_get_vendor_ie(bss, HS20_IE_VENDOR_TYPE)) {
313 res = gas_query_req(wpa_s->gas, bss->bssid, bss->freq, buf,
870 struct wpa_cred *cred, struct wpa_bss *bss)
882 if (ssid->ssid_len != bss->ssid_len ||
883 os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) != 0)
897 struct wpa_bss *bss)
904 if (ssid->ssid_len != bss->ssid_len ||
905 os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) != 0)
960 struct wpa_bss *bss, int only_add)
968 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL)
972 " (3GPP)", MAC2STR(bss->bssid));
974 if (already_connected(wpa_s, cred, bss)) {
976 MAC2STR(bss->bssid));
980 remove_duplicate_network(wpa_s, cred, bss);
991 ssid->ssid = os_zalloc(bss->ssid_len + 1);
994 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
995 ssid->ssid_len = bss->ssid_len;
1143 static int cred_no_required_oi_match(struct wpa_cred *cred, struct wpa_bss *bss)
1150 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
1153 (bss->anqp == NULL || bss->anqp->roaming_consortium == NULL))
1157 bss->anqp ?
1158 bss->anqp->roaming_consortium : NULL,
1164 static int cred_excluded_ssid(struct wpa_cred *cred, struct wpa_bss *bss)
1173 if (bss->ssid_len == e->ssid_len &&
1174 os_memcmp(bss->ssid, e->ssid, e->ssid_len) == 0)
1183 struct wpa_cred *cred, struct wpa_bss *bss)
1198 if (bss->anqp == NULL || bss->anqp->hs20_wan_metrics == NULL)
1201 wan = wpabuf_head(bss->anqp->hs20_wan_metrics);
1223 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1224 bss->anqp->domain_name : NULL);
1242 struct wpa_cred *cred, struct wpa_bss *bss)
1250 ie = wpa_bss_get_ie(bss, WLAN_EID_BSS_LOAD);
1254 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1255 bss->anqp->domain_name : NULL);
1290 struct wpa_cred *cred, struct wpa_bss *bss)
1300 if (bss->anqp == NULL || bss->anqp->hs20_connection_capability == NULL)
1304 res = interworking_home_sp_cred(wpa_s, cred, bss->anqp ?
1305 bss->anqp->domain_name : NULL);
1309 capab = wpabuf_head(bss->anqp->hs20_connection_capability);
1310 end = capab + wpabuf_len(bss->anqp->hs20_connection_capability);
1334 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
1341 ie = wpa_bss_get_ie(bss, WLAN_EID_ROAMING_CONSORTIUM);
1344 (bss->anqp == NULL || bss->anqp->roaming_consortium == NULL))
1355 bss->anqp ?
1356 bss->anqp->roaming_consortium :
1362 if (cred_no_required_oi_match(cred, bss))
1364 if (!ignore_bw && cred_below_min_backhaul(wpa_s, cred, bss))
1366 if (!ignore_bw && cred_over_max_bss_load(wpa_s, cred, bss))
1368 if (!ignore_bw && cred_conn_capab_missing(wpa_s, cred, bss))
1370 if (cred_excluded_ssid(cred, bss)) {
1505 struct wpa_bss *bss, int only_add)
1510 " based on roaming consortium match", MAC2STR(bss->bssid));
1512 if (already_connected(wpa_s, cred, bss)) {
1514 MAC2STR(bss->bssid));
1518 remove_duplicate_network(wpa_s, cred, bss);
1528 ssid->ssid = os_zalloc(bss->ssid_len + 1);
1531 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
1532 ssid->ssid_len = bss->ssid_len;
1564 struct wpa_bss *bss, int allow_excluded,
1576 if (wpa_s->conf->cred == NULL || bss == NULL)
1578 if (disallowed_bssid(wpa_s, bss->bssid) ||
1579 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len)) {
1582 MACSTR, MAC2STR(bss->bssid));
1588 MAC2STR(bss->bssid), allow_excluded);
1590 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN)) {
1601 wpa_s, bss, 0, excl);
1610 cred = interworking_credentials_available_realm(wpa_s, bss, 0, excl);
1619 cred_3gpp = interworking_credentials_available_3gpp(wpa_s, bss, 0,
1633 wpa_s, bss, 1, excl);
1642 cred = interworking_credentials_available_realm(wpa_s, bss, 1,
1652 cred_3gpp = interworking_credentials_available_3gpp(wpa_s, bss,
1667 bss, only_add);
1671 return interworking_connect_3gpp(wpa_s, cred_3gpp, bss,
1678 MACSTR, MAC2STR(bss->bssid));
1682 realm = nai_realm_parse(bss->anqp ? bss->anqp->nai_realm : NULL,
1687 MACSTR, MAC2STR(bss->bssid));
1702 MACSTR, MAC2STR(bss->bssid));
1708 MAC2STR(bss->bssid));
1710 if (already_connected(wpa_s, cred, bss)) {
1712 MAC2STR(bss->bssid));
1717 remove_duplicate_network(wpa_s, cred, bss);
1729 ssid->ssid = os_zalloc(bss->ssid_len + 1);
1732 os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
1733 ssid->ssid_len = bss->ssid_len;
1823 int interworking_connect(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
1826 return interworking_connect_helper(wpa_s, bss, 1, only_add);
1856 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
1865 if (bss->anqp == NULL || bss->anqp->anqp_3gpp == NULL) {
1868 bss->anqp, bss->anqp ? bss->anqp->anqp_3gpp : NULL);
1940 MAC2STR(bss->bssid));
1941 ret = plmn_id_match(bss->anqp->anqp_3gpp, imsi, mnc_len);
1945 if (cred_no_required_oi_match(cred, bss))
1948 cred_below_min_backhaul(wpa_s, cred, bss))
1951 cred_over_max_bss_load(wpa_s, cred, bss))
1954 cred_conn_capab_missing(wpa_s, cred, bss))
1956 if (cred_excluded_ssid(cred, bss)) {
1981 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
1989 if (bss->anqp == NULL || bss->anqp->nai_realm == NULL)
1996 MACSTR, MAC2STR(bss->bssid));
1997 realm = nai_realm_parse(bss->anqp->nai_realm, &count);
2001 MACSTR, MAC2STR(bss->bssid));
2013 if (cred_no_required_oi_match(cred, bss))
2016 cred_below_min_backhaul(wpa_s, cred, bss))
2019 cred_over_max_bss_load(wpa_s, cred, bss))
2022 cred_conn_capab_missing(wpa_s, cred, bss))
2024 if (cred_excluded_ssid(cred, bss)) {
2057 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int ignore_bw,
2063 if (disallowed_bssid(wpa_s, bss->bssid) ||
2064 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len)) {
2066 MACSTR, MAC2STR(bss->bssid));
2070 cred = interworking_credentials_available_realm(wpa_s, bss, ignore_bw,
2072 cred2 = interworking_credentials_available_3gpp(wpa_s, bss, ignore_bw,
2085 wpa_s, bss, ignore_bw, &excluded2);
2103 struct wpa_supplicant *wpa_s, struct wpa_bss *bss, int *excluded)
2109 cred = interworking_credentials_available_helper(wpa_s, bss, 0,
2113 return interworking_credentials_available_helper(wpa_s, bss, 1,
2229 struct wpa_bss *bss;
2232 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2237 if (ssid->ssid_len != bss->ssid_len ||
2238 os_memcmp(ssid->ssid, bss->ssid, ssid->ssid_len) !=
2272 struct wpa_bss *bss)
2276 if (bss->anqp == NULL || bss->anqp->domain_name == NULL) {
2281 if (interworking_home_sp_cred(wpa_s, cred, bss->anqp->domain_name) > 0)
2289 bss->anqp->domain_name)) {
2305 struct wpa_bss *bss;
2319 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2320 if (bss == selected)
2322 cred2 = interworking_credentials_available(wpa_s, bss, NULL);
2325 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN))
2327 prio = roaming_prio(wpa_s, cred2, bss);
2329 MACSTR " (cred=%d)", prio, MAC2STR(bss->bssid),
2336 bh2 = cred_below_min_backhaul(wpa_s, cred2, bss);
2337 load2 = cred_over_max_bss_load(wpa_s, cred2, bss);
2338 conn2 = cred_conn_capab_missing(wpa_s, cred2, bss);
2342 wpa_printf(MSG_DEBUG, "Interworking: Better roaming partner " MACSTR " selected", MAC2STR(bss->bssid));
2344 selected = bss;
2355 struct wpa_bss *bss, *selected = NULL, *selected_home = NULL;
2369 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2372 cred = interworking_credentials_available(wpa_s, bss,
2377 if (!wpa_bss_get_ie(bss, WLAN_EID_RSN)) {
2385 MAC2STR(bss->bssid));
2390 res = interworking_home_sp(wpa_s, bss->anqp ?
2391 bss->anqp->domain_name : NULL);
2398 bh = cred_below_min_backhaul(wpa_s, cred, bss);
2399 bss_load = cred_over_max_bss_load(wpa_s, cred, bss);
2400 conn_capab = cred_conn_capab_missing(wpa_s, cred, bss);
2403 MAC2STR(bss->bssid), type,
2417 selected2 = bss;
2425 selected2_home = bss;
2432 selected = bss;
2440 selected_home = bss;
2514 interworking_match_anqp_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
2518 if (is_zero_ether_addr(bss->hessid))
2521 dl_list_for_each(other, &wpa_s->bss, struct wpa_bss, list) {
2522 if (other == bss)
2533 if (os_memcmp(bss->hessid, other->hessid, ETH_ALEN) != 0)
2535 if (bss->ssid_len != other->ssid_len ||
2536 os_memcmp(bss->ssid, other->ssid, bss->ssid_len) != 0)
2542 MAC2STR(other->bssid), MAC2STR(bss->bssid));
2553 struct wpa_bss *bss;
2573 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
2574 if (!(bss->caps & IEEE80211_CAP_ESS))
2576 ie = wpa_bss_get_ie(bss, WLAN_EID_EXT_CAPAB);
2579 if (disallowed_bssid(wpa_s, bss->bssid) ||
2580 disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len))
2583 if (!(bss->flags & WPA_BSS_ANQP_FETCH_TRIED)) {
2584 if (bss->anqp == NULL) {
2585 bss->anqp = interworking_match_anqp_info(wpa_s,
2586 bss);
2587 if (bss->anqp) {
2591 bss->anqp = wpa_bss_anqp_alloc();
2592 if (bss->anqp == NULL)
2596 bss->flags |= WPA_BSS_ANQP_FETCH_TRIED;
2598 MACSTR, MAC2STR(bss->bssid));
2599 interworking_anqp_send_req(wpa_s, bss);
2627 struct wpa_bss *bss;
2629 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list)
2630 bss->flags &= ~WPA_BSS_ANQP_FETCH_TRIED;
2673 struct wpa_bss *bss;
2676 bss = wpa_bss_get_bssid(wpa_s, dst);
2677 if (!bss) {
2684 wpa_bss_anqp_unshare_alloc(bss);
2685 freq = bss->freq;
2720 struct wpa_bss *bss, const u8 *sa,
2730 if (bss)
2731 anqp = bss->anqp;
2831 hs20_parse_rx_hs20_anqp_resp(wpa_s, bss, sa,
2867 struct wpa_bss *bss = NULL, *tmp;
2896 dl_list_for_each_reverse(tmp, &wpa_s->bss, struct wpa_bss, list) {
2899 bss = tmp;
2903 if (bss == NULL)
2904 bss = wpa_bss_get_bssid(wpa_s, dst);
2929 interworking_parse_rx_anqp_resp(wpa_s, bss, dst, info_id, pos,
3010 struct wpa_bss *bss;
3016 bss = wpa_bss_get_bssid(wpa_s, dst);
3017 if (bss)
3018 freq = bss->freq;