⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 最新的Host AP 新添加了许多pcmcia 的驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
			bss->dtim_period = atoi(pos);			if (bss->dtim_period < 1 || bss->dtim_period > 255) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "dtim_period %d",					   line, bss->dtim_period);				errors++;			}		} else if (os_strcmp(buf, "rts_threshold") == 0) {			conf->rts_threshold = atoi(pos);			if (conf->rts_threshold < 0 ||			    conf->rts_threshold > 2347) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "rts_threshold %d",					   line, conf->rts_threshold);				errors++;			}		} else if (os_strcmp(buf, "fragm_threshold") == 0) {			conf->fragm_threshold = atoi(pos);			if (conf->fragm_threshold < 256 ||			    conf->fragm_threshold > 2346) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "fragm_threshold %d",					   line, conf->fragm_threshold);				errors++;			}		} else if (os_strcmp(buf, "send_probe_response") == 0) {			int val = atoi(pos);			if (val != 0 && val != 1) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "send_probe_response %d (expected "					   "0 or 1)", line, val);			} else				conf->send_probe_response = val;		} else if (os_strcmp(buf, "supported_rates") == 0) {			if (hostapd_parse_rates(&conf->supported_rates, pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid rate "					   "list", line);				errors++;			}		} else if (os_strcmp(buf, "basic_rates") == 0) {			if (hostapd_parse_rates(&conf->basic_rates, pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid rate "					   "list", line);				errors++;			}		} else if (os_strcmp(buf, "preamble") == 0) {			if (atoi(pos))				conf->preamble = SHORT_PREAMBLE;			else				conf->preamble = LONG_PREAMBLE;		} else if (os_strcmp(buf, "ignore_broadcast_ssid") == 0) {			bss->ignore_broadcast_ssid = atoi(pos);		} else if (os_strcmp(buf, "bridge_packets") == 0) {			conf->bridge_packets = atoi(pos);		} else if (os_strcmp(buf, "wep_default_key") == 0) {			bss->ssid.wep.idx = atoi(pos);			if (bss->ssid.wep.idx > 3) {				wpa_printf(MSG_ERROR, "Invalid "					   "wep_default_key index %d",					   bss->ssid.wep.idx);				errors++;			}		} else if (os_strcmp(buf, "wep_key0") == 0 ||			   os_strcmp(buf, "wep_key1") == 0 ||			   os_strcmp(buf, "wep_key2") == 0 ||			   os_strcmp(buf, "wep_key3") == 0) {			if (hostapd_config_read_wep(&bss->ssid.wep,						    buf[7] - '0', pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid WEP "					   "key '%s'", line, buf);				errors++;			}		} else if (os_strcmp(buf, "dynamic_vlan") == 0) {			bss->ssid.dynamic_vlan = atoi(pos);		} else if (os_strcmp(buf, "vlan_file") == 0) {			if (hostapd_config_read_vlan_file(bss, pos)) {				wpa_printf(MSG_ERROR, "Line %d: failed to "					   "read VLAN file '%s'", line, pos);				errors++;			}#ifdef CONFIG_FULL_DYNAMIC_VLAN		} else if (os_strcmp(buf, "vlan_tagged_interface") == 0) {			bss->ssid.vlan_tagged_interface = os_strdup(pos);#endif /* CONFIG_FULL_DYNAMIC_VLAN */		} else if (os_strcmp(buf, "passive_scan_interval") == 0) {			conf->passive_scan_interval = atoi(pos);		} else if (os_strcmp(buf, "passive_scan_listen") == 0) {			conf->passive_scan_listen = atoi(pos);		} else if (os_strcmp(buf, "passive_scan_mode") == 0) {			conf->passive_scan_mode = atoi(pos);		} else if (os_strcmp(buf, "ap_table_max_size") == 0) {			conf->ap_table_max_size = atoi(pos);		} else if (os_strcmp(buf, "ap_table_expiration_time") == 0) {			conf->ap_table_expiration_time = atoi(pos);		} else if (os_strncmp(buf, "tx_queue_", 9) == 0) {			if (hostapd_config_tx_queue(conf, buf, pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid TX "					   "queue item", line);				errors++;			}		} else if (os_strcmp(buf, "wme_enabled") == 0) {			bss->wme_enabled = atoi(pos);		} else if (os_strncmp(buf, "wme_ac_", 7) == 0) {			if (hostapd_config_wme_ac(conf, buf, pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid wme "					   "ac item", line);				errors++;			}		} else if (os_strcmp(buf, "bss") == 0) {			if (hostapd_config_bss(conf, pos)) {				wpa_printf(MSG_ERROR, "Line %d: invalid bss "					   "item", line);				errors++;			}		} else if (os_strcmp(buf, "bssid") == 0) {			if (bss == conf->bss &&			    (!conf->driver || !conf->driver->init_bssid)) {				wpa_printf(MSG_ERROR, "Line %d: bssid item "					   "not allowed for the default "					   "interface and this driver", line);				errors++;			} else if (hwaddr_aton(pos, bss->bssid)) {				wpa_printf(MSG_ERROR, "Line %d: invalid bssid "					   "item", line);				errors++;			}#ifdef CONFIG_IEEE80211W		} else if (os_strcmp(buf, "ieee80211w") == 0) {			bss->ieee80211w = atoi(pos);		} else if (os_strcmp(buf, "assoc_sa_query_max_timeout") == 0) {			bss->assoc_sa_query_max_timeout = atoi(pos);			if (bss->assoc_sa_query_max_timeout == 0) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "assoc_sa_query_max_timeout", line);				errors++;			}		} else if (os_strcmp(buf, "assoc_sa_query_retry_timeout") == 0)		{			bss->assoc_sa_query_retry_timeout = atoi(pos);			if (bss->assoc_sa_query_retry_timeout == 0) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "assoc_sa_query_retry_timeout",					   line);				errors++;			}#endif /* CONFIG_IEEE80211W */#ifdef CONFIG_IEEE80211N		} else if (os_strcmp(buf, "ieee80211n") == 0) {			conf->ieee80211n = atoi(pos);		} else if (os_strcmp(buf, "ht_capab") == 0) {			if (hostapd_config_ht_capab(conf, pos) < 0) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "ht_capab", line);				errors++;			}#endif /* CONFIG_IEEE80211N */		} else if (os_strcmp(buf, "max_listen_interval") == 0) {			bss->max_listen_interval = atoi(pos);		} else if (os_strcmp(buf, "okc") == 0) {			bss->okc = atoi(pos);#ifdef CONFIG_WPS		} else if (os_strcmp(buf, "wps_state") == 0) {			bss->wps_state = atoi(pos);			if (bss->wps_state < 0 || bss->wps_state > 2) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "wps_state", line);				errors++;			}		} else if (os_strcmp(buf, "ap_setup_locked") == 0) {			bss->ap_setup_locked = atoi(pos);		} else if (os_strcmp(buf, "uuid") == 0) {			if (uuid_str2bin(pos, bss->uuid)) {				wpa_printf(MSG_ERROR, "Line %d: invalid UUID",					   line);				errors++;			}		} else if (os_strcmp(buf, "wps_pin_requests") == 0) {			os_free(bss->wps_pin_requests);			bss->wps_pin_requests = os_strdup(pos);		} else if (os_strcmp(buf, "device_name") == 0) {			if (os_strlen(pos) > 32) {				wpa_printf(MSG_ERROR, "Line %d: Too long "					   "device_name", line);				errors++;			}			os_free(bss->device_name);			bss->device_name = os_strdup(pos);		} else if (os_strcmp(buf, "manufacturer") == 0) {			if (os_strlen(pos) > 64) {				wpa_printf(MSG_ERROR, "Line %d: Too long "					   "manufacturer", line);				errors++;			}			os_free(bss->manufacturer);			bss->manufacturer = os_strdup(pos);		} else if (os_strcmp(buf, "model_name") == 0) {			if (os_strlen(pos) > 32) {				wpa_printf(MSG_ERROR, "Line %d: Too long "					   "model_name", line);				errors++;			}			os_free(bss->model_name);			bss->model_name = os_strdup(pos);		} else if (os_strcmp(buf, "model_number") == 0) {			if (os_strlen(pos) > 32) {				wpa_printf(MSG_ERROR, "Line %d: Too long "					   "model_number", line);				errors++;			}			os_free(bss->model_number);			bss->model_number = os_strdup(pos);		} else if (os_strcmp(buf, "serial_number") == 0) {			if (os_strlen(pos) > 32) {				wpa_printf(MSG_ERROR, "Line %d: Too long "					   "serial_number", line);				errors++;			}			os_free(bss->serial_number);			bss->serial_number = os_strdup(pos);		} else if (os_strcmp(buf, "device_type") == 0) {			os_free(bss->device_type);			bss->device_type = os_strdup(pos);		} else if (os_strcmp(buf, "config_methods") == 0) {			os_free(bss->config_methods);			bss->config_methods = os_strdup(pos);		} else if (os_strcmp(buf, "os_version") == 0) {			if (hexstr2bin(pos, bss->os_version, 4)) {				wpa_printf(MSG_ERROR, "Line %d: invalid "					   "os_version", line);				errors++;			}		} else if (os_strcmp(buf, "ap_pin") == 0) {			os_free(bss->ap_pin);			bss->ap_pin = os_strdup(pos);		} else if (os_strcmp(buf, "skip_cred_build") == 0) {			bss->skip_cred_build = atoi(pos);		} else if (os_strcmp(buf, "extra_cred") == 0) {			os_free(bss->extra_cred);			bss->extra_cred =				(u8 *) os_readfile(pos, &bss->extra_cred_len);			if (bss->extra_cred == NULL) {				wpa_printf(MSG_ERROR, "Line %d: could not "					   "read Credentials from '%s'",					   line, pos);				errors++;			}		} else if (os_strcmp(buf, "wps_cred_processing") == 0) {			bss->wps_cred_processing = atoi(pos);		} else if (os_strcmp(buf, "ap_settings") == 0) {			os_free(bss->ap_settings);			bss->ap_settings =				(u8 *) os_readfile(pos, &bss->ap_settings_len);			if (bss->ap_settings == NULL) {				wpa_printf(MSG_ERROR, "Line %d: could not "					   "read AP Settings from '%s'",					   line, pos);				errors++;			}		} else if (os_strcmp(buf, "upnp_iface") == 0) {			bss->upnp_iface = os_strdup(pos);		} else if (os_strcmp(buf, "friendly_name") == 0) {			os_free(bss->friendly_name);			bss->friendly_name = os_strdup(pos);		} else if (os_strcmp(buf, "manufacturer_url") == 0) {			os_free(bss->manufacturer_url);			bss->manufacturer_url = os_strdup(pos);		} else if (os_strcmp(buf, "model_description") == 0) {			os_free(bss->model_description);			bss->model_description = os_strdup(pos);		} else if (os_strcmp(buf, "model_url") == 0) {			os_free(bss->model_url);			bss->model_url = os_strdup(pos);		} else if (os_strcmp(buf, "upc") == 0) {			os_free(bss->upc);			bss->upc = os_strdup(pos);#endif /* CONFIG_WPS */		} else {			wpa_printf(MSG_ERROR, "Line %d: unknown configuration "				   "item '%s'", line, buf);			errors++;		}	}	fclose(f);	if (bss->individual_wep_key_len == 0) {		/* individual keys are not use; can use key idx0 for broadcast		 * keys */		bss->broadcast_key_idx_min = 0;	}	/* Select group cipher based on the enabled pairwise cipher suites */	pairwise = 0;	if (bss->wpa & 1)		pairwise |= bss->wpa_pairwise;	if (bss->wpa & 2) {		if (bss->rsn_pairwise == 0)			bss->rsn_pairwise = bss->wpa_pairwise;		pairwise |= bss->rsn_pairwise;	}	if (pairwise & WPA_CIPHER_TKIP)		bss->wpa_group = WPA_CIPHER_TKIP;	else		bss->wpa_group = WPA_CIPHER_CCMP;	for (i = 0; i < conf->num_bss; i++) {		bss = &conf->bss[i];		bss->radius->auth_server = bss->radius->auth_servers;		bss->radius->acct_server = bss->radius->acct_servers;		if (bss->wpa && bss->ieee802_1x) {			bss->ssid.security_policy = SECURITY_WPA;		} else if (bss->wpa) {			bss->ssid.security_policy = SECURITY_WPA_PSK;		} else if (bss->ieee802_1x) {			bss->ssid.security_policy = SECURITY_IEEE_802_1X;			bss->ssid.wep.default_len = bss->default_wep_key_len;		} else if (bss->ssid.wep.keys_set)			bss->ssid.security_policy = SECURITY_STATIC_WEP;		else			bss->ssid.security_policy = SECURITY_PLAINTEXT;	}	if (hostapd_config_check(conf))		errors++;	if (errors) {		wpa_printf(MSG_ERROR, "%d errors found in configuration file "			   "'%s'", errors, fname);		hostapd_config_free(conf);		conf = NULL;	}	return conf;}int hostapd_wep_key_cmp(struct hostapd_wep_keys *a, struct hostapd_wep_keys *b){	int i;	if (a->idx != b->idx || a->default_len != b->default_len)		return 1;	for (i = 0; i < NUM_WEP_KEYS; i++)		if (a->len[i] != b->len[i] ||		    os_memcmp(a->key[i], b->key[i], a->len[i]) != 0)			return 1;	return 0;}static void hostapd_config_free_radius(struct hostapd_radius_server *servers,				       int num_servers){	int i;	for (i = 0; i < num_servers; i++) {		os_free(servers[i].shared_secret);	}	os_free(servers);}static void hostapd_config_free_eap_user(struct hostapd_eap_user *user){	os_free(user->identity);	os_free(user->password);	os_free(user);}static void hostapd_config_free_wep(struct hostapd_wep_keys *keys){	int i;	for (i = 0; i < NUM_WEP_KEYS; i++) {		os_free(keys->key[i]);		keys->key[i] = NULL;	}}static void hostapd_config_free_bss(struct hostapd_bss_config *conf){	struct hostapd_wpa_psk *psk, *prev;	struct hostapd_eap_user *user, *prev_user;	if (conf == NULL)		return;	psk = conf->ssid.wpa_psk;	while (psk) {		prev = psk;		psk = psk->next;		os_free(prev);	}	os_free(conf->ssid.wpa_passphrase);	os_free(conf->ssid.wpa_psk_file);#ifdef CONFIG_FULL_DYNAMIC_VLAN	os_free(conf->ssid.vlan_tagged_interface);#endif /* CONFIG_FULL_DYNAMIC_VLAN */	user = conf->eap_user;	while (user) {		prev_user = user;		user = user->next;		hostapd_config_free_eap_user(prev_user);	}	os_free(conf->dump_log_name);	os_free(conf->eap_req_id_text);	os_free(conf->accept_mac);	os_free(conf->deny_mac);	os_free(conf->nas_identifier);	hostapd_config_free_radius(conf->radius->auth_servers,				   conf->radius->num_auth_servers);	hostapd_config_free_radius(conf->radius->acct_servers,				   conf->radius->num_acct_servers);	os_free(conf->rsn_preauth_interfaces);	os_free(conf->ctrl_interface);	os_free(conf->ca_cert);	os_free(conf->server_cert);	os_free(conf->private_key);	os_free(conf->private_key_passwd);	os_free(conf->dh_file);	os_free(conf->pac_opaque_encr_key);	os_free(conf->eap_fast_a_id);	os_free(conf->eap_fast_a_id_info);	os_free(conf->eap_sim_db);	os_free(conf->radius_server_clients);	os_free(conf->test_socket);	os_free(conf->radius);	hostapd_config_free_vlan(conf);	if (conf->ssid.dyn_vlan_keys) {		struct hostapd_ssid *ssid = &conf->ssid;		size_t i;		for (i = 0; i <= ssid->max_dyn_vlan_keys; i++) {			if (ssid->dyn_vlan_keys[i] == NULL)				continue;			hostapd_config_free_wep(ssid->dyn_vlan_keys[i]);			os_free(ssid->dyn_vlan_keys[i]);		}		os_free(ssid->dyn_vlan_keys);		ssid->dyn_vlan_keys = NULL;	}#ifdef CONFIG_IEEE80211R	{		struct ft_remote_r0kh *r0kh, *r0kh_prev;		struct ft_remote_r1kh *r1kh, *r1kh_prev;		r0kh = conf->r0kh_list;		conf->r0kh_list = NULL;		while (r0kh) {			r0kh_prev = r0kh;			r0kh = r0kh->next;			os_free(r0kh_prev);		}		r1kh = conf->r1kh_list;		conf->r1kh_list = NULL;		while (r1kh) {			r1kh_prev = r1kh;			r1kh = r1kh->next;			os_free(r1kh_prev);		}	}#endif /* CONFIG_IEEE80211R */#ifdef CONFIG_WPS	os_free(conf->wps_pin_requests);	os_free(conf->device_name);	os_free(conf->manufacturer);	os_free(conf->model_name);	os_free(conf->model_number);	os_free(conf->serial_number);	os_free(conf->device_type);	os_free(conf->config_methods);	os_free(conf->ap_pin);	os_free(conf->extra_cred);	os_free(conf->ap_settings);	os_free(conf->upnp_iface);	os_free(conf->friendly_name);	os_free(conf->manufacturer_url);	os_free(conf->model_description);	os_free(conf->model_url);	os_free(conf->upc);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -