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

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

?? print-rx.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* * Copyright: (c) 2000 United States Government as represented by the *	Secretary of the Navy. 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 names of the authors may not be used to endorse or promote *      products derived from this software without specific prior *      written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *//* * This code unmangles RX packets.  RX is the mutant form of RPC that AFS * uses to communicate between clients and servers. * * In this code, I mainly concern myself with decoding the AFS calls, not * with the guts of RX, per se. * * Bah.  If I never look at rx_packet.h again, it will be too soon. * * Ken Hornstein <kenh@cmf.nrl.navy.mil> */#ifndef lintstatic const char rcsid[] _U_ =    "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.39.2.3 2008-07-01 07:45:09 guy Exp $";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <tcpdump-stdinc.h>#include "interface.h"#include "addrtoname.h"#include "extract.h"#include "rx.h"#include "ip.h"static struct tok rx_types[] = {	{ RX_PACKET_TYPE_DATA,		"data" },	{ RX_PACKET_TYPE_ACK,		"ack" },	{ RX_PACKET_TYPE_BUSY,		"busy" },	{ RX_PACKET_TYPE_ABORT,		"abort" },	{ RX_PACKET_TYPE_ACKALL,	"ackall" },	{ RX_PACKET_TYPE_CHALLENGE,	"challenge" },	{ RX_PACKET_TYPE_RESPONSE,	"response" },	{ RX_PACKET_TYPE_DEBUG,		"debug" },	{ RX_PACKET_TYPE_PARAMS,	"params" },	{ RX_PACKET_TYPE_VERSION,	"version" },	{ 0,				NULL },};static struct double_tok {	int flag;		/* Rx flag */	int packetType;		/* Packet type */	const char *s;		/* Flag string */} rx_flags[] = {	{ RX_CLIENT_INITIATED,	0,			"client-init" },	{ RX_REQUEST_ACK,	0,			"req-ack" },	{ RX_LAST_PACKET,	0,			"last-pckt" },	{ RX_MORE_PACKETS,	0,			"more-pckts" },	{ RX_FREE_PACKET,	0,			"free-pckt" },	{ RX_SLOW_START_OK,	RX_PACKET_TYPE_ACK,	"slow-start" },	{ RX_JUMBO_PACKET,	RX_PACKET_TYPE_DATA,	"jumbogram" }};static struct tok fs_req[] = {	{ 130,		"fetch-data" },	{ 131,		"fetch-acl" },	{ 132,		"fetch-status" },	{ 133,		"store-data" },	{ 134,		"store-acl" },	{ 135,		"store-status" },	{ 136,		"remove-file" },	{ 137,		"create-file" },	{ 138,		"rename" },	{ 139,		"symlink" },	{ 140,		"link" },	{ 141,		"makedir" },	{ 142,		"rmdir" },	{ 143,		"oldsetlock" },	{ 144,		"oldextlock" },	{ 145,		"oldrellock" },	{ 146,		"get-stats" },	{ 147,		"give-cbs" },	{ 148,		"get-vlinfo" },	{ 149,		"get-vlstats" },	{ 150,		"set-vlstats" },	{ 151,		"get-rootvl" },	{ 152,		"check-token" },	{ 153,		"get-time" },	{ 154,		"nget-vlinfo" },	{ 155,		"bulk-stat" },	{ 156,		"setlock" },	{ 157,		"extlock" },	{ 158,		"rellock" },	{ 159,		"xstat-ver" },	{ 160,		"get-xstat" },	{ 161,		"dfs-lookup" },	{ 162,		"dfs-flushcps" },	{ 163,		"dfs-symlink" },	{ 220,		"residency" },	{ 65536,        "inline-bulk-status" },	{ 65537,        "fetch-data-64" },	{ 65538,        "store-data-64" },	{ 65539,        "give-up-all-cbs" },	{ 65540,        "get-caps" },	{ 65541,        "cb-rx-conn-addr" },	{ 0,		NULL },};static struct tok cb_req[] = {	{ 204,		"callback" },	{ 205,		"initcb" },	{ 206,		"probe" },	{ 207,		"getlock" },	{ 208,		"getce" },	{ 209,		"xstatver" },	{ 210,		"getxstat" },	{ 211,		"initcb2" },	{ 212,		"whoareyou" },	{ 213,		"initcb3" },	{ 214,		"probeuuid" },	{ 215,		"getsrvprefs" },	{ 216,		"getcellservdb" },	{ 217,		"getlocalcell" },	{ 218,		"getcacheconf" },	{ 65536,        "getce64" },	{ 65537,        "getcellbynum" },	{ 65538,        "tellmeaboutyourself" },	{ 0,		NULL },};static struct tok pt_req[] = {	{ 500,		"new-user" },	{ 501,		"where-is-it" },	{ 502,		"dump-entry" },	{ 503,		"add-to-group" },	{ 504,		"name-to-id" },	{ 505,		"id-to-name" },	{ 506,		"delete" },	{ 507,		"remove-from-group" },	{ 508,		"get-cps" },	{ 509,		"new-entry" },	{ 510,		"list-max" },	{ 511,		"set-max" },	{ 512,		"list-entry" },	{ 513,		"change-entry" },	{ 514,		"list-elements" },	{ 515,		"same-mbr-of" },	{ 516,		"set-fld-sentry" },	{ 517,		"list-owned" },	{ 518,		"get-cps2" },	{ 519,		"get-host-cps" },	{ 520,		"update-entry" },	{ 521,		"list-entries" },	{ 530,		"list-super-groups" },	{ 0,		NULL },};static struct tok vldb_req[] = {	{ 501,		"create-entry" },	{ 502,		"delete-entry" },	{ 503,		"get-entry-by-id" },	{ 504,		"get-entry-by-name" },	{ 505,		"get-new-volume-id" },	{ 506,		"replace-entry" },	{ 507,		"update-entry" },	{ 508,		"setlock" },	{ 509,		"releaselock" },	{ 510,		"list-entry" },	{ 511,		"list-attrib" },	{ 512,		"linked-list" },	{ 513,		"get-stats" },	{ 514,		"probe" },	{ 515,		"get-addrs" },	{ 516,		"change-addr" },	{ 517,		"create-entry-n" },	{ 518,		"get-entry-by-id-n" },	{ 519,		"get-entry-by-name-n" },	{ 520,		"replace-entry-n" },	{ 521,		"list-entry-n" },	{ 522,		"list-attrib-n" },	{ 523,		"linked-list-n" },	{ 524,		"update-entry-by-name" },	{ 525,		"create-entry-u" },	{ 526,		"get-entry-by-id-u" },	{ 527,		"get-entry-by-name-u" },	{ 528,		"replace-entry-u" },	{ 529,		"list-entry-u" },	{ 530,		"list-attrib-u" },	{ 531,		"linked-list-u" },	{ 532,		"regaddr" },	{ 533,		"get-addrs-u" },	{ 534,		"list-attrib-n2" },	{ 0,		NULL },};static struct tok kauth_req[] = {	{ 1,		"auth-old" },	{ 21,		"authenticate" },	{ 22,		"authenticate-v2" },	{ 2,		"change-pw" },	{ 3,		"get-ticket-old" },	{ 23,		"get-ticket" },	{ 4,		"set-pw" },	{ 5,		"set-fields" },	{ 6,		"create-user" },	{ 7,		"delete-user" },	{ 8,		"get-entry" },	{ 9,		"list-entry" },	{ 10,		"get-stats" },	{ 11,		"debug" },	{ 12,		"get-pw" },	{ 13,		"get-random-key" },	{ 14,		"unlock" },	{ 15,		"lock-status" },	{ 0,		NULL },};static struct tok vol_req[] = {	{ 100,		"create-volume" },	{ 101,		"delete-volume" },	{ 102,		"restore" },	{ 103,		"forward" },	{ 104,		"end-trans" },	{ 105,		"clone" },	{ 106,		"set-flags" },	{ 107,		"get-flags" },	{ 108,		"trans-create" },	{ 109,		"dump" },	{ 110,		"get-nth-volume" },	{ 111,		"set-forwarding" },	{ 112,		"get-name" },	{ 113,		"get-status" },	{ 114,		"sig-restore" },	{ 115,		"list-partitions" },	{ 116,		"list-volumes" },	{ 117,		"set-id-types" },	{ 118,		"monitor" },	{ 119,		"partition-info" },	{ 120,		"reclone" },	{ 121,		"list-one-volume" },	{ 122,		"nuke" },	{ 123,		"set-date" },	{ 124,		"x-list-volumes" },	{ 125,		"x-list-one-volume" },	{ 126,		"set-info" },	{ 127,		"x-list-partitions" },	{ 128,		"forward-multiple" },	{ 65536,	"convert-ro" },	{ 65537,	"get-size" },	{ 65538,	"dump-v2" },	{ 0,		NULL },};static struct tok bos_req[] = {	{ 80,		"create-bnode" },	{ 81,		"delete-bnode" },	{ 82,		"set-status" },	{ 83,		"get-status" },	{ 84,		"enumerate-instance" },	{ 85,		"get-instance-info" },	{ 86,		"get-instance-parm" },	{ 87,		"add-superuser" },	{ 88,		"delete-superuser" },	{ 89,		"list-superusers" },	{ 90,		"list-keys" },	{ 91,		"add-key" },	{ 92,		"delete-key" },	{ 93,		"set-cell-name" },	{ 94,		"get-cell-name" },	{ 95,		"get-cell-host" },	{ 96,		"add-cell-host" },	{ 97,		"delete-cell-host" },	{ 98,		"set-t-status" },	{ 99,		"shutdown-all" },	{ 100,		"restart-all" },	{ 101,		"startup-all" },	{ 102,		"set-noauth-flag" },	{ 103,		"re-bozo" },	{ 104,		"restart" },	{ 105,		"start-bozo-install" },	{ 106,		"uninstall" },	{ 107,		"get-dates" },	{ 108,		"exec" },	{ 109,		"prune" },	{ 110,		"set-restart-time" },	{ 111,		"get-restart-time" },	{ 112,		"start-bozo-log" },	{ 113,		"wait-all" },	{ 114,		"get-instance-strings" },	{ 115,		"get-restricted" },	{ 116,		"set-restricted" },	{ 0,		NULL },};static struct tok ubik_req[] = {	{ 10000,	"vote-beacon" },	{ 10001,	"vote-debug-old" },	{ 10002,	"vote-sdebug-old" },	{ 10003,	"vote-getsyncsite" },	{ 10004,	"vote-debug" },	{ 10005,	"vote-sdebug" },	{ 10006,	"vote-xdebug" },	{ 10007,	"vote-xsdebug" },	{ 20000,	"disk-begin" },	{ 20001,	"disk-commit" },	{ 20002,	"disk-lock" },	{ 20003,	"disk-write" },	{ 20004,	"disk-getversion" },	{ 20005,	"disk-getfile" },	{ 20006,	"disk-sendfile" },	{ 20007,	"disk-abort" },	{ 20008,	"disk-releaselocks" },	{ 20009,	"disk-truncate" },	{ 20010,	"disk-probe" },	{ 20011,	"disk-writev" },	{ 20012,	"disk-interfaceaddr" },	{ 20013,	"disk-setversion" },	{ 0,		NULL },};#define VOTE_LOW	10000#define VOTE_HIGH	10007#define DISK_LOW	20000#define DISK_HIGH	20013static struct tok cb_types[] = {	{ 1,		"exclusive" },	{ 2,		"shared" },	{ 3,		"dropped" },	{ 0,		NULL },};static struct tok ubik_lock_types[] = {	{ 1,		"read" },	{ 2,		"write" },	{ 3,		"wait" },	{ 0,		NULL },};static const char *voltype[] = { "read-write", "read-only", "backup" };static struct tok afs_fs_errors[] = {	{ 101,		"salvage volume" },	{ 102, 		"no such vnode" },	{ 103, 		"no such volume" },	{ 104, 		"volume exist" },	{ 105, 		"no service" },	{ 106, 		"volume offline" },	{ 107, 		"voline online" },	{ 108, 		"diskfull" },	{ 109, 		"diskquota exceeded" },	{ 110, 		"volume busy" },	{ 111, 		"volume moved" },	{ 112, 		"AFS IO error" },	{ -100,		"restarting fileserver" },	{ 0,		NULL }};/* * Reasons for acknowledging a packet */static struct tok rx_ack_reasons[] = {	{ 1,		"ack requested" },	{ 2,		"duplicate packet" },	{ 3,		"out of sequence" },	{ 4,		"exceeds window" },	{ 5,		"no buffer space" },	{ 6,		"ping" },	{ 7,		"ping response" },	{ 8,		"delay" },	{ 9,		"idle" },	{ 0,		NULL },};/* * Cache entries we keep around so we can figure out the RX opcode * numbers for replies.  This allows us to make sense of RX reply packets. */struct rx_cache_entry {	u_int32_t	callnum;	/* Call number (net order) */	struct in_addr	client;		/* client IP address (net order) */	struct in_addr	server;		/* server IP address (net order) */	int		dport;		/* server port (host order) */	u_short		serviceId;	/* Service identifier (net order) */	u_int32_t	opcode;		/* RX opcode (host order) */};#define RX_CACHE_SIZE	64static struct rx_cache_entry	rx_cache[RX_CACHE_SIZE];static int	rx_cache_next = 0;static int	rx_cache_hint = 0;static void	rx_cache_insert(const u_char *, const struct ip *, int);static int	rx_cache_find(const struct rx_header *, const struct ip *,			      int, int32_t *);static void fs_print(const u_char *, int);static void fs_reply_print(const u_char *, int, int32_t);static void acl_print(u_char *, int, u_char *);static void cb_print(const u_char *, int);static void cb_reply_print(const u_char *, int, int32_t);static void prot_print(const u_char *, int);static void prot_reply_print(const u_char *, int, int32_t);static void vldb_print(const u_char *, int);static void vldb_reply_print(const u_char *, int, int32_t);static void kauth_print(const u_char *, int);static void kauth_reply_print(const u_char *, int, int32_t);static void vol_print(const u_char *, int);static void vol_reply_print(const u_char *, int, int32_t);static void bos_print(const u_char *, int);static void bos_reply_print(const u_char *, int, int32_t);static void ubik_print(const u_char *);static void ubik_reply_print(const u_char *, int, int32_t);static void rx_ack_print(const u_char *, int);static int is_ubik(u_int32_t);/* * Handle the rx-level packet.  See if we know what port it's going to so * we can peek at the afs call inside */voidrx_print(register const u_char *bp, int length, int sport, int dport,	 u_char *bp2){	register struct rx_header *rxh;	int i;	int32_t opcode;	if (snapend - bp < (int)sizeof (struct rx_header)) {		printf(" [|rx] (%d)", length);		return;	}	rxh = (struct rx_header *) bp;	printf(" rx %s", tok2str(rx_types, "type %d", rxh->type));	if (vflag) {		int firstflag = 0;		if (vflag > 1)			printf(" cid %08x call# %d",			       (int) EXTRACT_32BITS(&rxh->cid),			       (int) EXTRACT_32BITS(&rxh->callNumber));		printf(" seq %d ser %d",		       (int) EXTRACT_32BITS(&rxh->seq),		       (int) EXTRACT_32BITS(&rxh->serial));		if (vflag > 2)			printf(" secindex %d serviceid %hu",				(int) rxh->securityIndex,				EXTRACT_16BITS(&rxh->serviceId));		if (vflag > 1)			for (i = 0; i < NUM_RX_FLAGS; i++) {				if (rxh->flags & rx_flags[i].flag &&				    (!rx_flags[i].packetType ||				     rxh->type == rx_flags[i].packetType)) {					if (!firstflag) {						firstflag = 1;						printf(" ");					} else {						printf(",");					}					printf("<%s>", rx_flags[i].s);				}			}	}	/*	 * Try to handle AFS calls that we know about.  Check the destination	 * port and make sure it's a data packet.  Also, make sure the	 * seq number is 1 (because otherwise it's a continuation packet,	 * and we can't interpret that).  Also, seems that reply packets	 * do not have the client-init flag set, so we check for that	 * as well.	 */	if (rxh->type == RX_PACKET_TYPE_DATA &&	    EXTRACT_32BITS(&rxh->seq) == 1 &&	    rxh->flags & RX_CLIENT_INITIATED) {		/*		 * Insert this call into the call cache table, so we		 * have a chance to print out replies		 */		rx_cache_insert(bp, (const struct ip *) bp2, dport);		switch (dport) {			case FS_RX_PORT:	/* AFS file service */				fs_print(bp, length);				break;			case CB_RX_PORT:	/* AFS callback service */				cb_print(bp, length);				break;			case PROT_RX_PORT:	/* AFS protection service */				prot_print(bp, length);				break;			case VLDB_RX_PORT:	/* AFS VLDB service */				vldb_print(bp, length);				break;			case KAUTH_RX_PORT:	/* AFS Kerberos auth service */				kauth_print(bp, length);				break;			case VOL_RX_PORT:	/* AFS Volume service */				vol_print(bp, length);				break;			case BOS_RX_PORT:	/* AFS BOS service */				bos_print(bp, length);				break;			default:				;		}	/*	 * If it's a reply (client-init is _not_ set, but seq is one)	 * then look it up in the cache.  If we find it, call the reply	 * printing functions  Note that we handle abort packets here,	 * because printing out the return code can be useful at times.	 */	} else if (((rxh->type == RX_PACKET_TYPE_DATA &&					EXTRACT_32BITS(&rxh->seq) == 1) ||		    rxh->type == RX_PACKET_TYPE_ABORT) &&		   (rxh->flags & RX_CLIENT_INITIATED) == 0 &&		   rx_cache_find(rxh, (const struct ip *) bp2,				 sport, &opcode)) {		switch (sport) {			case FS_RX_PORT:	/* AFS file service */				fs_reply_print(bp, length, opcode);				break;			case CB_RX_PORT:	/* AFS callback service */				cb_reply_print(bp, length, opcode);				break;			case PROT_RX_PORT:	/* AFS PT service */				prot_reply_print(bp, length, opcode);				break;			case VLDB_RX_PORT:	/* AFS VLDB service */				vldb_reply_print(bp, length, opcode);				break;			case KAUTH_RX_PORT:	/* AFS Kerberos auth service */				kauth_reply_print(bp, length, opcode);				break;			case VOL_RX_PORT:	/* AFS Volume service */				vol_reply_print(bp, length, opcode);				break;			case BOS_RX_PORT:	/* AFS BOS service */				bos_reply_print(bp, length, opcode);				break;			default:				;		}	/*	 * If it's an RX ack packet, then use the appropriate ack decoding	 * function (there isn't any service-specific information in the	 * ack packet, so we can use one for all AFS services)	 */	} else if (rxh->type == RX_PACKET_TYPE_ACK)		rx_ack_print(bp, length);	printf(" (%d)", length);}/* * Insert an entry into the cache.  Taken from print-nfs.c */static voidrx_cache_insert(const u_char *bp, const struct ip *ip, int dport){	struct rx_cache_entry *rxent;	const struct rx_header *rxh = (const struct rx_header *) bp;	if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t)))		return;	rxent = &rx_cache[rx_cache_next];	if (++rx_cache_next >= RX_CACHE_SIZE)		rx_cache_next = 0;	rxent->callnum = rxh->callNumber;	rxent->client = ip->ip_src;	rxent->server = ip->ip_dst;	rxent->dport = dport;	rxent->serviceId = rxh->serviceId;	rxent->opcode = EXTRACT_32BITS(bp + sizeof(struct rx_header));}/* * Lookup an entry in the cache.  Also taken from print-nfs.c * * Note that because this is a reply, we're looking at the _source_ * port. */static intrx_cache_find(const struct rx_header *rxh, const struct ip *ip, int sport,	      int32_t *opcode){	int i;	struct rx_cache_entry *rxent;	u_int32_t clip = ip->ip_dst.s_addr;	u_int32_t sip = ip->ip_src.s_addr;	/* Start the search where we last left off */	i = rx_cache_hint;	do {		rxent = &rx_cache[i];		if (rxent->callnum == rxh->callNumber &&		    rxent->client.s_addr == clip &&		    rxent->server.s_addr == sip &&		    rxent->serviceId == rxh->serviceId &&		    rxent->dport == sport) {			/* We got a match! */			rx_cache_hint = i;			*opcode = rxent->opcode;			return(1);		}		if (++i > RX_CACHE_SIZE)			i = 0;	} while (i != rx_cache_hint);	/* Our search failed */	return(0);}/* * These extrememly grody macros handle the printing of various AFS stuff. */#define FIDOUT() { unsigned long n1, n2, n3; \			TCHECK2(bp[0], sizeof(int32_t) * 3); \			n1 = EXTRACT_32BITS(bp); \			bp += sizeof(int32_t); \			n2 = EXTRACT_32BITS(bp); \			bp += sizeof(int32_t); \			n3 = EXTRACT_32BITS(bp); \			bp += sizeof(int32_t); \			printf(" fid %d/%d/%d", (int) n1, (int) n2, (int) n3); \		}#define STROUT(MAX) { unsigned int i; \			TCHECK2(bp[0], sizeof(int32_t)); \			i = EXTRACT_32BITS(bp); \			if (i > (MAX)) \				goto trunc; \			bp += sizeof(int32_t); \			printf(" \""); \			if (fn_printn(bp, i, snapend)) \				goto trunc; \			printf("\""); \			bp += ((i + sizeof(int32_t) - 1) / sizeof(int32_t)) * sizeof(int32_t); \		}#define INTOUT() { int i; \			TCHECK2(bp[0], sizeof(int32_t)); \			i = (int) EXTRACT_32BITS(bp); \			bp += sizeof(int32_t); \			printf(" %d", i); \		}#define UINTOUT() { unsigned long i; \			TCHECK2(bp[0], sizeof(int32_t)); \

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区在线| 美女在线视频一区| 欧美在线三级电影| 亚洲成人黄色小说| 日韩欧美在线123| 国产一区二区h| 国产精品美女久久久久aⅴ国产馆| 国产成人免费视频| 亚洲卡通动漫在线| 欧美一区二区性放荡片| 国产成人自拍在线| 亚洲伦理在线免费看| 欧美一级爆毛片| 国产成人免费高清| 亚洲一区二区三区四区在线观看| 欧美一级xxx| 成人福利电影精品一区二区在线观看 | 国产精品久久久久久久浪潮网站| 99国产精品久久久久久久久久| 亚洲超丰满肉感bbw| 久久久久青草大香线综合精品| 不卡的av在线| 免费人成网站在线观看欧美高清| 亚洲精品乱码久久久久久黑人| 6080国产精品一区二区| 福利电影一区二区三区| 亚洲午夜精品网| 国产欧美精品国产国产专区| 欧美日韩成人综合天天影院| 成人小视频免费在线观看| 亚洲成a人v欧美综合天堂下载 | 欧美久久久影院| 福利一区福利二区| 免费成人在线观看| 一区二区三区视频在线观看| 国产日韩欧美在线一区| 91精品国产综合久久精品| 成人在线综合网| 久久精品国产一区二区| 一区二区三区中文字幕| 国产清纯白嫩初高生在线观看91| 555夜色666亚洲国产免| 91亚洲午夜精品久久久久久| 国产一区二区美女| 丝瓜av网站精品一区二区| 亚洲日本乱码在线观看| 国产亚洲欧美色| 精品久久国产97色综合| 7799精品视频| 欧美日韩一区二区三区不卡| 不卡av在线网| 国产成人一区在线| 精品亚洲免费视频| 午夜精彩视频在线观看不卡| 一区二区三区在线高清| 亚洲色图在线播放| 亚洲国产精品成人综合色在线婷婷 | 欧美顶级少妇做爰| 欧美亚洲国产一区在线观看网站| www.99精品| 99在线视频精品| 成人免费观看视频| 成人一区二区三区视频在线观看| 国产综合色视频| 国内精品第一页| 极品销魂美女一区二区三区| 九一九一国产精品| 美国毛片一区二区| 久久99日本精品| 久国产精品韩国三级视频| 久久精品国产精品亚洲精品| 久久精品国产一区二区| 国产一区二区三区观看| 国产美女一区二区| 丁香婷婷综合五月| 成人精品国产一区二区4080| 成人精品国产免费网站| 99久久夜色精品国产网站| 91丝袜美腿高跟国产极品老师| 91免费在线播放| 欧美亚洲自拍偷拍| 欧美一区二区三区在| 精品国内二区三区| 久久女同性恋中文字幕| 久久99国产精品尤物| 国产麻豆精品在线观看| 成人三级在线视频| 91福利视频久久久久| 欧美日韩一区视频| 精品欧美一区二区在线观看| 久久久久成人黄色影片| 中文字幕亚洲一区二区va在线| 1区2区3区精品视频| 亚洲午夜国产一区99re久久| 日韩黄色免费电影| 国产精品资源站在线| 成人av网站在线| 欧美性大战xxxxx久久久| 欧美一区二区美女| 中文av字幕一区| 亚洲国产综合91精品麻豆| 久久黄色级2电影| www.欧美日韩| 在线成人小视频| 国产日韩精品一区二区浪潮av| 亚洲日本一区二区三区| 三级欧美在线一区| 高清久久久久久| 欧美午夜精品一区| 久久精品一区二区三区四区| 亚洲伦理在线精品| 久久99精品久久久| 在线国产电影不卡| 精品福利在线导航| 亚洲在线一区二区三区| 国产麻豆日韩欧美久久| 在线精品视频一区二区| 久久久久久久免费视频了| 亚洲一区二区三区在线播放| 国产乱理伦片在线观看夜一区| 欧美自拍偷拍一区| 国产日韩欧美精品综合| 日韩 欧美一区二区三区| av亚洲精华国产精华精华| 日韩欧美第一区| 一区二区三区欧美视频| 国产成a人亚洲精品| 制服丝袜亚洲播放| 亚洲欧美aⅴ...| 国产成人一级电影| 日韩欧美国产不卡| 亚洲第一电影网| 色综合婷婷久久| 欧美—级在线免费片| 久久99久久99| 欧美理论片在线| 一区二区三区四区亚洲| 成人黄页毛片网站| 久久精品免费在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 日本韩国一区二区| 国产精品久久久久天堂| 韩国视频一区二区| 欧美日韩国产高清一区二区三区| 日韩码欧中文字| av电影在线观看一区| 久久午夜老司机| 国产资源精品在线观看| 日韩免费看网站| 久久精品国产一区二区三| 日韩一区二区免费在线观看| 亚洲高清在线视频| 欧美视频一二三区| 一区二区成人在线观看| 色老汉一区二区三区| 136国产福利精品导航| av激情亚洲男人天堂| 国产精品久久久久久久裸模| 国产a区久久久| 国产精品视频九色porn| 丁香啪啪综合成人亚洲小说 | 成人一区二区视频| 久久精品男人天堂av| 国产精品一区二区三区99| 久久久久久久久久美女| 国产福利精品一区二区| 欧美韩国一区二区| 99国产精品久| 亚洲精品久久嫩草网站秘色| 欧美亚洲国产一区在线观看网站| 洋洋av久久久久久久一区| 欧美亚洲禁片免费| 日韩成人av影视| 精品久久免费看| 成人亚洲精品久久久久软件| 国产精品国产三级国产普通话99 | 26uuu亚洲综合色| 国产一区二区三区精品视频| 国产欧美日韩在线| 91在线视频播放地址| 亚洲国产人成综合网站| 日韩三级中文字幕| 国产精选一区二区三区| 国产精品久久久久桃色tv| 欧洲一区二区三区免费视频| 亚洲v精品v日韩v欧美v专区| 日韩精品一区二区在线观看| 国产成人在线视频网址| 亚洲免费看黄网站| 日韩一区二区三区在线视频| 国产成人亚洲综合a∨婷婷图片 | 一级中文字幕一区二区| 欧美高清视频www夜色资源网| 久久不见久久见免费视频1| 国产欧美va欧美不卡在线| 欧美在线观看视频在线| 精品无码三级在线观看视频 | 91精品国产手机| 国产激情视频一区二区三区欧美 | 亚洲欧美激情视频在线观看一区二区三区|