Home | History | Annotate | Download | only in hostapd

Lines Matching refs:bss

29 static int hostapd_config_read_vlan_file(struct hostapd_bss_config *bss,
97 if (bss->vlan_tail)
98 bss->vlan_tail->next = vlan;
100 bss->vlan = vlan;
101 bss->vlan_tail = vlan;
572 static int hostapd_parse_das_client(struct hostapd_bss_config *bss,
583 if (hostapd_parse_ip_addr(val, &bss->radius_das_client_addr))
586 os_free(bss->radius_das_shared_secret);
587 bss->radius_das_shared_secret = (u8 *) os_strdup(secret);
588 if (bss->radius_das_shared_secret == NULL)
590 bss->radius_das_shared_secret_len = os_strlen(secret);
755 struct hostapd_bss_config *bss;
760 bss = os_realloc_array(conf->bss, conf->num_bss + 1,
762 if (bss == NULL) {
764 "multi-BSS entry");
767 conf->bss = bss;
769 bss = &(conf->bss[conf->num_bss]);
770 os_memset(bss, 0, sizeof(*bss));
771 bss->radius = os_zalloc(sizeof(*bss->radius));
772 if (bss->radius == NULL) {
774 "multi-BSS RADIUS data");
779 conf->last_bss = bss;
781 hostapd_config_defaults_bss(bss);
782 os_strlcpy(bss->iface, ifname, sizeof(bss->iface));
783 os_memcpy(bss->ssid.vlan, bss->iface, IFNAMSIZ + 1);
886 static int add_r0kh(struct hostapd_bss_config *bss, char *value)
925 r0kh->next = bss->r0kh_list;
926 bss->r0kh_list = r0kh;
932 static int add_r1kh(struct hostapd_bss_config *bss, char *value)
970 r1kh->next = bss->r1kh_list;
971 bss->r1kh_list = r1kh;
1101 static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
1104 if (bss->ieee802_1x && !bss->eap_server &&
1105 !bss->radius->auth_servers) {
1111 if (bss->wpa && bss->wpa_psk_radius != PSK_RADIUS_IGNORED &&
1112 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
1118 if (bss->wpa && (bss->wpa_key_mgmt & WPA_KEY_MGMT_PSK) &&
1119 bss->ssid.wpa_psk == NULL && bss->ssid.wpa_passphrase == NULL &&
1120 bss->ssid.wpa_psk_file == NULL &&
1121 (bss->wpa_psk_radius != PSK_RADIUS_REQUIRED ||
1122 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH)) {
1128 if (hostapd_mac_comp_empty(bss->bssid) != 0) {
1132 if ((&conf->bss[i] != bss) &&
1133 (hostapd_mac_comp(conf->bss[i].bssid,
1134 bss->bssid) == 0)) {
1137 MAC2STR(bss->bssid),
1138 conf->bss[i].iface, bss->iface);
1145 if (wpa_key_mgmt_ft(bss->wpa_key_mgmt) &&
1146 (bss->nas_identifier == NULL ||
1147 os_strlen(bss->nas_identifier) < 1 ||
1148 os_strlen(bss->nas_identifier) > FT_R0KH_ID_MAX_LEN)) {
1158 bss->disable_11n = 1;
1164 bss->ssid.security_policy == SECURITY_STATIC_WEP) {
1165 bss->disable_11n = 1;
1170 if (conf->ieee80211n && bss->wpa &&
1171 !(bss->wpa_pairwise & WPA_CIPHER_CCMP) &&
1172 !(bss->rsn_pairwise & (WPA_CIPHER_CCMP | WPA_CIPHER_GCMP))) {
1173 bss->disable_11n = 1;
1181 if (bss->wps_state && bss->ignore_broadcast_ssid) {
1184 bss->wps_state = 0;
1187 if (bss->wps_state && bss->ssid.wep.keys_set && bss->wpa == 0) {
1190 bss->wps_state = 0;
1193 if (bss->wps_state && bss->wpa &&
1194 (!(bss->wpa & 2) ||
1195 !(bss->rsn_pairwise & WPA_CIPHER_CCMP))) {
1198 bss->wps_state = 0;
1203 if (bss->hs20 &&
1204 (!(bss->wpa & 2) ||
1205 !(bss->rsn_pairwise & (WPA_CIPHER_CCMP | WPA_CIPHER_GCMP)))) {
1228 if (hostapd_config_check_bss(&conf->bss[i], conf))
1237 static int parse_roaming_consortium(struct hostapd_bss_config *bss, char *pos,
1253 rc = os_realloc_array(bss->roaming_consortium,
1254 bss->roaming_consortium_count + 1,
1259 os_memcpy(rc[bss->roaming_consortium_count].oi, oi, len);
1260 rc[bss->roaming_consortium_count].len = len;
1262 bss->roaming_consortium = rc;
1263 bss->roaming_consortium_count++;
1306 static int parse_venue_name(struct hostapd_bss_config *bss, char *pos,
1309 if (parse_lang_string(&bss->venue_name, &bss->venue_name_count, pos)) {
1318 static int parse_3gpp_cell_net(struct hostapd_bss_config *bss, char *buf,
1377 os_free(bss->anqp_3gpp_cell_net);
1378 bss->anqp_3gpp_cell_net = info;
1379 bss->anqp_3gpp_cell_net_len = 2 + 3 + 3 * count;
1381 bss->anqp_3gpp_cell_net, bss->anqp_3gpp_cell_net_len);
1393 bss, char *buf, int line)
1400 offsets = os_calloc(bss->nai_realm_count * MAX_NAI_REALMS,
1405 for (i = 0; i < bss->nai_realm_count; i++) {
1406 realm = &bss->nai_realm_data[i];
1414 realm = os_realloc_array(bss->nai_realm_data, bss->nai_realm_count + 1,
1420 bss->nai_realm_data = realm;
1423 for (i = 0; i < bss->nai_realm_count; i++) {
1424 realm = &bss->nai_realm_data[i];
1435 realm = &bss->nai_realm_data[bss->nai_realm_count];
1524 bss->nai_realm_count++;
1537 static int hs20_parse_conn_capab(struct hostapd_bss_config *bss, char *buf,
1543 if (bss->hs20_connection_capability_len >= 0xfff0)
1546 conn_cap = os_realloc(bss->hs20_connection_capability,
1547 bss->hs20_connection_capability_len + 4);
1551 bss->hs20_connection_capability = conn_cap;
1552 conn_cap += bss->hs20_connection_capability_len;
1565 bss->hs20_connection_capability_len += 4;
1571 static int hs20_parse_wan_metrics(struct hostapd_bss_config *bss, char *buf,
1623 os_free(bss->hs20_wan_metrics);
1624 bss->hs20_wan_metrics = wan_metrics;
1636 static int hs20_parse_oper_friendly_name(struct hostapd_bss_config *bss,
1639 if (parse_lang_string(&bss->hs20_oper_friendly_name,
1640 &bss->hs20_oper_friendly_name_count, pos)) {
1676 struct hostapd_bss_config *bss,
1683 os_strlcpy(conf->bss[0].iface, pos,
1684 sizeof(conf->bss[0].iface));
1686 os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
1688 os_strlcpy(bss->wds_bridge, pos,
1689 sizeof(bss->wds_bridge));
1711 bss->logger_syslog_level = atoi(pos);
1713 bss->logger_stdout_level = atoi(pos);
1715 bss->logger_syslog = atoi(pos);
1717 bss->logger_stdout = atoi(pos);
1719 bss->dump_log_name = os_strdup(pos);
1721 bss->ssid.ssid_len = os_strlen(pos);
1722 if (bss->ssid.ssid_len > HOSTAPD_MAX_SSID_LEN ||
1723 bss->ssid.ssid_len < 1) {
1728 os_memcpy(bss->ssid.ssid, pos,
1729 bss->ssid.ssid_len);
1730 bss->ssid.ssid_set = 1;
1741 os_memcpy(bss->ssid.ssid, str, slen);
1742 bss->ssid.ssid_len = slen;
1743 bss->ssid.ssid_set = 1;
1747 bss->ssid.utf8_ssid = atoi(pos) > 0;
1749 bss->macaddr_acl = atoi(pos);
1750 if (bss->macaddr_acl != ACCEPT_UNLESS_DENIED &&
1751 bss->macaddr_acl != DENY_UNLESS_ACCEPTED &&
1752 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
1755 line, bss->macaddr_acl);
1758 if (hostapd_config_read_maclist(pos, &bss->accept_mac,
1759 &bss->num_accept_mac))
1767 if (hostapd_config_read_maclist(pos, &bss->deny_mac,
1768 &bss->num_deny_mac)) {
1775 bss->wds_sta = atoi(pos);
1777 bss->isolate = atoi(pos);
1779 bss->ap_max_inactivity = atoi(pos);
1781 bss->skip_inactivity_poll = atoi(pos);
1789 bss->ieee802_1x = atoi(pos);
1791 bss->eapol_version = atoi(pos);
1792 if (bss->eapol_version < 1 ||
1793 bss->eapol_version > 2) {
1796 line, bss->eapol_version, pos);
1800 bss->eapol_version);
1803 bss->eap_server = atoi(pos);
1808 bss->eap_server = atoi(pos);
1810 if (hostapd_config_read_eap_user(pos, bss))
1813 os_free(bss->ca_cert);
1814 bss->ca_cert = os_strdup(pos);
1816 os_free(bss->server_cert);
1817 bss->server_cert = os_strdup(pos);
1819 os_free(bss->private_key);
1820 bss->private_key = os_strdup(pos);
1822 os_free(bss->private_key_passwd);
1823 bss->private_key_passwd = os_strdup(pos);
1825 bss->check_crl = atoi(pos);
1827 os_free(bss->dh_file);
1828 bss->dh_file = os_strdup(pos);
1830 bss->fragment_size = atoi(pos);
1833 os_free(bss->pac_opaque_encr_key);
1834 bss->pac_opaque_encr_key = os_malloc(16);
1835 if (bss->pac_opaque_encr_key == NULL) {
1839 } else if (hexstr2bin(pos, bss->pac_opaque_encr_key,
1852 os_free(bss->eap_fast_a_id);
1853 bss->eap_fast_a_id = os_malloc(idlen / 2);
1854 if (bss->eap_fast_a_id == NULL ||
1855 hexstr2bin(pos, bss->eap_fast_a_id,
1862 bss->eap_fast_a_id_len = idlen / 2;
1865 os_free(bss->eap_fast_a_id_info);
1866 bss->eap_fast_a_id_info = os_strdup(pos);
1868 bss->eap_fast_prov = atoi(pos);
1870 bss->pac_key_lifetime = atoi(pos);
1872 bss->pac_key_refresh_time = atoi(pos);
1876 os_free(bss->eap_sim_db);
1877 bss->eap_sim_db = os_strdup(pos);
1879 bss->eap_sim_aka_result_ind = atoi(pos);
1883 bss->tnc = atoi(pos);
1887 bss->pwd_group = atoi(pos);
1892 bss->eap_req_id_text = os_strdup(pos);
1893 if (bss->eap_req_id_text == NULL) {
1900 bss->eap_req_id_text_len =
1901 os_strlen(bss->eap_req_id_text);
1902 term = os_strstr(bss->eap_req_id_text, "\\0");
1906 bss->eap_req_id_text_len -
1907 (term - bss->eap_req_id_text) - 1);
1908 bss->eap_req_id_text_len--;
1911 bss->default_wep_key_len = atoi(pos);
1912 if (bss->default_wep_key_len > 13) {
1916 bss->default_wep_key_len,
1918 bss->default_wep_key_len * 8);
1922 bss->individual_wep_key_len = atoi(pos);
1923 if (bss->individual_wep_key_len < 0 ||
1924 bss->individual_wep_key_len > 13) {
1927 bss->individual_wep_key_len,
1928 bss->individual_wep_key_len * 8);
1932 bss->wep_rekeying_period = atoi(pos);
1933 if (bss->wep_rekeying_period < 0) {
1936 line, bss->wep_rekeying_period);
1940 bss->eap_reauth_period = atoi(pos);
1941 if (bss->eap_reauth_period < 0) {
1944 line, bss->eap_reauth_period);
1948 bss->eapol_key_index_workaround = atoi(pos);
1951 bss->ieee802_11f = 1;
1952 os_strlcpy(bss->iapp_iface, pos,
1953 sizeof(bss->iapp_iface));
1956 if (hostapd_parse_ip_addr(pos, &bss->own_ip_addr)) {
1962 bss->nas_identifier = os_strdup(pos);
1966 &bss->radius->auth_servers,
1967 &bss->radius->num_auth_servers, pos, 1812,
1968 &bss->radius->auth_server)) {
1973 } else if (bss->radius->auth_server &&
1975 bss->radius->auth_server->port = atoi(pos);
1976 } else if (bss->radius->auth_server &&
1985 bss->radius->auth_server->shared_secret =
1987 bss->radius->auth_server->shared_secret_len = len;
1990 &bss->radius->acct_servers,
1991 &bss->radius->num_acct_servers, pos, 1813,
1992 &bss->radius->acct_server)) {
1997 } else if (bss->radius->acct_server &&
1999 bss->radius->acct_server->port = atoi(pos);
2000 } else if (bss->radius->acct_server &&
2009 bss->radius->acct_server->shared_secret =
2011 bss->radius->acct_server->shared_secret_len = len;
2014 bss->radius->retry_primary_interval = atoi(pos);
2017 bss->acct_interim_interval = atoi(pos);
2019 bss->radius_request_cui = atoi(pos);
2027 } else if (bss->radius_auth_req_attr == NULL) {
2028 bss->radius_auth_req_attr = attr;
2030 a = bss->radius_auth_req_attr;
2042 } else if (bss->radius_acct_req_attr == NULL) {
2043 bss->radius_acct_req_attr = attr;
2045 a = bss->radius_acct_req_attr;
2051 bss->radius_das_port = atoi(pos);
2053 if (hostapd_parse_das_client(bss, pos) < 0) {
2059 bss->radius_das_time_window = atoi(pos);
2062 bss->radius_das_require_event_timestamp = atoi(pos);
2065 bss->auth_algs = atoi(pos);
2066 if (bss->auth_algs == 0) {
2073 bss->max_num_sta = atoi(pos);
2074 if (bss->max_num_sta < 0 ||
2075 bss->max_num_sta > MAX_STA_COUNT) {
2078 "0..%d", line, bss->max_num_sta,
2083 bss->wpa = atoi(pos);
2085 bss->wpa_group_rekey = atoi(pos);
2087 bss->wpa_strict_rekey = atoi(pos);
2089 bss->wpa_gmk_rekey = atoi(pos);
2091 bss->wpa_ptk_rekey = atoi(pos);
2100 os_free(bss->ssid.wpa_passphrase);
2101 bss->ssid.wpa_passphrase = os_strdup(pos);
2102 os_free(bss->ssid.wpa_psk);
2103 bss->ssid.wpa_psk = NULL;
2106 os_free(bss->ssid.wpa_psk);
2107 bss->ssid.wpa_psk =
2109 if (bss->ssid.wpa_psk == NULL)
2111 else if (hexstr2bin(pos, bss->ssid.wpa_psk->psk,
2118 bss->ssid.wpa_psk->group = 1;
2119 os_free(bss->ssid.wpa_passphrase);
2120 bss->ssid.wpa_passphrase = NULL;
2123 os_free(bss->ssid.wpa_psk_file);
2124 bss->ssid.wpa_psk_file = os_strdup(pos);
2125 if (!bss->ssid.wpa_psk_file) {
2131 bss->wpa_key_mgmt =
2133 if (bss->wpa_key_mgmt == -1)
2136 bss->wpa_psk_radius = atoi(pos);
2137 if (bss->wpa_psk_radius != PSK_RADIUS_IGNORED &&
2138 bss->wpa_psk_radius != PSK_RADIUS_ACCEPTED &&
2139 bss->wpa_psk_radius != PSK_RADIUS_REQUIRED) {
2142 line, bss->wpa_psk_radius);
2146 bss->wpa_pairwise =
2148 if (bss->wpa_pairwise == -1 ||
2149 bss->wpa_pairwise == 0)
2151 else if (bss->wpa_pairwise &
2156 bss->wpa_pairwise, pos);
2160 bss->rsn_pairwise =
2162 if (bss->rsn_pairwise == -1 ||
2163 bss->rsn_pairwise == 0)
2165 else if (bss->rsn_pairwise &
2170 bss->rsn_pairwise, pos);
2175 bss->rsn_preauth = atoi(pos);
2177 bss->rsn_preauth_interfaces = os_strdup(pos);
2181 bss->peerkey = atoi(pos);
2186 hexstr2bin(pos, bss->mobility_domain,
2195 hexstr2bin(pos, bss->r1_key_holder,
2203 bss->r0_key_lifetime = atoi(pos);
2205 bss->reassociation_deadline = atoi(pos);
2207 if (add_r0kh(bss, pos) < 0) {
2214 if (add_r1kh(bss, pos) < 0) {
2221 bss->pmk_r1_push = atoi(pos);
2223 bss->ft_over_ds = atoi(pos);
2227 os_free(bss->ctrl_interface);
2228 bss->ctrl_interface = os_strdup(pos);
2237 bss->ctrl_interface_gid = grp->gr_gid;
2238 bss->ctrl_interface_gid_set = 1;
2241 bss->ctrl_interface_gid, group);
2246 bss->ctrl_interface_gid = strtol(group, &endp, 10);
2253 bss->ctrl_interface_gid_set = 1;
2255 bss->ctrl_interface_gid);
2260 os_free(bss->radius_server_clients);
2261 bss->radius_server_clients = os_strdup(pos);
2263 bss->radius_server_auth_port = atoi(pos);
2265 bss->radius_server_ipv6 = atoi(pos);
2268 os_free(bss->test_socket);
2269 bss->test_socket = os_strdup(pos);
2271 bss->use_pae_group_addr = atoi(pos);
2288 bss->wps_rf_bands = WPS_RF_50GHZ;
2291 bss->wps_rf_bands = WPS_RF_24GHZ;
2294 bss->wps_rf_bands =
2318 bss->dtim_period = atoi(pos);
2319 if (bss->dtim_period < 1 || bss->dtim_period > 255) {
2322 line, bss->dtim_period);
2369 bss->ignore_broadcast_ssid = atoi(pos);
2371 bss->ssid.wep.idx = atoi(pos);
2372 if (bss->ssid.wep.idx > 3) {
2375 bss->ssid.wep.idx);
2382 if (hostapd_config_read_wep(&bss->ssid.wep,
2390 bss->ssid.dynamic_vlan = atoi(pos);
2392 if (hostapd_config_read_vlan_file(bss, pos)) {
2398 bss->ssid.vlan_naming = atoi(pos);
2399 if (bss->ssid.vlan_naming >= DYNAMIC_VLAN_NAMING_END ||
2400 bss->ssid.vlan_naming < 0) {
2403 bss->ssid.vlan_naming);
2408 bss->ssid.vlan_tagged_interface = os_strdup(pos);
2423 bss->wmm_enabled = atoi(pos);
2425 bss->wmm_uapsd = atoi(pos);
2434 } else if (os_strcmp(buf, "bss") == 0) {
2436 wpa_printf(MSG_ERROR, "Line %d: invalid bss "
2441 if (hwaddr_aton(pos, bss->bssid)) {
2448 bss->ieee80211w = atoi(pos);
2450 bss
2451 if (bss->assoc_sa_query_max_timeout == 0) {
2458 bss->assoc_sa_query_retry_timeout = atoi(pos);
2459 if (bss->assoc_sa_query_retry_timeout == 0) {
2499 bss->max_listen_interval = atoi(pos);
2501 bss->disable_pmksa_caching = atoi(pos);
2503 bss->okc = atoi(pos);
2506 bss->wps_state = atoi(pos);
2507 if (bss->wps_state < 0 || bss->wps_state > 2) {
2513 bss->wps_independent = atoi(pos);
2515 bss->ap_setup_locked = atoi(pos);
2517 if (uuid_str2bin(pos, bss->uuid)) {
2523 os_free(bss->wps_pin_requests);
2524 bss->wps_pin_requests = os_strdup(pos);
2531 os_free(bss->device_name);
2532 bss->device_name = os_strdup(pos);
2539 os_free(bss->manufacturer);
2540 bss->manufacturer = os_strdup(pos);
2547 os_free(bss->model_name);
2548 bss->model_name = os_strdup(pos);
2555 os_free(bss->model_number);
2556 bss->model_number = os_strdup(pos);
2563 os_free(bss->serial_number);
2564 bss->serial_number = os_strdup(pos);
2566 if (wps_dev_type_str2bin(pos, bss->device_type))
2569 os_free(bss->config_methods);
2570 bss->config_methods = os_strdup(pos);
2572 if (hexstr2bin(pos, bss->os_version, 4)) {
2578 os_free(bss->ap_pin);
2579 bss->ap_pin = os_strdup(pos);
2581 bss->skip_cred_build = atoi(pos);
2583 os_free(bss->extra_cred);
2584 bss->extra_cred =
2585 (u8 *) os_readfile(pos, &bss->extra_cred_len);
2586 if (bss->extra_cred == NULL) {
2593 bss->wps_cred_processing = atoi(pos);
2595 os_free(bss->ap_settings);
2596 bss->ap_settings =
2597 (u8 *) os_readfile(pos, &bss->ap_settings_len);
2598 if (bss->ap_settings == NULL) {
2605 bss->upnp_iface = os_strdup(pos);
2607 os_free(bss->friendly_name);
2608 bss->friendly_name = os_strdup(pos);
2610 os_free(bss->manufacturer_url);
2611 bss->manufacturer_url = os_strdup(pos);
2613 os_free(bss->model_description);
2614 bss->model_description = os_strdup(pos);
2616 os_free(bss->model_url);
2617 bss->model_url = os_strdup(pos);
2619 os_free(bss->upc);
2620 bss->upc = os_strdup(pos);
2622 bss->pbc_in_m1 = atoi(pos);
2625 bss->wps_nfc_dev_pw_id = atoi(pos);
2626 if (bss->wps_nfc_dev_pw_id < 0x10 ||
2627 bss->wps_nfc_dev_pw_id > 0xffff) {
2632 bss->wps_nfc_pw_from_config = 1;
2634 wpabuf_free(bss->wps_nfc_dh_pubkey);
2635 bss->wps_nfc_dh_pubkey = hostapd_parse_bin(pos);
2636 bss->wps_nfc_pw_from_config = 1;
2638 wpabuf_free(bss->wps_nfc_dh_privkey);
2639 bss->wps_nfc_dh_privkey = hostapd_parse_bin(pos);
2640 bss->wps_nfc_pw_from_config = 1;
2642 wpabuf_free(bss->wps_nfc_dev_pw);
2643 bss->wps_nfc_dev_pw = hostapd_parse_bin(pos);
2644 bss->wps_nfc_pw_from_config = 1;
2651 bss->p2p |= P2P_MANAGE;
2653 bss->p2p &= ~P2P_MANAGE;
2656 bss->p2p |= P2P_ALLOW_CROSS_CONNECTION;
2658 bss->p2p &= ~P2P_ALLOW_CROSS_CONNECTION;
2661 bss->disassoc_low_ack = atoi(pos);
2665 bss->tdls |= TDLS_PROHIBIT;
2667 bss->tdls &= ~TDLS_PROHIBIT;
2671 bss->tdls |= TDLS_PROHIBIT_CHAN_SWITCH;
2673 bss->tdls &= ~TDLS_PROHIBIT_CHAN_SWITCH;
2680 bss->time_advertisement = atoi(pos);
2689 os_free(bss->time_zone);
2690 bss->time_zone = os_strdup(pos);
2691 if (bss->time_zone == NULL)
2695 bss->wnm_sleep_mode = atoi(pos);
2697 bss->bss_transition = atoi(pos);
2701 bss->interworking = atoi(pos);
2703 bss->access_network_type = atoi(pos);
2704 if (bss->access_network_type < 0 ||
2705 bss->access_network_type > 15) {
2711 bss->internet = atoi(pos);
2713 bss->asra = atoi(pos);
2715 bss->esr = atoi(pos);
2717 bss->uesa = atoi(pos);
2719 bss->venue_group = atoi(pos);
2720 bss->venue_info_set = 1;
2722 bss->venue_type = atoi(pos);
2723 bss->venue_info_set = 1;
2725 if (hwaddr_aton(pos, bss->hessid)) {
2731 if (parse_roaming_consortium(bss, pos, line) < 0)
2734 if (parse_venue_name(bss, pos, line) < 0)
2750 os_free(bss->network_auth_type);
2751 bss->network_auth_type =
2753 if (bss->network_auth_type == NULL) {
2757 *bss->network_auth_type = auth_type;
2758 WPA_PUT_LE16(bss->network_auth_type + 1,
2761 os_memcpy(bss->network_auth_type + 3,
2763 bss->network_auth_type_len = 3 + redirect_url_len;
2765 if (hexstr2bin(pos, &bss->ipaddr_type_availability, 1))
2770 bss->ipaddr_type_configured = 0;
2774 bss->ipaddr_type_configured = 1;
2813 os_free(bss->domain_name);
2814 bss->domain_name = domain_list;
2815 bss->domain_name_len = domain_list_len;
2817 if (parse_3gpp_cell_net(bss, pos, line) < 0)
2820 if (parse_nai_realm(bss, pos, line) < 0)
2823 bss->gas_frag_limit = atoi(pos);
2825 bss->gas_comeback_delay = atoi(pos);
2829 os_free(bss->dump_msk_file);
2830 bss->dump_msk_file = os_strdup(pos);
2834 bss->hs20 = atoi(pos);
2836 bss->disable_dgaf = atoi(pos);
2838 if (hs20_parse_oper_friendly_name(bss, pos, line) < 0)
2841 if (hs20_parse_wan_metrics(bss, pos, line) < 0) {
2846 if (hs20_parse_conn_capab(bss, pos, line) < 0) {
2875 os_free(bss->hs20_operating_class);
2876 bss->hs20_operating_class = oper_class;
2877 bss->hs20_operating_class_len = oper_class_len;
2889 wpabuf_free(bss->vendor_elements);
2890 bss->vendor_elements = NULL;
2905 wpabuf_free(bss->vendor_elements);
2906 bss->vendor_elements = elems;
2908 bss->sae_anti_clogging_threshold = atoi(pos);
2910 if (hostapd_parse_rates(&bss->sae_groups, pos)) {
2926 static void hostapd_set_security_params(struct hostapd_bss_config *bss)
2928 if (bss->individual_wep_key_len == 0) {
2931 bss->broadcast_key_idx_min = 0;
2934 if ((bss->wpa & 2) && bss->rsn_pairwise == 0)
2935 bss->rsn_pairwise = bss->wpa_pairwise;
2936 bss->wpa_group = wpa_select_ap_group_cipher(bss->wpa, bss->wpa_pairwise,
2937 bss->rsn_pairwise);
2939 bss->radius->auth_server = bss->radius->auth_servers;
2940 bss->radius->acct_server = bss->radius->acct_servers;
2942 if (bss->wpa && bss->ieee802_1x) {
2943 bss->ssid.security_policy = SECURITY_WPA;
2944 } else if (bss->wpa) {
2945 bss->ssid.security_policy = SECURITY_WPA_PSK;
2946 } else if (bss->ieee802_1x) {
2948 bss->ssid.security_policy = SECURITY_IEEE_802_1X;
2949 bss->ssid.wep.default_len = bss->default_wep_key_len;
2950 bss->default_wep_key_len)
2951 cipher = bss->default_wep_key_len >= 13 ?
2953 bss->wpa_group = cipher;
2954 bss->wpa_pairwise = cipher;
2955 bss->rsn_pairwise = cipher;
2956 } else if (bss->ssid.wep.keys_set) {
2958 if (bss->ssid.wep.len[0] >= 13)
2960 bss->ssid.security_policy = SECURITY_STATIC_WEP;
2961 bss->wpa_group = cipher;
2962 bss->wpa_pairwise = cipher;
2963 bss->rsn_pairwise = cipher;
2965 bss->ssid.security_policy = SECURITY_PLAINTEXT;
2966 bss->wpa_group = WPA_CIPHER_NONE;
2967 bss->wpa_pairwise = WPA_CIPHER_NONE;
2968 bss->rsn_pairwise = WPA_CIPHER_NONE;
2981 struct hostapd_bss_config *bss;
3010 bss = conf->last_bss = conf->bss;
3013 bss = conf->last_bss;
3038 errors += hostapd_config_fill(conf, bss, buf, pos, line);
3044 hostapd_set_security_params(&conf->bss[i]);
3063 struct hostapd_bss_config *bss, char *field, char *value)
3068 errors = hostapd_config_fill(conf, bss, field, value, 0);
3076 hostapd_set_security_params(&conf->bss[i]);