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;
684 struct hostapd_bss_config *bss;
689 bss = os_realloc(conf->bss, (conf->num_bss + 1) *
691 if (bss == NULL) {
693 "multi-BSS entry");
696 conf->bss = bss;
698 bss = &(conf->bss[conf->num_bss]);
699 os_memset(bss, 0, sizeof(*bss));
700 bss->radius = os_zalloc(sizeof(*bss->radius));
701 if (bss->radius == NULL) {
703 "multi-BSS RADIUS data");
708 conf->last_bss = bss;
710 hostapd_config_defaults_bss(bss);
711 os_strlcpy(bss->iface, ifname, sizeof(bss->iface));
712 os_memcpy(bss->ssid.vlan, bss->iface, IFNAMSIZ + 1);
887 static int add_r0kh(struct hostapd_bss_config *bss, char *value)
926 r0kh->next = bss->r0kh_list;
927 bss->r0kh_list = r0kh;
933 static int add_r1kh(struct hostapd_bss_config *bss, char *value)
971 r1kh->next = bss->r1kh_list;
972 bss->r1kh_list = r1kh;
1037 static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
1040 if (bss->ieee802_1x && !bss->eap_server &&
1041 !bss->radius->auth_servers) {
1047 if (bss->wpa && bss->wpa_psk_radius != PSK_RADIUS_IGNORED &&
1048 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
1054 if (bss->wpa && (bss->wpa_key_mgmt & WPA_KEY_MGMT_PSK) &&
1055 bss->ssid.wpa_psk == NULL && bss->ssid.wpa_passphrase == NULL &&
1056 bss->ssid.wpa_psk_file == NULL &&
1057 (bss->wpa_psk_radius != PSK_RADIUS_REQUIRED ||
1058 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH)) {
1064 if (hostapd_mac_comp_empty(bss->bssid) != 0) {
1068 if ((&conf->bss[i] != bss) &&
1069 (hostapd_mac_comp(conf->bss[i].bssid,
1070 bss->bssid) == 0)) {
1073 MAC2STR(bss->bssid),
1074 conf->bss[i].iface, bss->iface);
1081 if (wpa_key_mgmt_ft(bss->wpa_key_mgmt) &&
1082 (bss->nas_identifier == NULL ||
1083 os_strlen(bss->nas_identifier) < 1 ||
1084 os_strlen(bss->nas_identifier) > FT_R0KH_ID_MAX_LEN)) {
1094 bss->ssid.security_policy == SECURITY_STATIC_WEP) {
1095 bss->disable_11n = 1;
1100 if (conf->ieee80211n && bss->wpa &&
1101 !(bss->wpa_pairwise & WPA_CIPHER_CCMP) &&
1102 !(bss->rsn_pairwise & WPA_CIPHER_CCMP)) {
1103 bss->disable_11n = 1;
1111 if (bss->wps_state && bss->ignore_broadcast_ssid) {
1114 bss->wps_state = 0;
1117 if (bss->wps_state && bss->ssid.wep.keys_set && bss->wpa == 0) {
1120 bss->wps_state = 0;
1139 if (hostapd_config_check_bss(&conf->bss[i], conf))
1148 static int parse_roaming_consortium(struct hostapd_bss_config *bss, char *pos,
1164 rc = os_realloc(bss->roaming_consortium,
1166 (bss->roaming_consortium_count + 1));
1170 os_memcpy(rc[bss->roaming_consortium_count].oi, oi, len);
1171 rc[bss->roaming_consortium_count].len = len;
1173 bss->roaming_consortium = rc;
1174 bss->roaming_consortium_count++;
1189 struct hostapd_bss_config *bss;
1219 bss = conf->last_bss = conf->bss;
1222 bss = conf->last_bss;
1249 os_strlcpy(conf->bss[0].iface, pos,
1250 sizeof(conf->bss[0].iface));
1252 os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
1254 os_strlcpy(bss->wds_bridge, pos,
1255 sizeof(bss->wds_bridge));
1277 bss->logger_syslog_level = atoi(pos);
1279 bss->logger_stdout_level = atoi(pos);
1281 bss->logger_syslog = atoi(pos);
1283 bss->logger_stdout = atoi(pos);
1285 bss->dump_log_name = os_strdup(pos);
1287 bss->ssid.ssid_len = os_strlen(pos);
1288 if (bss->ssid.ssid_len > HOSTAPD_MAX_SSID_LEN ||
1289 bss->ssid.ssid_len < 1) {
1294 os_memcpy(bss->ssid.ssid, pos,
1295 bss->ssid.ssid_len);
1296 bss->ssid.ssid[bss->ssid.ssid_len] = '\0';
1297 bss->ssid.ssid_set = 1;
1300 bss->macaddr_acl = atoi(pos);
1301 if (bss->macaddr_acl != ACCEPT_UNLESS_DENIED &&
1302 bss->macaddr_acl != DENY_UNLESS_ACCEPTED &&
1303 bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
1306 line, bss->macaddr_acl);
1309 if (hostapd_config_read_maclist(pos, &bss->accept_mac,
1310 &bss->num_accept_mac))
1318 if (hostapd_config_read_maclist(pos, &bss->deny_mac,
1319 &bss->num_deny_mac)) {
1326 bss->wds_sta = atoi(pos);
1328 bss->isolate = atoi(pos);
1330 bss->ap_max_inactivity = atoi(pos);
1332 bss->skip_inactivity_poll = atoi(pos);
1340 bss->ieee802_1x = atoi(pos);
1342 bss->eapol_version = atoi(pos);
1343 if (bss->eapol_version < 1 ||
1344 bss->eapol_version > 2) {
1347 line, bss->eapol_version, pos);
1351 bss->eapol_version);
1354 bss->eap_server = atoi(pos);
1359 bss->eap_server = atoi(pos);
1361 if (hostapd_config_read_eap_user(pos, bss))
1364 os_free(bss->ca_cert);
1365 bss->ca_cert = os_strdup(pos);
1367 os_free(bss->server_cert);
1368 bss->server_cert = os_strdup(pos);
1370 os_free(bss->private_key);
1371 bss->private_key = os_strdup(pos);
1373 os_free(bss->private_key_passwd);
1374 bss->private_key_passwd = os_strdup(pos);
1376 bss->check_crl = atoi(pos);
1378 os_free(bss->dh_file);
1379 bss->dh_file = os_strdup(pos);
1381 bss->fragment_size = atoi(pos);
1384 os_free(bss->pac_opaque_encr_key);
1385 bss->pac_opaque_encr_key = os_malloc(16);
1386 if (bss->pac_opaque_encr_key == NULL) {
1390 } else if (hexstr2bin(pos, bss->pac_opaque_encr_key,
1403 os_free(bss->eap_fast_a_id);
1404 bss->eap_fast_a_id = os_malloc(idlen / 2);
1405 if (bss->eap_fast_a_id == NULL ||
1406 hexstr2bin(pos, bss->eap_fast_a_id,
1413 bss->eap_fast_a_id_len = idlen / 2;
1416 os_free(bss->eap_fast_a_id_info);
1417 bss->eap_fast_a_id_info = os_strdup(pos);
1419 bss->eap_fast_prov = atoi(pos);
1421 bss->pac_key_lifetime = atoi(pos);
1423 bss->pac_key_refresh_time = atoi(pos);
1427 os_free(bss->eap_sim_db);
1428 bss->eap_sim_db = os_strdup(pos);
1430 bss->eap_sim_aka_result_ind = atoi(pos);
1434 bss->tnc = atoi(pos);
1438 bss->pwd_group = atoi(pos);
1443 bss->eap_req_id_text = os_strdup(pos);
1444 if (bss->eap_req_id_text == NULL) {
1451 bss->eap_req_id_text_len =
1452 os_strlen(bss->eap_req_id_text);
1453 term = os_strstr(bss->eap_req_id_text, "\\0");
1457 bss->eap_req_id_text_len -
1458 (term - bss->eap_req_id_text) - 1);
1459 bss->eap_req_id_text_len--;
1462 bss->default_wep_key_len = atoi(pos);
1463 if (bss->default_wep_key_len > 13) {
1467 bss->default_wep_key_len,
1469 bss->default_wep_key_len * 8);
1473 bss->individual_wep_key_len = atoi(pos);
1474 if (bss->individual_wep_key_len < 0 ||
1475 bss->individual_wep_key_len > 13) {
1478 bss->individual_wep_key_len,
1479 bss->individual_wep_key_len * 8);
1483 bss->wep_rekeying_period = atoi(pos);
1484 if (bss->wep_rekeying_period < 0) {
1487 line, bss->wep_rekeying_period);
1491 bss->eap_reauth_period = atoi(pos);
1492 if (bss->eap_reauth_period < 0) {
1495 line, bss->eap_reauth_period);
1499 bss->eapol_key_index_workaround = atoi(pos);
1502 bss->ieee802_11f = 1;
1503 os_strlcpy(bss->iapp_iface, pos,
1504 sizeof(bss->iapp_iface));
1507 if (hostapd_parse_ip_addr(pos, &bss->own_ip_addr)) {
1513 bss->nas_identifier = os_strdup(pos);
1517 &bss->radius->auth_servers,
1518 &bss->radius->num_auth_servers, pos, 1812,
1519 &bss->radius->auth_server)) {
1524 } else if (bss->radius->auth_server &&
1526 bss->radius->auth_server->port = atoi(pos);
1527 } else if (bss->radius->auth_server &&
1536 bss->radius->auth_server->shared_secret =
1538 bss->radius->auth_server->shared_secret_len = len;
1541 &bss->radius->acct_servers,
1542 &bss->radius->num_acct_servers, pos, 1813,
1543 &bss->radius->acct_server)) {
1548 } else if (bss->radius->acct_server &&
1550 bss->radius->acct_server->port = atoi(pos);
1551 } else if (bss->radius->acct_server &&
1560 bss->radius->acct_server->shared_secret =
1562 bss->radius->acct_server->shared_secret_len = len;
1565 bss->radius->retry_primary_interval = atoi(pos);
1568 bss->acct_interim_interval = atoi(pos);
1571 bss->auth_algs = atoi(pos);
1572 if (bss->auth_algs == 0) {
1579 bss->max_num_sta = atoi(pos);
1580 if (bss->max_num_sta < 0 ||
1581 bss->max_num_sta > MAX_STA_COUNT) {
1584 "0..%d", line, bss->max_num_sta,
1589 bss->wpa = atoi(pos);
1591 bss->wpa_group_rekey = atoi(pos);
1593 bss->wpa_strict_rekey = atoi(pos);
1595 bss->wpa_gmk_rekey = atoi(pos);
1597 bss->wpa_ptk_rekey = atoi(pos);
1606 os_free(bss->ssid.wpa_passphrase);
1607 bss->ssid.wpa_passphrase = os_strdup(pos);
1610 os_free(bss->ssid.wpa_psk);
1611 bss->ssid.wpa_psk =
1613 if (bss->ssid.wpa_psk == NULL)
1615 else if (hexstr2bin(pos, bss->ssid.wpa_psk->psk,
1622 bss->ssid.wpa_psk->group = 1;
1625 os_free(bss->ssid.wpa_psk_file);
1626 bss->ssid.wpa_psk_file = os_strdup(pos);
1627 if (!bss->ssid.wpa_psk_file) {
1633 bss->wpa_key_mgmt =
1635 if (bss->wpa_key_mgmt == -1)
1638 bss->wpa_psk_radius = atoi(pos);
1639 if (bss->wpa_psk_radius != PSK_RADIUS_IGNORED &&
1640 bss->wpa_psk_radius != PSK_RADIUS_ACCEPTED &&
1641 bss->wpa_psk_radius != PSK_RADIUS_REQUIRED) {
1644 line, bss->wpa_psk_radius);
1648 bss->wpa_pairwise =
1650 if (bss->wpa_pairwise == -1 ||
1651 bss->wpa_pairwise == 0)
1653 else if (bss->wpa_pairwise &
1658 bss->wpa_pairwise, pos);
1662 bss->rsn_pairwise =
1664 if (bss->rsn_pairwise == -1 ||
1665 bss->rsn_pairwise == 0)
1667 else if (bss->rsn_pairwise &
1672 bss->rsn_pairwise, pos);
1677 bss->rsn_preauth = atoi(pos);
1679 bss->rsn_preauth_interfaces = os_strdup(pos);
1683 bss->peerkey = atoi(pos);
1688 hexstr2bin(pos, bss->mobility_domain,
1697 hexstr2bin(pos, bss->r1_key_holder,
1705 bss->r0_key_lifetime = atoi(pos);
1707 bss->reassociation_deadline = atoi(pos);
1709 if (add_r0kh(bss, pos) < 0) {
1716 if (add_r1kh(bss, pos) < 0) {
1723 bss->pmk_r1_push = atoi(pos);
1725 bss->ft_over_ds = atoi(pos);
1729 os_free(bss->ctrl_interface);
1730 bss->ctrl_interface = os_strdup(pos);
1739 bss->ctrl_interface_gid = grp->gr_gid;
1740 bss->ctrl_interface_gid_set = 1;
1743 bss->ctrl_interface_gid, group);
1748 bss->ctrl_interface_gid = strtol(group, &endp, 10);
1755 bss->ctrl_interface_gid_set = 1;
1757 bss->ctrl_interface_gid);
1762 os_free(bss->radius_server_clients);
1763 bss->radius_server_clients = os_strdup(pos);
1765 bss->radius_server_auth_port = atoi(pos);
1767 bss->radius_server_ipv6 = atoi(pos);
1770 os_free(bss->test_socket);
1771 bss->test_socket = os_strdup(pos);
1773 bss->use_pae_group_addr = atoi(pos);
1788 bss->wps_rf_bands = WPS_RF_50GHZ;
1791 bss->wps_rf_bands = WPS_RF_24GHZ;
1794 bss->wps_rf_bands =
1818 bss->dtim_period = atoi(pos);
1819 if (bss->dtim_period < 1 || bss->dtim_period > 255) {
1822 line, bss->dtim_period);
1869 bss->ignore_broadcast_ssid = atoi(pos);
1871 bss->ssid.wep.idx = atoi(pos);
1872 if (bss->ssid.wep.idx > 3) {
1875 bss->ssid.wep.idx);
1882 if (hostapd_config_read_wep(&bss->ssid.wep,
1890 bss->ssid.dynamic_vlan = atoi(pos);
1892 if (hostapd_config_read_vlan_file(bss, pos)) {
1899 bss->ssid.vlan_tagged_interface = os_strdup(pos);
1914 bss->wmm_enabled = atoi(pos);
1916 bss->wmm_uapsd = atoi(pos);
1924 } else if (os_strcmp(buf, "bss") == 0) {
1926 wpa_printf(MSG_ERROR, "Line %d: invalid bss "
1931 if (hwaddr_aton(pos, bss->bssid)) {
1938 bss->ieee80211w = atoi(pos);
1940 bss->assoc_sa_query_max_timeout = atoi(pos);
1941 if (bss->assoc_sa_query_max_timeout == 0) {
1948 bss->assoc_sa_query_retry_timeout = atoi(pos);
1949 if (bss->assoc_sa_query_retry_timeout == 0) {
1969 bss->max_listen_interval = atoi(pos);
1971 bss->disable_pmksa_caching = atoi(pos);
1973 bss->okc = atoi(pos);
1976 bss->wps_state = atoi(pos);
1977 if (bss->wps_state < 0 || bss->wps_state > 2) {
1983 bss->ap_setup_locked = atoi(pos);
1985 if (uuid_str2bin(pos, bss->uuid)) {
1991 os_free(bss->wps_pin_requests);
1992 bss->wps_pin_requests = os_strdup(pos);
1999 os_free(bss->device_name);
2000 bss->device_name = os_strdup(pos);
2007 os_free(bss->manufacturer);
2008 bss->manufacturer = os_strdup(pos);
2015 os_free(bss->model_name);
2016 bss->model_name = os_strdup(pos);
2023 os_free(bss->model_number);
2024 bss->model_number = os_strdup(pos);
2031 os_free(bss->serial_number);
2032 bss->serial_number = os_strdup(pos);
2034 if (wps_dev_type_str2bin(pos, bss->device_type))
2037 os_free(bss->config_methods);
2038 bss->config_methods = os_strdup(pos);
2040 if (hexstr2bin(pos, bss->os_version, 4)) {
2046 os_free(bss->ap_pin);
2047 bss->ap_pin = os_strdup(pos);
2049 bss->skip_cred_build = atoi(pos);
2051 os_free(bss->extra_cred);
2052 bss->extra_cred =
2053 (u8 *) os_readfile(pos, &bss->extra_cred_len);
2054 if (bss->extra_cred == NULL) {
2061 bss->wps_cred_processing = atoi(pos);
2063 os_free(bss->ap_settings);
2064 bss->ap_settings =
2065 (u8 *) os_readfile(pos, &bss->ap_settings_len);
2066 if (bss->ap_settings == NULL) {
2073 bss->upnp_iface = os_strdup(pos);
2075 os_free(bss->friendly_name);
2076 bss->friendly_name = os_strdup(pos);
2078 os_free(bss->manufacturer_url);
2079 bss->manufacturer_url = os_strdup(pos);
2081 os_free(bss->model_description);
2082 bss->model_description = os_strdup(pos);
2084 os_free(bss->model_url);
2085 bss->model_url = os_strdup(pos);
2087 os_free(bss->upc);
2088 bss->upc = os_strdup(pos);
2090 bss->pbc_in_m1 = atoi(pos);
2096 bss->p2p |= P2P_MANAGE;
2098 bss->p2p &= ~P2P_MANAGE;
2101 bss->p2p |= P2P_ALLOW_CROSS_CONNECTION;
2103 bss->p2p &= ~P2P_ALLOW_CROSS_CONNECTION;
2106 bss->disassoc_low_ack = atoi(pos);
2110 bss->tdls |= TDLS_PROHIBIT;
2112 bss->tdls &= ~TDLS_PROHIBIT;
2116 bss->tdls |= TDLS_PROHIBIT_CHAN_SWITCH;
2118 bss->tdls &= ~TDLS_PROHIBIT_CHAN_SWITCH;
2125 bss->time_advertisement = atoi(pos);
2134 os_free(bss->time_zone);
2135 bss->time_zone = os_strdup(pos);
2136 if (bss->time_zone == NULL)
2140 bss->interworking = atoi(pos);
2142 bss->access_network_type = atoi(pos);
2143 if (bss->access_network_type < 0 ||
2144 bss->access_network_type > 15) {
2150 bss->internet = atoi(pos);
2152 bss->asra = atoi(pos);
2154 bss->esr = atoi(pos);
2156 bss->uesa = atoi(pos);
2158 bss->venue_group = atoi(pos);
2159 bss->venue_info_set = 1;
2161 bss->venue_type = atoi(pos);
2162 bss->venue_info_set = 1;
2164 if (hwaddr_aton(pos, bss->hessid)) {
2170 if (parse_roaming_consortium(bss, pos, line) < 0)
2175 os_free(bss->dump_msk_file);
2176 bss->dump_msk_file = os_strdup(pos);
2188 bss = &conf->bss[i];
2190 if (bss->individual_wep_key_len == 0) {
2193 bss->broadcast_key_idx_min = 0;
2199 if (bss->wpa & 1)
2200 pairwise |= bss->wpa_pairwise;
2201 if (bss->wpa & 2) {
2202 if (bss->rsn_pairwise == 0)
2203 bss->rsn_pairwise = bss->wpa_pairwise;
2204 pairwise |= bss->rsn_pairwise;
2207 bss->wpa_group = WPA_CIPHER_TKIP;
2209 bss->wpa_group = WPA_CIPHER_CCMP;
2211 bss->radius->auth_server = bss->radius->auth_servers;
2212 bss->radius->acct_server = bss->radius->acct_servers;
2214 if (bss->wpa && bss->ieee802_1x) {
2215 bss->ssid.security_policy = SECURITY_WPA;
2216 } else if (bss->wpa) {
2217 bss->ssid.security_policy = SECURITY_WPA_PSK;
2218 } else if (bss->ieee802_1x) {
2220 bss->ssid.security_policy = SECURITY_IEEE_802_1X;
2221 bss->ssid.wep.default_len = bss->default_wep_key_len;
2222 if (bss->default_wep_key_len)
2223 cipher = bss->default_wep_key_len >= 13 ?
2225 bss->wpa_group = cipher;
2226 bss->wpa_pairwise = cipher;
2227 bss->rsn_pairwise = cipher;
2228 } else if (bss->ssid.wep.keys_set) {
2230 if (bss->ssid.wep.len[0] >= 13)
2232 bss->ssid.security_policy = SECURITY_STATIC_WEP;
2233 bss->wpa_group = cipher;
2234 bss->wpa_pairwise = cipher;
2235 bss->rsn_pairwise = cipher;
2237 bss->ssid.security_policy = SECURITY_PLAINTEXT;
2238 bss->wpa_group = WPA_CIPHER_NONE;
2239 bss->wpa_pairwise = WPA_CIPHER_NONE;
2240 bss->rsn_pairwise = WPA_CIPHER_NONE;