亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩精品亚洲专区| 国产激情视频一区二区在线观看| 欧美激情在线一区二区| 国产亚洲婷婷免费| 欧美高清在线一区二区| 亚洲精品国产高清久久伦理二区| 亚洲精品你懂的| 洋洋av久久久久久久一区| 人人狠狠综合久久亚洲| 国模娜娜一区二区三区| 波多野结衣中文字幕一区| 91在线视频播放| 91精品国产全国免费观看| 中文字幕日本不卡| 日韩欧美一区二区免费| 奇米777欧美一区二区| 亚洲成人手机在线| 中文字幕中文在线不卡住| 久久综合久色欧美综合狠狠| 国产+成+人+亚洲欧洲自线| 久久久亚洲精品石原莉奈 | 欧美精选一区二区| 99精品欧美一区| 色呦呦国产精品| 欧美午夜精品久久久久久超碰| 久久99久久精品欧美| 欧美人妖巨大在线| 国产一区二区在线免费观看| 天堂久久久久va久久久久| 亚洲激情六月丁香| 免费日本视频一区| 日韩小视频在线观看专区| 亚洲国产精品久久人人爱| 色综合婷婷久久| 亚洲不卡在线观看| 欧美本精品男人aⅴ天堂| 国产激情一区二区三区| 欧美一区二区免费视频| 久久久国产一区二区三区四区小说 | 欧美日韩精品一区二区天天拍小说 | 国产美女av一区二区三区| 精品久久久久久久久久久院品网| 美女视频一区在线观看| 久久精品亚洲精品国产欧美| 99久久国产综合精品色伊| 蜜乳av一区二区三区| 久久亚洲春色中文字幕久久久| 亚洲成人动漫一区| 欧美综合欧美视频| 精品久久久久av影院| 青青青爽久久午夜综合久久午夜| 欧美一级高清大全免费观看| 欧美日本韩国一区二区三区视频| 午夜国产精品一区| av午夜一区麻豆| 无码av中文一区二区三区桃花岛| 欧美午夜精品久久久| 一区二区三区资源| 国产日韩欧美精品一区| 不卡av电影在线播放| 亚洲一区二区视频在线观看| 欧美色图在线观看| 亚洲妇女屁股眼交7| 精品国产91乱码一区二区三区| 丰满白嫩尤物一区二区| 麻豆91在线观看| 亚洲男人电影天堂| 亚洲欧美日本韩国| 亚洲视频一二三| 欧美高清在线视频| 国产精品乱人伦中文| 国产午夜亚洲精品午夜鲁丝片| 宅男噜噜噜66一区二区66| 欧美唯美清纯偷拍| 色悠悠久久综合| 7777精品伊人久久久大香线蕉超级流畅 | 欧美大尺度电影在线| 欧美影视一区二区三区| 欧美一区二区三区日韩视频| 久久色成人在线| 国产日产精品1区| 91蜜桃免费观看视频| 成人免费视频免费观看| 成人毛片视频在线观看| 成人app下载| 国产精品一品视频| 日韩一区二区三| 日韩激情av在线| 欧美一区二区三区免费在线看| 亚洲午夜久久久久久久久电影网| 99国产精品久久久久| 久久精品国产澳门| 国产高清久久久| 欧美日韩免费观看一区三区| 国产无人区一区二区三区| 亚州成人在线电影| 日本精品免费观看高清观看| 日韩美一区二区三区| 亚洲一区二区欧美激情| 成人伦理片在线| 欧美激情综合五月色丁香| 青青草视频一区| 91精品国产美女浴室洗澡无遮挡| 日韩美女啊v在线免费观看| 激情文学综合插| 精品欧美一区二区久久| 日韩高清中文字幕一区| 欧美一区二区三区男人的天堂| 亚洲成人一区在线| 91麻豆精品国产91久久久使用方法 | 成人手机在线视频| 精品久久久久久无| 久久激情综合网| 国产亚洲视频系列| 成人成人成人在线视频| 国产精品对白交换视频| 一本色道久久综合亚洲精品按摩| 亚洲视频一区在线| 91麻豆精品国产综合久久久久久| 亚洲成人在线网站| 日韩视频免费观看高清在线视频| 国产精品一区一区| 一区二区三区自拍| 亚洲精品一区二区三区四区高清| 国产精品资源在线观看| 国产精品欧美一级免费| 欧美日韩一区二区三区四区| 韩国三级电影一区二区| 亚洲色图清纯唯美| 日韩欧美专区在线| 欧美视频在线播放| 成人高清视频在线观看| 视频一区欧美精品| 亚洲视频一区二区在线观看| 在线播放视频一区| 一本色道久久综合亚洲91| 国产精品亚洲а∨天堂免在线| 亚洲精品成人悠悠色影视| 欧美国产国产综合| 亚洲精品在线三区| 欧美一区二区三区性视频| 91黄色免费网站| 91日韩精品一区| 色综合天天综合色综合av | 国产精品素人一区二区| 91精品蜜臀在线一区尤物| 欧美一卡2卡三卡4卡5免费| 日韩中文字幕不卡| 中文字幕在线不卡视频| 欧美激情一区二区在线| 日韩欧美三级在线| 51精品秘密在线观看| 欧美日韩一区二区电影| 欧美欧美欧美欧美首页| 91麻豆精品国产91久久久更新时间| 色狠狠综合天天综合综合| 色综合久久久久| 欧美亚洲高清一区| 欧美精品三级日韩久久| 精品成人一区二区三区四区| 久久久久高清精品| 亚洲精品免费在线播放| 日本美女一区二区| 国产sm精品调教视频网站| 99久久精品国产网站| 91久久精品日日躁夜夜躁欧美| 欧美性猛交一区二区三区精品| 精品少妇一区二区三区视频免付费 | 国产精品小仙女| 在线观看亚洲成人| 久久久电影一区二区三区| 一区二区三区在线播放| 狠狠狠色丁香婷婷综合激情| 91色乱码一区二区三区| 国产色婷婷亚洲99精品小说| 一区二区三区在线观看动漫| 国产成人小视频| 91精品国产综合久久久久久| 洋洋成人永久网站入口| 91在线国产福利| 亚洲三级电影网站| 成人激情免费网站| 国产精品久久一卡二卡| 国产福利一区二区三区视频| 欧美成人猛片aaaaaaa| 午夜精品视频一区| 欧洲另类一二三四区| 亚洲国产美女搞黄色| 欧美日韩国产一二三| 亚洲永久免费av| 欧美日韩国产影片| 麻豆成人91精品二区三区| 日韩一区二区三区高清免费看看| 天天综合网 天天综合色| 欧美日本在线视频| 精品一区二区三区免费观看| 日本一区二区免费在线| 成人精品电影在线观看| 亚洲高清视频的网址| 日韩精品专区在线影院重磅|