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

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

?? socket.c

?? 基于linux1.0內(nèi)核的linux源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
  }
  return(0);
}


/*
 * Perform a listen. Basically, we allow the protocol to do anything
 * necessary for a listen, and if that works, we mark the socket as
 * ready for listening.
 */
static int
sock_listen(int fd, int backlog)
{
  struct socket *sock;

  DPRINTF((net_debug, "NET: sock_listen: fd = %d\n", fd));
  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);
  if (sock->state != SS_UNCONNECTED) {
	DPRINTF((net_debug, "NET: sock_listen: socket isn't unconnected\n"));
	return(-EINVAL);
  }
  if (sock->ops && sock->ops->listen) sock->ops->listen(sock, backlog);
  sock->flags |= SO_ACCEPTCON;
  return(0);
}


/*
 * For accept, we attempt to create a new socket, set up the link
 * with the client, wake up the client, then return the new
 * connected fd.
 */
static int
sock_accept(int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen)
{
  struct file *file;
  struct socket *sock, *newsock;
  int i;

  DPRINTF((net_debug, "NET: sock_accept: fd = %d\n", fd));
  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  
  if (!(sock = sockfd_lookup(fd, &file))) return(-ENOTSOCK);
  if (sock->state != SS_UNCONNECTED) {
	DPRINTF((net_debug, "NET: sock_accept: socket isn't unconnected\n"));
	return(-EINVAL);
  }
  if (!(sock->flags & SO_ACCEPTCON)) {
	DPRINTF((net_debug,
		"NET: sock_accept: socket not accepting connections!\n"));
	return(-EINVAL);
  }

  if (!(newsock = sock_alloc(0))) {
	printk("NET: sock_accept: no more sockets\n");
	return(-EAGAIN);
  }
  newsock->type = sock->type;
  newsock->ops = sock->ops;
  if ((i = sock->ops->dup(newsock, sock)) < 0) {
	sock_release(newsock);
	return(i);
  }

  i = newsock->ops->accept(sock, newsock, file->f_flags);
  if ( i < 0) {
	sock_release(newsock);
	return(i);
  }

  if ((fd = get_fd(SOCK_INODE(newsock))) < 0) {
	sock_release(newsock);
	return(-EINVAL);
  }

  DPRINTF((net_debug, "NET: sock_accept: connected socket 0x%x via 0x%x\n",
							sock, newsock));

  if (upeer_sockaddr)
	newsock->ops->getname(newsock, upeer_sockaddr, upeer_addrlen, 1);

  return(fd);
}


/* Attempt to connect to a socket with the server address. */
static int
sock_connect(int fd, struct sockaddr *uservaddr, int addrlen)
{
  struct socket *sock;
  struct file *file;
  int i;

  DPRINTF((net_debug, "NET: sock_connect: fd = %d\n", fd));
  if (fd < 0 || fd >= NR_OPEN || (file=current->filp[fd]) == NULL)
								return(-EBADF);
  
  if (!(sock = sockfd_lookup(fd, &file))) return(-ENOTSOCK);
  switch(sock->state) {
	case SS_UNCONNECTED:
		/* This is ok... continue with connect */
		break;
	case SS_CONNECTED:
		/* Socket is already connected */
		return -EISCONN;
	case SS_CONNECTING:
		/* Not yet connected... we will check this. */
		return(sock->ops->connect(sock, uservaddr,
					  addrlen, file->f_flags));
	default:
		DPRINTF((net_debug,
			"NET: sock_connect: socket not unconnected\n"));
		return(-EINVAL);
  }
  i = sock->ops->connect(sock, uservaddr, addrlen, file->f_flags);
  if (i < 0) {
	DPRINTF((net_debug, "NET: sock_connect: connect failed\n"));
	return(i);
  }
  return(0);
}


static int
sock_getsockname(int fd, struct sockaddr *usockaddr, int *usockaddr_len)
{
  struct socket *sock;

  DPRINTF((net_debug, "NET: sock_getsockname: fd = %d\n", fd));
  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);
  return(sock->ops->getname(sock, usockaddr, usockaddr_len, 0));
}


static int
sock_getpeername(int fd, struct sockaddr *usockaddr, int *usockaddr_len)
{
  struct socket *sock;

  DPRINTF((net_debug, "NET: sock_getpeername: fd = %d\n", fd));
  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)
			return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);
  return(sock->ops->getname(sock, usockaddr, usockaddr_len, 1));
}


static int
sock_send(int fd, void * buff, int len, unsigned flags)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug,
	"NET: sock_send(fd = %d, buff = %X, len = %d, flags = %X)\n",
       							fd, buff, len, flags));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->send(sock, buff, len, (file->f_flags & O_NONBLOCK), flags));
}


static int
sock_sendto(int fd, void * buff, int len, unsigned flags,
	   struct sockaddr *addr, int addr_len)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug,
	"NET: sock_sendto(fd = %d, buff = %X, len = %d, flags = %X,"
	 " addr=%X, alen = %d\n", fd, buff, len, flags, addr, addr_len));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->sendto(sock, buff, len, (file->f_flags & O_NONBLOCK),
			   flags, addr, addr_len));
}


static int
sock_recv(int fd, void * buff, int len, unsigned flags)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug,
	"NET: sock_recv(fd = %d, buff = %X, len = %d, flags = %X)\n",
							fd, buff, len, flags));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->recv(sock, buff, len,(file->f_flags & O_NONBLOCK), flags));
}


static int
sock_recvfrom(int fd, void * buff, int len, unsigned flags,
	     struct sockaddr *addr, int *addr_len)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug,
	"NET: sock_recvfrom(fd = %d, buff = %X, len = %d, flags = %X,"
	" addr=%X, alen=%X\n", fd, buff, len, flags, addr, addr_len));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->recvfrom(sock, buff, len, (file->f_flags & O_NONBLOCK),
			     flags, addr, addr_len));
}


static int
sock_setsockopt(int fd, int level, int optname, char *optval, int optlen)
{
  struct socket *sock;
  struct file *file;
	
  DPRINTF((net_debug, "NET: sock_setsockopt(fd=%d, level=%d, optname=%d,\n",
							fd, level, optname));
  DPRINTF((net_debug, "                     optval = %X, optlen = %d)\n",
							optval, optlen));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->setsockopt(sock, level, optname, optval, optlen));
}


static int
sock_getsockopt(int fd, int level, int optname, char *optval, int *optlen)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug, "NET: sock_getsockopt(fd=%d, level=%d, optname=%d,\n",
						fd, level, optname));
  DPRINTF((net_debug, "                     optval = %X, optlen = %X)\n",
						optval, optlen));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);
  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);
	    
  if (!sock->ops || !sock->ops->getsockopt) return(0);
  return(sock->ops->getsockopt(sock, level, optname, optval, optlen));
}


static int
sock_shutdown(int fd, int how)
{
  struct socket *sock;
  struct file *file;

  DPRINTF((net_debug, "NET: sock_shutdown(fd = %d, how = %d)\n", fd, how));

  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))
								return(-EBADF);

  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);

  return(sock->ops->shutdown(sock, how));
}


int
sock_fcntl(struct file *filp, unsigned int cmd, unsigned long arg)
{
  struct socket *sock;

  sock = socki_lookup (filp->f_inode);
  if (sock != NULL && sock->ops != NULL && sock->ops->fcntl != NULL)
				return(sock->ops->fcntl(sock, cmd, arg));
  return(-EINVAL);
}


/*
 * System call vectors. Since I (RIB) want to rewrite sockets as streams,
 * we have this level of indirection. Not a lot of overhead, since more of
 * the work is done via read/write/select directly.
 */
asmlinkage int
sys_socketcall(int call, unsigned long *args)
{
  int er;
  switch(call) {
	case SYS_SOCKET:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_socket(get_fs_long(args+0),
				   get_fs_long(args+1),
				   get_fs_long(args+2)));
	case SYS_BIND:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_bind(get_fs_long(args+0),
				 (struct sockaddr *)get_fs_long(args+1),
				 get_fs_long(args+2)));
	case SYS_CONNECT:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_connect(get_fs_long(args+0),
				    (struct sockaddr *)get_fs_long(args+1),
				    get_fs_long(args+2)));
	case SYS_LISTEN:
		er=verify_area(VERIFY_READ, args, 2 * sizeof(long));
		if(er)
			return er;
		return(sock_listen(get_fs_long(args+0),
				   get_fs_long(args+1)));
	case SYS_ACCEPT:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_accept(get_fs_long(args+0),
				   (struct sockaddr *)get_fs_long(args+1),
				   (int *)get_fs_long(args+2)));
	case SYS_GETSOCKNAME:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_getsockname(get_fs_long(args+0),
					(struct sockaddr *)get_fs_long(args+1),
					(int *)get_fs_long(args+2)));
	case SYS_GETPEERNAME:
		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));
		if(er)
			return er;
		return(sock_getpeername(get_fs_long(args+0),
					(struct sockaddr *)get_fs_long(args+1),
					(int *)get_fs_long(args+2)));
	case SYS_SOCKETPAIR:
		er=verify_area(VERIFY_READ, args, 4 * sizeof(long));
		if(er)
			return er;
		return(sock_socketpair(get_fs_long(args+0),
				       get_fs_long(args+1),
				       get_fs_long(args+2),
				       (unsigned long *)get_fs_long(args+3)));
	case SYS_SEND:
		er=verify_area(VERIFY_READ, args, 4 * sizeof(unsigned long));
		if(er)
			return er;
		return(sock_send(get_fs_long(args+0),
				 (void *)get_fs_long(args+1),
				 get_fs_long(args+2),
				 get_fs_long(args+3)));
	case SYS_SENDTO:
		er=verify_area(VERIFY_READ, args, 6 * sizeof(unsigned long));
		if(er)
			return er;
		return(sock_sendto(get_fs_long(args+0),
				   (void *)get_fs_long(args+1),
				   get_fs_long(args+2),
				   get_fs_long(args+3),
				   (struct sockaddr *)get_fs_long(args+4),
				   get_fs_long(args+5)));
	case SYS_RECV:
		er=verify_area(VERIFY_READ, args, 4 * sizeof(unsigned long));
		if(er)
			return er;
		return(sock_recv(get_fs_long(args+0),
				 (void *)get_fs_long(args+1),
				 get_fs_long(args+2),
				 get_fs_long(args+3)));
	case SYS_RECVFROM:
		er=verify_area(VERIFY_READ, args, 6 * sizeof(unsigned long));
		if(er)
			return er;
		return(sock_recvfrom(get_fs_long(args+0),
				     (void *)get_fs_long(args+1),
				     get_fs_long(args+2),
				     get_fs_long(args+3),
				     (struct sockaddr *)get_fs_long(args+4),
				     (int *)get_fs_long(args+5)));
	case SYS_SHUTDOWN:
		er=verify_area(VERIFY_READ, args, 2* sizeof(unsigned long));
		if(er)
			return er;
		return(sock_shutdown(get_fs_long(args+0),
				     get_fs_long(args+1)));
	case SYS_SETSOCKOPT:
		er=verify_area(VERIFY_READ, args, 5*sizeof(unsigned long));
		if(er)
			return er;
		return(sock_setsockopt(get_fs_long(args+0),
				       get_fs_long(args+1),
				       get_fs_long(args+2),
				       (char *)get_fs_long(args+3),
				       get_fs_long(args+4)));
	case SYS_GETSOCKOPT:
		er=verify_area(VERIFY_READ, args, 5*sizeof(unsigned long));
		if(er)
			return er;
		return(sock_getsockopt(get_fs_long(args+0),
				       get_fs_long(args+1),
				       get_fs_long(args+2),
				       (char *)get_fs_long(args+3),
				       (int *)get_fs_long(args+4)));
	default:
		return(-EINVAL);
  }
}


static int
net_ioctl(unsigned int cmd, unsigned long arg)
{
  int er;
  switch(cmd) {
	case DDIOCSDBG:
		er=verify_area(VERIFY_READ, (void *)arg, sizeof(long));
		if(er)
			return er;
		net_debug = get_fs_long((long *)arg);
		if (net_debug != 0 && net_debug != 1) {
			net_debug = 0;
			return(-EINVAL);
		}
		return(0);
	default:
		return(-EINVAL);
  }
  /*NOTREACHED*/
  return(0);
}


/*
 * Handle the IOCTL system call for the NET devices.  This basically
 * means I/O control for the SOCKET layer (future expansions could be
 * a variable number of socket table entries, et al), and for the more
 * general protocols like ARP.  The latter currently lives in the INET
 * module, so we have to get ugly a tiny little bit.  Later... -FvK
 */
static int
net_fioctl(struct inode *inode, struct file *file,
	   unsigned int cmd, unsigned long arg)
{
  extern int arp_ioctl(unsigned int, void *);

  /* Dispatch on the minor device. */
  switch(MINOR(inode->i_rdev)) {
	case 0:		/* NET (SOCKET) */
		DPRINTF((net_debug, "NET: SOCKET level I/O control request.\n"));
		return(net_ioctl(cmd, arg));
#ifdef CONFIG_INET
	case 1:		/* ARP */
		DPRINTF((net_debug, "NET: ARP level I/O control request.\n"));
		return(arp_ioctl(cmd, (void *) arg));
#endif
	default:
		return(-ENODEV);
  }
  /*NOTREACHED*/
  return(-EINVAL);
}


static struct file_operations net_fops = {
  NULL,		/* LSEEK	*/
  NULL,		/* READ		*/
  NULL,		/* WRITE	*/
  NULL,		/* READDIR	*/
  NULL,		/* SELECT	*/
  net_fioctl,	/* IOCTL	*/
  NULL,		/* MMAP		*/
  NULL,		/* OPEN		*/
  NULL		/* CLOSE	*/
};


/*
 * This function is called by a protocol handler that wants to
 * advertise its address family, and have it linked into the
 * SOCKET module.
 */
int
sock_register(int family, struct proto_ops *ops)
{
  int i;

  cli();
  for(i = 0; i < NPROTO; i++) {
	if (pops[i] != NULL) continue;
	pops[i] = ops;
	pops[i]->family = family;
	sti();
	DPRINTF((net_debug, "NET: Installed protocol %d in slot %d (0x%X)\n",
						family, i, (long)ops));
	return(i);
  }
  sti();
  return(-ENOMEM);
}


void
sock_init(void)
{
  struct socket *sock;
  int i;

  /* Set up our SOCKET VFS major device. */
  if (register_chrdev(SOCKET_MAJOR, "socket", &net_fops) < 0) {
	printk("NET: cannot register major device %d!\n", SOCKET_MAJOR);
	return;
  }

  /* Release all sockets. */
  for (sock = sockets; sock <= last_socket; ++sock) sock->state = SS_FREE;

  /* Initialize all address (protocol) families. */
  for (i = 0; i < NPROTO; ++i) pops[i] = NULL;

  /* Initialize the DDI module. */
  ddi_init();

  /* Initialize the ARP module. */
#if 0
  arp_init();
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品在线观看| 在线视频欧美精品| 亚洲人成网站色在线观看| 欧美一区二区久久久| 成人18视频在线播放| 卡一卡二国产精品| 亚洲精品国产一区二区精华液| 精品久久国产字幕高潮| 91国产精品成人| 成人高清av在线| 国产美女精品在线| 亚洲成av人片在线观看| 国产精品国产三级国产有无不卡 | 日本一区二区成人| 欧美一区二区在线观看| 色噜噜狠狠一区二区三区果冻| 国产精品伊人色| 久久精品国产免费| 五月激情综合网| 一区二区三区四区蜜桃| 国产精品天干天干在观线| 日韩一区二区三区av| 在线观看一区二区视频| 北岛玲一区二区三区四区| 黑人巨大精品欧美一区| 蜜臀av在线播放一区二区三区| 亚洲午夜成aⅴ人片| 亚洲精品成人精品456| 国产精品家庭影院| 国产欧美日韩卡一| 久久久久久**毛片大全| 久久婷婷色综合| 久久久久久久久久久99999| 日韩欧美国产综合一区| 91精品国模一区二区三区| 欧美三日本三级三级在线播放| 色综合久久久久综合99| 99re这里都是精品| 99久久婷婷国产综合精品电影| 成人福利视频网站| 成人av在线影院| 波多野结衣在线一区| 成人激情综合网站| 成人精品高清在线| 91在线观看污| 色婷婷国产精品| 欧美性videosxxxxx| 色欧美乱欧美15图片| 欧美这里有精品| 欧美精品乱码久久久久久按摩| 91精品国产综合久久国产大片| 日韩女优av电影| 久久色在线视频| 欧美国产一区在线| 亚洲免费在线看| 婷婷成人激情在线网| 久久激情综合网| 国产成人一区在线| 91一区二区在线| 欧美日韩免费观看一区二区三区| 91精品国产麻豆国产自产在线 | 一区二区三区在线播放| 亚洲图片自拍偷拍| 免费高清视频精品| 国产成人一区二区精品非洲| 91视频国产观看| 欧美一区二视频| 中文字幕乱码久久午夜不卡| 亚洲在线免费播放| 久久超碰97人人做人人爱| www.亚洲色图.com| 7777精品伊人久久久大香线蕉| 欧美电影免费观看高清完整版在| 国产精品网站在线观看| 亚洲狠狠丁香婷婷综合久久久| 日韩专区一卡二卡| 懂色av一区二区三区蜜臀 | 一本色道久久综合亚洲精品按摩| 在线91免费看| 欧美国产乱子伦| 性做久久久久久免费观看欧美| 韩国三级中文字幕hd久久精品| 91日韩一区二区三区| 欧美一区二区二区| 亚洲欧美在线视频观看| 蜜臀精品一区二区三区在线观看| 99久久免费视频.com| 欧美福利视频一区| 亚洲婷婷国产精品电影人久久| 免费观看日韩av| 91久久精品网| 国产日产欧美一区二区三区| 日韩高清不卡一区二区三区| caoporn国产一区二区| 欧美一区二区三区性视频| 亚洲欧美日本韩国| 激情深爱一区二区| 欧美日韩日日摸| 亚洲精品亚洲人成人网| 国产黄色精品网站| 欧美一卡二卡三卡四卡| 中文字幕在线播放不卡一区| 精品一区二区日韩| 欧美性色黄大片手机版| 中文字幕色av一区二区三区| 久久爱另类一区二区小说| 欧美婷婷六月丁香综合色| 国产精品妹子av| 国产一区二区剧情av在线| 欧美裸体一区二区三区| 亚洲欧美色图小说| 国产成人av福利| 欧美一区二区成人| 亚洲午夜电影在线观看| 色偷偷久久一区二区三区| 亚洲国产精品av| 国产一区二区主播在线| 日韩精品一区二区三区视频| 天堂一区二区在线| 91黄色免费版| 亚洲欧美日韩国产综合| 国产91露脸合集magnet| 久久久精品国产免大香伊| 久久成人免费电影| 欧美一区二区福利在线| 波多野结衣中文字幕一区 | 91日韩精品一区| 国产精品素人视频| 国产麻豆精品在线观看| www国产亚洲精品久久麻豆| 日本vs亚洲vs韩国一区三区二区| 欧美日韩激情一区二区| 亚洲丰满少妇videoshd| 欧美日韩视频在线观看一区二区三区 | 亚洲在线中文字幕| 色欧美乱欧美15图片| 一区二区在线免费| 日本韩国欧美一区二区三区| 亚洲日本欧美天堂| 一本大道久久a久久综合| 亚洲欧美日韩在线播放| 在线视频综合导航| 亚洲五码中文字幕| 6080午夜不卡| 久久国产精品露脸对白| wwwwxxxxx欧美| 高清shemale亚洲人妖| 国产精品久久久久影院老司| 99精品国产91久久久久久| ...xxx性欧美| 欧美午夜精品一区二区蜜桃| 日韩中文字幕1| 日韩精品一区二区三区swag| 国产一区二区三区久久久| 中文成人综合网| 色婷婷亚洲婷婷| 日韩av电影免费观看高清完整版| 欧美大片在线观看| 国产盗摄一区二区| 亚洲女爱视频在线| 欧美日韩另类一区| 黄色成人免费在线| 1024精品合集| 制服丝袜亚洲精品中文字幕| 激情六月婷婷久久| 日韩理论电影院| 日韩亚洲欧美综合| 国产成人精品免费视频网站| 亚洲激情自拍视频| 91精品免费在线| 成人三级伦理片| 三级欧美在线一区| 国产欧美精品一区二区色综合| 色综合天天综合| 麻豆一区二区三| 成人欧美一区二区三区小说| 91精品国产综合久久福利软件| 成人午夜视频在线观看| 亚洲福利视频一区二区| 久久蜜桃一区二区| 欧美色网一区二区| 国产黄色精品网站| 日日噜噜夜夜狠狠视频欧美人| 国产人成一区二区三区影院| 欧美在线观看视频一区二区三区| 久久国产成人午夜av影院| 亚洲色图色小说| www一区二区| 精品婷婷伊人一区三区三| 国产精品一区二区91| 丝袜美腿亚洲色图| 亚洲欧洲日本在线| 精品对白一区国产伦| 欧美日韩精品欧美日韩精品一 | 国产精品久久免费看| 欧美色视频一区| av不卡免费电影| 国产精品一色哟哟哟| 亚洲动漫第一页| **欧美大码日韩|