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

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

?? iproute2.diff

?? 基于linux內(nèi)核2.6.9的mpls補丁
?? DIFF
?? 第 1 頁 / 共 3 頁
字號:
+	}++	print_mpls_stats(fp, s, *d);+	fprintf(fp, "\n");++	fflush(fp);+	return 0;+}++int print_xc(const struct sockaddr_nl *who, const struct nlmsghdr *n, void *arg)+{+	FILE *fp = (FILE*)arg;+	struct mpls_xconnect_req *t = NLMSG_DATA(n);+	int len = n->nlmsg_len;++	if (n->nlmsg_type != MPLS_RTM_ADDXC &&+		n->nlmsg_type != MPLS_RTM_DELXC) {+		fprintf(stderr, "Not an XC\n");+		return 0;+	}+	len -= NLMSG_LENGTH(sizeof(*t));+	if (len < 0) {+		fprintf(stderr, "Wrong len %d\n", len);+		return -1;+	}++	if (n->nlmsg_type == MPLS_RTM_DELXC)+		fprintf(fp, "deleted XC entry ");++	if (n->nlmsg_type == MPLS_RTM_ADDXC)+		fprintf(fp, "XC entry ");++	fprintf(fp, "ilm_label ");+	print_label(fp, &t->mx_in);+	fprintf(fp, "ilm_labelspace %d ", t->mx_in.ml_index);+	fprintf(fp, "nhlfe_key 0x%08x ",t->mx_out.u.ml_key);+	fprintf(fp, "\n");+	fflush(fp);+	return 0;+}++int print_labelspace(const struct sockaddr_nl *who, const struct nlmsghdr *n, void *arg)+{+	FILE *fp = (FILE*)arg;+	struct mpls_labelspace_req *t = NLMSG_DATA(n);+	int len = n->nlmsg_len;++	if (n->nlmsg_type != MPLS_RTM_ADDLABELSPACE &&+		n->nlmsg_type != MPLS_RTM_DELLABELSPACE) {+		fprintf(stderr, "Not a Labelspace\n");+		return 0;+	}+	len -= NLMSG_LENGTH(sizeof(*t));+	if (len < 0) {+		fprintf(stderr, "Wrong len %d\n", len);+		return -1;+	}++	if (n->nlmsg_type == MPLS_RTM_DELLABELSPACE)+		fprintf(fp, "deleted LABELSPACE entry ");++	if (n->nlmsg_type == MPLS_RTM_ADDLABELSPACE)+		fprintf(fp, "LABELSPACE entry ");++	fprintf(fp, "dev %s ", ll_index_to_name(t->mls_ifindex));+	fprintf(fp, "labelspace %d ",t->mls_labelspace);+	fprintf(fp, "\n");+	fflush(fp);++	return 0;+}++int print_nhlfe(const struct sockaddr_nl *who, const struct nlmsghdr *n, void *arg)+{+	FILE *fp = (FILE*)arg;+	struct mpls_out_label_req *t = NLMSG_DATA(n);+	struct mpls_instr_req *i = (void*)&t[1];+	struct gnet_stats_basic *s = (void*)&i[1];+	unsigned int *d = (void*)&s[1];+	int len = n->nlmsg_len;++	if (n->nlmsg_type != MPLS_RTM_ADDNHLFE &&+		n->nlmsg_type != MPLS_RTM_DELNHLFE) {+		fprintf(stderr, "Not a NHLFE\n");+		return 0;+	}+	len -= NLMSG_LENGTH(sizeof(*t));+	if (len < 0) {+		fprintf(stderr, "Wrong len %d\n", len);+		return -1;+	}++	if (n->nlmsg_type == MPLS_RTM_DELNHLFE)+		fprintf(fp, "deleted NHLFE entry ");++	if (n->nlmsg_type == MPLS_RTM_ADDNHLFE)+		fprintf(fp, "NHLFE entry ");++	fprintf(fp, "key 0x%08x ", t->mol_label.u.ml_key);+	fprintf(fp, "mtu %d ",t->mol_mtu);+	if (t->mol_propagate_ttl) {+		fprintf(fp, "propagate_ttl ");+	}+	fprintf(fp, "\n\t");+	if (i->mir_instr_length) {+		print_instructions(fp, i);+	}++	print_mpls_stats(fp, s, *d);+	fprintf(fp, "\n");++	fflush(fp);+	return 0;+}++int print_tunnel(const struct sockaddr_nl *who, const struct nlmsghdr *n, void *arg)+{+	FILE *fp = (FILE*)arg;+	struct mpls_tunnel_req *t = NLMSG_DATA(n);+	int len = n->nlmsg_len;++	if (n->nlmsg_type != MPLS_RTM_ADDTUNNEL &&+		n->nlmsg_type != MPLS_RTM_DELTUNNEL) {+		fprintf(stderr, "Not a TUNNEL\n");+		return 0;+	}+	len -= NLMSG_LENGTH(sizeof(*t));+	if (len < 0) {+		fprintf(stderr, "Wrong len %d\n", len);+		return -1;+	}++	if (n->nlmsg_type == MPLS_RTM_DELTUNNEL)+		fprintf(fp, "deleted TUNNEL entry ");++	if (n->nlmsg_type == MPLS_RTM_ADDTUNNEL)+		fprintf(fp, "TUNNEL entry ");++	fprintf(fp, "%s 0x%08x", t->mt_ifname, t->mt_nhlfe_key);+	fprintf(fp, "\n");++	fflush(fp);+	return 0;+}++int print_mpls(const struct sockaddr_nl *who, const struct nlmsghdr *n, void *arg)+{++	if (n->nlmsg_type >= MPLS_RTM_ADDNHLFE &&+		n->nlmsg_type <= MPLS_RTM_DELNHLFE) {+		return print_nhlfe(who,n,arg);+	}+	if (n->nlmsg_type >= MPLS_RTM_ADDILM &&+		n->nlmsg_type <= MPLS_RTM_DELILM) {+		return print_ilm(who,n,arg);+	}+	if (n->nlmsg_type >= MPLS_RTM_ADDXC &&+		n->nlmsg_type <= MPLS_RTM_DELXC) {+		return print_xc(who,n,arg);+	}+	if (n->nlmsg_type >= MPLS_RTM_ADDLABELSPACE &&+		n->nlmsg_type <= MPLS_RTM_DELLABELSPACE) {+		return print_labelspace(who,n,arg);+	}++	if (n->nlmsg_type >= MPLS_RTM_ADDTUNNEL &&+		n->nlmsg_type <= MPLS_RTM_DELTUNNEL) {+		return print_tunnel(who,n,arg);+	}++	return 0;+}++int mpls_list(int cmd,int argc, char **argv)+{+	struct mpls_out_label_req n;+	struct mpls_in_label_req i;+	struct mpls_xconnect_req x;+	struct mpls_labelspace_req l;+	struct mpls_tunnel_req t;+	void *tab = NULL;+	int size = -1;+	+	switch (cmd) {+		case MPLS_RTM_GETNHLFE:+			memset(&n, 0, sizeof(n));+			n.mol_family = AF_MPLS;+			size = sizeof(n);+			tab = &n;+			break;+		case MPLS_RTM_GETILM:+			memset(&i, 0, sizeof(i));+			i.mil_family = AF_MPLS;+			size = sizeof(i);+			tab = &i;+			break;+		case MPLS_RTM_GETXC:+			memset(&x, 0, sizeof(x));+			x.mx_family = AF_MPLS;+			size = sizeof(x);+			tab = &x;+			break;+		case MPLS_RTM_GETLABELSPACE:+			memset(&l, 0, sizeof(l));+			l.mls_family = AF_MPLS;+			size = sizeof(l);+			tab = &l;+			break;+		case MPLS_RTM_GETTUNNEL:+			memset(&t, 0, sizeof(t));+			t.mt_family = AF_MPLS;+			size = sizeof(t);+			tab = &t;+			break;+	}++	if (rtnl_dump_request(&rth1, cmd, tab, size) < 0) {+		perror("Cannot send dump request");+		exit(1);+	}++	if (rtnl_dump_filter(&rth1, print_mpls, stdout, NULL, NULL) < 0) {+		fprintf(stderr, "Dump terminated\n");+		exit(1);+	}++	return 0;+}++int do_ilm(int argc, char **argv) {++	if (matches(*argv, "add") == 0)+		return mpls_ilm_modify(MPLS_RTM_ADDILM,+			NLM_F_CREATE, argc-1, argv+1);+	if (matches(*argv, "change") == 0)+		return mpls_ilm_modify(MPLS_RTM_ADDILM, 0, argc-1, argv+1);+	if (matches(*argv, "delete") == 0)+		return mpls_ilm_modify(MPLS_RTM_DELILM, 0,  argc-1, argv+1);+	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0)+		return mpls_list(MPLS_RTM_GETILM,argc-1, argv+1);+	if (matches(*argv, "help") == 0)+		usage();+	else {+		fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[0]);+		return -EINVAL;+	}++	return 0;+}++int do_nhlfe(int argc, char **argv)+{+	if (matches(*argv, "add") == 0)+		return mpls_nhlfe_modify(MPLS_RTM_ADDNHLFE,+			NLM_F_CREATE, argc-1, argv+1);+	if (matches(*argv, "change") == 0)+		return mpls_nhlfe_modify(MPLS_RTM_ADDNHLFE, 0, argc-1, argv+1);+	if (matches(*argv, "delete") == 0)+		return mpls_nhlfe_modify(MPLS_RTM_DELNHLFE, 0, argc-1, argv+1);+	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0)+		return mpls_list(MPLS_RTM_GETNHLFE,argc-1, argv+1);+	if (matches(*argv, "help") == 0)+		usage();+	else {+		fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[0]);+		return -EINVAL;+	}++	return 0;+}++int do_xc(int argc, char **argv) {++	if (matches(*argv, "add") == 0)+		return mpls_xc_modify(MPLS_RTM_ADDXC, NLM_F_CREATE,+			argc-1, argv+1);+	if (matches(*argv, "change") == 0)+		return mpls_xc_modify(MPLS_RTM_ADDXC, 0, argc-1, argv+1);+	if (matches(*argv, "delete") == 0)+		return mpls_xc_modify(MPLS_RTM_DELXC, 0, argc-1, argv+1);+	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0)+		return mpls_list(MPLS_RTM_GETXC,argc-1, argv+1);+	if (matches(*argv, "help") == 0)+		usage();+	else {+		fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[0]);+		return -EINVAL;+	}++	return 0;+}++int do_labelspace(int argc, char **argv) {++	if (matches(*argv, "add") == 0)+		return mpls_labelspace_modify(MPLS_RTM_ADDLABELSPACE,+			NLM_F_CREATE, argc-1, argv+1);+	if (matches(*argv, "change") == 0)+		return mpls_labelspace_modify(MPLS_RTM_ADDLABELSPACE,+			0, argc-1, argv+1);+	if (matches(*argv, "delete") == 0)+		return mpls_labelspace_modify(MPLS_RTM_DELLABELSPACE,+			0, argc-1, argv+1);+	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0)+		return mpls_list(MPLS_RTM_GETLABELSPACE,argc-1, argv+1);+	if (matches(*argv, "help") == 0)+		usage();+	else {+		fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[0]);+		return -EINVAL;+	}++	return 0;+}++int do_tunnel(int argc, char **argv) {++	if (matches(*argv, "add") == 0)+		return mpls_tunnel_modify(MPLS_RTM_ADDTUNNEL,+			NLM_F_CREATE, argc-1, argv+1);+	if (matches(*argv, "change") == 0)+		return mpls_tunnel_modify(MPLS_RTM_ADDTUNNEL,+			NLM_F_APPEND, argc-1, argv+1);+	if (matches(*argv, "delete") == 0)+		return mpls_tunnel_modify(MPLS_RTM_DELTUNNEL,+			0, argc-1, argv+1);+	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0)+		return mpls_list(MPLS_RTM_GETTUNNEL,argc-1, argv+1);+	if (matches(*argv, "help") == 0)+		usage();+	else {+		fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[0]);+		return -EINVAL;+	}++	return 0;+}+int main(int argc, char **argv) {+	char *basename;+	int retval;++	basename = strrchr(argv[0], '/');+	if (basename == NULL)+		basename = argv[0];+	else+		basename++;++	while (argc > 1) {+		if (argv[1][0] != '-')+			break;+		if (matches(argv[1], "-Version") == 0) {+			printf("mpls utility, iproute2-ss%s mpls-linux %d.%d%d%d\n",+				SNAPSHOT, (MPLS_LINUX_VERSION >> 24) & 0xFF,+				(MPLS_LINUX_VERSION >> 16) & 0xFF,+				(MPLS_LINUX_VERSION >> 8) & 0xFF,+				(MPLS_LINUX_VERSION) & 0xFF);+			exit(0);+		} else if (matches(argv[1], "-help") == 0) {+			usage();+		} else {+			fprintf(stderr, "Option \"%s\" is unknown, try \"mpls -help\".\n", argv[1]);+			exit(-1);+		}+		argc--;	argv++;+	}++	if (argc > 1) {++	        if (rtnl_open(&rth1, 0) < 0) {+			fprintf (stderr, "Error openning netlink socket\n");+			exit(-1);+		}+		ll_init_map(&rth1);++		if (matches(argv[1], "monitor") == 0) {+			retval = do_mplsmonitor(argc-2,argv+2);+		} else if (matches(argv[1], "nhlfe") == 0) {+			retval = do_nhlfe(argc-2,argv+2);+		} else if (matches(argv[1], "ilm") == 0) {+			retval = do_ilm(argc-2,argv+2);+		} else if (matches(argv[1], "xc") == 0) {+			retval = do_xc(argc-2,argv+2);+		} else if (matches(argv[1], "labelspace") == 0) {+			retval = do_labelspace(argc-2,argv+2);+		} else if (matches(argv[1], "tunnel") == 0) {+			retval = do_tunnel(argc-2,argv+2);+		} else {+			usage();+			retval = 1;+		}+		rtnl_close(&rth1);+	} else {+		usage();+		retval = 1;+	}+	return retval;+}diff -uNr iproute2/mpls/mpls.h iproute2-mpls-1.1/mpls/mpls.h--- iproute2/mpls/mpls.h	1969-12-31 18:00:00.000000000 -0600+++ iproute2-mpls-1.1/mpls/mpls.h	2004-09-23 16:48:00.000000000 -0500@@ -0,0 +1,11 @@+#ifndef IPROUTE_MPLS_H+#define IPROUTE_MPLS_H++extern int print_ilm(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);+extern int print_xc(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);+extern int print_labelspace(struct sockaddr_nl *who, struct nlmsghdr *n,+	void *arg);+extern int print_nhlfe(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);++#endif+diff -uNr iproute2/mpls/mpls_monitor.c iproute2-mpls-1.1/mpls/mpls_monitor.c--- iproute2/mpls/mpls_monitor.c	1969-12-31 18:00:00.000000000 -0600+++ iproute2-mpls-1.1/mpls/mpls_monitor.c	2004-12-30 15:15:16.000000000 -0600@@ -0,0 +1,143 @@+/*+ * mplsmonitor.c	"mpls monitor".+ *+ *		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.+ *+ * Authors:	James R. Leu <jleu@mindspring.com> shamlesslessly copied+ *		this code from Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>+ *+ */++#include <stdio.h>+#include <stdlib.h>+#include <unistd.h>+#include <syslog.h>+#include <fcntl.h>+#include <sys/socket.h>+#include <netinet/in.h>+#include <arpa/inet.h>+#include <string.h>+#include <time.h>+#include <linux/mpls.h>++#include "utils.h"++extern int print_ilm(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);+extern int print_xc(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);+extern int print_labelspace(struct sockaddr_nl *who, struct nlmsghdr *n,+	void *arg);+extern int print_nhlfe(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg);++static void usage(void) __attribute__((noreturn));++static void usage(void)+{+	fprintf(stderr, "Usage: mpls monitor [ all | LISTofOBJECTS ]\n");+	exit(-1);+}++int accept_msg(struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)+{+	struct rtgenmsg *msg = NLMSG_DATA(n);+	FILE *fp = (FILE*)arg;++	if (msg->rtgen_family != AF_MPLS)+		return 0;++	if (n->nlmsg_type == MPLS_RTM_ADDNHLFE ||+	    n->nlmsg_type == MPLS_RTM_DELNHLFE) {+		print_nhlfe(who, n, arg);+		return 0;+	}+	if (n->nlmsg_type == MPLS_RTM_ADDILM ||+	    n->nlmsg_type == MPLS_RTM_DELILM) {+		print_ilm(who, n, arg);+		return 0;+	}+	if (n->nlmsg_type == MPLS_RTM_ADDXC ||+	    n->nlmsg_type == MPLS_RTM_DELXC) {+		print_xc(who, n, arg);+		return 0;+	}+	if (n->nlmsg_type == MPLS_RTM_ADDLABELSPACE ||+	    n->nlmsg_type == MPLS_RTM_DELLABELSPACE) {+		print_labelspace(who, n, arg);+		return 0;+	}+	if (n->nlmsg_type != NLMSG_ERROR && n->nlmsg_type != NLMSG_NOOP &&+	    n->nlmsg_type != NLMSG_DONE) {+		fprintf(fp, "Unknown message: %08x %08x %08x\n",+			n->nlmsg_len, n->nlmsg_type, n->nlmsg_flags);+	}+	return 0;+}++int do_mplsmonitor(int argc, char **argv)+{+	struct rtnl_handle rth;+	char *file = NULL;+	unsigned int groups = 0xf;+	int nhlfe=0;+	int ilm=0;+	int xc=0;+	int labelspace=0;++	while (argc > 0) {+		if (matches(*argv, "file") == 0) {+			NEXT_ARG();+			file = *argv;+		} else if (matches(*argv, "nhlfe") == 0) {+			nhlfe=1;+			groups = 0;+		} else if (matches(*argv, "ilm") == 0) {+			ilm=1;+			groups = 0;+		} else if (matches(*argv, "xc") == 0) {+			xc=1;+			groups = 0;+		} else if (matches(*argv, "labelspace") == 0) {+			labelspace=1;+			groups = 0;+		} else if (strcmp(*argv, "all") == 0) {+			groups = 0xf;+		} else if (matches(*argv, "help") == 0) {+			usage();+		} else {+			fprintf(stderr, "Argument \"%s\" is unknown, try \"mpls monitor help\".\n", *argv);+			exit(-1);+		}+		argc--;	argv++;+	}++	if (nhlfe)+		groups |= MPLS_GRP_NHLFE;+	if (ilm)+		groups |= MPLS_GRP_ILM;+	if (xc)+		groups |= MPLS_GRP_XC;+	if (labelspace)+		groups |= MPLS_GRP_LABELSPACE;++	if (file) {+		FILE *fp;+		fp = fopen(file, "r");+		if (fp == NULL) {+			perror("Cannot fopen");+			exit(-1);+		}+		return rtnl_from_file(fp, accept_msg, (void*)stdout);+	}++	if (rtnl_open(&rth, groups) < 0)+		exit(1);++	ll_init_map(&rth);++	if (rtnl_listen(&rth, accept_msg, (void*)stdout) < 0)+		exit(2);++	exit(0);+}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清成人在线| 亚洲国产综合色| 国产91精品久久久久久久网曝门| 欧美一级高清片在线观看| 日本成人在线一区| 日韩精品中文字幕一区 | 美女视频免费一区| 日韩一区二区影院| 黄页视频在线91| 亚洲欧洲精品一区二区三区不卡| 色综合天天综合| 亚洲一区欧美一区| 91精品国产91热久久久做人人| 免费在线观看一区二区三区| 欧美精品一区二区三区高清aⅴ | 国产一区二区看久久| 久久久久久9999| 色综合av在线| 免费看欧美美女黄的网站| 国产三级一区二区| 91黄色在线观看| 精品一区二区免费看| 国产精品免费网站在线观看| 色综合久久中文综合久久97| 免费成人在线观看视频| 久久免费午夜影院| 色综合久久中文字幕综合网| 蜜桃视频第一区免费观看| 欧美经典三级视频一区二区三区| 日本精品裸体写真集在线观看 | 一区二区三区视频在线看| 欧美日韩国产综合视频在线观看| 国产精品18久久久| 亚洲小说春色综合另类电影| 久久久久久日产精品| 欧美日韩性生活| 成人一二三区视频| 婷婷成人综合网| 亚洲欧美在线视频| 日韩免费观看高清完整版| 成人激情动漫在线观看| 日韩电影在线观看电影| 国产精品久久三| 精品美女一区二区| 91极品视觉盛宴| 国产91丝袜在线播放| 亚洲电影激情视频网站| 国产精品免费丝袜| 欧美电影免费提供在线观看| 欧美无人高清视频在线观看| 高清av一区二区| 久久精品国产免费| 亚洲成精国产精品女| 国产精品久久777777| 日韩视频永久免费| 欧美午夜宅男影院| 99国产精品久久久| 福利一区二区在线观看| 毛片av一区二区三区| 亚洲一区在线观看免费观看电影高清 | 久久成人综合网| 五月综合激情网| 亚洲一区在线看| 亚洲一区在线观看网站| 国产精品久久久久久久第一福利| 久久综合狠狠综合久久激情| 欧美一区二区三区人| 欧美怡红院视频| 欧美伊人精品成人久久综合97| 97精品电影院| 99这里都是精品| 波多野结衣中文字幕一区| 国产一区二区三区四| 久久精品国产亚洲aⅴ| 天堂va蜜桃一区二区三区| 亚洲国产精品麻豆| 亚洲资源中文字幕| 亚洲第一电影网| 午夜精品免费在线观看| 亚洲成人www| 婷婷久久综合九色综合绿巨人| 亚洲大片精品永久免费| 亚洲成a人片综合在线| 五月天亚洲精品| 日韩电影在线免费观看| 午夜国产精品影院在线观看| 日本va欧美va精品| 免费的国产精品| 国产在线精品一区二区| 国产一区二区三区在线观看免费 | 日韩av电影免费观看高清完整版 | 久久久亚洲国产美女国产盗摄 | 日韩三级在线观看| 欧美成人女星排名| 久久这里只有精品视频网| 久久综合久久99| 国产精品成人免费| 亚洲精品欧美二区三区中文字幕| 夜夜嗨av一区二区三区四季av | 久久国产日韩欧美精品| 久久精品国产999大香线蕉| 激情图片小说一区| 不卡在线视频中文字幕| 色综合久久天天| 日韩一区二区三区av| 久久久久久综合| 亚洲精品ww久久久久久p站| 亚洲成人av中文| 韩国女主播一区二区三区| 成人激情免费网站| 欧美三级日韩在线| 久久综合久久久久88| 亚洲同性gay激情无套| 亚洲第一二三四区| 国产精品白丝av| 欧美三级蜜桃2在线观看| 日韩欧美精品三级| 亚洲色图欧美激情| 人人爽香蕉精品| 91视频.com| 精品sm捆绑视频| 亚洲男同1069视频| 免费精品视频最新在线| 99久久99久久免费精品蜜臀| 666欧美在线视频| 一色桃子久久精品亚洲| 偷窥国产亚洲免费视频| 成人av在线一区二区| 91麻豆精品久久久久蜜臀| 国产精品午夜电影| 偷窥少妇高潮呻吟av久久免费| 成人亚洲精品久久久久软件| 8x8x8国产精品| 亚洲丝袜另类动漫二区| 美日韩一区二区三区| 91在线观看免费视频| 欧美精品一区二区在线播放| 亚洲午夜羞羞片| 成a人片亚洲日本久久| 欧美xxxxxxxx| 婷婷中文字幕综合| 99精品视频在线免费观看| 精品嫩草影院久久| 亚洲韩国一区二区三区| 成人国产亚洲欧美成人综合网| 日韩一区二区三区电影在线观看| 亚洲最新视频在线观看| 成人影视亚洲图片在线| 91精品国产福利| 伦理电影国产精品| 欧美日韩亚洲另类| 亚洲精品成人在线| 成人精品gif动图一区| 精品久久久久久最新网址| 日本亚洲一区二区| 欧美日韩在线播放三区四区| 亚洲精品久久久久久国产精华液| 国产成+人+日韩+欧美+亚洲| 精品人在线二区三区| 午夜精品aaa| 欧美精品高清视频| 亚洲第一福利一区| 欧美亚洲禁片免费| 亚洲精品国产第一综合99久久| 色综合一个色综合亚洲| 国产欧美日产一区| 成人自拍视频在线观看| 国产婷婷一区二区| 国产aⅴ综合色| 中文字幕av资源一区| 丁香婷婷深情五月亚洲| 久久久精品国产免费观看同学| 国内精品写真在线观看| 精品剧情在线观看| 国产一区二区不卡在线 | 国产.精品.日韩.另类.中文.在线.播放| 欧美一区二区性放荡片| 蜜臀av国产精品久久久久| 欧美mv日韩mv| 高潮精品一区videoshd| 国产精品美女久久久久久| 懂色av中文一区二区三区| 国产精品视频麻豆| av电影一区二区| 一区av在线播放| 91精品国产综合久久小美女 | 国产一区二区中文字幕| 久久久欧美精品sm网站| 福利一区二区在线| 亚洲免费av在线| 欧美男男青年gay1069videost| 日韩在线a电影| 精品日韩99亚洲| 91蜜桃网址入口| 日韩成人一区二区| 精品国产乱码久久久久久蜜臀| 国产91精品在线观看| 亚洲精品欧美综合四区| 91精品国产综合久久久久久久 | 国产精品嫩草影院av蜜臀|