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

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

?? beet-interfamily-2.6.22.6.patch

?? HIP:Host Identity Protocol
?? PATCH
?? 第 1 頁 / 共 3 頁
字號:
+		iph->tot_len = htons(skb->len);+		iph->daddr = x->sel.daddr.a4;+		iph->saddr = x->sel.saddr.a4;+		iph->protocol = protocol; -		if (!pskb_may_pull(skb, sizeof(*ph)))+		ip_send_check(iph);+		if (ip_options_compile(NULL, skb)) 			goto out;-		ph = (struct ip_beet_phdr *)(ipip_hdr(skb) + 1); -		phlen = sizeof(*ph) + ph->padlen;-		optlen = ph->hdrlen * 8 + (IPV4_BEET_PHMAXLEN - phlen);-		if (optlen < 0 || optlen & 3 || optlen > 250)-			goto out;--		if (!pskb_may_pull(skb, phlen + optlen))-			goto out;-		skb->len -= phlen + optlen;+		dst_release(skb->dst);+		skb->dst = NULL; -		ph_nexthdr = ph->nexthdr;+		pskb_pull(skb, sizeof(*iph) + optlen);+		skb_reset_transport_header(skb);+		err = 0;+#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)+	} else if (x->sel.family == AF_INET6) {+		int delta = sizeof(struct ipv6hdr) + skb->mac_len;+		struct ipv6hdr *ip6h;+		const unsigned char *old_mac;++		/* Here, the inner family is 6, therefore I have to+		 * substitute the IPhdr by enlarging it.+		 */+		if (skb_headroom(skb) < delta) {+			if (pskb_expand_head(skb, delta, 0, GFP_ATOMIC))+				goto out;+		}++		skb_push(skb, sizeof(*ip6h));++		/* mac might have references to ipv4. shouldn't matter */+		old_mac = skb_mac_header(skb);+		skb_set_mac_header(skb, -skb->mac_len);+		memmove(skb_mac_header(skb), old_mac, skb->mac_len);++		skb_reset_network_header(skb);+		skb_reset_transport_header(skb);++		ip6h = ipv6_hdr(skb);+		memset(ip6h->flow_lbl, 0, sizeof(ip6h->flow_lbl));+		ip6h->version = 6;+		ip6h->priority = 0;+		ip6h->nexthdr = protocol;+		ip6h->hop_limit = hops;+		ip6h->payload_len = htons(skb->len - sizeof(*ip6h));+		ipv6_addr_copy(&ip6h->daddr,+			       (struct in6_addr *)&x->sel.daddr.a6);+		ipv6_addr_copy(&ip6h->saddr,+			       (struct in6_addr *)&x->sel.saddr.a6);+		skb->protocol = htons(ETH_P_IPV6);+		err = 0;+#endif 	}--	skb_set_network_header(skb, phlen - sizeof(*iph));-	memmove(skb_network_header(skb), iph, sizeof(*iph));-	skb_set_transport_header(skb, phlen + optlen);-	skb->data = skb_transport_header(skb);--	iph = ip_hdr(skb);-	iph->ihl = (sizeof(*iph) + optlen) / 4;-	iph->tot_len = htons(skb->len + iph->ihl * 4);-	iph->daddr = x->sel.daddr.a4;-	iph->saddr = x->sel.saddr.a4;-	if (ph_nexthdr)-		iph->protocol = ph_nexthdr;-	iph->check = 0;-	iph->check = ip_fast_csum(skb_network_header(skb), iph->ihl);-	err = 0; out: 	return err; }diff -urN linux-2.6.22.6/net/ipv4/xfrm4_output.c linux-2.6.22.6-beet/net/ipv4/xfrm4_output.c--- linux-2.6.22.6/net/ipv4/xfrm4_output.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv4/xfrm4_output.c	2007-09-11 22:38:08.000000000 +0300@@ -14,6 +14,9 @@ #include <linux/skbuff.h> #include <linux/spinlock.h> #include <linux/netfilter_ipv4.h>+#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)+#include <linux/netfilter_ipv6.h>+#endif #include <net/ip.h> #include <net/xfrm.h> #include <net/icmp.h>@@ -84,7 +87,8 @@ 		} 		dst = skb->dst; 		x = dst->xfrm;-	} while (x && (x->props.mode != XFRM_MODE_TUNNEL));+	} while (x && (x->props.mode != XFRM_MODE_TUNNEL) &&+		 (x->props.mode != XFRM_MODE_BEET));  	IPCB(skb)->flags |= IPSKB_XFRM_TRANSFORMED; 	err = 0;@@ -166,7 +170,15 @@  int xfrm4_output(struct sk_buff *skb) {-	return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev,-			    xfrm4_output_finish,-			    !(IPCB(skb)->flags & IPSKB_REROUTED));+#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)+	if (ip_hdr(skb)->version == 6) {+		return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,+			       xfrm4_output_finish);+	} else+#endif+	{+		return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev,+				    xfrm4_output_finish,+				    !(IPCB(skb)->flags & IPSKB_REROUTED));+	} }diff -urN linux-2.6.22.6/net/ipv4/xfrm4_policy.c linux-2.6.22.6-beet/net/ipv4/xfrm4_policy.c--- linux-2.6.22.6/net/ipv4/xfrm4_policy.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv4/xfrm4_policy.c	2007-09-11 22:38:08.000000000 +0300@@ -72,6 +72,7 @@ 	struct dst_entry *dst, *dst_prev; 	struct rtable *rt0 = (struct rtable*)(*dst_p); 	struct rtable *rt = rt0;+	unsigned short encap_family = AF_INET; 	struct flowi fl_tunnel = { 		.nl_u = { 			.ip4_u = {@@ -117,8 +118,9 @@ 		header_len += xfrm[i]->props.header_len; 		trailer_len += xfrm[i]->props.trailer_len; -		if (xfrm[i]->props.mode == XFRM_MODE_TUNNEL) {-			unsigned short encap_family = xfrm[i]->props.family;+		if (xfrm[i]->props.mode == XFRM_MODE_TUNNEL ||+		    xfrm[i]->props.mode == XFRM_MODE_BEET) {+			encap_family = xfrm[i]->props.family; 			switch (encap_family) { 			case AF_INET: 				fl_tunnel.fl4_dst = xfrm[i]->id.daddr.a4;@@ -180,16 +182,19 @@ 		} 		dst_prev->output = afinfo->output; 		xfrm_state_put_afinfo(afinfo);-		if (dst_prev->xfrm->props.family == AF_INET && rt->peer)-			atomic_inc(&rt->peer->refcnt);-		x->u.rt.peer = rt->peer;++		if (encap_family == AF_INET) {+			if (dst_prev->xfrm->props.family == AF_INET && rt->peer)+				atomic_inc(&rt->peer->refcnt);+			x->u.rt.peer = rt->peer;+			x->u.rt.rt_type = rt->rt_type;+			x->u.rt.rt_gateway = rt->rt_gateway;+		} 		/* Sheit... I remember I did this right. Apparently, 		 * it was magically lost, so this code needs audit */ 		x->u.rt.rt_flags = rt0->rt_flags&(RTCF_BROADCAST|RTCF_MULTICAST|RTCF_LOCAL);-		x->u.rt.rt_type = rt->rt_type; 		x->u.rt.rt_src = rt0->rt_src; 		x->u.rt.rt_dst = rt0->rt_dst;-		x->u.rt.rt_gateway = rt->rt_gateway; 		x->u.rt.rt_spec_dst = rt0->rt_spec_dst; 		x->u.rt.idev = rt0->idev; 		in_dev_hold(rt0->idev);diff -urN linux-2.6.22.6/net/ipv6/esp6.c linux-2.6.22.6-beet/net/ipv6/esp6.c--- linux-2.6.22.6/net/ipv6/esp6.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/esp6.c	2007-09-11 22:38:08.000000000 +0300@@ -246,7 +246,8 @@ 	rem = mtu & (align - 1); 	mtu &= ~(align - 1); -	if (x->props.mode != XFRM_MODE_TUNNEL) {+	if (x->props.mode != XFRM_MODE_TUNNEL ||+	    x->props.mode != XFRM_MODE_BEET) { 		u32 padsize = ((blksize - 1) & 7) + 1; 		mtu -= blksize - padsize; 		mtu += min_t(u32, blksize - padsize, rem);@@ -365,6 +366,12 @@ 	x->props.header_len = sizeof(struct ipv6_esp_hdr) + esp->conf.ivlen; 	if (x->props.mode == XFRM_MODE_TUNNEL) 		x->props.header_len += sizeof(struct ipv6hdr);+	else if (x->props.mode == XFRM_MODE_BEET) {+		if (x->sel.family == AF_INET) {+			x->props.header_len += IPV4_BEET_PHMAXLEN ++				(sizeof(struct ipv6hdr) - sizeof(struct iphdr));+		}+	} 	x->data = esp; 	return 0; diff -urN linux-2.6.22.6/net/ipv6/xfrm6_input.c linux-2.6.22.6-beet/net/ipv6/xfrm6_input.c--- linux-2.6.22.6/net/ipv6/xfrm6_input.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/xfrm6_input.c	2007-09-11 22:38:08.000000000 +0300@@ -73,7 +73,9 @@ 		if (x->mode->input(x, skb)) 			goto drop; -		if (x->props.mode == XFRM_MODE_TUNNEL) { /* XXX */+		if (x->props.mode == XFRM_MODE_TUNNEL ||+		    (x->props.mode == XFRM_MODE_BEET &&+		     x->sel.family != AF_INET6)) { 			decaps = 1; 			break; 		}diff -urN linux-2.6.22.6/net/ipv6/xfrm6_mode_beet.c linux-2.6.22.6-beet/net/ipv6/xfrm6_mode_beet.c--- linux-2.6.22.6/net/ipv6/xfrm6_mode_beet.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/xfrm6_mode_beet.c	2007-09-11 22:38:08.000000000 +0300@@ -6,6 +6,7 @@  *                    Herbert Xu     <herbert@gondor.apana.org.au>  *                    Abhinav Pathak <abhinav.pathak@hiit.fi>  *                    Jeff Ahrenholz <ahrenholz@gmail.com>+ *                    Joakim Koskela <jookos@gmail.com>  */  #include <linux/init.h>@@ -17,6 +18,7 @@ #include <net/dst.h> #include <net/inet_ecn.h> #include <net/ipv6.h>+#include <net/ip.h> #include <net/xfrm.h>  /* Add encapsulation header.@@ -33,54 +35,167 @@  */ static int xfrm6_beet_output(struct xfrm_state *x, struct sk_buff *skb) {-	struct ipv6hdr *iph, *top_iph;-	u8 *prevhdr;+	struct dst_entry *dst = skb->dst;+	struct iphdr *iphv4;+	struct ipv6hdr *iphv6, *top_iphv6; 	int hdr_len; -	skb_push(skb, x->props.header_len);-	iph = ipv6_hdr(skb);+	if (ip_hdr(skb)->version == 6) {+		u8 *prevhdr; -	hdr_len = ip6_find_1stfragopt(skb, &prevhdr);-	skb_set_network_header(skb,-			       (prevhdr - x->props.header_len) - skb->data);-	skb_set_transport_header(skb, hdr_len);-	memmove(skb->data, iph, hdr_len);--	skb_reset_network_header(skb);-	top_iph = ipv6_hdr(skb);-	skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);-	skb->network_header += offsetof(struct ipv6hdr, nexthdr);+		skb_push(skb, x->props.header_len);+		iphv6 = ipv6_hdr(skb); -	ipv6_addr_copy(&top_iph->saddr, (struct in6_addr *)&x->props.saddr);-	ipv6_addr_copy(&top_iph->daddr, (struct in6_addr *)&x->id.daddr);+		hdr_len = ip6_find_1stfragopt(skb, &prevhdr);+		skb_reset_network_header(skb); +		top_iphv6 = ipv6_hdr(skb);+		memmove(top_iphv6, iphv6, hdr_len);+		ipv6_addr_copy(&top_iphv6->saddr, (struct in6_addr *)&x->props.saddr);+		ipv6_addr_copy(&top_iphv6->daddr, (struct in6_addr *)&x->id.daddr);+		skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);+		skb->network_header += offsetof(struct ipv6hdr, nexthdr);+	} else if (ip_hdr(skb)->version == 4) {+		int flags, optlen, dsfield;+		u8 protocol;++		iphv4 = ip_hdr(skb);+		skb->transport_header = skb->network_header;++		hdr_len = 0;+		optlen = iphv4->ihl * 4 - sizeof(*iphv4);+		if (unlikely(optlen))+			hdr_len += IPV4_BEET_PHMAXLEN - (optlen & 4);++		skb_push(skb, x->props.header_len - IPV4_BEET_PHMAXLEN + hdr_len);+		skb->transport_header += sizeof(*iphv4) - hdr_len;+		if (unlikely(optlen)) {+			struct ip_beet_phdr *ph;++			BUG_ON(optlen < 0);++			ph = (struct ip_beet_phdr *)skb_transport_header(skb);+			ph->padlen = 4 - (optlen & 4);+			ph->hdrlen = optlen / 8;+			ph->nexthdr = iphv4->protocol;+			if (ph->padlen)+				memset(ph + 1, IPOPT_NOP, ph->padlen);++			protocol = IPPROTO_BEETPH;+		} else+			protocol = iphv4->protocol;++		skb_reset_network_header(skb);+		top_iphv6 = ipv6_hdr(skb);++		/* DS disclosed */+		top_iphv6->version = 6;+		top_iphv6->priority = 0;+		top_iphv6->flow_lbl[0] = 0;+		top_iphv6->flow_lbl[1] = 0;+		top_iphv6->flow_lbl[2] = 0;+		dsfield = ipv6_get_dsfield(top_iphv6);+		dsfield = INET_ECN_encapsulate(dsfield, dsfield);+		flags = x->props.flags;+		if (flags & XFRM_STATE_NOECN)+			dsfield &= ~INET_ECN_MASK;+		ipv6_change_dsfield(top_iphv6, 0, dsfield);++		top_iphv6->nexthdr = protocol;+		top_iphv6->hop_limit = dst_metric(dst->child, RTAX_HOPLIMIT);+		top_iphv6->payload_len = htons(skb->len - sizeof(struct ipv6hdr));+		ipv6_addr_copy(&top_iphv6->saddr, (struct in6_addr *)&x->props.saddr);+		ipv6_addr_copy(&top_iphv6->daddr, (struct in6_addr *)&x->id.daddr);+		skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);+		skb->network_header += offsetof(struct ipv6hdr, nexthdr);+	}++	skb->protocol = htons(ETH_P_IPV6); 	return 0; } + static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb) { 	struct ipv6hdr *ip6h; 	const unsigned char *old_mac;-	int size = sizeof(struct ipv6hdr);+	int size = ((x->sel.family == AF_INET) ?+		    sizeof(struct iphdr) :+		    sizeof(struct ipv6hdr)); 	int err = -EINVAL; -	if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))-		goto out;--	skb_push(skb, size);-	memmove(skb->data, skb_network_header(skb), size);-	skb_reset_network_header(skb);--	old_mac = skb_mac_header(skb);-	skb_set_mac_header(skb, -skb->mac_len);-	memmove(skb_mac_header(skb), old_mac, skb->mac_len);--	ip6h = ipv6_hdr(skb);-	ip6h->payload_len = htons(skb->len - size);-	ipv6_addr_copy(&ip6h->daddr, (struct in6_addr *) &x->sel.daddr.a6);-	ipv6_addr_copy(&ip6h->saddr, (struct in6_addr *) &x->sel.saddr.a6);-	err = 0;-out:+	if (x->sel.family == AF_INET6) {+		if (skb_cloned(skb) &&+		    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))+			goto out;++		ip6h = ipv6_hdr(skb);+		skb_set_network_header(skb, -size);+		memmove(skb_network_header(skb), ip6h, size);++		ip6h = ipv6_hdr(skb);+		ipv6_addr_copy(&ip6h->daddr, (struct in6_addr *) &x->sel.daddr.a6);+		ipv6_addr_copy(&ip6h->saddr, (struct in6_addr *) &x->sel.saddr.a6);++		ip6h->payload_len = htons(skb->len);+		skb_reset_transport_header(skb);+		skb->protocol = htons(ETH_P_IPV6);+		err = 0;+	} else {+		__u8 proto = ipv6_hdr(skb)->nexthdr;+		__u8 hops = ipv6_hdr(skb)->hop_limit;+		int phlen = 0;+		int optlen = 0;+		struct iphdr *iph;++		/* Inner = IPv4, therefore the IPhdr must be shrunk */+		/* Inner = 4, Outer = 6 */+		if (unlikely(proto == IPPROTO_BEETPH)) {+			struct ip_beet_phdr *ph = (struct ip_beet_phdr *)+				(struct ip_beet_phdr *)skb->data;++			if (!pskb_may_pull(skb, sizeof(*ph)))+				goto out;++			phlen = sizeof(*ph) + ph->padlen;+			optlen = ph->hdrlen * 8 + (IPV4_BEET_PHMAXLEN - phlen);+			if (optlen < 0 || optlen & 3 || optlen > 250)+				goto out;++			if (!pskb_may_pull(skb, phlen + optlen))+				goto out;+			proto = ph->nexthdr;+		}++		if (skb_cloned(skb) &&+		    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))+			goto out;++		skb_push(skb, size - phlen);+		skb_reset_network_header(skb);+		skb_reset_transport_header(skb);++		/* mac might have references to ipv6. shouldn't matter */+		old_mac = skb_mac_header(skb);+		skb_set_mac_header(skb, -skb->mac_len);+		memmove(skb_mac_header(skb), old_mac, skb->mac_len);++		iph = ip_hdr(skb);+		iph->ihl = (sizeof(*iph) + optlen) / 4;+		iph->version = 4;+		iph->tos = 0;+		iph->id = 0;+		iph->frag_off = 0;+		iph->ttl = hops;+		iph->protocol = proto;+		iph->daddr = x->sel.daddr.a4;+		iph->saddr = x->sel.saddr.a4;+		iph->tot_len = htons(skb->len);+		ip_send_check(iph);+		skb->protocol = htons(ETH_P_IP);+		err = 0;+	}+ out: 	return err; } diff -urN linux-2.6.22.6/net/ipv6/xfrm6_output.c linux-2.6.22.6-beet/net/ipv6/xfrm6_output.c--- linux-2.6.22.6/net/ipv6/xfrm6_output.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/xfrm6_output.c	2007-09-11 22:38:08.000000000 +0300@@ -14,8 +14,10 @@ #include <linux/spinlock.h> #include <linux/icmpv6.h> #include <linux/netfilter_ipv6.h>+#include <linux/netfilter_ipv4.h> #include <net/ipv6.h> #include <net/xfrm.h>+#include <net/ip.h>  int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb, 			  u8 **prevhdr)@@ -90,7 +92,8 @@ 		} 		dst = skb->dst; 		x = dst->xfrm;-	} while (x && (x->props.mode != XFRM_MODE_TUNNEL));+	} while (x && (x->props.mode != XFRM_MODE_TUNNEL) &&+		 (x->props.mode != XFRM_MODE_BEET));  	IP6CB(skb)->flags |= IP6SKB_XFRM_TRANSFORMED; 	err = 0;@@ -165,6 +168,12 @@  int xfrm6_output(struct sk_buff *skb) {-	return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,-		       xfrm6_output_finish);+	if (ip_hdr(skb)->version == 4) {+		return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev,+				    xfrm6_output_finish,+				    !(IPCB(skb)->flags & IPSKB_REROUTED));+	} else {+		return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,+			       xfrm6_output_finish);+	} }diff -urN linux-2.6.22.6/net/ipv6/xfrm6_policy.c linux-2.6.22.6-beet/net/ipv6/xfrm6_policy.c--- linux-2.6.22.6/net/ipv6/xfrm6_policy.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/xfrm6_policy.c	2007-09-11 22:38:08.000000000 +0300@@ -131,6 +131,7 @@ 	struct dst_entry *dst, *dst_prev; 	struct rt6_info *rt0 = (struct rt6_info*)(*dst_p); 	struct rt6_info *rt  = rt0;+	unsigned short encap_family = AF_INET6; 	struct flowi fl_tunnel = { 		.nl_u = { 			.ip6_u = {@@ -179,12 +180,15 @@ 		trailer_len += xfrm[i]->props.trailer_len;  		if (xfrm[i]->props.mode == XFRM_MODE_TUNNEL ||+		    xfrm[i]->props.mode == XFRM_MODE_BEET || 		    xfrm[i]->props.mode == XFRM_MODE_ROUTEOPTIMIZATION) {-			unsigned short encap_family = xfrm[i]->props.family;+			encap_family = xfrm[i]->props.family; 			switch(encap_family) { 			case AF_INET: 				fl_tunnel.fl4_dst = xfrm[i]->id.daddr.a4; 				fl_tunnel.fl4_src = xfrm[i]->props.saddr.a4;+				fl_tunnel.fl4_tos = 0;+				fl_tunnel.fl4_scope = 0; 				break; 			case AF_INET6: 				ipv6_addr_copy(&fl_tunnel.fl6_dst, __xfrm6_bundle_addr_remote(xfrm[i], &fl->fl6_dst));@@ -205,7 +209,7 @@  	dst_prev->child = &rt->u.dst; 	dst->path = &rt->u.dst;-	if (rt->rt6i_node)+	if (encap_family == AF_INET6 && rt->rt6i_node) 		((struct xfrm_dst *)dst)->path_cookie = rt->rt6i_node->fn_sernum;  	*dst_p = dst;diff -urN linux-2.6.22.6/net/ipv6/xfrm6_state.c linux-2.6.22.6-beet/net/ipv6/xfrm6_state.c--- linux-2.6.22.6/net/ipv6/xfrm6_state.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-beet/net/ipv6/xfrm6_state.c	2007-09-11 22:38:08.000000000 +0300@@ -98,6 +98,17 @@ 			src[i] = NULL; 		} 	}+	if (j == n)+		goto end;++	/* Rule 5: select IPsec BEET */+	for (i = 0; i < n; i++) {+		if (src[i] &&+		    src[i]->props.mode == XFRM_MODE_BEET) {+			dst[j++] = src[i];+			src[i] = NULL;+		}+	} 	if (likely(j == n)) 		goto end; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清成人在线| 午夜一区二区三区视频| 国产成人在线网站| 国产日韩欧美一区二区三区乱码 | 午夜天堂影视香蕉久久| 欧美三日本三级三级在线播放| 亚洲一区在线免费观看| 3atv一区二区三区| 国产综合色精品一区二区三区| 中文字幕中文字幕在线一区| 欧美亚洲综合久久| 久久99精品久久只有精品| 国产精品欧美综合在线| 欧美亚洲国产一区在线观看网站| 蜜桃91丨九色丨蝌蚪91桃色| 国产拍欧美日韩视频二区| 91成人网在线| 国内精品伊人久久久久av一坑| 日韩一区在线播放| 91精品国产综合久久香蕉的特点| 国产成人午夜99999| 亚洲国产视频a| 国产亚洲欧洲997久久综合| 色综合色综合色综合色综合色综合| 天堂一区二区在线| 中文字幕免费不卡在线| 欧美疯狂做受xxxx富婆| 国产91精品一区二区麻豆网站| 亚洲精选视频在线| 精品少妇一区二区三区日产乱码 | 美国三级日本三级久久99| 国产精品久久久久久久岛一牛影视| 欧美日韩一区二区在线观看视频| 久久99精品国产.久久久久| 亚洲裸体xxx| 2023国产精品自拍| 欧美精品在欧美一区二区少妇| 丁香六月久久综合狠狠色| 首页国产欧美日韩丝袜| 成人免费在线视频观看| 精品久久一区二区| 欧美一区二区三区免费观看视频| 国产成人亚洲综合a∨婷婷| 亚洲成av人片在www色猫咪| 国产午夜精品久久久久久免费视| 在线不卡一区二区| 在线观看一区二区精品视频| 高清不卡在线观看av| 久久国产婷婷国产香蕉| 亚洲第一二三四区| 亚洲精选视频在线| 国产欧美一区二区三区在线老狼| 宅男噜噜噜66一区二区66| 91在线免费看| 波多野结衣亚洲一区| 国产综合久久久久久久久久久久| 日韩激情在线观看| 三级在线观看一区二区| 一区二区三区精品久久久| 国产精品乱码人人做人人爱| 久久精品日产第一区二区三区高清版 | 欧美午夜精品一区二区蜜桃 | 丝袜诱惑制服诱惑色一区在线观看| 亚洲天堂成人在线观看| 国产精品国产成人国产三级| 久久久www成人免费毛片麻豆| 日韩一区二区三区视频在线观看| 欧美日韩精品是欧美日韩精品| 欧洲生活片亚洲生活在线观看| 99久久综合国产精品| 成人av影视在线观看| 成人在线视频一区二区| 高清日韩电视剧大全免费| 国产+成+人+亚洲欧洲自线| 国产宾馆实践打屁股91| 成人性视频网站| 94-欧美-setu| 日本乱人伦aⅴ精品| 欧美性生活大片视频| 欧美午夜一区二区| 欧美日韩一区二区三区免费看| 欧美日韩亚洲另类| 欧美色综合天天久久综合精品| 欧美日韩三级视频| 91精品婷婷国产综合久久| 精品少妇一区二区三区免费观看 | 亚洲va韩国va欧美va| 亚洲日本免费电影| 亚洲欧美另类图片小说| 一区二区三区免费在线观看| 一区二区三区在线播放| 亚洲成人动漫精品| 麻豆成人在线观看| 91免费观看在线| 色综合一区二区| 欧美日韩在线播放| 亚洲精品一区二区三区99| 久久久久久久久久美女| 亚洲女性喷水在线观看一区| 日韩经典中文字幕一区| 国产美女视频一区| 色综合久久久久久久久久久| 欧美日韩国产欧美日美国产精品| 欧美电影免费观看高清完整版在| 久久综合久久99| 亚洲精品乱码久久久久久黑人| 石原莉奈在线亚洲二区| 国产一区二区在线影院| 色88888久久久久久影院按摩| 日韩午夜av电影| 国产精品久久777777| 日韩在线观看一区二区| 国产高清精品久久久久| 欧美日韩精品欧美日韩精品| 26uuuu精品一区二区| 亚洲免费三区一区二区| 欧美一区二区三区视频在线| 久久激情五月激情| 99v久久综合狠狠综合久久| 欧美日韩国产大片| 中日韩av电影| 爽好久久久欧美精品| 不卡的看片网站| 欧美一级理论片| 日韩理论电影院| 成人av网在线| 亚洲最新在线观看| 一区二区三区蜜桃| 蜜桃传媒麻豆第一区在线观看| 国产a精品视频| 欧美一区二区三区的| 亚洲欧美偷拍卡通变态| 国产资源在线一区| 欧美日韩你懂的| 中文字幕亚洲视频| 久久久久久久久久久久电影 | 亚洲国产精品视频| 欧美精品九九99久久| 久久毛片高清国产| 国产精品天美传媒| 亚洲六月丁香色婷婷综合久久 | 亚洲色图欧洲色图婷婷| 亚洲国产欧美一区二区三区丁香婷| 无吗不卡中文字幕| 久久精品国产在热久久| 波多野结衣中文字幕一区| 欧美日韩精品专区| 国产女主播一区| 三级精品在线观看| 福利一区二区在线| 在线电影院国产精品| 久久久国产精品不卡| 亚洲国产裸拍裸体视频在线观看乱了| 免费成人小视频| 色美美综合视频| 久久久久久久电影| 亚洲一区二区三区四区的| 国产精品综合在线视频| 欧美视频三区在线播放| 夜色激情一区二区| 久久综合九色综合欧美亚洲| 中文字幕亚洲不卡| 麻豆精品视频在线观看免费 | 欧美精品日韩综合在线| 国产精品网站在线播放| 免费观看在线综合| av电影在线观看不卡| 欧美大胆人体bbbb| 亚洲蜜臀av乱码久久精品蜜桃| 久久av资源站| 欧美久久久久久久久中文字幕| 中文字幕第一区二区| 狠狠色丁香婷婷综合| 欧美军同video69gay| 亚洲黄色小说网站| av在线不卡免费看| 欧美激情一区二区三区不卡| 秋霞午夜av一区二区三区| 91精品办公室少妇高潮对白| 国产精品区一区二区三区| 国产综合久久久久久鬼色| 欧美刺激脚交jootjob| 亚洲图片欧美综合| 欧美专区在线观看一区| 亚洲黄色av一区| 色网站国产精品| 亚洲综合小说图片| 91九色最新地址| 亚洲综合色丁香婷婷六月图片| 91免费观看视频| 亚洲精选在线视频| 91黄色激情网站| 亚洲一区二区三区视频在线| 欧美亚洲综合网| 性欧美疯狂xxxxbbbb| 欧美日韩一区二区电影| 天堂在线一区二区| 欧美日韩成人综合| 免费在线观看精品| 久久亚洲精华国产精华液|