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

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

?? 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 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品水蜜桃| 日韩黄色免费网站| 欧美一级精品大片| av亚洲精华国产精华精| 美女视频一区二区三区| 一区二区三区中文在线| 26uuu亚洲综合色| 欧美人与性动xxxx| 91美女福利视频| 丁香亚洲综合激情啪啪综合| 蜜臂av日日欢夜夜爽一区| 亚洲综合激情网| 国产精品久久一级| 久久久久久久久一| 欧美一级xxx| 欧美美女直播网站| 色综合中文字幕国产 | 欧美大胆一级视频| 91久久精品网| www.在线成人| 国产精品一区久久久久| 日韩电影在线免费| 亚洲国产综合91精品麻豆| 中文字幕第一区二区| 日韩免费高清电影| 欧美一卡2卡三卡4卡5免费| 欧美主播一区二区三区| 97精品视频在线观看自产线路二| 国产乱码精品一区二区三区忘忧草 | 精品三级av在线| 欧美一级在线视频| 欧美精品国产精品| 欧美色欧美亚洲另类二区| 色综合天天性综合| 91视视频在线观看入口直接观看www | 韩国一区二区三区| 久久福利资源站| 久久99国产精品免费网站| 日本不卡视频一二三区| 日日摸夜夜添夜夜添精品视频| 亚洲亚洲精品在线观看| 亚洲成人资源在线| 偷拍与自拍一区| 免费看日韩a级影片| 久99久精品视频免费观看| 久热成人在线视频| 国产一区二区网址| 成人做爰69片免费看网站| 欧美电影精品一区二区| 欧美精品久久天天躁| 91看片淫黄大片一级在线观看| 国内精品在线播放| 亚洲18色成人| 欧美国产一区视频在线观看| 欧美丰满美乳xxx高潮www| 亚洲精品大片www| 日韩免费视频一区二区| 日韩欧美久久久| 成人免费视频caoporn| 国产呦萝稀缺另类资源| 蜜臀av亚洲一区中文字幕| 国产精品一区在线观看你懂的| 精品一区二区三区日韩| 国产真实乱对白精彩久久| 国产麻豆成人传媒免费观看| 国产成人精品免费看| 91蜜桃网址入口| 337p亚洲精品色噜噜| 日韩欧美的一区二区| 欧美日韩国产精选| 久久麻豆一区二区| 一区二区三区四区中文字幕| 一区二区三区日本| 中文幕一区二区三区久久蜜桃| 欧美系列一区二区| 亚洲人成在线播放网站岛国| 综合久久一区二区三区| 综合久久国产九一剧情麻豆| 日韩精品欧美成人高清一区二区| 国产伦理精品不卡| 欧亚洲嫩模精品一区三区| 久久免费午夜影院| 亚洲成人av在线电影| 91免费国产在线观看| 久久蜜桃一区二区| 国产在线日韩欧美| 56国语精品自产拍在线观看| 亚洲精品国产一区二区精华液| 国产一区啦啦啦在线观看| 欧美一区二区视频免费观看| 婷婷久久综合九色综合伊人色| 欧美亚洲国产bt| 亚洲欧美日韩在线播放| 男女男精品网站| 91麻豆精品国产无毒不卡在线观看| 亚洲男女毛片无遮挡| 日本韩国欧美国产| 一区二区三区中文字幕| 欧美中文字幕亚洲一区二区va在线| 亚洲黄色免费网站| 欧美日韩精品欧美日韩精品一综合| 一区二区三区在线影院| 在线观看欧美日本| 免费高清不卡av| 欧美激情中文不卡| 亚洲成人精品一区二区| 欧美一区二区国产| 国产一区在线看| 亚洲另类春色国产| 在线不卡欧美精品一区二区三区| 免费久久精品视频| 国产精品你懂的| 欧美日韩另类国产亚洲欧美一级| 日韩国产欧美视频| 欧美国产精品一区二区| 欧美日韩高清影院| 精彩视频一区二区| 日韩黄色在线观看| 日韩亚洲国产中文字幕欧美| 爽爽淫人综合网网站| 日本一区二区三区免费乱视频| 成人精品亚洲人成在线| 亚洲欧洲日产国码二区| 国产亚洲欧美日韩日本| 日韩午夜在线观看视频| 欧美丰满少妇xxxxx高潮对白| 国产综合色在线| 激情成人综合网| 国产一区久久久| 成人h动漫精品| 成人免费观看av| 大尺度一区二区| 国产一区二区不卡| 麻豆91在线看| 日韩精品乱码av一区二区| 一区二区三区资源| 国产精品美女久久久久av爽李琼| 欧美xfplay| 国产日韩欧美麻豆| 亚洲综合色成人| 一区二区三区精品在线| 国产午夜精品福利| 欧美xxxxx牲另类人与| 69堂成人精品免费视频| 色婷婷一区二区三区四区| 国产91高潮流白浆在线麻豆 | 国产精品久久久久7777按摩| 国产午夜亚洲精品羞羞网站| 久久精品亚洲一区二区三区浴池| 久久影院午夜论| 亚洲日本成人在线观看| 亚洲v中文字幕| 美洲天堂一区二卡三卡四卡视频| 久久99国产精品久久| 天天综合色天天综合色h| 精品亚洲porn| 91电影在线观看| 欧美精品一区二区三区一线天视频| 精品国产一区二区国模嫣然| 欧美日韩视频在线一区二区| 久久久久久久久伊人| 亚洲综合无码一区二区| 免费精品视频最新在线| 大尺度一区二区| 精品91自产拍在线观看一区| 国产精品伦理一区二区| 婷婷久久综合九色综合绿巨人| 不卡的看片网站| 欧美不卡在线视频| 亚洲成人福利片| 欧美最新大片在线看| 精品理论电影在线| 奇米精品一区二区三区在线观看| 欧美日韩1234| 免费精品99久久国产综合精品| 欧美一区二区三区免费观看视频| 天堂蜜桃91精品| 555夜色666亚洲国产免| 久久99精品久久久久久| 欧美v日韩v国产v| 粉嫩在线一区二区三区视频| 国产精品剧情在线亚洲| 一本一道波多野结衣一区二区| 亚洲已满18点击进入久久| 91一区二区在线| 中文av字幕一区| 日本高清不卡视频| 亚洲一区中文在线| 69堂精品视频| 久久国产免费看| 国产精品全国免费观看高清 | 欧美专区亚洲专区| 午夜欧美在线一二页| 欧美v日韩v国产v| 精品一区二区三区不卡 | 日韩美女主播在线视频一区二区三区| 欧美精品一区二区三区久久久| 亚洲h动漫在线| 337p亚洲精品色噜噜| 日韩和欧美一区二区|