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

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

?? iface.c

?? uCLinux下的一個TCP/IP協議棧源碼
?? C
字號:
/* IP interface control and configuration routines
 * 
 */
#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "proc.h"
#include "iface.h"
#include "ip.h"
#include "icmp.h"
#include "netuser.h"
#include "ax25.h"
#include "enet.h"
#include "pktdrvr.h"
#include "cmdparse.h"
#include "commands.h"
#include "trace.h"

static void showiface(struct iface *ifp);
static int mask2width(int32 mask);
static int ifipaddr(int argc,char *argv[],void *p);
static int iflinkadr(int argc,char *argv[],void *p);
static int ifbroad(int argc,char *argv[],void *p);
static int ifnetmsk(int argc,char *argv[],void *p);
static int ifrxbuf(int argc,char *argv[],void *p);
static int ifmtu(int argc,char *argv[],void *p);
static int ifforw(int argc,char *argv[],void *p);
static int ifencap(int argc,char *argv[],void *p);
static int iftxqlen(int argc,char *argv[],void *p);

/* Interface list header */
struct iface *Ifaces = &Loopback;

/* Loopback pseudo-interface */
struct iface Loopback = {
	&Encap,		/* Link to next entry */
	"loopback",	/* name		*/
	0x7f000001L,	/* addr		127.0.0.1 */
	0xffffffffL,	/* broadcast	255.255.255.255 */
	0xffffffffL,	/* netmask	255.255.255.255 */
	MAXINT16,	/* mtu		No limit */
	0,		/* trace	*/
	NULL,	/* trfp		*/
	NULL,		/* forw		*/
	NULL,	/* rxproc	*/
	NULL,	/* txproc	*/
	NULL,	/* supv		*/
	NULL,	/* outq		*/
	0,		/* outlim	*/
	0,		/* txbusy	*/
	NULL,		/* dstate	*/
	NULL,		/* dtickle	*/
	NULL,		/* dstatus	*/
	0,		/* dev		*/
	NULL,		/* (*ioctl)	*/
	NULL,		/* (*iostatus)	*/
	NULL,		/* (*stop)	*/
	NULL,	/* hwaddr	*/
	NULL,		/* extension	*/
	0,		/* xdev		*/
	&Iftypes[0],	/* iftype	*/
	NULL,		/* (*send)	*/
	NULL,		/* (*output)	*/
	NULL,		/* (*raw)	*/
	NULL,		/* (*status)	*/
	NULL,		/* (*discard)	*/
	NULL,		/* (*echo)	*/
	0,		/* ipsndcnt	*/
	0,		/* rawsndcnt	*/
	0,		/* iprecvcnt	*/
	0,		/* rawrcvcnt	*/
	0,		/* lastsent	*/
	0,		/* lastrecv	*/
};
/* Encapsulation pseudo-interface */
struct iface Encap = {
	NULL,
	"encap",	/* name		*/
	INADDR_ANY,	/* addr		0.0.0.0 */
	0xffffffffL,	/* broadcast	255.255.255.255 */
	0xffffffffL,	/* netmask	255.255.255.255 */
	MAXINT16,	/* mtu		No limit */
	0,		/* trace	*/
	NULL,	/* trfp		*/
	NULL,		/* forw		*/
	NULL,	/* rxproc	*/
	NULL,	/* txproc	*/
	NULL,	/* supv		*/
	NULL,	/* outq		*/
	0,		/* outlim	*/
	0,		/* txbusy	*/
	NULL,		/* dstate	*/
	NULL,		/* dtickle	*/
	NULL,		/* dstatus	*/
	0,		/* dev		*/
	NULL,		/* (*ioctl)	*/
	NULL,		/* (*iostatus)	*/
	NULL,		/* (*stop)	*/
	NULL,	/* hwaddr	*/
	NULL,		/* extension	*/
	0,		/* xdev		*/
	&Iftypes[0],	/* iftype	*/
	ip_encap,	/* (*send)	*/
	NULL,		/* (*output)	*/
	NULL,		/* (*raw)	*/
	NULL,		/* (*status)	*/
	NULL,		/* (*discard)	*/
	NULL,		/* (*echo)	*/
	0,		/* ipsndcnt	*/
	0,		/* rawsndcnt	*/
	0,		/* iprecvcnt	*/
	0,		/* rawrcvcnt	*/
	0,		/* lastsent	*/
	0,		/* lastrecv	*/
};

char Noipaddr[] = "IP address field missing, and ip address not set\n";

struct cmds Ifcmds[] = {
	"broadcast",		ifbroad,	0,	2,	NULL,
	"encapsulation",	ifencap,	0,	2,	NULL,
	"forward",		ifforw,		0,	2,	NULL,
	"ipaddress",		ifipaddr,	0,	2,	NULL,
	"linkaddress",		iflinkadr,	0,	2,	NULL,
	"mtu",			ifmtu,		0,	2,	NULL,
	"netmask",		ifnetmsk,	0,	2,	NULL,
	"txqlen",		iftxqlen,	0,	2,	NULL,
	"rxbuf",		ifrxbuf,	0,	2,	NULL,
	NULL,
};
/*
 * General purpose interface transmit task, one for each device that can
 * send IP datagrams. It waits on the interface's IP output queue (outq),
 * extracts IP datagrams placed there in priority order by ip_route(),
 * and sends them to the device's send routine.
 */
void
if_tx(int dev,void *arg1,void *unused)
{
	struct mbuf *bp;	/* Buffer to send */
	struct iface *iface;	/* Pointer to interface control block */
	struct qhdr qhdr;

	iface = arg1;
	for(;;){
		while(iface->outq == NULL)
			kwait(&iface->outq);

		iface->txbusy = 1;
		bp = dequeue(&iface->outq);
		pullup(&bp,&qhdr,sizeof(qhdr));
		if(iface->dtickle != NULL && (*iface->dtickle)(iface) == -1){
#ifdef	notdef	/* Confuses some non-compliant hosts */
			struct ip ip;

			/* Link redial failed; bounce with unreachable */
			ntohip(&ip,&bp);
			icmp_output(&ip,bp,ICMP_DEST_UNREACH,ICMP_HOST_UNREACH,
			 NULL);
#endif
			free_p(&bp);
		} else {
			(*iface->send)(&bp,iface,qhdr.gateway,qhdr.tos);
		}
		iface->txbusy = 0;

		/* Let other tasks run, just in case send didn't block */
		kwait(NULL);
	}
}
/* Process packets in the Hopper */
void
network(int i,void *v1,void *v2)
{
	struct mbuf *bp;
	char i_state;
	struct iftype *ift;
	struct iface *ifp;

loop:
	for(;;){
		i_state = dirps();
		bp = Hopper;
		if(bp != NULL){
			bp = dequeue(&Hopper);
			restore(i_state);
			break;
		}
		restore(i_state);
		kwait(&Hopper);
	}
	/* Process the input packet */
	pullup(&bp,&ifp,sizeof(ifp));
	if(ifp != NULL){
		ifp->rawrecvcnt++;
		ifp->lastrecv = secclock();
		ift = ifp->iftype;
	} else {
		ift = &Iftypes[0];
	}
	dump(ifp,IF_TRACE_IN,bp);
	
	if(ift->rcvf != NULL)
		(*ift->rcvf)(ifp,&bp);
	else
		free_p(&bp);	/* Nowhere to send it */

	/* Let everything else run - this keeps the system from wedging
	 * when we're hit by a big burst of packets
	 */
	kwait(NULL);
	goto loop;
}

/* put mbuf into Hopper for network task
 * returns 0 if OK
 */
int
net_route(struct iface *ifp,struct mbuf **bpp)
{
	pushdown(bpp,&ifp,sizeof(ifp));
	enqueue(&Hopper,bpp);
	return 0;
}

/* Null send and output routines for interfaces without link level protocols */
int
nu_send(struct mbuf **bpp,struct iface *ifp,int32 gateway,uint8 tos)
{
	return (*ifp->raw)(ifp,bpp);
}
int
nu_output(struct iface *ifp,uint8 *dest,uint8 *src,uint16 type,struct mbuf **bpp)
{
	return (*ifp->raw)(ifp,bpp);
}

/* Set interface parameters */
int
doifconfig(int argc,char *argv[],void *p)
{
	struct iface *ifp;
	int i;

	if(argc < 2){
		for(ifp = Ifaces;ifp != NULL;ifp = ifp->next)
			showiface(ifp);
		return 0;
	}
	if((ifp = if_lookup(argv[1])) == NULL){
		printf("Interface %s unknown\n",argv[1]);
		return 1;
	}
	if(argc == 2){
		showiface(ifp);
		if(ifp->show != NULL){
			(*ifp->show)(ifp);
		}
		return 0;
	}
	if(argc == 3){
		printf("Argument missing\n");
		return 1;
	}
	for(i=2;i<argc-1;i+=2)
		subcmd(Ifcmds,3,&argv[i-1],ifp);

	return 0;
}

/* Set interface IP address */
static int
ifipaddr(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	ifp->addr = resolve(argv[1]);
	return 0;
}


/* Set link (hardware) address */
static int
iflinkadr(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	if(ifp->iftype == NULL || ifp->iftype->scan == NULL){
		printf("Can't set link address\n");
		return 1;
	}
	if(ifp->hwaddr != NULL)
		free(ifp->hwaddr);
	ifp->hwaddr = mallocw(ifp->iftype->hwalen);
	(*ifp->iftype->scan)(ifp->hwaddr,argv[1]);
	return 0;
}

/* Set interface broadcast address. This is actually done
 * by installing a private entry in the routing table.
 */
static int
ifbroad(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;
	struct route *rp;

	rp = rt_blookup(ifp->broadcast,32);
	if(rp != NULL && rp->iface == ifp)
		rt_drop(ifp->broadcast,32);
	ifp->broadcast = resolve(argv[1]);
	rt_add(ifp->broadcast,32,0L,ifp,1L,0L,1);
	return 0;
}

/* Set the network mask. This is actually done by installing
 * a routing entry.
 */
static int
ifnetmsk(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;
	struct route *rp;

	/* Remove old entry if it exists */
	rp = rt_blookup(ifp->addr & ifp->netmask,mask2width(ifp->netmask));
	if(rp != NULL)
		rt_drop(rp->target,rp->bits);

	ifp->netmask = htol(argv[1]);
	rt_add(ifp->addr,mask2width(ifp->netmask),0L,ifp,0L,0L,0);
	return 0;
}

/* Command to set interface encapsulation mode */
static int
ifencap(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	if(setencap(ifp,argv[1]) != 0){
		printf("Encapsulation mode '%s' unknown\n",argv[1]);
		return 1;
	}
	return 0;
}
/* Function to set encapsulation mode */
int
setencap(struct iface *ifp,char *mode)
{
	struct iftype *ift;

	for(ift = &Iftypes[0];ift->name != NULL;ift++)
		if(strnicmp(ift->name,mode,strlen(mode)) == 0)
			break;
	if(ift->name == NULL)
		return -1;

	if(ifp != NULL){
		ifp->iftype = ift;
		ifp->send = ift->send;
		ifp->output = ift->output;
	}
	return 0;
}
/* Set interface receive buffer size */
static int
ifrxbuf(int argc,char *argv[],void *p)
{
	return 0;	/* To be written */
}

/* Set interface Maximum Transmission Unit */
static int
ifmtu(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	ifp->mtu = atoi(argv[1]);
	return 0;
}

/* Set interface forwarding */
static int
ifforw(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	ifp->forw = if_lookup(argv[1]);
	if(ifp->forw == ifp)
		ifp->forw = NULL;
	return 0;
}

/* Display the parameters for a specified interface */
static void
showiface(struct iface *ifp)
{
	char tmp[25];

	printf("%-10s IP addr %s MTU %u Link encap %s\n",ifp->name,
	 inet_ntoa(ifp->addr),(int)ifp->mtu,
	 ifp->iftype != NULL ? ifp->iftype->name : "not set");
	if(ifp->iftype != NULL && ifp->iftype->format != NULL && ifp->hwaddr != NULL){
		printf("           Link addr %s\n",
		 (*ifp->iftype->format)(tmp,ifp->hwaddr));
	}
	printf("           trace 0x%x netmask 0x%08lx broadcast %s\n",
		ifp->trace,ifp->netmask,inet_ntoa(ifp->broadcast));
	if(ifp->forw != NULL)
		printf("           output forward to %s\n",ifp->forw->name);
	printf("           sent: ip %lu tot %lu idle %s qlen %u",
	 ifp->ipsndcnt,ifp->rawsndcnt,tformat(secclock() - ifp->lastsent),
		len_q(ifp->outq));
	if(ifp->outlim != 0)
		printf("/%u",ifp->outlim);
	if(ifp->txbusy)
		printf(" BUSY");
	printf("\n");
	printf("           recv: ip %lu tot %lu idle %s\n",
	 ifp->iprecvcnt,ifp->rawrecvcnt,tformat(secclock() - ifp->lastrecv));
}

/* Command to detach an interface */
int
dodetach(int argc,char *argv[],void *p)
{
	register struct iface *ifp;

	if((ifp = if_lookup(argv[1])) == NULL){
		printf("Interface %s unknown\n",argv[1]);
		return 1;
	}
	if(if_detach(ifp) == -1)
		printf("Can't detach loopback or encap interface\n");
	return 0;
}
/* Detach a specified interface */
int
if_detach(struct iface *ifp)
{
	struct iface *iftmp;
	struct route *rp,*rptmp;
	int i,j;

	if(ifp == &Loopback || ifp == &Encap)
		return -1;

	/* Drop all routes that point to this interface */
	if(R_default.iface == ifp)
		rt_drop(0L,0);	/* Drop default route */

	for(i=0;i<HASHMOD;i++){
		for(j=0;j<32;j++){
			for(rp = Routes[j][i];rp != NULL;rp = rptmp){
				/* Save next pointer in case we delete this entry */
				rptmp = rp->next;
				if(rp->iface == ifp)
					rt_drop(rp->target,rp->bits);
			}
		}
	}
	/* Unforward any other interfaces forwarding to this one */
	for(iftmp = Ifaces;iftmp != NULL;iftmp = iftmp->next){
		if(iftmp->forw == ifp)
			iftmp->forw = NULL;
	}
	/* Call device shutdown routine, if any */
	if(ifp->stop != NULL)
		(*ifp->stop)(ifp);

	killproc(ifp->rxproc);
	killproc(ifp->txproc);
	killproc(ifp->supv);

	/* Free allocated memory associated with this interface */
	if(ifp->name != NULL)
		free(ifp->name);
	if(ifp->hwaddr != NULL)
		free(ifp->hwaddr);
	/* Remove from interface list */
	if(ifp == Ifaces){
		Ifaces = ifp->next;
	} else {
		/* Search for entry just before this one
		 * (necessary because list is only singly-linked.)
		 */
		for(iftmp = Ifaces;iftmp != NULL ;iftmp = iftmp->next)
			if(iftmp->next == ifp)
				break;
		if(iftmp != NULL && iftmp->next == ifp)
			iftmp->next = ifp->next;
	}
	/* Finally free the structure itself */
	free(ifp);
	return 0;
}
static int
iftxqlen(int argc,char *argv[],void *p)
{
	struct iface *ifp = p;

	setint(&ifp->outlim,"TX queue limit",argc,argv);
	return 0;
}

/* Given the ascii name of an interface, return a pointer to the structure,
 * or NULL if it doesn't exist
 */
struct iface *
if_lookup(char *name)
{
	register struct iface *ifp;

	for(ifp = Ifaces; ifp != NULL; ifp = ifp->next)
		if(strcmp(ifp->name,name) == 0)
			break;
	return ifp;
}

/* Return iface pointer if 'addr' belongs to one of our interfaces,
 * NULL otherwise.
 * This is used to tell if an incoming IP datagram is for us, or if it
 * has to be routed.
 */
struct iface *
ismyaddr(int32 addr)
{
	register struct iface *ifp;

	if(addr == INADDR_ANY)
		return &Loopback;
	for(ifp = Ifaces; ifp != NULL; ifp = ifp->next)
		if(addr == ifp->addr)
			break;
	return ifp;
}

/* Given a network mask, return the number of contiguous 1-bits starting
 * from the most significant bit.
 */
static int
mask2width(int32 mask)
{
	int width,i;

	width = 0;
	for(i = 31;i >= 0;i--){
		if(!(mask & (1L << i)))
			break;
		width++;
	}
	return width;
}

/* return buffer with name + comment */
char *
if_name(struct iface *ifp,char *comment)
{
	char *result;

	result = mallocw(strlen(ifp->name) + strlen(comment) + 1);
	strcpy(result,ifp->name);
	strcat(result,comment);
	return result;
}

/* Raw output routine that tosses all packets. Used by dialer, tip, etc */
int
bitbucket(struct iface *ifp,struct mbuf **bpp)
{
	free_p(bpp);
	return 0;
}
/* 
 * dial <iface> <seconds> [device dependent args]	(begin autodialing)
 * dial <iface> 0	(stop autodialing) 
 * dial <iface>	(display status)
 */
int
dodialer(int argc,char *argv[],void *p)
{
	struct iface *ifp;
	int32 timeout;

	if((ifp = if_lookup(argv[1])) == NULL){
		printf("Interface %s unknown\n",argv[1]);
		return 1;
	}
	if(argc < 3){
		if(ifp->iftype->dstat != NULL)
			(*ifp->iftype->dstat)(ifp);
		return 0;
	}
	if(ifp->iftype->dinit == NULL){
		printf("Dialing not supported on %s\n",argv[1]);
		return 1;
	}
	timeout = atol(argv[2]) * 1000L;
	return (*ifp->iftype->dinit)(ifp,timeout,argc-3,argv+3);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美电影一二三| 男女性色大片免费观看一区二区 | 精品一区二区三区在线播放视频 | 亚洲免费观看高清在线观看| 免费观看成人av| 91在线精品一区二区| 精品奇米国产一区二区三区| 亚洲欧美一区二区久久| 国产精品资源站在线| 7777精品伊人久久久大香线蕉的 | 亚洲裸体xxx| 国产露脸91国语对白| 欧美日韩亚洲综合| 成人免费在线视频观看| 国产一区二区三区香蕉| 91精品啪在线观看国产60岁| 亚洲天堂av一区| 国产成人在线视频免费播放| 欧美一级一级性生活免费录像| 亚洲欧美视频在线观看| zzijzzij亚洲日本少妇熟睡| 久久久久国产精品麻豆| 美国毛片一区二区| 欧美一区欧美二区| 午夜av一区二区三区| 91国偷自产一区二区开放时间 | 美女视频一区二区三区| 欧美挠脚心视频网站| 亚洲最新视频在线观看| 色诱视频网站一区| 国产精品麻豆视频| 成人av电影在线网| 国产精品美女www爽爽爽| 成人精品视频网站| 国产精品的网站| 9人人澡人人爽人人精品| 亚洲国产岛国毛片在线| 丁香天五香天堂综合| 亚洲国产精品t66y| 不卡的av电影| 亚洲视频电影在线| 91麻豆swag| 一区二区三区在线视频观看| 色88888久久久久久影院野外| 18欧美亚洲精品| 色悠久久久久综合欧美99| 亚洲激情第一区| 欧美日韩国产天堂| 美日韩一区二区| 国产午夜精品久久| 91一区一区三区| 亚洲成人免费影院| 精品免费一区二区三区| 国产精品一区二区黑丝| 国产精品毛片无遮挡高清| 色婷婷久久99综合精品jk白丝| 亚洲综合色成人| 日韩欧美国产wwwww| 国产成都精品91一区二区三| 成人欧美一区二区三区1314| 欧美日韩成人一区二区| 精品亚洲aⅴ乱码一区二区三区| 国产肉丝袜一区二区| 色婷婷综合久久久久中文一区二区| 亚洲成a人v欧美综合天堂| 日韩欧美国产综合在线一区二区三区 | 日本不卡在线视频| 久久久91精品国产一区二区精品 | 色综合天天综合网国产成人综合天 | 亚洲午夜av在线| 欧美不卡一区二区三区| jlzzjlzz欧美大全| 天天综合日日夜夜精品| 国产亚洲欧洲997久久综合 | 最新成人av在线| 在线播放/欧美激情| 丰满放荡岳乱妇91ww| 亚洲图片一区二区| 久久久亚洲综合| 欧美日韩精品一二三区| 成人黄色a**站在线观看| 亚洲成人你懂的| 中文字幕av一区二区三区| 欧美肥妇毛茸茸| 99精品视频一区二区| 美女网站色91| 亚洲国产精品久久人人爱蜜臀| 久久久久久免费网| 欧美日高清视频| 一本久道中文字幕精品亚洲嫩| 七七婷婷婷婷精品国产| 洋洋av久久久久久久一区| 欧美国产日韩在线观看| 欧美成人一区二区三区在线观看| 91麻豆123| jlzzjlzz欧美大全| 国产69精品久久久久毛片 | 亚洲图片欧美色图| 国产精品国产自产拍在线| 日韩精品一区二区三区视频在线观看| 欧洲精品一区二区| av亚洲精华国产精华| 国产激情精品久久久第一区二区| 视频在线观看一区二区三区| 亚洲特黄一级片| 中文无字幕一区二区三区| 精品国精品国产| 91精品国产高清一区二区三区 | 欧美一区午夜视频在线观看| 欧美性猛片xxxx免费看久爱| 91一区在线观看| 91美女在线视频| 色综合天天性综合| 99国产欧美另类久久久精品| 高清不卡一二三区| 国产成人综合精品三级| 国产电影精品久久禁18| 国产成人在线免费| 成人午夜激情影院| 波多野结衣一区二区三区| 成人av免费网站| 91麻豆国产精品久久| 欧美色综合影院| 欧美久久久久久久久久| 91精品国产乱| 久久久天堂av| 久久精品亚洲精品国产欧美kt∨| 国产网红主播福利一区二区| 中文字幕成人av| 亚洲另类在线制服丝袜| 亚洲国产美女搞黄色| 视频在线在亚洲| 麻豆高清免费国产一区| 国产毛片精品视频| 波多野结衣中文字幕一区二区三区| 99久久伊人网影院| 欧美日韩免费一区二区三区| 欧美一区二区三区四区五区| 精品国产三级电影在线观看| 欧美激情中文字幕一区二区| 自拍偷拍国产精品| 午夜精品一区在线观看| 久久精品国产99| jizzjizzjizz欧美| 欧美影院精品一区| 精品第一国产综合精品aⅴ| 国产精品成人网| 亚洲成人自拍一区| 国产大陆亚洲精品国产| 欧美在线视频不卡| 精品剧情v国产在线观看在线| 国产视频在线观看一区二区三区 | 亚洲一区视频在线观看视频| 久久国产三级精品| 91小宝寻花一区二区三区| 7777精品伊人久久久大香线蕉经典版下载| 精品国产青草久久久久福利| 国产精品久久久一区麻豆最新章节| 亚洲第一电影网| 国产精品中文字幕一区二区三区| 91黄色小视频| 久久众筹精品私拍模特| 亚洲黄色性网站| 国产乱子轮精品视频| 一本久久综合亚洲鲁鲁五月天| 日韩欧美你懂的| 一区二区三区**美女毛片| 国产老女人精品毛片久久| 日本韩国欧美国产| 国产香蕉久久精品综合网| 视频一区二区三区在线| 91婷婷韩国欧美一区二区| 精品日本一线二线三线不卡| 亚洲一区二区在线播放相泽| 国产露脸91国语对白| 91精品国产一区二区| 亚洲视频每日更新| 国产高清久久久久| 日韩欧美区一区二| 亚洲图片欧美一区| 91久久一区二区| 国产精品视频观看| 国产中文一区二区三区| 91精品国产综合久久久久| 一区二区三区四区激情| 丁香天五香天堂综合| 久久这里只有精品首页| 婷婷六月综合网| 欧美在线观看18| 椎名由奈av一区二区三区| 国产成人亚洲精品青草天美| 精品久久久久香蕉网| 免费在线观看日韩欧美| 欧美日韩1区2区| 调教+趴+乳夹+国产+精品| 欧美熟乱第一页| 亚洲午夜在线电影| 欧美视频在线观看一区| 18涩涩午夜精品.www| 色综合天天视频在线观看|