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

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

?? nfsdlib.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* nfsdLib.c - Network File System (NFS) server library *//* Copyright 1994 - 2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01s,07may02,kbw  man page edits01r,06nov01,vvv  made max path length configurable (SPR #63551)01q,15oct01,rae  merge from truestack ver 01r, base 01o (cleanup)01p,21jun00,rsh  upgrade to dosFs 2.001o,05apr00,zl   fixed the fix in 01m (use retVal)01m,15nov98,rjc  modifications for dosfs2 compatibility.01o,03dec00,ijm  increased nfsdStackSize (SPR# 22650).  Corrected return		 value if file exists (SPR# 31536)01n,16mar99,spm  recovered orphaned code from tor1_0_1.sens1_1 (SPR #25770)01m,06oct98,sgv  fixed nfsproc_create_2 to return NFSERR_EXIST when the file                 exists01m,14mar99,jdi  doc: removed refs to config.h and/or configAll.h (SPR 25663).01l,11mar97,dvs  added test for udp in nfsd (SPR #8183).01k,10feb97,dbt  close file descriptors before leaving in nfsproc_setattr_2 () 		 routine before leaving (SPR #6615).01j,05jul96,ms   fixed SPR 6579 - only NFSPROC_CREATE if file doen't exist.01i,27feb95,jdi  doc: changed dosFsMode to dosFsFileMode (doc only) (SPR 4085).01h,11feb95,jdi  doc format repair.01g,24jan95,jdi  doc cleanup.01f,08sep94,jmm  final changes01e,11may94,jmm  integrated Roland's doc changes01d,25apr94,jmm  added nfsdFsReadOnly(), all routines that write now call it 1st                 added module documentation01c,21apr94,jmm  reordered routines, documentation cleanup01b,20apr94,jmm  formatting cleanup, nfsdFhNtoh and Hton calls fixed01a,07mar94,jmm  written*//*DESCRIPTIONThis library is an implementation of version 2 of the Network FileSystem Protocol Specification as defined in RFC 1094.  It isclosely connected with version 1 of the mount protocol, also definedin RFC 1094 and implemented in turn by mountLib.The NFS server is initialized by calling nfsdInit().  This is done automatically at boot time if INCLUDE_NFS_SERVER is defined.Currently, only the dosFsLib file system is supported.File systems are exported with the nfsExport() call.To create and export a file system, define INCLUDE_NFS_SERVER and rebuildVxWorks.To export VxWorks file systems via NFS, you need facilities from boththis library and from mountLib.  To include both, defineINCLUDE_NFS_SERVER and rebuild VxWorks.Use the mountLib routine nfsExport() to export file systems.  For anexample, see the manual page for mountLib.VxWorks does not normally provide authentication services for NFSrequests, and the DOS file system does not provide file permissions.If you need to authenticate incoming requests, see the documentationfor nfsdInit() and mountdInit() for information about authorizationhooks.The following requests are accepted from clients.  For details oftheir use, see RFC 1094, "NFS: Network File System ProtocolSpecification.".TScenter,tab(|);lf3 lf3l n.Procedure Name        |  Procedure Number_ NFSPROC_NULL         |  0 NFSPROC_GETATTR      |  1 NFSPROC_SETATTR      |  2 NFSPROC_ROOT         |  3 NFSPROC_LOOKUP       |  4 NFSPROC_READLINK     |  5 NFSPROC_READ         |  6 NFSPROC_WRITE        |  8 NFSPROC_CREATE       |  9 NFSPROC_REMOVE       |  10 NFSPROC_RENAME       |  11 NFSPROC_LINK         |  12 NFSPROC_SYMLINK      |  13 NFSPROC_MKDIR        |  14 NFSPROC_RMDIR        |  15 NFSPROC_READDIR      |  16 NFSPROC_STATFS       |  17.TEAUTHENTICATION AND PERMISSIONSCurrently, no authentication is done on NFS requests.  nfsdInit()describes the authentication hooks that can be added shouldauthentication be necessary.Note that the DOS file system does not provide information about ownershipor permissions on individual files.  Before initializing a dosFs filesystem, three global variables--`dosFsUserId', `dosFsGroupId', and`dosFsFileMode'--can be set to define the user ID, group ID, and permissionsbyte for all files in all dosFs volumes initialized after setting thesevariables.  To arrange for different dosFs volumes to use different userand group ID numbers, reset these variables before each volume isinitialized.  See the manual entry for dosFsLib for more information.TASKSSeveral NFS tasks are created by nfsdInit().  They are:.iP tMountd 11 3The mount daemon, which handles all incoming mount requests.This daemon is created by mountdInit(), which is automaticallycalled from nfsdInit()..iP tNfsdThe NFS daemon, which queues all incoming NFS requests..iP tNfsdXThe NFS request handlers, which dequeues and processes all incomingNFS requests..LPPerformance of the NFS file system can be improved by increasing thenumber of servers specified in the nfsdInit() call, if there areseveral different dosFs volumes exported from the same target system.The spy() utility can be called to determine whether this is useful fora particular configuration.INTERNAL:All of the nfsproc_*_2 routines follow the RPC naming conventionrather than the WRS naming convention.  They return a pointer tomalloced space, which is freed by nfsdRequestProcess().*/#include "vxWorks.h"#include "dirent.h"#include "dosFsLib.h"#include "errno.h"#include "fcntl.h"#include "ioLib.h"#include "limits.h"#include "mountLib.h"#include "msgQLib.h"#include "netinet/in.h"#include "nfsdLib.h"#include "pathLib.h"#include "rpcLib.h"#include "rpc/pmap_clnt.h"#include "rpc/rpc.h"#include "semLib.h"#include "sockLib.h"#include "stdio.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "sys/socket.h"#include "sys/stat.h"#include "sys/types.h"#include "taskLib.h"#include "tickLib.h"#include "utime.h"#include "xdr_nfs.h"#include "iosLib.h"#include "private/nfsHashP.h"#include "memPartLib.h"/* defines */#define NAME_LEN               40#if !defined(S_dosFsLib_FILE_EXISTS)#define S_dosFsLib_FILE_EXISTS  (S_dosFsLib_FILE_ALREADY_EXISTS)#endif#define QLEN_PER_SRVR           10#ifdef __GNUC__# ifndef alloca#  define alloca __builtin_alloca# endif#endif/* DATA STRUCTURES *//* svcudp_data is copied directly from svc_udp.c - DO NOT MODIFY */struct svcudp_data {	u_int   su_iosz;	/* byte size of send.recv buffer */	u_long	su_xid;		/* transaction id */	XDR	su_xdrs;	/* XDR handle */	char	su_verfbody[MAX_AUTH_BYTES];	/* verifier body */	char   *su_cache;	/* cached data, NULL if no cache - 4.0 */};typedef struct    {    FUNCPTR            routine;   /* nfsproc_*_2 routine to call */    int                procNum;   /* NFS procedure number */    NFSD_ARGUMENT *    argument;  /* argument to pass to nfsproc_*_2 */    FUNCPTR            xdrArg;	  /* XDR function pointer to convert argument */    FUNCPTR            xdrResult; /* XDR function pointer to convert result */    struct sockaddr_in sockAddr;  /* Address of the client socket */    int                xid;	  /* RPC XID of client request */    int                socket;	  /* Socket to use to send reply */    } NFS_Q_REQUEST;/* IMPORTS */IMPORT int nfsMaxPath;           /* Max. file path length *//* GLOBALS */int nfsdStackSize = 14000;	  /* Default stack size for NFS processes */int nfsdNServers = 4;		  /* Default number of NFS servers */int nfsdPriorityDefault = 55;	  /* Default priority of the NFS server */int nfsdNFilesystemsDefault = 10; /* Default max. num. filesystems *//* LOCALS */LOCAL NFS_SERVER_STATUS nfsdServerStatus;    /* Status of the NFS server */LOCAL FUNCPTR           nfsdAuthHook = NULL; /* Authentication hook */MSG_Q_ID                nfsRequestQ;         /* Message Q for NFS requests *//* forward LOCAL functions */LOCAL void nfsdRequestEnqueue (struct svc_req * rqstp, SVCXPRT * transp);LOCAL int nfsdFsReadOnly (NFS_FILE_HANDLE * fh);/******************************************************************************** nfsdInit - initialize the NFS server* * This routine initializes the NFS server.  <nServers>  specifies the number of* tasks to be spawned to handle NFS requests.  <priority> is the priority that* those tasks will run at.  <authHook> is a pointer to an authorization* routine.  <mountAuthHook> is a pointer to a similar routine, passed to* mountdInit().  <options> is provided for future expansion.* * Normally, no authorization is performed by either mountd or nfsd.* If you want to add authorization, set <authHook> to a* function pointer to a routine declared as follows:* .CS* nfsstat routine*     (*     int                progNum,	/@ RPC program number @/*     int                versNum,	/@ RPC program version number @/*     int                procNum,	/@ RPC procedure number @/*     struct sockaddr_in clientAddr,    /@ address of the client @/*     NFSD_ARGUMENT *    nfsdArg   	/@ argument of the call @/*     )* .CE* * The <authHook> routine should return NFS_OK if the request is authorized,* and NFSERR_ACCES if not.  (NFSERR_ACCES is not required; any legitimate* NFS error code can be returned.)* * See mountdInit() for documentation on <mountAuthHook>.  Note that* <mountAuthHook> and <authHook> can point to the same routine.* Simply use the <progNum>, <versNum>, and <procNum> fields to decide* whether the request is an NFS request or a mountd request.* * VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * This restriction does not apply under non-AE versions of VxWorks.  ** RETURNS: OK, or ERROR if the NFS server cannot be started.** SEE ALSO: nfsExport(), mountdInit()*/STATUS nfsdInit    (    int nServers,		/* the number of NFS servers to create */    int nExportedFs,		/* maximum number of exported file systems */    int priority,		/* the priority for the NFS servers */    FUNCPTR authHook,		/* authentication hook */    FUNCPTR mountAuthHook,	/* authentication hook for mount daemon */    int options			/* currently unused */    )    {    char serverName [50];	/* Synthetic name for NFS servers */    int  mountTask;		/* taskId of the mountd task */    int  queuingTask;		/* taskId of the task that queues NFS calls */    /*     * Scaling stack with change in NFS_MAXPATH since multiple arrays of size      * NFS_MAXPATH are allocated from stack. Difference is computed from      * default max. path of 255.     */    nfsdStackSize += 4 * (nfsMaxPath - 255);    /* Set up call statistics */    memset (&nfsdServerStatus, 0, sizeof (nfsdServerStatus));    /* Set up authorization hook */    nfsdAuthHook = authHook;        /* If number and priority of servers isn't specified, set it to default */        if (nServers == 0)        nServers = nfsdNServers;    if (priority == 0)        priority = nfsdPriorityDefault;    if (nExportedFs == 0)        nExportedFs = nfsdNFilesystemsDefault;    /* Create the request queue */    if ((nfsRequestQ = msgQCreate (nServers * QLEN_PER_SRVR, sizeof (NFS_Q_REQUEST),			      MSG_Q_FIFO)) == NULL)	return (ERROR);    /* Spawn the mount task */    if ((mountTask = mountdInit (0, 0, mountAuthHook, 0, 0)) == ERROR)	{	msgQDelete (nfsRequestQ);	return (ERROR);	}    /* spawn the queuing task */        if ((queuingTask = taskSpawn ("tNfsd", priority, VX_FP_TASK, nfsdStackSize,	 			  (FUNCPTR) nfsd, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))	== ERROR)	{	taskDelete (mountTask);	msgQDelete (nfsRequestQ);	return (ERROR);	}    /* spawn the call processing tasks */        while (nServers-- > 0)	{	/* Create names of the form tNfsdX */	sprintf (serverName, "tNfsd%d", nServers);		if ((taskSpawn (serverName, priority + 5, VX_FP_TASK, nfsdStackSize,			(FUNCPTR) nfsdRequestProcess, 0, 0, 0, 0, 0, 0, 0, 0,			0, 0)) == ERROR)	    {	    taskDelete (mountTask);	    taskDelete (queuingTask);	    msgQDelete (nfsRequestQ);	    return (ERROR);	    }	}    return (OK);    }/******************************************************************************** nfsdRequestEnqueue - queue up NFS requests from clients** Called only via svc_run(), via nfsd().  Puts an incoming NFS request* into the message queue for processing by nfsdRequestProcess().** Some of this routine was generated by rpcgen.* * RETURNS:  N/A* * NOMANUAL*/LOCAL void nfsdRequestEnqueue    (    struct svc_req * rqstp,	/* Request */    SVCXPRT *        transp	/* Transport */    )    {    NFSD_ARGUMENT *     argument;     /* Client call argument */    FUNCPTR             xdr_result;   /* XDR result conversion routine */    FUNCPTR             xdr_argument; /* XDR argument conversion routine */    char *              (*local)();   /* Local routine to call */    NFS_Q_REQUEST       request;      /* Request to queue up */    /* Allocate space for the argument */    argument = KHEAP_ALLOC((NFS_MAXDATA + sizeof (argument) + nfsMaxPath));    if (NULL != argument)	{	bzero((char *) argument,(NFS_MAXDATA + sizeof (argument) + nfsMaxPath));	}    /* Beginning of code generated by rpcgen */    switch (rqstp->rq_proc) {    case NFSPROC_NULL:	    xdr_argument = xdr_void;	    xdr_result = xdr_void;	    local = (char *(*)()) nfsproc_null_2;	    break;    case NFSPROC_GETATTR:	    xdr_argument = xdr_nfs_fh;	    xdr_result = xdr_attrstat;	    local = (char *(*)()) nfsproc_getattr_2;	    break;    case NFSPROC_SETATTR:	    xdr_argument = xdr_sattrargs;	    xdr_result = xdr_attrstat;	    local = (char *(*)()) nfsproc_setattr_2;	    break;    case NFSPROC_ROOT:	    xdr_argument = xdr_void;	    xdr_result = xdr_void;	    local = (char *(*)()) nfsproc_root_2;	    break;    case NFSPROC_LOOKUP:	    xdr_argument = xdr_diropargs;	    xdr_result = xdr_diropres;	    local = (char *(*)()) nfsproc_lookup_2;	    break;    case NFSPROC_READLINK:	    xdr_argument = xdr_nfs_fh;	    xdr_result = xdr_readlinkres;	    local = (char *(*)()) nfsproc_readlink_2;	    break;    case NFSPROC_READ:	    xdr_argument = xdr_readargs;	    xdr_result = xdr_readres;	    local = (char *(*)()) nfsproc_read_2;	    break;    case NFSPROC_WRITECACHE:	    xdr_argument = xdr_void;	    xdr_result = xdr_void;	    local = (char *(*)()) nfsproc_writecache_2;	    break;    case NFSPROC_WRITE:	    xdr_argument = xdr_writeargs;	    xdr_result = xdr_attrstat;	    local = (char *(*)()) nfsproc_write_2;	    break;    case NFSPROC_CREATE:	    xdr_argument = xdr_createargs;	    xdr_result = xdr_diropres;	    local = (char *(*)()) nfsproc_create_2;	    break;    case NFSPROC_REMOVE:	    xdr_argument = xdr_diropargs;	    xdr_result = xdr_nfsstat;	    local = (char *(*)()) nfsproc_remove_2;	    break;    case NFSPROC_RENAME:	    xdr_argument = xdr_renameargs;	    xdr_result = xdr_nfsstat;	    local = (char *(*)()) nfsproc_rename_2;	    break;    case NFSPROC_LINK:	    xdr_argument = xdr_linkargs;	    xdr_result = xdr_nfsstat;	    local = (char *(*)()) nfsproc_link_2;	    break;    case NFSPROC_SYMLINK:	    xdr_argument = xdr_symlinkargs;	    xdr_result = xdr_nfsstat;	    local = (char *(*)()) nfsproc_symlink_2;	    break;    case NFSPROC_MKDIR:	    xdr_argument = xdr_createargs;	    xdr_result = xdr_diropres;	    local = (char *(*)()) nfsproc_mkdir_2;	    break;    case NFSPROC_RMDIR:	    xdr_argument = xdr_diropargs;	    xdr_result = xdr_nfsstat;	    local = (char *(*)()) nfsproc_rmdir_2;	    break;    case NFSPROC_READDIR:	    xdr_argument = xdr_readdirargs;	    xdr_result = xdr_readdirres;	    local = (char *(*)()) nfsproc_readdir_2;	    break;    case NFSPROC_STATFS:	    xdr_argument = xdr_nfs_fh;	    xdr_result = xdr_statfsres;	    local = (char *(*)()) nfsproc_statfs_2;	    break;    default:            KHEAP_FREE((char *)argument);	    svcerr_noproc(transp);	    return;    }    if (!svc_getargs(transp, xdr_argument, argument)) {	svcerr_decode(transp);	return;    }        /* end of code generated by rpcgen */        /* Build the request and put it into the message queue */        request.routine   = (FUNCPTR) local;    request.procNum   = rqstp->rq_proc;    request.argument  = argument;    request.xdrArg    = xdr_argument;    request.xdrResult = xdr_result;    request.sockAddr  = transp->xp_raddr;    /* only use xp_p2 for udp requests */    if (transp->xp_p2 != NULL)		request.xid       = ((struct svcudp_data *) transp->xp_p2)->su_xid;    request.socket    = transp->xp_sock;        if (msgQSend (nfsRequestQ, (char *) &request, sizeof (request),		  WAIT_FOREVER, MSG_PRI_NORMAL) != OK)	{	KHEAP_FREE((char *)argument);	perror ("nfsd aborted");	return;	}    }/******************************************************************************** nfsdRequestProcess - process client NFS requests* * nfsdRequestProcess is started as a task by nfsdInit().  It sits in a loop* reading nfsdRequestQ and responding to all requests that are put into this* queue.* * Multiple processes can be spawned with this entry point.  Normally,* nfsdNServers are started when nfsdInit() is called.* * RETURNS:  N/A** NOMANUAL*/void nfsdRequestProcess    (    void    )    {    SVCXPRT *     transp;	/* Dummy transport for RPC */    int           sock;		/* Transmission socket for reply */    NFS_Q_REQUEST request;	/* Client request */    NFSD_ARGUMENT * argument; /* Argument from client request */    char *        result;	/* Result of NFS call */    FUNCPTR       xdr_argument;	/* XDR argument conversion routine */    FUNCPTR       xdr_result;	/* XDR result conversion routine */    FUNCPTR       local;	/* Local NFS routine to call */    struct sockaddr_in * addr;	/* Address of client socket */    int           xid;		/* XID from client request */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人片在线观看中文| 国产激情视频一区二区三区欧美| 亚洲bt欧美bt精品777| 视频一区二区三区在线| 看电视剧不卡顿的网站| 国产精品一级二级三级| 成人免费视频播放| 欧美日韩亚洲综合在线 | 日韩丝袜情趣美女图片| 国产人成一区二区三区影院| 亚洲日本一区二区三区| 免费观看91视频大全| eeuss影院一区二区三区| 这里只有精品免费| 国产精品久久久久久久久久免费看| 性做久久久久久免费观看| 国产91丝袜在线观看| 欧美高清dvd| 中文字幕中文乱码欧美一区二区| 天天做天天摸天天爽国产一区| 国产美女av一区二区三区| 在线观看日韩国产| 中文字幕免费一区| 免费成人在线观看| 日本丶国产丶欧美色综合| 欧美激情自拍偷拍| 青青草国产成人99久久| 色94色欧美sute亚洲线路一久| 精品久久一区二区三区| 亚洲mv在线观看| 99精品一区二区| 久久久久久夜精品精品免费| 午夜不卡在线视频| 一本大道久久精品懂色aⅴ| 国产欧美日韩精品a在线观看| 日本视频一区二区| 欧美日韩aaa| 亚洲一区二区影院| 91国产成人在线| 日韩久久一区二区| 成人看片黄a免费看在线| 日韩欧美色电影| 亚洲成人中文在线| 欧美日韩在线播| 一区二区三区 在线观看视频| 粉嫩久久99精品久久久久久夜| 日韩免费成人网| 日本不卡在线视频| 欧美久久一区二区| 亚洲第一福利一区| 欧美日韩免费观看一区二区三区 | 久久久另类综合| 久久66热偷产精品| 日韩欧美综合一区| 日本成人超碰在线观看| 日韩一级成人av| 日本不卡免费在线视频| 欧美老肥妇做.爰bbww视频| 亚洲国产一区二区视频| 国产一区二区三区视频在线播放| 精品国产凹凸成av人导航| 玖玖九九国产精品| 国产亚洲精品精华液| www.成人在线| 一区二区三区四区激情 | 国产成人在线视频网站| 国产色综合久久| 成人性生交大合| 亚洲男人电影天堂| 欧美欧美午夜aⅴ在线观看| 日韩高清不卡一区二区三区| 日韩午夜中文字幕| 国产成人精品综合在线观看 | 国产精品亲子乱子伦xxxx裸| 豆国产96在线|亚洲| 亚洲激情中文1区| 欧美一区二区三区性视频| 精品一区中文字幕| 国产精品久久久久影院老司| 在线免费观看日本一区| 美国欧美日韩国产在线播放| 国产日韩高清在线| 一本到高清视频免费精品| 日韩高清在线电影| 国产欧美一区二区精品久导航| 91丨porny丨在线| 日韩avvvv在线播放| 国产欧美精品一区二区三区四区| 91啦中文在线观看| 美女一区二区三区| 日韩毛片在线免费观看| 日韩视频在线永久播放| 99久久精品国产导航| 日韩精品一级中文字幕精品视频免费观看 | 91麻豆精品国产91久久久| 精品在线亚洲视频| 亚洲美女淫视频| 精品国产一区久久| 91亚洲大成网污www| 麻豆国产一区二区| 亚洲男人的天堂网| 久久这里只精品最新地址| 色噜噜狠狠成人中文综合| 久久国产成人午夜av影院| 一区二区三区四区精品在线视频 | 亚洲国产精品一区二区www| 2024国产精品| 欧美久久久久免费| av一二三不卡影片| 韩国理伦片一区二区三区在线播放 | 亚洲精品写真福利| 久久久精品黄色| 91精品婷婷国产综合久久| 91在线免费看| 国产精品亚洲人在线观看| 婷婷久久综合九色综合绿巨人| 欧美国产欧美亚州国产日韩mv天天看完整 | 精品国产乱码久久| 欧美卡1卡2卡| 在线观看免费一区| 99久久国产综合色|国产精品| 国产精品综合视频| 免费黄网站欧美| 日韩不卡一区二区| 日日夜夜免费精品| 一区二区三区四区激情| 亚洲欧洲精品天堂一级| 久久久久久久久伊人| 欧美一区二区人人喊爽| 色哟哟亚洲精品| 不卡av免费在线观看| 国产精品中文欧美| 国产精选一区二区三区| 蜜乳av一区二区| 蜜桃av一区二区| 久久99热国产| 精品一区二区三区在线观看国产| 日本少妇一区二区| 蜜桃一区二区三区在线观看| 水野朝阳av一区二区三区| 亚洲国产日韩av| 婷婷中文字幕一区三区| 日韩电影在线观看网站| 秋霞av亚洲一区二区三| 奇米精品一区二区三区在线观看| 日韩电影在线免费| 久久国产日韩欧美精品| 国产乱码一区二区三区| 懂色av一区二区在线播放| www.在线欧美| 一本久道中文字幕精品亚洲嫩| 色www精品视频在线观看| 欧美性大战久久久| 欧美丰满少妇xxxxx高潮对白 | 欧美猛男男办公室激情| 91精品欧美一区二区三区综合在 | 全部av―极品视觉盛宴亚洲| 日本三级亚洲精品| 国产一区二区在线视频| 东方欧美亚洲色图在线| 99久久国产免费看| 欧美日韩精品高清| 精品国产乱子伦一区| 中文一区在线播放| 亚洲午夜羞羞片| 免费成人av在线播放| 国产在线观看一区二区| 成人免费黄色大片| 色国产精品一区在线观看| 欧美一区二区视频在线观看2022| 久久一日本道色综合| 国产精品福利av| 无码av免费一区二区三区试看| 激情综合网天天干| 91色在线porny| 日韩你懂的电影在线观看| 中文字幕一区不卡| 日韩在线卡一卡二| jlzzjlzz欧美大全| 在线不卡欧美精品一区二区三区| 精品国产一区久久| 有码一区二区三区| 精品在线免费视频| 欧美综合亚洲图片综合区| 精品国产乱子伦一区| 中文字幕一区在线观看| 美女一区二区三区在线观看| hitomi一区二区三区精品| 欧美私人免费视频| 国产日韩综合av| 丝袜国产日韩另类美女| jiyouzz国产精品久久| 91精品一区二区三区久久久久久| 国产精品欧美一区二区三区| 人人爽香蕉精品| 在线一区二区三区| 欧美国产亚洲另类动漫| 日韩国产欧美在线播放| 91视频免费观看| 中文字幕成人在线观看|