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

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

?? sdptool.c

?? BlueZ源碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2001-2002  Nokia Corporation *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2008  Marcel Holtmann <marcel@holtmann.org> *  Copyright (C) 2002-2003  Stephen Crane <steve.crane@rococosoft.com> *  Copyright (C) 2002-2003  Jean Tourrilhes <jt@hpl.hp.com> * * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <errno.h>#include <ctype.h>#include <stdlib.h>#include <string.h>#include <getopt.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#include <bluetooth/sdp.h>#include <bluetooth/sdp_lib.h>#include <netinet/in.h>#include "sdp-xml.h"#ifndef APPLE_AGENT_SVCLASS_ID#define APPLE_AGENT_SVCLASS_ID 0x2112#endif#define for_each_opt(opt, long, short) while ((opt=getopt_long(argc, argv, short ? short:"+", long, 0)) != -1)/* * Convert a string to a BDADDR, with a few "enhancements" - Jean II */static int estr2ba(char *str, bdaddr_t *ba){	/* Only trap "local", "any" is already dealt with */	if(!strcmp(str, "local")) {		bacpy(ba, BDADDR_LOCAL);		return 0;	}	return str2ba(str, ba);}#define DEFAULT_VIEW	0	/* Display only known attribute */#define TREE_VIEW	1	/* Display full attribute tree */#define RAW_VIEW	2	/* Display raw tree */#define XML_VIEW	3	/* Display xml tree *//* Pass args to the inquiry/search handler */struct search_context {	char		*svc;		/* Service */	uuid_t		group;		/* Browse group */	int		view;		/* View mode */	uint32_t	handle;		/* Service record handle */};typedef int (*handler_t)(bdaddr_t *bdaddr, struct search_context *arg);static char UUID_str[MAX_LEN_UUID_STR];static bdaddr_t interface;/* Definition of attribute members */struct member_def {	char *name;};/* Definition of an attribute */struct attrib_def {	int			num;		/* Numeric ID - 16 bits */	char			*name;		/* User readable name */	struct member_def	*members;	/* Definition of attribute args */	int			member_max;	/* Max of attribute arg definitions */};/* Definition of a service or protocol */struct uuid_def {	int			num;		/* Numeric ID - 16 bits */	char			*name;		/* User readable name */	struct attrib_def	*attribs;	/* Specific attribute definitions */	int			attrib_max;	/* Max of attribute definitions */};/* Context information about current attribute */struct attrib_context {	struct uuid_def		*service;	/* Service UUID, if known */	struct attrib_def	*attrib;	/* Description of the attribute */	int			member_index;	/* Index of current attribute member */};/* Context information about the whole service */struct service_context {	struct uuid_def		*service;	/* Service UUID, if known */};/* Allow us to do nice formatting of the lists */static char *indent_spaces = "                                         ";/* ID of the service attribute. * Most attributes after 0x200 are defined based on the service, so * we need to find what is the service (which is messy) - Jean II */#define SERVICE_ATTR	0x1/* Definition of the optional arguments in protocol list */static struct member_def protocol_members[] = {	{ "Protocol"		},	{ "Channel/Port"	},	{ "Version"		},};/* Definition of the optional arguments in profile list */static struct member_def profile_members[] = {	{ "Profile"	},	{ "Version"	},};/* Definition of the optional arguments in Language list */static struct member_def language_members[] = {	{ "Code ISO639"		},	{ "Encoding"		},	{ "Base Offset"		},};/* Name of the various common attributes. See BT assigned numbers */static struct attrib_def attrib_names[] = {	{ 0x0, "ServiceRecordHandle", NULL, 0 },	{ 0x1, "ServiceClassIDList", NULL, 0 },	{ 0x2, "ServiceRecordState", NULL, 0 },	{ 0x3, "ServiceID", NULL, 0 },	{ 0x4, "ProtocolDescriptorList",		protocol_members, sizeof(protocol_members)/sizeof(struct member_def) },	{ 0x5, "BrowseGroupList", NULL, 0 },	{ 0x6, "LanguageBaseAttributeIDList",		language_members, sizeof(language_members)/sizeof(struct member_def) },	{ 0x7, "ServiceInfoTimeToLive", NULL, 0 },	{ 0x8, "ServiceAvailability", NULL, 0 },	{ 0x9, "BluetoothProfileDescriptorList",		profile_members, sizeof(profile_members)/sizeof(struct member_def) },	{ 0xA, "DocumentationURL", NULL, 0 },	{ 0xB, "ClientExecutableURL", NULL, 0 },	{ 0xC, "IconURL", NULL, 0 },	{ 0xD, "AdditionalProtocolDescriptorLists", NULL, 0 },	/* Definitions after that are tricky (per profile or offset) */};const int attrib_max = sizeof(attrib_names)/sizeof(struct attrib_def);/* Name of the various SPD attributes. See BT assigned numbers */static struct attrib_def sdp_attrib_names[] = {	{ 0x200, "VersionNumberList", NULL, 0 },	{ 0x201, "ServiceDatabaseState", NULL, 0 },};/* Name of the various SPD attributes. See BT assigned numbers */static struct attrib_def browse_attrib_names[] = {	{ 0x200, "GroupID", NULL, 0 },};/* Name of the various Device ID attributes. See Device Id spec. */static struct attrib_def did_attrib_names[] = {	{ 0x200, "SpecificationID", NULL, 0 },	{ 0x201, "VendorID", NULL, 0 },	{ 0x202, "ProductID", NULL, 0 },	{ 0x203, "Version", NULL, 0 },	{ 0x204, "PrimaryRecord", NULL, 0 },	{ 0x205, "VendorIDSource", NULL, 0 },};/* Name of the various HID attributes. See HID spec. */static struct attrib_def hid_attrib_names[] = {	{ 0x200, "DeviceReleaseNum", NULL, 0 },	{ 0x201, "ParserVersion", NULL, 0 },	{ 0x202, "DeviceSubclass", NULL, 0 },	{ 0x203, "CountryCode", NULL, 0 },	{ 0x204, "VirtualCable", NULL, 0 },	{ 0x205, "ReconnectInitiate", NULL, 0 },	{ 0x206, "DescriptorList", NULL, 0 },	{ 0x207, "LangIDBaseList", NULL, 0 },	{ 0x208, "SDPDisable", NULL, 0 },	{ 0x209, "BatteryPower", NULL, 0 },	{ 0x20a, "RemoteWakeup", NULL, 0 },	{ 0x20b, "ProfileVersion", NULL, 0 },	{ 0x20c, "SupervisionTimeout", NULL, 0 },	{ 0x20d, "NormallyConnectable", NULL, 0 },	{ 0x20e, "BootDevice", NULL, 0 },};/* Name of the various PAN attributes. See BT assigned numbers *//* Note : those need to be double checked - Jean II */static struct attrib_def pan_attrib_names[] = {	{ 0x200, "IpSubnet", NULL, 0 },		/* Obsolete ??? */	{ 0x30A, "SecurityDescription", NULL, 0 },	{ 0x30B, "NetAccessType", NULL, 0 },	{ 0x30C, "MaxNetAccessrate", NULL, 0 },	{ 0x30D, "IPv4Subnet", NULL, 0 },	{ 0x30E, "IPv6Subnet", NULL, 0 },};/* Name of the various Generic-Audio attributes. See BT assigned numbers *//* Note : totally untested - Jean II */static struct attrib_def audio_attrib_names[] = {	{ 0x302, "Remote audio volume control", NULL, 0 },};/* Same for the UUIDs. See BT assigned numbers */static struct uuid_def uuid16_names[] = {	/* -- Protocols -- */	{ 0x0001, "SDP", NULL, 0 },	{ 0x0002, "UDP", NULL, 0 },	{ 0x0003, "RFCOMM", NULL, 0 },	{ 0x0004, "TCP", NULL, 0 },	{ 0x0005, "TCS-BIN", NULL, 0 },	{ 0x0006, "TCS-AT", NULL, 0 },	{ 0x0008, "OBEX", NULL, 0 },	{ 0x0009, "IP", NULL, 0 },	{ 0x000a, "FTP", NULL, 0 },	{ 0x000c, "HTTP", NULL, 0 },	{ 0x000e, "WSP", NULL, 0 },	{ 0x000f, "BNEP", NULL, 0 },	{ 0x0010, "UPnP/ESDP", NULL, 0 },	{ 0x0011, "HIDP", NULL, 0 },	{ 0x0012, "HardcopyControlChannel", NULL, 0 },	{ 0x0014, "HardcopyDataChannel", NULL, 0 },	{ 0x0016, "HardcopyNotification", NULL, 0 },	{ 0x0017, "AVCTP", NULL, 0 },	{ 0x0019, "AVDTP", NULL, 0 },	{ 0x001b, "CMTP", NULL, 0 },	{ 0x001d, "UDI_C-Plane", NULL, 0 },	{ 0x0100, "L2CAP", NULL, 0 },	/* -- Services -- */	{ 0x1000, "ServiceDiscoveryServerServiceClassID",		sdp_attrib_names, sizeof(sdp_attrib_names)/sizeof(struct attrib_def) },	{ 0x1001, "BrowseGroupDescriptorServiceClassID",		browse_attrib_names, sizeof(browse_attrib_names)/sizeof(struct attrib_def) },	{ 0x1002, "PublicBrowseGroup", NULL, 0 },	{ 0x1101, "SerialPort", NULL, 0 },	{ 0x1102, "LANAccessUsingPPP", NULL, 0 },	{ 0x1103, "DialupNetworking (DUN)", NULL, 0 },	{ 0x1104, "IrMCSync", NULL, 0 },	{ 0x1105, "OBEXObjectPush", NULL, 0 },	{ 0x1106, "OBEXFileTransfer", NULL, 0 },	{ 0x1107, "IrMCSyncCommand", NULL, 0 },	{ 0x1108, "Headset",		audio_attrib_names, sizeof(audio_attrib_names)/sizeof(struct attrib_def) },	{ 0x1109, "CordlessTelephony", NULL, 0 },	{ 0x110a, "AudioSource", NULL, 0 },	{ 0x110b, "AudioSink", NULL, 0 },	{ 0x110c, "RemoteControlTarget", NULL, 0 },	{ 0x110d, "AdvancedAudio", NULL, 0 },	{ 0x110e, "RemoteControl", NULL, 0 },	{ 0x110f, "VideoConferencing", NULL, 0 },	{ 0x1110, "Intercom", NULL, 0 },	{ 0x1111, "Fax", NULL, 0 },	{ 0x1112, "HeadsetAudioGateway", NULL, 0 },	{ 0x1113, "WAP", NULL, 0 },	{ 0x1114, "WAP Client", NULL, 0 },	{ 0x1115, "PANU (PAN/BNEP)",		pan_attrib_names, sizeof(pan_attrib_names)/sizeof(struct attrib_def) },	{ 0x1116, "NAP (PAN/BNEP)",		pan_attrib_names, sizeof(pan_attrib_names)/sizeof(struct attrib_def) },	{ 0x1117, "GN (PAN/BNEP)",		pan_attrib_names, sizeof(pan_attrib_names)/sizeof(struct attrib_def) },	{ 0x1118, "DirectPrinting (BPP)", NULL, 0 },	{ 0x1119, "ReferencePrinting (BPP)", NULL, 0 },	{ 0x111a, "Imaging (BIP)", NULL, 0 },	{ 0x111b, "ImagingResponder (BIP)", NULL, 0 },	{ 0x111c, "ImagingAutomaticArchive (BIP)", NULL, 0 },	{ 0x111d, "ImagingReferencedObjects (BIP)", NULL, 0 },	{ 0x111e, "Handsfree", NULL, 0 },	{ 0x111f, "HandsfreeAudioGateway", NULL, 0 },	{ 0x1120, "DirectPrintingReferenceObjectsService (BPP)", NULL, 0 },	{ 0x1121, "ReflectedUI (BPP)", NULL, 0 },	{ 0x1122, "BasicPrinting (BPP)", NULL, 0 },	{ 0x1123, "PrintingStatus (BPP)", NULL, 0 },	{ 0x1124, "HumanInterfaceDeviceService (HID)",		hid_attrib_names, sizeof(hid_attrib_names)/sizeof(struct attrib_def) },	{ 0x1125, "HardcopyCableReplacement (HCR)", NULL, 0 },	{ 0x1126, "HCR_Print (HCR)", NULL, 0 },	{ 0x1127, "HCR_Scan (HCR)", NULL, 0 },	{ 0x1128, "Common ISDN Access (CIP)", NULL, 0 },	{ 0x1129, "VideoConferencingGW (VCP)", NULL, 0 },	{ 0x112a, "UDI-MT", NULL, 0 },	{ 0x112b, "UDI-TA", NULL, 0 },	{ 0x112c, "Audio/Video", NULL, 0 },	{ 0x112d, "SIM Access (SAP)", NULL, 0 },	{ 0x112e, "Phonebook Access (PBAP) - PCE", NULL, 0 },	{ 0x112f, "Phonebook Access (PBAP) - PSE", NULL, 0 },	{ 0x1130, "Phonebook Access (PBAP)", NULL, 0 },	/* ... */	{ 0x1200, "PnPInformation",		did_attrib_names, sizeof(did_attrib_names)/sizeof(struct attrib_def) },	{ 0x1201, "GenericNetworking", NULL, 0 },	{ 0x1202, "GenericFileTransfer", NULL, 0 },	{ 0x1203, "GenericAudio",		audio_attrib_names, sizeof(audio_attrib_names)/sizeof(struct attrib_def) },	{ 0x1204, "GenericTelephony", NULL, 0 },	/* ... */	{ 0x1303, "VideoSource", NULL, 0 },	{ 0x1304, "VideoSink", NULL, 0 },	{ 0x1305, "VideoDistribution", NULL, 0 },	{ 0x1400, "MDP", NULL, 0 },	{ 0x1401, "MDPSource", NULL, 0 },	{ 0x1402, "MDPSink", NULL, 0 },	{ 0x2112, "AppleAgent", NULL, 0 },};static const int uuid16_max = sizeof(uuid16_names)/sizeof(struct uuid_def);static void sdp_data_printf(sdp_data_t *, struct attrib_context *, int);/* * Parse a UUID. * The BT assigned numbers only list UUID16, so I'm not sure the * other types will ever get used... */static void sdp_uuid_printf(uuid_t *uuid, struct attrib_context *context, int indent){	if (uuid) {		if (uuid->type == SDP_UUID16) {			uint16_t uuidNum = uuid->value.uuid16;			struct uuid_def *uuidDef = NULL;			int i;			for (i = 0; i < uuid16_max; i++)				if (uuid16_names[i].num == uuidNum) {					uuidDef = &uuid16_names[i];					break;				}			/* Check if it's the service attribute */			if (context->attrib && context->attrib->num == SERVICE_ATTR) {				/* We got the service ID !!! */				context->service = uuidDef;			}			if (uuidDef)				printf("%.*sUUID16 : 0x%.4x - %s\n",					indent, indent_spaces, uuidNum, uuidDef->name);			else				printf("%.*sUUID16 : 0x%.4x\n",					indent, indent_spaces, uuidNum);		} else if (uuid->type == SDP_UUID32) {			struct uuid_def *uuidDef = NULL;			int i;			if (!(uuid->value.uuid32 & 0xffff0000)) {				uint16_t uuidNum = uuid->value.uuid32;				for (i = 0; i < uuid16_max; i++)					if (uuid16_names[i].num == uuidNum) {						uuidDef = &uuid16_names[i];						break;					}			}			if (uuidDef)				printf("%.*sUUID32 : 0x%.8x - %s\n",					indent, indent_spaces, uuid->value.uuid32, uuidDef->name);			else				printf("%.*sUUID32 : 0x%.8x\n",					indent, indent_spaces, uuid->value.uuid32);		} else if (uuid->type == SDP_UUID128) {			unsigned int data0;			unsigned short data1;			unsigned short data2;			unsigned short data3;			unsigned int data4;			unsigned short data5;			memcpy(&data0, &uuid->value.uuid128.data[0], 4);			memcpy(&data1, &uuid->value.uuid128.data[4], 2);			memcpy(&data2, &uuid->value.uuid128.data[6], 2);			memcpy(&data3, &uuid->value.uuid128.data[8], 2);			memcpy(&data4, &uuid->value.uuid128.data[10], 4);			memcpy(&data5, &uuid->value.uuid128.data[14], 2);			printf("%.*sUUID128 : 0x%.8x-%.4x-%.4x-%.4x-%.8x-%.4x\n",				indent, indent_spaces,				ntohl(data0), ntohs(data1), ntohs(data2),				ntohs(data3), ntohl(data4), ntohs(data5));		} else			printf("%.*sEnum type of UUID not set\n",				indent, indent_spaces);	} else		printf("%.*sNull passed to print UUID\n",				indent, indent_spaces);}/* * Parse a sequence of data elements (i.e. a list) */static void printf_dataseq(sdp_data_t * pData, struct attrib_context *context, int indent){	sdp_data_t *sdpdata = NULL;	sdpdata = pData;	if (sdpdata) {		context->member_index = 0;		do {			sdp_data_printf(sdpdata, context, indent + 2);			sdpdata = sdpdata->next;			context->member_index++;		} while (sdpdata);	} else {		printf("%.*sBroken dataseq link\n", indent, indent_spaces);	}}/* * Parse a single data element (either in the attribute or in a data * sequence). */static void sdp_data_printf(sdp_data_t *sdpdata, struct attrib_context *context, int indent){	char *member_name = NULL;	/* Find member name. Almost black magic ;-) */	if (context && context->attrib && context->attrib->members &&			context->member_index < context->attrib->member_max) {		member_name = context->attrib->members[context->member_index].name;	}	switch (sdpdata->dtd) {	case SDP_DATA_NIL:		printf("%.*sNil\n", indent, indent_spaces);		break;	case SDP_BOOL:	case SDP_UINT8:	case SDP_UINT16:	case SDP_UINT32:	case SDP_UINT64:	case SDP_UINT128:	case SDP_INT8:	case SDP_INT16:	case SDP_INT32:	case SDP_INT64:	case SDP_INT128:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区精品在线观看| 国产999精品久久久久久绿帽| 美国一区二区三区在线播放| 韩国v欧美v亚洲v日本v| 成人晚上爱看视频| 欧美在线视频日韩| 精品成人私密视频| 亚洲日本一区二区| 午夜精品久久久| 国产精品香蕉一区二区三区| 色婷婷狠狠综合| 欧美草草影院在线视频| 亚洲欧美日韩国产中文在线| 伦理电影国产精品| 色婷婷亚洲精品| 2014亚洲片线观看视频免费| 亚洲精品欧美综合四区| 色综合一个色综合亚洲| 91精品国产色综合久久久蜜香臀| 欧美精彩视频一区二区三区| 性做久久久久久久久| 成人免费视频app| 91精品国产高清一区二区三区| 欧美激情一区二区三区蜜桃视频| 偷拍自拍另类欧美| 99久久久国产精品| 日韩精品一区二区三区视频| 亚洲综合丁香婷婷六月香| 国产成人av福利| 日韩一区二区三区视频| 亚洲一区影音先锋| 国产一区二区三区免费播放 | 精品国产sm最大网站免费看| 亚洲免费av观看| 国内精品国产成人| 欧美日韩国产另类一区| 国产精品久久久久7777按摩| 久久99精品久久久久久动态图 | 亚洲自拍偷拍欧美| 国产成人免费av在线| 91精品国产综合久久久久| 中文字幕在线不卡| 国产精品99久久久久久宅男| 日韩视频在线永久播放| 亚洲国产欧美日韩另类综合| 色综合视频在线观看| 国产日韩视频一区二区三区| 九九精品视频在线看| 51久久夜色精品国产麻豆| 亚洲免费观看视频| 99精品视频在线观看| 久久精品在线免费观看| 精品中文av资源站在线观看| 欧美一区二区三区精品| 午夜久久久久久久久| 在线观看国产一区二区| 亚洲欧美自拍偷拍色图| 成人av资源站| 欧美激情一区二区三区四区| 国产aⅴ精品一区二区三区色成熟| 精品国产一区二区三区av性色| 视频一区二区三区中文字幕| 精品视频1区2区| 午夜一区二区三区在线观看| 日本道精品一区二区三区| 日韩理论片在线| 99精品国产视频| 亚洲同性gay激情无套| 99久久久无码国产精品| 亚洲人妖av一区二区| av日韩在线网站| 亚洲桃色在线一区| 91在线你懂得| 一级女性全黄久久生活片免费| 日韩一级黄色片| 琪琪一区二区三区| 日韩女优制服丝袜电影| 韩国女主播一区二区三区| 久久嫩草精品久久久久| 成人夜色视频网站在线观看| 国产精品丝袜一区| 91热门视频在线观看| 亚洲黄色小说网站| 欧美狂野另类xxxxoooo| 免费成人av在线| 久久久精品一品道一区| 成人免费视频网站在线观看| 中文字幕一区二区日韩精品绯色| 97久久精品人人做人人爽| 一区二区三区在线免费播放| 欧美精品日韩一区| 久国产精品韩国三级视频| 久久蜜桃av一区二区天堂 | 国产精品久久久久久久久图文区 | 中文字幕在线不卡一区二区三区| 91啪九色porn原创视频在线观看| 亚洲精品成人天堂一二三| 欧美狂野另类xxxxoooo| 极品少妇xxxx精品少妇偷拍| 欧美激情在线一区二区三区| 色诱视频网站一区| 免费国产亚洲视频| 国产精品久久久久婷婷| 欧美日韩免费一区二区三区视频| 久久99久久久久久久久久久| 中文字幕不卡一区| 欧美日韩一区二区欧美激情| 精品一区二区日韩| 一区二区中文视频| 9191精品国产综合久久久久久| 国产一区二区三区在线观看免费| 亚洲人吸女人奶水| 欧美一级一级性生活免费录像| 国产a精品视频| 亚洲1区2区3区视频| 久久精品在线观看| 欧美日韩一区二区三区在线| 国产一区欧美二区| 一区二区三区不卡视频在线观看 | 国产精品一区免费在线观看| 亚洲欧美国产毛片在线| 日韩精品一区二区三区三区免费| 成人av集中营| 男人的天堂亚洲一区| 亚洲欧洲日韩综合一区二区| 日韩一区二区三区四区五区六区| 成人av在线网| 久久精品国产亚洲高清剧情介绍| 亚洲人成7777| 亚洲国产va精品久久久不卡综合| 精品sm在线观看| 欧美在线免费播放| 国产91精品久久久久久久网曝门| 亚洲gay无套男同| 亚洲国产精品传媒在线观看| 欧美日韩三级在线| 福利电影一区二区| 毛片一区二区三区| 亚洲大片精品永久免费| 中文字幕av资源一区| 欧美精品第1页| 色综合色狠狠综合色| 国产一区二区福利| 秋霞电影网一区二区| 亚洲精品久久久蜜桃| 国产女同互慰高潮91漫画| 日韩精品一区二区三区三区免费 | 日本网站在线观看一区二区三区 | 欧美日韩一区二区在线观看视频| 大胆欧美人体老妇| 国产在线精品一区二区不卡了| 亚洲国产乱码最新视频| 亚洲欧美另类久久久精品2019| 国产日韩欧美精品在线| 欧美成人欧美edvon| 欧美精品自拍偷拍动漫精品| 91久久久免费一区二区| 国产成a人亚洲| 国产麻豆日韩欧美久久| 美女一区二区视频| 日韩av一区二区三区四区| 一区二区三区成人| 亚洲激情网站免费观看| 一区二区中文字幕在线| 国产精品网站导航| 国产欧美精品在线观看| 久久亚洲一区二区三区明星换脸| 日韩亚洲电影在线| 91精品免费在线观看| 91精品国产综合久久精品图片| 欧美亚洲自拍偷拍| 欧美综合在线视频| 91福利在线导航| 色婷婷av一区二区三区软件| 91美女片黄在线观看| 91在线porny国产在线看| 99精品欧美一区二区三区小说| fc2成人免费人成在线观看播放| 国产成人综合网站| 国产黑丝在线一区二区三区| 国产麻豆9l精品三级站| 国产精品亚洲成人| 成人精品国产福利| www.欧美精品一二区| av电影在线观看完整版一区二区| 久久久久久麻豆| 在线电影一区二区三区| 一本色道a无线码一区v| 色综合久久99| 欧美主播一区二区三区美女| 在线免费观看不卡av| 欧美精品久久天天躁| 欧美一卡在线观看| 精品国产网站在线观看| 久久嫩草精品久久久久| 国产精品欧美精品| 亚洲乱码中文字幕| 亚洲欧美一区二区三区国产精品| 亚洲一区中文在线| 婷婷丁香久久五月婷婷|