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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ieee80211_input.c

?? Linux下wifi實現
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*- * Copyright (c) 2001 Atsushi Onoe * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $Id: ieee80211_input.c 1676 2006-07-06 03:23:08Z brian $ */#ifndef EXPORT_SYMTAB#define	EXPORT_SYMTAB#endif/* * IEEE 802.11 input handling. */#include <linux/config.h>#include <linux/version.h>#include <linux/module.h>#include <linux/skbuff.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/random.h>#include <linux/if_vlan.h>#include <net/iw_handler.h> /* wireless_send_event(..) */#include <linux/wireless.h> /* SIOCGIWTHRSPY */#include <linux/if_arp.h> /* ARPHRD_ETHER */#include "if_llc.h"#include "if_ethersubr.h"#include "if_media.h"#include "if_athproto.h"#include <net80211/ieee80211_var.h>#ifdef IEEE80211_DEBUG/* * Decide if a received management frame should be * printed when debugging is enabled.  This filters some * of the less interesting frames that come frequently * (e.g. beacons). */static __inline intdoprint(struct ieee80211vap *vap, int subtype){	switch (subtype) {	case IEEE80211_FC0_SUBTYPE_BEACON:		return (vap->iv_ic->ic_flags & IEEE80211_F_SCAN);	case IEEE80211_FC0_SUBTYPE_PROBE_REQ:		return (vap->iv_opmode == IEEE80211_M_IBSS);	}	return 1;}/* * Emit a debug message about discarding a frame or information * element.  One format is for extracting the mac address from * the frame header; the other is for when a header is not * available or otherwise appropriate. */#define	IEEE80211_DISCARD(_vap, _m, _wh, _type, _fmt, ...) do {		\	if ((_vap)->iv_debug & (_m))					\		ieee80211_discard_frame(_vap, _wh, _type, _fmt, __VA_ARGS__);\} while (0)#define	IEEE80211_DISCARD_IE(_vap, _m, _wh, _type, _fmt, ...) do {	\	if ((_vap)->iv_debug & (_m))					\		ieee80211_discard_ie(_vap, _wh, _type, _fmt, __VA_ARGS__);\} while (0)#define	IEEE80211_DISCARD_MAC(_vap, _m, _mac, _type, _fmt, ...) do {	\	if ((_vap)->iv_debug & (_m))					\		ieee80211_discard_mac(_vap, _mac, _type, _fmt, __VA_ARGS__);\} while (0)static const u_int8_t *ieee80211_getbssid(struct ieee80211vap *,	const struct ieee80211_frame *);static void ieee80211_discard_frame(struct ieee80211vap *,	const struct ieee80211_frame *, const char *, const char *, ...);static void ieee80211_discard_ie(struct ieee80211vap *,	const struct ieee80211_frame *, const char *, const char *, ...);static void ieee80211_discard_mac(struct ieee80211vap *,	const u_int8_t mac[IEEE80211_ADDR_LEN], const char *,	const char *, ...);#else#define	IEEE80211_DISCARD(_vap, _m, _wh, _type, _fmt, ...)#define	IEEE80211_DISCARD_IE(_vap, _m, _wh, _type, _fmt, ...)#define	IEEE80211_DISCARD_MAC(_vap, _m, _mac, _type, _fmt, ...)#endif /* IEEE80211_DEBUG */static struct sk_buff *ieee80211_defrag(struct ieee80211_node *,	struct sk_buff *, int);static void ieee80211_deliver_data(struct ieee80211_node *, struct sk_buff *);static struct sk_buff *ieee80211_decap(struct ieee80211vap *,	struct sk_buff *, int);static void ieee80211_send_error(struct ieee80211_node *, const u_int8_t *,	int, int);static void ieee80211_recv_pspoll(struct ieee80211_node *, struct sk_buff *);static int accept_data_frame(struct ieee80211vap *, struct ieee80211_node *,	struct ieee80211_key *, struct sk_buff *, struct ether_header *);#ifdef ATH_SUPERG_FFstatic void athff_decap(struct sk_buff *);#endif#ifdef USE_HEADERLEN_RESVstatic unsigned short ath_eth_type_trans(struct sk_buff *, struct net_device *);#endif/* Enhanced iwspy support */#ifdef CONFIG_NET_WIRELESS#if WIRELESS_EXT >= 16#ifndef IW_QUAL_QUAL_UPDATED#define IW_QUAL_QUAL_UPDATED	0x01#define IW_QUAL_LEVEL_UPDATED	0x02#define IW_QUAL_NOISE_UPDATED	0x04#endif /* IW_QUAL_QUAL_UPDATED *//** * This function is a clone of set_quality(..) in ieee80211_wireless.c */static voidset_quality(struct iw_quality *iq, u_int rssi){	iq->qual = rssi;	/* NB: max is 94 because noise is hardcoded to 161 */	if (iq->qual > 94)		iq->qual = 94;	iq->noise = 161;		/* -95dBm */	iq->level = iq->noise + iq->qual;	iq->updated = IW_QUAL_QUAL_UPDATED | IW_QUAL_LEVEL_UPDATED |		IW_QUAL_NOISE_UPDATED;}/** * Given a node and the rssi value of a just received frame from the node, this * function checks if to raise an iwspy event because we iwspy the node and rssi * exceeds threshold (if active). *  * @param vap: vap * @param ni: sender node * @param rssi: rssi value of received frame */static voidiwspy_event(struct ieee80211vap *vap, struct ieee80211_node *ni, u_int rssi){	if (vap->iv_spy.thr_low && vap->iv_spy.num && ni && (rssi <		vap->iv_spy.thr_low || rssi > vap->iv_spy.thr_high)) {		int i;		for (i = 0; i < vap->iv_spy.num; i++) {			if (IEEE80211_ADDR_EQ(ni->ni_macaddr,				&(vap->iv_spy.mac[i * IEEE80211_ADDR_LEN]))) {									union iwreq_data wrq;				struct iw_thrspy thr;				IEEE80211_DPRINTF(vap, IEEE80211_MSG_DEBUG,					"%s: we spy %s, threshold is active "					"and rssi exceeds it -> raise an iwspy"					" event\n", __func__, ether_sprintf(					 ni->ni_macaddr));				memset(&wrq, 0, sizeof(wrq));				wrq.data.length = 1;				memset(&thr, 0, sizeof(struct iw_thrspy));				memcpy(thr.addr.sa_data, ni->ni_macaddr,					IEEE80211_ADDR_LEN);				thr.addr.sa_family = ARPHRD_ETHER;				set_quality(&thr.qual, rssi);				set_quality(&thr.low, vap->iv_spy.thr_low);				set_quality(&thr.high, vap->iv_spy.thr_high);				wireless_send_event(vap->iv_dev,					SIOCGIWTHRSPY, &wrq, (char*) &thr);				break;			}		}	}}#else#define iwspy_event(_vap, _ni, _rssi)#endif /* WIRELESS_EXT >= 16 */#else#define iwspy_event(_vap, _ni, _rssi)#endif /* CONFIG_NET_WIRELESS *//* * Process a received frame.  The node associated with the sender * should be supplied.  If nothing was found in the node table then * the caller is assumed to supply a reference to ic_bss instead. * The RSSI and a timestamp are also supplied.  The RSSI data is used * during AP scanning to select a AP to associate with; it can have * any units so long as values have consistent units and higher values * mean ``better signal''.  The receive timestamp is currently not used * by the 802.11 layer. * * Context: softIRQ (tasklet) */intieee80211_input(struct ieee80211_node *ni,	struct sk_buff *skb, int rssi, u_int32_t rstamp){#define	HAS_SEQ(type)	((type & 0x4) == 0)	struct ieee80211vap *vap = ni->ni_vap;	struct ieee80211com *ic = vap->iv_ic;	struct ieee80211_node *ni_wds = NULL;	struct net_device *dev = vap->iv_dev;	struct ieee80211_frame *wh;	struct ieee80211_key *key;	struct ether_header *eh;#ifdef ATH_SUPERG_FF	struct llc *llc;#endif	int hdrspace;	u_int8_t dir, type, subtype;	u_int8_t *bssid;	u_int16_t rxseq;	KASSERT(ni != NULL, ("null node"));	ni->ni_inact = ni->ni_inact_reload;	KASSERT(skb->len >= sizeof(struct ieee80211_frame_min),		("frame length too short: %u", skb->len));	/* XXX adjust device in sk_buff? */	type = -1;			/* undefined */	/*	 * In monitor mode, send everything directly to bpf.	 * Also do not process frames w/o i_addr2 any further.	 * XXX may want to include the CRC	 */	if (vap->iv_opmode == IEEE80211_M_MONITOR)		goto out;	if (skb->len < sizeof(struct ieee80211_frame_min)) {		IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,			ni->ni_macaddr, NULL,			"too short (1): len %u", skb->len);		vap->iv_stats.is_rx_tooshort++;		goto out;	}	/*	 * Bit of a cheat here, we use a pointer for a 3-address	 * frame format but don't reference fields past outside	 * ieee80211_frame_min w/o first validating the data is	 * present.	 */	wh = (struct ieee80211_frame *)skb->data;	if ((wh->i_fc[0] & IEEE80211_FC0_VERSION_MASK) !=	    IEEE80211_FC0_VERSION_0) {		IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,			ni->ni_macaddr, NULL, "wrong version %x", wh->i_fc[0]);		vap->iv_stats.is_rx_badversion++;		goto err;	}	dir = wh->i_fc[1] & IEEE80211_FC1_DIR_MASK;	type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;	subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;	if ((ic->ic_flags & IEEE80211_F_SCAN) == 0) {		switch (vap->iv_opmode) {		case IEEE80211_M_STA:			bssid = wh->i_addr2;			if (!IEEE80211_ADDR_EQ(bssid, ni->ni_bssid)) {				/* not interested in */				IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,					bssid, NULL, "%s", "not to bss");				vap->iv_stats.is_rx_wrongbss++;				goto out;			}			iwspy_event(vap, ni, rssi);			break;		case IEEE80211_M_IBSS:		case IEEE80211_M_AHDEMO:			if (dir != IEEE80211_FC1_DIR_NODS)				bssid = wh->i_addr1;			else if (type == IEEE80211_FC0_TYPE_CTL)				bssid = wh->i_addr1;			else {				if (skb->len < sizeof(struct ieee80211_frame)) {					IEEE80211_DISCARD_MAC(vap,						IEEE80211_MSG_ANY, ni->ni_macaddr,						NULL, "too short (2): len %u",						skb->len);					vap->iv_stats.is_rx_tooshort++;					goto out;				}				bssid = wh->i_addr3;			}			if (type == IEEE80211_FC0_TYPE_DATA &&			    ni == vap->iv_bss) {				/*				 * Try to find sender in local node table.				 */				ni = ieee80211_find_node(ni->ni_table, wh->i_addr2);				if (ni == NULL) {					/*					 * Fake up a node for this newly discovered					 * member of the IBSS.  This should probably					 * done after an ACL check.					 */					ni = ieee80211_fakeup_adhoc_node(vap,							wh->i_addr2);					if (ni == NULL) {						/* NB: stat kept for alloc failure */						goto err;					}				}			}			iwspy_event(vap, ni, rssi);			break;		case IEEE80211_M_HOSTAP:			if (dir != IEEE80211_FC1_DIR_NODS)				bssid = wh->i_addr1;			else if (type == IEEE80211_FC0_TYPE_CTL)				bssid = wh->i_addr1;			else {				if (skb->len < sizeof(struct ieee80211_frame)) {					IEEE80211_DISCARD_MAC(vap,						IEEE80211_MSG_ANY, ni->ni_macaddr,						NULL, "too short (2): len %u",						skb->len);					vap->iv_stats.is_rx_tooshort++;					goto out;				}				bssid = wh->i_addr3;			}			/*			 * Validate the bssid.			 */#ifdef ATH_SUPERG_XR			if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) &&			    !IEEE80211_ADDR_EQ(bssid, dev->broadcast)) {				/*				 * allow MGT frames to vap->iv_xrvap.				 * this will allow roaming between  XR and normal vaps				 * without station dis associating from previous vap.				 */				if (!(vap->iv_xrvap && 				    IEEE80211_ADDR_EQ(bssid, vap->iv_xrvap->iv_bss->ni_bssid) &&				    type == IEEE80211_FC0_TYPE_MGT && 				    ni != vap->iv_bss)) {					/* not interested in */					IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,						bssid, NULL, "%s", "not to bss or xrbss");					vap->iv_stats.is_rx_wrongbss++;					goto out;				}			}#else			if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) &&			    !IEEE80211_ADDR_EQ(bssid, dev->broadcast)) {				/* not interested in */				IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,					bssid, NULL, "%s", "not to bss");				vap->iv_stats.is_rx_wrongbss++;				goto out;			}#endif			break;		case IEEE80211_M_WDS:			if (skb->len < sizeof(struct ieee80211_frame_addr4)) {				IEEE80211_DISCARD_MAC(vap,					IEEE80211_MSG_ANY, ni->ni_macaddr,					NULL, "too short (3): len %u",					skb->len);				vap->iv_stats.is_rx_tooshort++;				goto out;			}			bssid = wh->i_addr1;			if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) &&			    !IEEE80211_ADDR_EQ(bssid, dev->broadcast)) {				/* not interested in */				IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,					bssid, NULL, "%s", "not to bss");				vap->iv_stats.is_rx_wrongbss++;				goto out;			}			if (!IEEE80211_ADDR_EQ(wh->i_addr2, vap->wds_mac)) {				/* not interested in */				IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,					wh->i_addr2, NULL, "%s", "not from DS");				vap->iv_stats.is_rx_wrongbss++;				goto out;				}			break;		default:			/* XXX catch bad values */			goto out;		}		ni->ni_rssi = rssi;		ni->ni_rstamp = rstamp;		ni->ni_last_rx = jiffies;		if (HAS_SEQ(type)) {			u_int8_t tid;			if (IEEE80211_QOS_HAS_SEQ(wh)) {				tid = ((struct ieee80211_qosframe *)wh)->					i_qos[0] & IEEE80211_QOS_TID;				if (TID_TO_WME_AC(tid) >= WME_AC_VI)					ic->ic_wme.wme_hipri_traffic++;				tid++;			} else				tid = 0;			rxseq = le16toh(*(u_int16_t *)wh->i_seq);			if ((wh->i_fc[1] & IEEE80211_FC1_RETRY) &&			    IEEE80211_SEQ_LEQ(rxseq, ni->ni_rxseqs[tid])) {				/* duplicate, discard */				IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT,					bssid, "duplicate",					"seqno <%u,%u> fragno <%u,%u> tid %u",					rxseq >> IEEE80211_SEQ_SEQ_SHIFT,					ni->ni_rxseqs[tid] >>						IEEE80211_SEQ_SEQ_SHIFT,					rxseq & IEEE80211_SEQ_FRAG_MASK,					ni->ni_rxseqs[tid] &						IEEE80211_SEQ_FRAG_MASK,					tid);				vap->iv_stats.is_rx_dup++;				IEEE80211_NODE_STAT(ni, rx_dup);				goto out;			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美揉bbbbb揉bbbbb| 亚洲精品在线免费观看视频| 极品销魂美女一区二区三区| 一区二区三区在线看| 久久奇米777| 91精品国产乱码久久蜜臀| 成人av在线观| 国产精品一色哟哟哟| 日韩综合在线视频| 亚洲精品福利视频网站| 中文字幕免费观看一区| 日韩一本二本av| 欧美三级资源在线| 在线影院国内精品| 成人97人人超碰人人99| 国产精品综合网| 久久精品999| 日韩国产精品久久久| 一区二区三区中文字幕精品精品 | 秋霞国产午夜精品免费视频| 亚洲精品福利视频网站| 专区另类欧美日韩| 国产精品美女久久久久av爽李琼 | 一本一本大道香蕉久在线精品| 国产精品伊人色| 国产一区二区精品久久91| 日韩经典中文字幕一区| 日韩中文字幕区一区有砖一区 | 成人福利视频网站| 国产成人av资源| 国产麻豆精品久久一二三| 久久爱www久久做| 青青草国产精品亚洲专区无| 亚洲成在线观看| 日韩在线一二三区| 三级精品在线观看| 男女男精品网站| 免费观看91视频大全| 麻豆一区二区三| 激情五月婷婷综合| 国产一区在线观看麻豆| 国产在线日韩欧美| 国产高清精品在线| 92精品国产成人观看免费| 99久久婷婷国产综合精品| 91美女在线观看| 欧美色综合天天久久综合精品| 欧美天天综合网| 欧美一区二区性放荡片| 精品少妇一区二区三区日产乱码| 精品999久久久| 国产精品久久久久久久久免费丝袜| 中文字幕第一区| 亚洲你懂的在线视频| 亚洲一区国产视频| 日韩中文字幕区一区有砖一区 | 亚洲精品菠萝久久久久久久| 亚洲一二三四区不卡| 日本不卡不码高清免费观看| 国内精品视频一区二区三区八戒| 国产成人综合视频| 色偷偷88欧美精品久久久| 欧美精选午夜久久久乱码6080| 日韩三级在线观看| 欧美国产乱子伦| 亚洲午夜成aⅴ人片| 蜜桃视频在线一区| proumb性欧美在线观看| 欧美精品在线视频| 国产女人18毛片水真多成人如厕| 一区二区三区四区视频精品免费| 日本午夜一区二区| 成人精品一区二区三区四区 | 91视视频在线观看入口直接观看www| 欧美亚洲综合色| 精品国产三级电影在线观看| 中文字幕av不卡| 日韩不卡一区二区三区| 大胆欧美人体老妇| 欧美日韩国产123区| 日本一区二区在线不卡| 午夜精品国产更新| 成人动漫一区二区| 欧美大片在线观看一区| 亚洲人成影院在线观看| 精品在线播放免费| 色悠悠亚洲一区二区| 久久久亚洲午夜电影| 午夜在线电影亚洲一区| 成人免费毛片app| 日韩三级中文字幕| 亚洲一区二区三区国产| 豆国产96在线|亚洲| 欧美一级国产精品| 亚洲综合激情另类小说区| 国内外成人在线| 欧美久久一二三四区| 国产精品大尺度| 国产一区二区三区四区五区美女| 欧美日韩一区高清| 中文字幕五月欧美| 国内欧美视频一区二区| 91精品婷婷国产综合久久性色| 亚洲欧美日韩中文播放| 国产精品77777| 欧美www视频| 日本在线播放一区二区三区| 色狠狠一区二区| 国产精品久久久久久久久免费丝袜 | 国产精品亚洲成人| 欧美大尺度电影在线| 午夜视频在线观看一区二区三区| 99精品国产视频| 欧美韩国日本不卡| 国产伦精一区二区三区| 精品国产成人在线影院 | 福利一区二区在线观看| www成人在线观看| 毛片不卡一区二区| 欧美v国产在线一区二区三区| 日韩国产欧美一区二区三区| 欧美精品第1页| 亚洲va韩国va欧美va| 欧美日韩精品福利| 亚洲.国产.中文慕字在线| 欧美日韩亚洲综合一区二区三区| 亚洲欧美日韩一区二区| 91视视频在线观看入口直接观看www | 国产.欧美.日韩| 久久综合999| 风间由美一区二区三区在线观看 | 日韩欧美色电影| 久久精品99国产精品| 日韩欧美国产午夜精品| 久久er99精品| 久久亚洲综合av| 国产成人99久久亚洲综合精品| 国产午夜精品一区二区三区嫩草| 粉嫩av亚洲一区二区图片| 国产欧美在线观看一区| 成人黄色一级视频| 亚洲免费电影在线| 欧美日韩国产在线观看| 奇米色一区二区三区四区| 精品久久久久久最新网址| 国产精品一二三区在线| 国产人伦精品一区二区| 99精品欧美一区二区三区综合在线| 亚洲欧美电影一区二区| 91香蕉国产在线观看软件| 一区二区三区成人| 制服丝袜亚洲色图| 精品一区二区三区影院在线午夜| 久久久久久电影| 91片在线免费观看| 图片区日韩欧美亚洲| 精品久久国产字幕高潮| 成人免费高清视频| 亚洲大型综合色站| 久久亚洲精华国产精华液 | 国产成人av影院| 亚洲黄色小视频| 欧美一区二区三区成人| 国产成人精品在线看| 亚洲精品成人悠悠色影视| 欧美一级欧美一级在线播放| 国产精品99久久久久久似苏梦涵| 亚洲精品高清视频在线观看| 日韩一二三区不卡| av成人免费在线| 天天亚洲美女在线视频| 欧美激情一二三区| 91精品国产综合久久蜜臀| 国产河南妇女毛片精品久久久| 一区二区三区高清不卡| 2023国产一二三区日本精品2022| 91蜜桃在线观看| 久久99精品国产.久久久久久| 国产精品国产精品国产专区不蜜 | 欧美一级专区免费大片| 成人av电影在线观看| 蜜桃精品视频在线观看| 亚洲色图清纯唯美| 精品捆绑美女sm三区| 色综合久久综合| 国产伦精品一区二区三区免费迷| 夜夜嗨av一区二区三区网页| 26uuu另类欧美| 欧美美女网站色| 色狠狠桃花综合| 国产高清在线精品| 免费在线一区观看| 亚洲最大色网站| 日韩一区在线看| 国产欧美va欧美不卡在线| 日韩欧美三级在线| 欧美亚洲免费在线一区| 91久久精品一区二区二区| 国产精品综合二区| 男人的天堂亚洲一区|