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

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

?? driver_ralink.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統(tǒng)下
?? C
?? 第 1 頁 / 共 3 頁
字號:
    wpa_driver_ralink_flush_pmkid(drv);
    sleep(1);
    ralink_set_iface_flags(drv, 0);  

	eloop_unregister_read_sock(drv->event_sock);
	close(drv->event_sock);
	close(drv->ioctl_sock);
	free(drv);
}

static void wpa_driver_ralink_scan_timeout(void *eloop_ctx,
					     void *timeout_ctx)
{
	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	wpa_printf(MSG_DEBUG, "Scan timeout - try to get results");
	wpa_supplicant_event(timeout_ctx, EVENT_SCAN_RESULTS, NULL);

	scanning_done = 1;
}

static int wpa_driver_ralink_scan(void *priv, const u8 *ssid,
				    size_t ssid_len)
{
	struct wpa_driver_ralink_data *drv = priv;
	struct iwreq iwr;
	int ret = 0;

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	if (ssid_len > IW_ESSID_MAX_SIZE) {
		wpa_printf(MSG_DEBUG, "%s: too long SSID (%lu)",
			   __FUNCTION__, (unsigned long) ssid_len);
		return -1;
	}

	memset(&iwr, 0, sizeof(iwr));
	strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);

	if (ioctl(drv->ioctl_sock, SIOCSIWSCAN, &iwr) < 0) {
		perror("ioctl[SIOCSIWSCAN]");
		ret = -1;
	}

	/* Not all drivers generate "scan completed" wireless event, so try to
	 * read results after a timeout. */
	eloop_register_timeout(4, 0, wpa_driver_ralink_scan_timeout, drv,
			       drv->ctx);

    scanning_done = 0;

	return ret;
}

static int
wpa_driver_ralink_get_scan_results(void *priv,
				     struct wpa_scan_result *results,
				     size_t max_size)
{
	struct wpa_driver_ralink_data *drv = priv;
	UCHAR *buf = NULL;
	NDIS_802_11_BSSID_LIST_EX *wsr = (NDIS_802_11_BSSID_LIST_EX *) buf;
	NDIS_WLAN_BSSID_EX *wbi;
	struct iwreq iwr;
	int ap_num;
    u8 *pos,*end;
	   
    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	buf = (UCHAR *) malloc(8192);
	if (buf == NULL)
		return -1;

        memset(buf, 0, 8192);

        wsr = (NDIS_802_11_BSSID_LIST_EX *) buf;

	wsr->NumberOfItems = 0;
	strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
	iwr.u.data.pointer = (caddr_t) buf;
	iwr.u.data.flags = OID_802_11_BSSID_LIST;

    if (ioctl(drv->ioctl_sock, RT_PRIV_IOCTL, &iwr) < 0) {
		free(buf);
		return -1;
	}

    memset(results, 0, max_size * sizeof(struct wpa_scan_result));

    for (ap_num = 0, wbi = wsr->Bssid; ap_num < wsr->NumberOfItems; ++ap_num) {
		memcpy(results[ap_num].bssid, &wbi->MacAddress, ETH_ALEN);
		memcpy(results[ap_num].ssid, wbi->Ssid.Ssid, wbi->Ssid.SsidLength);
		results[ap_num].ssid_len = wbi->Ssid.SsidLength;
		results[ap_num].freq = (wbi->Configuration.DSConfig / 1000);

        /* get ie's */
		wpa_hexdump(MSG_DEBUG, "RALINK: AP IEs",
			    (u8 *) wbi + sizeof(*wbi) - 1, wbi->IELength);

            pos = (u8 *) wbi + sizeof(*wbi) - 1;
	    end = (u8 *) wbi + sizeof(*wbi) + wbi->IELength;
	    
	    if (wbi->IELength < sizeof(NDIS_802_11_FIXED_IEs))
		    break;
		   
	    pos += sizeof(NDIS_802_11_FIXED_IEs) - 2;
		memcpy(&results[ap_num].caps, pos, 2);
		pos += 2;
		
	    while (pos + 1 < end && pos + 2 + pos[1] <= end) {
		    u8 ielen = 2 + pos[1];
		    if (ielen > SSID_MAX_WPA_IE_LEN) {
			    pos += ielen;
			    continue;
		    }

		    if (pos[0] == GENERIC_INFO_ELEM && pos[1] >= 4 &&
		        memcmp(pos + 2, "\x00\x50\xf2\x01", 4) == 0) {
			    memcpy(results[ap_num].wpa_ie, pos, ielen);
			    results[ap_num].wpa_ie_len = ielen;
		    } else if (pos[0] == RSN_INFO_ELEM) {
			    memcpy(results[ap_num].rsn_ie, pos, ielen);
			    results[ap_num].rsn_ie_len = ielen;
		    }
		    pos += ielen;
	   }

	   wbi = (NDIS_WLAN_BSSID_EX *) ((u8 *) wbi + wbi->Length);
    }

	free(buf);
	return ap_num;
}

static int ralink_set_auth_mode(struct wpa_driver_ralink_data *drv, NDIS_802_11_AUTHENTICATION_MODE mode)
{
	NDIS_802_11_AUTHENTICATION_MODE auth_mode = mode;

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	if (ralink_set_oid(drv, OID_802_11_AUTHENTICATION_MODE,
			 (char *) &auth_mode, sizeof(auth_mode)) < 0) {
		wpa_printf(MSG_DEBUG, "RALINK: Failed to set "
			   "OID_802_11_AUTHENTICATION_MODE (%d)",
			   (int) auth_mode);
		return -1;
	}
	return 0;
}

static int wpa_driver_ralink_remove_key(struct wpa_driver_ralink_data *drv,
				      int key_idx, const u8 *addr,
				      const u8 *bssid, int pairwise)
{
	NDIS_802_11_REMOVE_KEY rkey;
	NDIS_802_11_KEY_INDEX index;
	int res, res2;

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	memset(&rkey, 0, sizeof(rkey));

	rkey.Length = sizeof(rkey);
	rkey.KeyIndex = key_idx;
	if (pairwise)
		rkey.KeyIndex |= 1 << 30;
	memcpy(rkey.BSSID, bssid, ETH_ALEN);

	res = ralink_set_oid(drv, OID_802_11_REMOVE_KEY, (char *) &rkey,
			   sizeof(rkey));

//AlbertY@20060210 removed it	
	if(0)//if (!pairwise) 
	{
		res2 = ralink_set_oid(drv, OID_802_11_REMOVE_WEP,
				    (char *) &index, sizeof(index));
	} else
		res2 = 0;

	if (res < 0 && res2 < 0)
		return res;
	return 0;
}

static int wpa_driver_ralink_add_wep(struct wpa_driver_ralink_data *drv,
				   int pairwise, int key_idx, int set_tx,
				   const u8 *key, size_t key_len)
{
	NDIS_802_11_WEP *wep;
	size_t len;
	int res;

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	len = 12 + key_len;
	wep = malloc(len);
	if (wep == NULL)
		return -1;
	memset(wep, 0, len);
	wep->Length = len;
	wep->KeyIndex = key_idx;
	if (set_tx)
		wep->KeyIndex |= 1 << 31;
#if 0 /* Setting bit30 does not seem to work with some NDIS drivers */
	if (pairwise)
		wep->KeyIndex |= 1 << 30;
#endif
	wep->KeyLength = key_len;
	memcpy(wep->KeyMaterial, key, key_len);

	wpa_hexdump_key(MSG_MSGDUMP, "RALINK: OID_802_11_ADD_WEP",
			(char *) wep, len);
	res = ralink_set_oid(drv, OID_802_11_ADD_WEP, (char *) wep, len);

	free(wep);

	return res;
}

static int wpa_driver_ralink_set_key(void *priv, wpa_alg alg, const u8 *addr,
				   int key_idx, int set_tx,
				   const u8 *seq, size_t seq_len,
				   const u8 *key, size_t key_len)
{
	struct wpa_driver_ralink_data *drv = priv;
	size_t len;
	NDIS_802_11_KEY *nkey;
	int i, res, pairwise;
	u8 bssid[ETH_ALEN];

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	if (addr == NULL || memcmp(addr, "\xff\xff\xff\xff\xff\xff",
				   ETH_ALEN) == 0) {
		/* Group Key */
		pairwise = 0;
		wpa_driver_ralink_get_bssid(drv, bssid);
	} else {
		/* Pairwise Key */
		pairwise = 1;
		memcpy(bssid, addr, ETH_ALEN);
	}

	if (alg == WPA_ALG_NONE || key_len == 0) {
		return wpa_driver_ralink_remove_key(drv, key_idx, addr, bssid,
						  pairwise);
	}

	if (alg == WPA_ALG_WEP) {
		return wpa_driver_ralink_add_wep(drv, pairwise, key_idx, set_tx,
					       key, key_len);
	}

	len = 12 + 6 + 6 + 8 + key_len;

	nkey = malloc(len);
	if (nkey == NULL)
		return -1;
	memset(nkey, 0, len);

	nkey->Length = len;
	nkey->KeyIndex = key_idx;
	if (set_tx)
		nkey->KeyIndex |= 1 << 31;
	if (pairwise)
		nkey->KeyIndex |= 1 << 30;
	if (seq && seq_len)
		nkey->KeyIndex |= 1 << 29;
	nkey->KeyLength = key_len;
	memcpy(nkey->BSSID, bssid, ETH_ALEN);
	if (seq && seq_len) {
		for (i = 0; i < seq_len; i++)
			nkey->KeyRSC |= seq[i] << (i * 8);
	}
	if (alg == WPA_ALG_TKIP && key_len == 32) {
		memcpy(nkey->KeyMaterial, key, 16);
		memcpy(nkey->KeyMaterial + 16, key + 24, 8);
		memcpy(nkey->KeyMaterial + 24, key + 16, 8);
	} else {
		memcpy(nkey->KeyMaterial, key, key_len);
	}

	wpa_hexdump_key(MSG_MSGDUMP, "RALINK: OID_802_11_ADD_KEY",
			(char *) nkey, len);
	res = ralink_set_oid(drv, OID_802_11_ADD_KEY, (char *) nkey, len);
	free(nkey);

	return res;
}

static int wpa_driver_ralink_disassociate(void *priv, const u8 *addr,
					int reason_code)
{
	struct wpa_driver_ralink_data *drv = priv;

	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
	if (ralink_set_oid(drv, OID_802_11_DISASSOCIATE,
			 "    ", 4) < 0) {
		wpa_printf(MSG_DEBUG, "RALINK: Failed to set "
			   "OID_802_11_DISASSOCIATE");
	}

       return 0;
}

static int wpa_driver_ralink_deauthenticate(void *priv, const u8 *addr,
					  int reason_code)
{
	wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
	return wpa_driver_ralink_disassociate(priv, addr, reason_code);
}

static int
wpa_driver_ralink_associate(void *priv,
			  struct wpa_driver_associate_params *params)
{
	struct wpa_driver_ralink_data *drv = priv;
	
	NDIS_802_11_NETWORK_INFRASTRUCTURE mode;
	NDIS_802_11_AUTHENTICATION_MODE auth_mode;
	NDIS_802_11_WEP_STATUS encr;
	BOOLEAN		ieee8021xMode;

    wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);

	if (params->mode == IEEE80211_MODE_IBSS)
		mode = Ndis802_11IBSS;
	else
		mode = Ndis802_11Infrastructure;
	if (ralink_set_oid(drv, OID_802_11_INFRASTRUCTURE_MODE,
			 (char *) &mode, sizeof(mode)) < 0) {
		wpa_printf(MSG_DEBUG, "RALINK: Failed to set "
			   "OID_802_11_INFRASTRUCTURE_MODE (%d)",
			   (int) mode);
		/* Try to continue anyway */
	}

	if (params->wpa_ie == NULL || params->wpa_ie_len == 0) {
		if (params->auth_alg & AUTH_ALG_SHARED_KEY) {
			if (params->auth_alg & AUTH_ALG_OPEN_SYSTEM)
				auth_mode = Ndis802_11AuthModeAutoSwitch;
			else
				auth_mode = Ndis802_11AuthModeShared;
		} else
			auth_mode = Ndis802_11AuthModeOpen;
	} else if (params->wpa_ie[0] == RSN_INFO_ELEM) {
		if (params->key_mgmt_suite == KEY_MGMT_PSK)
			auth_mode = Ndis802_11AuthModeWPA2PSK;
		else
			auth_mode = Ndis802_11AuthModeWPA2;
	} else {
		if (params->key_mgmt_suite == KEY_MGMT_WPA_NONE)
			auth_mode = Ndis802_11AuthModeWPANone;
		else if (params->key_mgmt_suite == KEY_MGMT_PSK)
			auth_mode = Ndis802_11AuthModeWPAPSK;
		else
			auth_mode = Ndis802_11AuthModeWPA;
	}

	switch (params->pairwise_suite) {
	case CIPHER_CCMP:
		encr = Ndis802_11Encryption3Enabled;
		break;
	case CIPHER_TKIP:
		encr = Ndis802_11Encryption2Enabled;
		break;
	case CIPHER_WEP40:
	case CIPHER_WEP104:
		encr = Ndis802_11Encryption1Enabled;
		break;
	case CIPHER_NONE:
		if (params->group_suite == CIPHER_CCMP)
			encr = Ndis802_11Encryption3Enabled;
		else if (params->group_suite == CIPHER_TKIP)
			encr = Ndis802_11Encryption2Enabled;
        else
            encr = Ndis802_11EncryptionDisabled;
		break;
	default:
		encr = Ndis802_11EncryptionDisabled;
	};
       
	ralink_set_auth_mode(drv, auth_mode);

	// notify driver that IEEE8021x mode is enabled
	if(params->key_mgmt_suite == KEY_MGMT_802_1X_NO_WPA)
		ieee8021xMode = TRUE;
	else
		ieee8021xMode = FALSE;	

	if (ralink_set_oid(drv, OID_802_11_SET_IEEE8021X, (char *) &ieee8021xMode, sizeof(BOOLEAN)) < 0)
	{
		wpa_printf(MSG_DEBUG, "RALINK: Failed to set "
			   "OID_802_11_SET_IEEE8021X(%d)",
			   (int) ieee8021xMode);	
	}

	if (ralink_set_oid(drv, OID_802_11_WEP_STATUS,
			 (char *) &encr, sizeof(encr)) < 0) {
		wpa_printf(MSG_DEBUG, "RALINK: Failed to set "
			   "OID_802_11_WEP_STATUS(%d)",
			   (int) encr);
	}

	return wpa_driver_ralink_set_ssid(drv, params->ssid, params->ssid_len);
}

const struct wpa_driver_ops wpa_driver_ralink_ops = {
	.name = "ralink",
	.desc = "Ralink rt73 driver",
	.get_bssid = wpa_driver_ralink_get_bssid,
	.get_ssid = wpa_driver_ralink_get_ssid,
	.set_key = wpa_driver_ralink_set_key,
	.init = wpa_driver_ralink_init,
	.deinit = wpa_driver_ralink_deinit,
	.scan = wpa_driver_ralink_scan,
	.get_scan_results = wpa_driver_ralink_get_scan_results,
	.deauthenticate = wpa_driver_ralink_deauthenticate,
	.disassociate = wpa_driver_ralink_disassociate,
	.associate = wpa_driver_ralink_associate,
	.add_pmkid = wpa_driver_ralink_add_pmkid,
	.remove_pmkid = wpa_driver_ralink_remove_pmkid,
	.flush_pmkid = wpa_driver_ralink_flush_pmkid,
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人在线视频首页| 亚洲欧美欧美一区二区三区| 92国产精品观看| 日本成人在线不卡视频| 一区二区三区色| 中文字幕不卡的av| 日韩视频在线你懂得| 日韩亚洲电影在线| 日韩一级视频免费观看在线| 欧美喷潮久久久xxxxx| 欧美在线观看视频在线| 在线观看视频91| 欧美亚洲一区三区| 欧美丰满一区二区免费视频| 91精品国产福利| 欧美精品一区二区三区很污很色的 | 日韩毛片视频在线看| 日韩码欧中文字| 一区二区三区影院| 日本vs亚洲vs韩国一区三区二区| 免费av网站大全久久| 久久精品噜噜噜成人88aⅴ | 国产露脸91国语对白| 国产一区二区毛片| 成人av手机在线观看| 色婷婷国产精品| 日韩午夜av电影| 久久久综合视频| 亚洲天堂精品在线观看| 天堂va蜜桃一区二区三区漫画版| 久久精品国产久精国产| 波多野结衣的一区二区三区| 91国偷自产一区二区三区成为亚洲经典 | 偷拍与自拍一区| 国产精品一区二区三区99| caoporen国产精品视频| 欧美精品第1页| 国产欧美久久久精品影院| |精品福利一区二区三区| 秋霞影院一区二区| www.欧美日韩| 日韩精品一区二区在线观看| 国产精品家庭影院| 首页亚洲欧美制服丝腿| 国产精品99久久久久久有的能看| 色综合久久88色综合天天| 日韩一区二区三区视频| 国产精品视频看| 日韩影院精彩在线| 91女厕偷拍女厕偷拍高清| 精品美女在线播放| 亚洲一区二三区| 国产乱淫av一区二区三区| 色噜噜狠狠色综合中国| 久久免费的精品国产v∧| 午夜久久久久久| 一本到不卡精品视频在线观看| 日韩欧美在线不卡| 亚洲在线成人精品| 91在线视频播放| 国产色一区二区| 极品少妇xxxx偷拍精品少妇| 欧美影视一区二区三区| 国产精品久久久久久久久免费相片| 蜜桃av一区二区三区| 在线欧美一区二区| 伊人一区二区三区| av在线播放一区二区三区| 国产亚洲人成网站| 国产麻豆视频一区| 精品日韩99亚洲| 三级影片在线观看欧美日韩一区二区 | 91精品一区二区三区久久久久久 | 欧美吻胸吃奶大尺度电影| 国产精品毛片久久久久久| 韩国av一区二区三区在线观看| 欧美精品一二三四| 丝袜a∨在线一区二区三区不卡| 在线免费不卡电影| 中文字幕在线不卡国产视频| 成人app网站| 久久婷婷久久一区二区三区| 国模套图日韩精品一区二区| 精品国产青草久久久久福利| 日本不卡一区二区| 精品人在线二区三区| 蜜臀99久久精品久久久久久软件| 欧美一区永久视频免费观看| 另类小说色综合网站| 精品久久久久久最新网址| 蜜臀va亚洲va欧美va天堂 | 日韩激情在线观看| 在线亚洲人成电影网站色www| 亚洲欧美日韩在线| 欧美日韩五月天| 奇米影视7777精品一区二区| 欧美一区二区精品在线| 韩国中文字幕2020精品| 久久一夜天堂av一区二区三区| 国产999精品久久久久久| 国产精品美女久久久久久久久 | 风间由美一区二区av101 | 欧美日韩高清影院| 裸体健美xxxx欧美裸体表演| 精品国产乱子伦一区| 成人18精品视频| 亚洲h精品动漫在线观看| 欧美一区二区播放| 国产乱子轮精品视频| 国产亚洲欧美日韩日本| 91毛片在线观看| 久久成人av少妇免费| 国产精品素人视频| 91成人在线精品| 黑人精品欧美一区二区蜜桃| 亚洲人成影院在线观看| 在线播放一区二区三区| 粉嫩蜜臀av国产精品网站| 亚洲国产美女搞黄色| 久久你懂得1024| 欧美亚洲国产一区二区三区va| 奇米精品一区二区三区四区| 中文字幕va一区二区三区| 欧美日韩成人综合| 不卡一区中文字幕| 麻豆精品新av中文字幕| 一区二区三区在线免费播放| 日韩欧美一级特黄在线播放| 99国产精品久久久久久久久久久 | 欧美精品在线观看播放| 国产成人免费9x9x人网站视频| 亚洲一区在线视频观看| 久久精品亚洲乱码伦伦中文| 欧美精选在线播放| 色综合久久综合网97色综合 | 亚洲国产精品久久不卡毛片| 日韩精品在线网站| 欧美性生交片4| 成人精品亚洲人成在线| 久久精品国产澳门| 亚洲一本大道在线| 亚洲蜜臀av乱码久久精品蜜桃| 日韩欧美成人午夜| 在线观看不卡视频| 色综合久久久久久久久久久| 春色校园综合激情亚洲| 国产成人免费视频网站| 国产精品18久久久久久久久久久久| 蜜臀久久久99精品久久久久久| 天堂久久久久va久久久久| 性做久久久久久免费观看| 久久精品国产99国产精品| 日韩黄色小视频| 男人的天堂亚洲一区| 亚洲成精国产精品女| 五月天激情综合| 午夜精彩视频在线观看不卡| 亚洲乱码国产乱码精品精可以看| 亚洲欧美一区二区在线观看| 亚洲精品欧美在线| 亚洲一区二区三区四区在线免费观看 | 久久精品国产亚洲a| 亚洲韩国精品一区| 中文字幕欧美区| 亚洲成人在线网站| 免费人成在线不卡| 欧美日韩卡一卡二| 亚洲丝袜自拍清纯另类| 国产精品一区二区在线观看网站| 91麻豆福利精品推荐| 久久亚洲影视婷婷| 日韩精品一区第一页| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩精品一区二区三区蜜臀 | 香港成人在线视频| 大尺度一区二区| 国产视频一区二区在线| 久久国产精品色婷婷| 久久综合久久鬼色中文字| 亚洲综合清纯丝袜自拍| 91在线一区二区| 91精品在线一区二区| 青娱乐精品视频在线| 欧美精品1区2区3区| 亚洲影院在线观看| 在线观看日韩精品| 亚洲中国最大av网站| 欧美怡红院视频| 一区二区三区欧美在线观看| 欧美日韩成人在线一区| 天天影视色香欲综合网老头| 欧美午夜精品免费| 伊人开心综合网| 欧美日韩中文一区| 亚洲成av人片在线观看| 91精品国产免费| 亚洲一卡二卡三卡四卡 | 欧美精选一区二区| 丝袜诱惑制服诱惑色一区在线观看| 97久久超碰国产精品电影|