亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? driver_ralink.c

?? IEEE802.11 a/b/g 客戶端應(yīng)用程序源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* * WPA Supplicant - driver interaction with Ralink Wireless Client * Copyright (c) 2003-2006, Jouni Malinen <j@w1.fi> * Copyright (c) 2007, Snowpin Lee <snowpin_lee@ralinktech.com.tw> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Alternatively, this software may be distributed under the terms of BSD * license. * * See README and COPYING for more details. * */#include "includes.h"#include <sys/ioctl.h>#include "wireless_copy.h"#include "common.h"#include "driver.h"#include "l2_packet/l2_packet.h"#include "eloop.h"#include "ieee802_11_defs.h"#include "priv_netlink.h"#include "driver_ralink.h"static void wpa_driver_ralink_scan_timeout(void *eloop_ctx, void *timeout_ctx);#define MAX_SSID_LEN 32struct wpa_driver_ralink_data {	void *ctx;	int ioctl_sock;	int event_sock;	char ifname[IFNAMSIZ + 1];	u8 *assoc_req_ies;	size_t assoc_req_ies_len;	u8 *assoc_resp_ies;	size_t assoc_resp_ies_len;	int no_of_pmkid;	struct ndis_pmkid_entry *pmkid;	int we_version_compiled;	int ap_scan;	int scanning_done;	u8 g_driver_down;};static int ralink_set_oid(struct wpa_driver_ralink_data *drv,			  unsigned short oid, char *data, int len){	char *buf;	struct iwreq iwr;	buf = os_zalloc(len);	if (buf == NULL)		return -1;	os_memset(&iwr, 0, sizeof(iwr));	os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);	iwr.u.data.flags = oid;	iwr.u.data.flags |= OID_GET_SET_TOGGLE;	if (data)		os_memcpy(buf, data, len);	iwr.u.data.pointer = (caddr_t) buf;	iwr.u.data.length = len;	if (ioctl(drv->ioctl_sock, RT_PRIV_IOCTL, &iwr) < 0) {		wpa_printf(MSG_DEBUG, "%s: oid=0x%x len (%d) failed",			   __func__, oid, len);		os_free(buf);		return -1;	}	os_free(buf);	return 0;}static intralink_get_new_driver_flag(struct wpa_driver_ralink_data *drv){	struct iwreq iwr;	UCHAR enabled = 0;	os_memset(&iwr, 0, sizeof(iwr));	os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);	iwr.u.data.pointer = (UCHAR*) &enabled;	iwr.u.data.flags = RT_OID_NEW_DRIVER;	if (ioctl(drv->ioctl_sock, RT_PRIV_IOCTL, &iwr) < 0) {		wpa_printf(MSG_DEBUG, "%s: failed", __func__);		return 0;	}	return (enabled == 1) ? 1 : 0;}static int wpa_driver_ralink_get_bssid(void *priv, u8 *bssid){	struct wpa_driver_ralink_data *drv = priv;	struct iwreq iwr;	int ret = 0;	if (drv->g_driver_down == 1)		return -1;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	os_memset(&iwr, 0, sizeof(iwr));	os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);	if (ioctl(drv->ioctl_sock, SIOCGIWAP, &iwr) < 0) {		perror("ioctl[SIOCGIWAP]");		ret = -1;	}	os_memcpy(bssid, iwr.u.ap_addr.sa_data, ETH_ALEN);	return ret;}static int wpa_driver_ralink_get_ssid(void *priv, u8 *ssid){	struct wpa_driver_ralink_data *drv = priv;#if 0	struct wpa_supplicant *wpa_s = drv->ctx;	struct wpa_ssid *entry;#endif	int ssid_len;	u8 bssid[ETH_ALEN];	u8 ssid_str[MAX_SSID_LEN];	struct iwreq iwr;#if 0	int result = 0;#endif	int ret = 0;#if 0	BOOLEAN	ieee8021x_mode = FALSE;	BOOLEAN ieee8021x_required_key = FALSE;#endif	if (drv->g_driver_down == 1)		return -1;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	os_memset(&iwr, 0, sizeof(iwr));	os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);	iwr.u.essid.pointer = (caddr_t) ssid;	iwr.u.essid.length = 32;	if (ioctl(drv->ioctl_sock, SIOCGIWESSID, &iwr) < 0) {		perror("ioctl[SIOCGIWESSID]");		ret = -1;	} else		ret = iwr.u.essid.length;	if (ret <= 0)		return ret;	ssid_len = ret;	os_memset(ssid_str, 0, MAX_SSID_LEN);	os_memcpy(ssid_str, ssid, ssid_len);	if (drv->ap_scan == 0) {		/* Read BSSID form driver */		if (wpa_driver_ralink_get_bssid(priv, bssid) < 0) {			wpa_printf(MSG_WARNING, "Could not read BSSID from "				   "driver.");			return ret;		}#if 0		entry = wpa_s->conf->ssid;		while (entry) {			if (!entry->disabled && ssid_len == entry->ssid_len &&			    os_memcmp(ssid_str, entry->ssid, ssid_len) == 0 &&			    (!entry->bssid_set ||			     os_memcmp(bssid, entry->bssid, ETH_ALEN) == 0)) {				/* match the config of driver */				result = 1;				break;			}			entry = entry->next;		}		if (result) {			wpa_printf(MSG_DEBUG, "Ready to set 802.1x mode and "				   "ieee_required_keys parameters to driver");			/* set 802.1x mode and ieee_required_keys parameter */			if (entry->key_mgmt == WPA_KEY_MGMT_IEEE8021X_NO_WPA) {				if ((entry->eapol_flags & (EAPOL_FLAG_REQUIRE_KEY_UNICAST | EAPOL_FLAG_REQUIRE_KEY_BROADCAST)))						ieee8021x_required_key = TRUE;				ieee8021x_mode = TRUE;			}			if (ralink_set_oid(drv, OID_802_11_SET_IEEE8021X, (char *) &ieee8021x_mode, sizeof(BOOLEAN)) < 0)			{				wpa_printf(MSG_DEBUG, "RALINK: Failed to set OID_802_11_SET_IEEE8021X(%d)", (int) ieee8021x_mode);			}			else			{				wpa_printf(MSG_DEBUG, "ieee8021x_mode is %s", ieee8021x_mode ? "TRUE" : "FALSE");			}			if (ralink_set_oid(drv, OID_802_11_SET_IEEE8021X_REQUIRE_KEY, (char *) &ieee8021x_required_key, sizeof(BOOLEAN)) < 0)			{				wpa_printf(MSG_DEBUG, "ERROR: Failed to set OID_802_11_SET_IEEE8021X_REQUIRE_KEY(%d)", (int) ieee8021x_required_key);			}			else			{				wpa_printf(MSG_DEBUG, "ieee8021x_required_key is %s and eapol_flag(%d)", ieee8021x_required_key ? "TRUE" : "FALSE",																								entry->eapol_flags);			}		}#endif	}	return ret;}static int wpa_driver_ralink_set_ssid(struct wpa_driver_ralink_data *drv,				      const u8 *ssid, size_t ssid_len){	NDIS_802_11_SSID *buf;	int ret = 0;	struct iwreq iwr;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	buf = os_zalloc(sizeof(NDIS_802_11_SSID));	if (buf == NULL)		return -1;	os_memset(buf, 0, sizeof(buf));	buf->SsidLength = ssid_len;	os_memcpy(buf->Ssid, ssid, ssid_len);	os_memset(&iwr, 0, sizeof(iwr));	os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);	iwr.u.data.flags = OID_802_11_SSID;	iwr.u.data.flags |= OID_GET_SET_TOGGLE;	iwr.u.data.pointer = (caddr_t) buf;	iwr.u.data.length = sizeof(NDIS_802_11_SSID);	if (ioctl(drv->ioctl_sock, RT_PRIV_IOCTL, &iwr) < 0) {		perror("ioctl[RT_PRIV_IOCTL] -- OID_802_11_SSID");		ret = -1;	}	os_free(buf);	return ret;}static void wpa_driver_ralink_event_pmkid(struct wpa_driver_ralink_data *drv,					  const u8 *data, size_t data_len){	NDIS_802_11_PMKID_CANDIDATE_LIST *pmkid;	size_t i;	union wpa_event_data event;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	if (data_len < 8) {		wpa_printf(MSG_DEBUG, "RALINK: Too short PMKID Candidate List "			   "Event (len=%lu)", (unsigned long) data_len);		return;	}	pmkid = (NDIS_802_11_PMKID_CANDIDATE_LIST *) data;	wpa_printf(MSG_DEBUG, "RALINK: PMKID Candidate List Event - Version %d"		   " NumCandidates %d",		   (int) pmkid->Version, (int) pmkid->NumCandidates);	if (pmkid->Version != 1) {		wpa_printf(MSG_DEBUG, "RALINK: Unsupported PMKID Candidate "			   "List Version %d", (int) pmkid->Version);		return;	}	if (data_len < 8 + pmkid->NumCandidates * sizeof(PMKID_CANDIDATE)) {		wpa_printf(MSG_DEBUG, "RALINK: PMKID Candidate List "			   "underflow");		return;	}	os_memset(&event, 0, sizeof(event));	for (i = 0; i < pmkid->NumCandidates; i++) {		PMKID_CANDIDATE *p = &pmkid->CandidateList[i];		wpa_printf(MSG_DEBUG, "RALINK: %d: " MACSTR " Flags 0x%x",			   i, MAC2STR(p->BSSID), (int) p->Flags);		os_memcpy(event.pmkid_candidate.bssid, p->BSSID, ETH_ALEN);		event.pmkid_candidate.index = i;		event.pmkid_candidate.preauth =			p->Flags & NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED;		wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE,				     &event);	}}static int wpa_driver_ralink_set_pmkid(struct wpa_driver_ralink_data *drv){	int len, count, i, ret;	struct ndis_pmkid_entry *entry;	NDIS_802_11_PMKID *p;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	count = 0;	entry = drv->pmkid;	while (entry) {		count++;		if (count >= drv->no_of_pmkid)			break;		entry = entry->next;	}	len = 8 + count * sizeof(BSSID_INFO);	p = os_zalloc(len);	if (p == NULL)		return -1;	p->Length = len;	p->BSSIDInfoCount = count;	entry = drv->pmkid;	for (i = 0; i < count; i++) {		os_memcpy(&p->BSSIDInfo[i].BSSID, entry->bssid, ETH_ALEN);		os_memcpy(&p->BSSIDInfo[i].PMKID, entry->pmkid, 16);		entry = entry->next;	}	wpa_hexdump(MSG_MSGDUMP, "NDIS: OID_802_11_PMKID",		    (const u8 *) p, len);	ret = ralink_set_oid(drv, OID_802_11_PMKID, (char *) p, len);	os_free(p);	return ret;}static int wpa_driver_ralink_add_pmkid(void *priv, const u8 *bssid,				       const u8 *pmkid){	struct wpa_driver_ralink_data *drv = priv;	struct ndis_pmkid_entry *entry, *prev;	if (drv->g_driver_down == 1)		return -1;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	if (drv->no_of_pmkid == 0)		return 0;	prev = NULL;	entry = drv->pmkid;	while (entry) {		if (os_memcmp(entry->bssid, bssid, ETH_ALEN) == 0)			break;		prev = entry;		entry = entry->next;	}	if (entry) {		/* Replace existing entry for this BSSID and move it into the		 * beginning of the list. */		os_memcpy(entry->pmkid, pmkid, 16);		if (prev) {			prev->next = entry->next;			entry->next = drv->pmkid;			drv->pmkid = entry;		}	} else {		entry = os_malloc(sizeof(*entry));		if (entry) {			os_memcpy(entry->bssid, bssid, ETH_ALEN);			os_memcpy(entry->pmkid, pmkid, 16);			entry->next = drv->pmkid;			drv->pmkid = entry;		}	}	return wpa_driver_ralink_set_pmkid(drv);}static int wpa_driver_ralink_remove_pmkid(void *priv, const u8 *bssid,					  const u8 *pmkid){	struct wpa_driver_ralink_data *drv = priv;	struct ndis_pmkid_entry *entry, *prev;	if (drv->g_driver_down == 1)		return -1;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	if (drv->no_of_pmkid == 0)		return 0;	entry = drv->pmkid;	prev = NULL;	drv->pmkid = NULL;	while (entry) {		if (os_memcmp(entry->bssid, bssid, ETH_ALEN) == 0 &&		    os_memcmp(entry->pmkid, pmkid, 16) == 0) {			if (prev)				prev->next = entry->next;			else				drv->pmkid = entry->next;			os_free(entry);			break;		}		prev = entry;		entry = entry->next;	}	return wpa_driver_ralink_set_pmkid(drv);}static int wpa_driver_ralink_flush_pmkid(void *priv){	struct wpa_driver_ralink_data *drv = priv;	NDIS_802_11_PMKID p;	struct ndis_pmkid_entry *pmkid, *prev;	if (drv->g_driver_down == 1)		return -1;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	if (drv->no_of_pmkid == 0)		return 0;	pmkid = drv->pmkid;	drv->pmkid = NULL;	while (pmkid) {		prev = pmkid;		pmkid = pmkid->next;		os_free(prev);	}	os_memset(&p, 0, sizeof(p));	p.Length = 8;	p.BSSIDInfoCount = 0;	wpa_hexdump(MSG_MSGDUMP, "NDIS: OID_802_11_PMKID (flush)",		    (const u8 *) &p, 8);	return ralink_set_oid(drv, OID_802_11_PMKID, (char *) &p, 8);}static voidwpa_driver_ralink_event_wireless_custom(struct wpa_driver_ralink_data *drv,					void *ctx, char *custom){	union wpa_event_data data;	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);	wpa_printf(MSG_DEBUG, "Custom wireless event: '%s'", custom);	os_memset(&data, 0, sizeof(data));	/* Host AP driver */	if (os_strncmp(custom, "MLME-MICHAELMICFAILURE.indication", 33) == 0) {		/* receive a MICFAILURE report */		data.michael_mic_failure.unicast =			os_strstr(custom, " unicast") != NULL;		/* TODO: parse parameters(?) */		wpa_supplicant_event(ctx, EVENT_MICHAEL_MIC_FAILURE, &data);	} else if (os_strncmp(custom, "ASSOCINFO_ReqIEs=", 17) == 0) {		/* receive assoc. req. IEs */		char *spos;		int bytes;		spos = custom + 17;		/*get IE's length */		/*		 * bytes = strlen(spos); ==> bug, bytes may less than original		 * size by using this way to get size. snowpin 20070312		 * if (!bytes)		 *	return;		 */		bytes = drv->assoc_req_ies_len;		data.assoc_info.req_ies = os_malloc(bytes);		if (data.assoc_info.req_ies == NULL)			return;		data.assoc_info.req_ies_len = bytes;		os_memcpy(data.assoc_info.req_ies, spos, bytes);		/* skip the '\0' byte */		spos += bytes + 1;		data.assoc_info.resp_ies = NULL;		data.assoc_info.resp_ies_len = 0;		if (os_strncmp(spos, " RespIEs=", 9) == 0) {			/* receive assoc. resp. IEs */			spos += 9;			/* get IE's length */			bytes = os_strlen(spos);			if (!bytes)				goto done;			data.assoc_info.resp_ies = os_malloc(bytes);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品潘金 | 国产麻豆视频精品| 欧美mv日韩mv国产网站app| 久久国产福利国产秒拍| 国产亚洲欧美一区在线观看| 成人免费三级在线| 亚洲国产日韩综合久久精品| 欧美精品成人一区二区三区四区| 蜜桃视频在线观看一区| 久久看人人爽人人| 色综合视频一区二区三区高清| 一区二区三区在线视频免费| 日韩视频在线一区二区| 成人美女视频在线观看18| 亚洲狼人国产精品| 日韩欧美国产综合一区| 成人亚洲精品久久久久软件| 亚洲国产一区二区视频| 2014亚洲片线观看视频免费| 99re66热这里只有精品3直播| 丝袜美腿亚洲一区二区图片| 久久精品一区蜜桃臀影院| 91黄视频在线| 国产福利精品一区二区| 亚洲国产综合色| 久久综合九色综合97婷婷女人| 91啦中文在线观看| 国产美女精品人人做人人爽| 亚洲免费伊人电影| 精品国产成人在线影院 | 26uuu欧美| 欧美在线观看禁18| 粉嫩高潮美女一区二区三区| 午夜欧美电影在线观看| 中文字幕av资源一区| 欧美一级片在线观看| gogogo免费视频观看亚洲一| 久久66热偷产精品| 五月天激情综合| 亚洲日本在线a| 国产性做久久久久久| 日韩一区二区三| 在线观看亚洲成人| av电影在线观看完整版一区二区| 精品在线亚洲视频| 日本网站在线观看一区二区三区| 亚洲欧美在线另类| 国产亚洲va综合人人澡精品| 欧美一级精品大片| 欧美性猛交一区二区三区精品| 成人sese在线| 国产成+人+日韩+欧美+亚洲| 极品瑜伽女神91| 奇米一区二区三区| 日韩二区在线观看| 亚洲1区2区3区4区| 夜夜嗨av一区二区三区中文字幕| 中文字幕av一区二区三区免费看| 欧美精品一区男女天堂| 欧美一区二区三区在线看| 欧美日免费三级在线| 日本精品一区二区三区高清| 99re免费视频精品全部| 91香蕉视频mp4| 9l国产精品久久久久麻豆| 成人91在线观看| 成人午夜又粗又硬又大| 成人免费av资源| 成人免费观看视频| 91小视频免费看| 99久久精品免费| 91尤物视频在线观看| 91美女片黄在线观看| 色综合久久久久网| 欧美日韩一区二区三区免费看| 在线一区二区三区做爰视频网站| 91福利小视频| 欧美理论在线播放| 日韩一区二区三区视频在线| 91精品国产乱码久久蜜臀| 日韩一二三四区| 欧美成人福利视频| 欧美高清在线一区二区| 18成人在线观看| 亚洲一线二线三线久久久| 亚洲成人午夜影院| 日本免费新一区视频| 激情欧美一区二区| 99久久伊人精品| 欧美在线观看视频在线| 91精品国产高清一区二区三区 | 久久综合一区二区| 中文字幕欧美日本乱码一线二线| 国产精品丝袜一区| 亚洲伊人色欲综合网| 免费xxxx性欧美18vr| 国产精品888| 色就色 综合激情| 91精品黄色片免费大全| 国产欧美视频一区二区三区| 亚洲美女少妇撒尿| 免费高清在线视频一区·| 国产成人小视频| 日本精品免费观看高清观看| 日韩欧美一区二区免费| 国产精品女上位| 日本视频一区二区| 不卡电影一区二区三区| 欧美日韩激情在线| 久久综合狠狠综合久久激情| 亚洲欧美国产毛片在线| 麻豆国产精品视频| 色伊人久久综合中文字幕| 日韩欧美精品在线| 一区二区三区中文字幕精品精品| 男人操女人的视频在线观看欧美| 99视频精品免费视频| 欧美猛男超大videosgay| 久久精品欧美一区二区三区麻豆| 亚洲国产日韩一区二区| 国产成人精品免费一区二区| 欧美久久婷婷综合色| 国产精品美女久久久久久久久久久 | 国产欧美日本一区二区三区| 亚洲成人免费av| 成人精品视频一区| 日韩美女天天操| 一区二区三国产精华液| 国产不卡在线视频| 欧美一级夜夜爽| 亚洲一区二区三区四区在线观看| 国产精品一二三四| 欧美日本免费一区二区三区| 日韩一区在线看| 国产精品77777| 日韩亚洲欧美一区二区三区| 又紧又大又爽精品一区二区| 国产91综合网| 欧美大白屁股肥臀xxxxxx| 亚洲国产色一区| 91麻豆免费视频| 日本一区二区三区四区在线视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美日韩在线不卡| 亚洲精品国久久99热| 成人福利视频在线| 久久精品在线免费观看| 久久er99精品| 日韩欧美一级精品久久| 日韩黄色免费网站| 欧美日韩综合不卡| 亚洲夂夂婷婷色拍ww47| 91免费版pro下载短视频| 中文字幕一区二区三区视频| 成人综合在线视频| 国产日韩视频一区二区三区| 国产麻豆精品在线| 亚洲精品一区二区三区福利| 久久成人av少妇免费| 欧美xxxxx牲另类人与| 日韩av网站在线观看| 欧美精品久久99| 日本不卡一区二区三区 | 欧美色综合天天久久综合精品| 亚洲视频一二三| 91小视频在线免费看| 亚洲柠檬福利资源导航| 色老汉一区二区三区| 亚洲国产成人高清精品| 3d成人h动漫网站入口| 奇米影视在线99精品| 精品久久久久久久久久久久久久久久久 | 亚洲成人三级小说| 欧美日韩aaa| 欧美aaaaa成人免费观看视频| 日韩午夜在线影院| 国产精品综合av一区二区国产馆| 久久久另类综合| jlzzjlzz欧美大全| 一区二区三区在线观看欧美| 欧美丝袜自拍制服另类| 午夜a成v人精品| 日韩久久精品一区| 国产成人综合精品三级| 亚洲欧洲精品一区二区三区不卡| 色拍拍在线精品视频8848| 亚洲超碰97人人做人人爱| 欧美一区二区性放荡片| 国产呦萝稀缺另类资源| 中文字幕一区免费在线观看| 日本乱人伦一区| 免费成人美女在线观看.| 久久久精品天堂| 日本道免费精品一区二区三区| 首页综合国产亚洲丝袜| 国产午夜精品一区二区| 色天使色偷偷av一区二区| 蜜臀久久99精品久久久画质超高清| 久久久久国产一区二区三区四区 | 欧美激情一区二区|