日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

list.h在用户态下的应用

發(fā)布時間:2025/3/19 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 list.h在用户态下的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、背景

list.h文件位于linux/include下,內核中鏈表的操作函數都在其中。它有許多關于鏈表的操作函數,所以我們可以嘗試將list.h拉到用戶態(tài)中來使用,這樣,我們在用戶態(tài)中若要用到鏈表就可以直接調用其中已經實現好的函數了。我這里將拉到用戶態(tài)的經過“改造”后的list.h文件代碼列出,然后舉一個簡單的例子來應用這個頭文件。當然,list.h中的函數非常多,應用也應該很廣泛,我這里只是簡單的示例其中較簡單的幾個函數。

二、用戶態(tài)下的list.h

/** @file list.h* @author PF* @date 2017/05/1** port from linux kernel list.h: https://github.com/torvalds/linux/raw/master/include/linux/list.h** Here is a recipe to cook list.h for user space program.* 1. copy list.h from linux/include/list.h* 2. remove* - #ifdef __KERNE__ and its #endif* - all #include line* - prefetch() and rcu related functions* 3. add macro offsetof() and container_of*/#ifndef LIST_H_ #define LIST_H_ (1)// import from include/linux/types.h struct list_head {struct list_head *next, *prev; };struct hlist_head {struct hlist_node *first; };struct hlist_node {struct hlist_node *next, **pprev; };// import from include/linux/poison.h/** Architectures might want to move the poison pointer offset* into some well-recognized area such as 0xdead000000000000,* that is also not mappable by user-space exploits:*/ #ifdef CONFIG_ILLEGAL_POINTER_VALUE # define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POINTER_VALUE, UL) #else # define POISON_POINTER_DELTA (0) #endif/** These are non-NULL pointers that will result in page faults* under normal circumstances, used to verify that nobody uses* non-initialized list entries.*/ #define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA) #define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA)// import from include/linux/stddef.h #undef offsetof #ifdef __compiler_offsetof #define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) #else #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif// import from include/linux/kernel.h /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );})/** Simple doubly linked list implementation.** Some of the internal functions ("__xxx") are useful when* manipulating whole lists rather than single entries, as* sometimes we already know the next/prev entries and we can* generate better code by using them directly rather than* using the generic single-entry routines.*/#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \struct list_head name = LIST_HEAD_INIT(name)static inline void INIT_LIST_HEAD(struct list_head *list) {list->next = list;list->prev = list; }/** Insert a new entry between two known consecutive entries.** This is only for internal list manipulation where we know* the prev/next entries already!*/ #ifndef CONFIG_DEBUG_LIST static inline void __list_add(struct list_head *new,struct list_head *prev,struct list_head *next) {next->prev = new;new->next = next;new->prev = prev;prev->next = new; } #else extern void __list_add(struct list_head *new,struct list_head *prev,struct list_head *next); #endif/*** list_add - add a new entry* @new: new entry to be added* @head: list head to add it after** Insert a new entry after the specified head.* This is good for implementing stacks.*/ static inline void list_add(struct list_head *new, struct list_head *head) {__list_add(new, head, head->next); }/*** list_add_tail - add a new entry* @new: new entry to be added* @head: list head to add it before** Insert a new entry before the specified head.* This is useful for implementing queues.*/ static inline void list_add_tail(struct list_head *new, struct list_head *head) {__list_add(new, head->prev, head); }/** Delete a list entry by making the prev/next entries* point to each other.** This is only for internal list manipulation where we know* the prev/next entries already!*/ static inline void __list_del(struct list_head *prev, struct list_head *next) {next->prev = prev;prev->next = next; }/*** list_del - deletes entry from list.* @entry: the element to delete from the list.* Note: list_empty() on entry does not return true after this, the entry is* in an undefined state.*/ #ifndef CONFIG_DEBUG_LISTstatic inline void __list_del_entry(struct list_head *entry) {__list_del(entry->prev, entry->next); }static inline void list_del(struct list_head *entry) {__list_del(entry->prev, entry->next);entry->next = LIST_POISON1;entry->prev = LIST_POISON2; }#else extern void __list_del_entry(struct list_head *entry); extern void list_del(struct list_head *entry); #endif/*** list_replace - replace old entry by new one* @old : the element to be replaced* @new : the new element to insert** If @old was empty, it will be overwritten.*/ static inline void list_replace(struct list_head *old,struct list_head *new) {new->next = old->next;new->next->prev = new;new->prev = old->prev;new->prev->next = new; }static inline void list_replace_init(struct list_head *old,struct list_head *new) {list_replace(old, new);INIT_LIST_HEAD(old); }/*** list_del_init - deletes entry from list and reinitialize it.* @entry: the element to delete from the list.*/ static inline void list_del_init(struct list_head *entry) {__list_del_entry(entry);INIT_LIST_HEAD(entry); }/*** list_move - delete from one list and add as another's head* @list: the entry to move* @head: the head that will precede our entry*/ static inline void list_move(struct list_head *list, struct list_head *head) {__list_del_entry(list);list_add(list, head); }/*** list_move_tail - delete from one list and add as another's tail* @list: the entry to move* @head: the head that will follow our entry*/ static inline void list_move_tail(struct list_head *list,struct list_head *head) {__list_del_entry(list);list_add_tail(list, head); }/*** list_is_last - tests whether @list is the last entry in list @head* @list: the entry to test* @head: the head of the list*/ static inline int list_is_last(const struct list_head *list,const struct list_head *head) {return list->next == head; }/*** list_empty - tests whether a list is empty* @head: the list to test.*/ static inline int list_empty(const struct list_head *head) {return head->next == head; }/*** list_empty_careful - tests whether a list is empty and not being modified* @head: the list to test** Description:* tests whether a list is empty _and_ checks that no other CPU might be* in the process of modifying either member (next or prev)** NOTE: using list_empty_careful() without synchronization* can only be safe if the only activity that can happen* to the list entry is list_del_init(). Eg. it cannot be used* if another CPU could re-list_add() it.*/ static inline int list_empty_careful(const struct list_head *head) {struct list_head *next = head->next;return (next == head) && (next == head->prev); }/*** list_rotate_left - rotate the list to the left* @head: the head of the list*/ static inline void list_rotate_left(struct list_head *head) {struct list_head *first;if (!list_empty(head)) {first = head->next;list_move_tail(first, head);} }/*** list_is_singular - tests whether a list has just one entry.* @head: the list to test.*/ static inline int list_is_singular(const struct list_head *head) {return !list_empty(head) && (head->next == head->prev); }static inline void __list_cut_position(struct list_head *list,struct list_head *head, struct list_head *entry) {struct list_head *new_first = entry->next;list->next = head->next;list->next->prev = list;list->prev = entry;entry->next = list;head->next = new_first;new_first->prev = head; }/*** list_cut_position - cut a list into two* @list: a new list to add all removed entries* @head: a list with entries* @entry: an entry within head, could be the head itself* and if so we won't cut the list** This helper moves the initial part of @head, up to and* including @entry, from @head to @list. You should* pass on @entry an element you know is on @head. @list* should be an empty list or a list you do not care about* losing its data.**/ static inline void list_cut_position(struct list_head *list,struct list_head *head, struct list_head *entry) {if (list_empty(head)) {return;}if (list_is_singular(head) &&(head->next != entry && head != entry)) {return;}if (entry == head) {INIT_LIST_HEAD(list);} else {__list_cut_position(list, head, entry);} }static inline void __list_splice(const struct list_head *list,struct list_head *prev,struct list_head *next) {struct list_head *first = list->next;struct list_head *last = list->prev;first->prev = prev;prev->next = first;last->next = next;next->prev = last; }/*** list_splice - join two lists, this is designed for stacks* @list: the new list to add.* @head: the place to add it in the first list.*/ static inline void list_splice(const struct list_head *list,struct list_head *head) {if (!list_empty(list)) {__list_splice(list, head, head->next);} }/*** list_splice_tail - join two lists, each list being a queue* @list: the new list to add.* @head: the place to add it in the first list.*/ static inline void list_splice_tail(struct list_head *list,struct list_head *head) {if (!list_empty(list)) {__list_splice(list, head->prev, head);} }/*** list_splice_init - join two lists and reinitialise the emptied list.* @list: the new list to add.* @head: the place to add it in the first list.** The list at @list is reinitialised*/ static inline void list_splice_init(struct list_head *list,struct list_head *head) {if (!list_empty(list)) {__list_splice(list, head, head->next);INIT_LIST_HEAD(list);} }/*** list_splice_tail_init - join two lists and reinitialise the emptied list* @list: the new list to add.* @head: the place to add it in the first list.** Each of the lists is a queue.* The list at @list is reinitialised*/ static inline void list_splice_tail_init(struct list_head *list,struct list_head *head) {if (!list_empty(list)) {__list_splice(list, head->prev, head);INIT_LIST_HEAD(list);} }/*** list_entry - get the struct for this entry* @ptr: the &struct list_head pointer.* @type: the type of the struct this is embedded in.* @member: the name of the list_head within the struct.*/ #define list_entry(ptr, type, member) \container_of(ptr, type, member)/*** list_first_entry - get the first element from a list* @ptr: the list head to take the element from.* @type: the type of the struct this is embedded in.* @member: the name of the list_head within the struct.** Note, that list is expected to be not empty.*/ #define list_first_entry(ptr, type, member) \list_entry((ptr)->next, type, member)/*** list_last_entry - get the last element from a list* @ptr: the list head to take the element from.* @type: the type of the struct this is embedded in.* @member: the name of the list_head within the struct.** Note, that list is expected to be not empty.*/ #define list_last_entry(ptr, type, member) \list_entry((ptr)->prev, type, member)/*** list_first_entry_or_null - get the first element from a list* @ptr: the list head to take the element from.* @type: the type of the struct this is embedded in.* @member: the name of the list_head within the struct.** Note that if the list is empty, it returns NULL.*/ #define list_first_entry_or_null(ptr, type, member) \(!list_empty(ptr) ? list_first_entry(ptr, type, member) : NULL)/*** list_next_entry - get the next element in list* @pos: the type * to cursor* @member: the name of the list_head within the struct.*/ #define list_next_entry(pos, member) \list_entry((pos)->member.next, typeof(*(pos)), member)/*** list_prev_entry - get the prev element in list* @pos: the type * to cursor* @member: the name of the list_head within the struct.*/ #define list_prev_entry(pos, member) \list_entry((pos)->member.prev, typeof(*(pos)), member)/*** list_for_each - iterate over a list* @pos: the &struct list_head to use as a loop cursor.* @head: the head for your list.*/ #define list_for_each(pos, head) \for (pos = (head)->next; pos != (head); pos = pos->next)/*** list_for_each_prev - iterate over a list backwards* @pos: the &struct list_head to use as a loop cursor.* @head: the head for your list.*/ #define list_for_each_prev(pos, head) \for (pos = (head)->prev; pos != (head); pos = pos->prev)/*** list_for_each_safe - iterate over a list safe against removal of list entry* @pos: the &struct list_head to use as a loop cursor.* @n: another &struct list_head to use as temporary storage* @head: the head for your list.*/ #define list_for_each_safe(pos, n, head) \for (pos = (head)->next, n = pos->next; pos != (head); \pos = n, n = pos->next)/*** list_for_each_prev_safe - iterate over a list backwards safe against removal of list entry* @pos: the &struct list_head to use as a loop cursor.* @n: another &struct list_head to use as temporary storage* @head: the head for your list.*/ #define list_for_each_prev_safe(pos, n, head) \for (pos = (head)->prev, n = pos->prev; \pos != (head); \pos = n, n = pos->prev)/*** list_for_each_entry - iterate over list of given type* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the list_head within the struct.*/ #define list_for_each_entry(pos, head, member) \for (pos = list_first_entry(head, typeof(*pos), member); \&pos->member != (head); \pos = list_next_entry(pos, member))/*** list_for_each_entry_reverse - iterate backwards over list of given type.* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the list_head within the struct.*/ #define list_for_each_entry_reverse(pos, head, member) \for (pos = list_last_entry(head, typeof(*pos), member); \&pos->member != (head); \pos = list_prev_entry(pos, member))/*** list_prepare_entry - prepare a pos entry for use in list_for_each_entry_continue()* @pos: the type * to use as a start point* @head: the head of the list* @member: the name of the list_head within the struct.** Prepares a pos entry for use as a start point in list_for_each_entry_continue().*/ #define list_prepare_entry(pos, head, member) \((pos) ? : list_entry(head, typeof(*pos), member))/*** list_for_each_entry_continue - continue iteration over list of given type* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the list_head within the struct.** Continue to iterate over list of given type, continuing after* the current position.*/ #define list_for_each_entry_continue(pos, head, member) \for (pos = list_next_entry(pos, member); \&pos->member != (head); \pos = list_next_entry(pos, member))/*** list_for_each_entry_continue_reverse - iterate backwards from the given point* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the list_head within the struct.** Start to iterate over list of given type backwards, continuing after* the current position.*/ #define list_for_each_entry_continue_reverse(pos, head, member) \for (pos = list_prev_entry(pos, member); \&pos->member != (head); \pos = list_prev_entry(pos, member))/*** list_for_each_entry_from - iterate over list of given type from the current point* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the list_head within the struct.** Iterate over list of given type, continuing from current position.*/ #define list_for_each_entry_from(pos, head, member) \for (; &pos->member != (head); \pos = list_next_entry(pos, member))/*** list_for_each_entry_safe - iterate over list of given type safe against removal of list entry* @pos: the type * to use as a loop cursor.* @n: another type * to use as temporary storage* @head: the head for your list.* @member: the name of the list_head within the struct.*/ #define list_for_each_entry_safe(pos, n, head, member) \for (pos = list_first_entry(head, typeof(*pos), member), \n = list_next_entry(pos, member); \&pos->member != (head); \pos = n, n = list_next_entry(n, member))/*** list_for_each_entry_safe_continue - continue list iteration safe against removal* @pos: the type * to use as a loop cursor.* @n: another type * to use as temporary storage* @head: the head for your list.* @member: the name of the list_head within the struct.** Iterate over list of given type, continuing after current point,* safe against removal of list entry.*/ #define list_for_each_entry_safe_continue(pos, n, head, member) \for (pos = list_next_entry(pos, member), \n = list_next_entry(pos, member); \&pos->member != (head); \pos = n, n = list_next_entry(n, member))/*** list_for_each_entry_safe_from - iterate over list from current point safe against removal* @pos: the type * to use as a loop cursor.* @n: another type * to use as temporary storage* @head: the head for your list.* @member: the name of the list_head within the struct.** Iterate over list of given type from current point, safe against* removal of list entry.*/ #define list_for_each_entry_safe_from(pos, n, head, member) \for (n = list_next_entry(pos, member); \&pos->member != (head); \pos = n, n = list_next_entry(n, member))/*** list_for_each_entry_safe_reverse - iterate backwards over list safe against removal* @pos: the type * to use as a loop cursor.* @n: another type * to use as temporary storage* @head: the head for your list.* @member: the name of the list_head within the struct.** Iterate backwards over list of given type, safe against removal* of list entry.*/ #define list_for_each_entry_safe_reverse(pos, n, head, member) \for (pos = list_last_entry(head, typeof(*pos), member), \n = list_prev_entry(pos, member); \&pos->member != (head); \pos = n, n = list_prev_entry(n, member))/*** list_safe_reset_next - reset a stale list_for_each_entry_safe loop* @pos: the loop cursor used in the list_for_each_entry_safe loop* @n: temporary storage used in list_for_each_entry_safe* @member: the name of the list_head within the struct.** list_safe_reset_next is not safe to use in general if the list may be* modified concurrently (eg. the lock is dropped in the loop body). An* exception to this is if the cursor element (pos) is pinned in the list,* and list_safe_reset_next is called after re-taking the lock and before* completing the current iteration of the loop body.*/ #define list_safe_reset_next(pos, n, member) \n = list_next_entry(pos, member)/** Double linked lists with a single pointer list head.* Mostly useful for hash tables where the two pointer list head is* too wasteful.* You lose the ability to access the tail in O(1).*/#define HLIST_HEAD_INIT { .first = NULL } #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } #define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)static inline void INIT_HLIST_NODE(struct hlist_node *h) {h->next = NULL;h->pprev = NULL; }static inline int hlist_unhashed(const struct hlist_node *h) {return !h->pprev; }static inline int hlist_empty(const struct hlist_head *h) {return !h->first; }static inline void __hlist_del(struct hlist_node *n) {struct hlist_node *next = n->next;struct hlist_node **pprev = n->pprev;*pprev = next;if (next)next->pprev = pprev; }static inline void hlist_del(struct hlist_node *n) {__hlist_del(n);n->next = LIST_POISON1;n->pprev = LIST_POISON2; }static inline void hlist_del_init(struct hlist_node *n) {if (!hlist_unhashed(n)) {__hlist_del(n);INIT_HLIST_NODE(n);} }static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) {struct hlist_node *first = h->first;n->next = first;if (first) {first->pprev = &n->next;}h->first = n;n->pprev = &h->first; }/* next must be != NULL */ static inline void hlist_add_before(struct hlist_node *n,struct hlist_node *next) {n->pprev = next->pprev;n->next = next;next->pprev = &n->next;*(n->pprev) = n; }static inline void hlist_add_behind(struct hlist_node *n,struct hlist_node *prev) {n->next = prev->next;prev->next = n;n->pprev = &prev->next;if (n->next) {n->next->pprev = &n->next;} }/* after that we'll appear to be on some hlist and hlist_del will work */ static inline void hlist_add_fake(struct hlist_node *n) {n->pprev = &n->next; }/** Move a list from one list head to another. Fixup the pprev* reference of the first entry if it exists.*/ static inline void hlist_move_list(struct hlist_head *old,struct hlist_head *new) {new->first = old->first;if (new->first) {new->first->pprev = &new->first;}old->first = NULL; }#define hlist_entry(ptr, type, member) container_of(ptr,type,member)#define hlist_for_each(pos, head) \for (pos = (head)->first; pos ; pos = pos->next)#define hlist_for_each_safe(pos, n, head) \for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \pos = n)#define hlist_entry_safe(ptr, type, member) \({ typeof(ptr) ____ptr = (ptr); \____ptr ? hlist_entry(____ptr, type, member) : NULL; \})/*** hlist_for_each_entry - iterate over list of given type* @pos: the type * to use as a loop cursor.* @head: the head for your list.* @member: the name of the hlist_node within the struct.*/ #define hlist_for_each_entry(pos, head, member) \for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\pos; \pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))/*** hlist_for_each_entry_continue - iterate over a hlist continuing after current point* @pos: the type * to use as a loop cursor.* @member: the name of the hlist_node within the struct.*/ #define hlist_for_each_entry_continue(pos, member) \for (pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member);\pos; \pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))/*** hlist_for_each_entry_from - iterate over a hlist continuing from current point* @pos: the type * to use as a loop cursor.* @member: the name of the hlist_node within the struct.*/ #define hlist_for_each_entry_from(pos, member) \for (; pos; \pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))/*** hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry* @pos: the type * to use as a loop cursor.* @n: another &struct hlist_node to use as temporary storage* @head: the head for your list.* @member: the name of the hlist_node within the struct.*/ #define hlist_for_each_entry_safe(pos, n, head, member) \for (pos = hlist_entry_safe((head)->first, typeof(*pos), member);\pos && ({ n = pos->member.next; 1; }); \pos = hlist_entry_safe(n, typeof(*pos), member))#endif // LIST_H_

三、一個簡單的例子

#include <stdio.h> #include <stdlib.h> #include "list.h"struct kool_list{int to;struct list_head list;int from; };int main(int argc, char **argv){struct kool_list *tmp;struct list_head *pos, *q;unsigned int i;struct kool_list mylist;INIT_LIST_HEAD(&mylist.list);for(i=5; i!=0; --i){tmp= (struct kool_list *)malloc(sizeof(struct kool_list));printf("enter to and from:");scanf("%d %d", &tmp->to, &tmp->from);list_add(&(tmp->list), &(mylist.list));}printf("\n");printf("traversing the list using list_for_each_entry()\n");list_for_each_entry(tmp, &mylist.list, list)printf("to= %d from= %d\n", tmp->to, tmp->from);printf("\n");printf("deleting the list using list_for_each_safe()\n");list_for_each_safe(pos, q, &mylist.list){tmp= list_entry(pos, struct kool_list, list);printf("freeing item to= %d from= %d\n", tmp->to, tmp->from);list_del(pos);free(tmp);}return 0; }

這個例子中我使用了list.h作頭文件,這樣我就可以使用其中的函數了,先創(chuàng)建了一個結構體作為頭結點,然后使用list_add函數添加了5個結點,再用三種遍歷方式輸出結果。從這個例子中也可以看出list_add添加結點的特點。

REF

http://blog.csdn.net/hty46565/article/details/71532022

https://www.cnblogs.com/hummersofdie/p/3727703.html

轉載于:https://www.cnblogs.com/muahao/p/8109733.html

總結

以上是生活随笔為你收集整理的list.h在用户态下的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

五月天精品视频 | 精品国产综合区久久久久久 | 91丨九色丨国产丨porny精品 | 日本性生活一级片 | 久久爱资源网 | 99国产精品久久久久久久久久 | 国产精品18久久久久久不卡孕妇 | 色视频在线观看免费 | 最近2019好看的中文字幕免费 | 91亚洲精品久久久 | 免费成人av网站 | 日韩欧美在线综合网 | 久久精品亚洲一区二区三区观看模式 | 91亚洲欧美激情 | 一区二区三区四区五区在线视频 | 美女网站在线看 | av在线网站免费观看 | 久久综合九色欧美综合狠狠 | 免费视频色 | 99超碰在线播放 | 丁香综合av| 成片人卡1卡2卡3手机免费看 | 6080yy午夜一二三区久久 | 久久私人影院 | 九九影视理伦片 | 欧美久久久久久久久久久 | 日韩欧美精品在线视频 | 国外成人在线视频网站 | 国产精品三级视频 | 一级成人网 | 免费网站v | 亚洲免费婷婷 | 日韩高清网站 | 久久黄色小说 | 综合网天天射 | 在线亚洲日本 | 欧美日韩国产页 | 久久xx视频| 亚洲 欧美 成人 | 国产中文字幕一区二区三区 | 久久超级碰视频 | 狠狠搞,com| 96精品在线| 国产日韩一区在线 | 久久www免费视频 | 免费黄色a网站 | 精品国精品自拍自在线 | 色婷婷播放 | 成人av一区二区三区 | 四虎影视成人永久免费观看视频 | 91免费国产在线观看 | 久久人人97超碰国产公开结果 | 国产免费黄色 | 黄色毛片电影 | 国产黄色片免费在线观看 | 亚洲资源片 | 丁香久久综合 | 97香蕉久久国产在线观看 | 久久91久久久久麻豆精品 | 亚洲欧美日韩国产精品一区午夜 | 51久久成人国产精品麻豆 | 男女啪啪网站 | 国产精品一区在线播放 | 69精品久久| 色吧av色av| 伊人久久国产 | 69xx视频 | 久久精品国产久精国产 | 久久久久久久久久久久电影 | 精品福利片 | 日韩在线观看第一页 | 91mv.cool在线观看 | 久久久黄色av | 久久久黄视频 | 有码中文字幕在线观看 | 久久电影中文字幕视频 | 日韩大片免费观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲精品中文在线资源 | av网址在线播放 | 中文字幕在线第一页 | 欧美精品久久人人躁人人爽 | 欧美精品被 | 国产欧美在线一区 | 三级大片网站 | 免费看污污视频的网站 | 国产精品一区二区视频 | 超碰97.com | 亚洲精品在线观看av | 日日操天天操狠狠操 | 免费观看一级视频 | 九九视频免费在线观看 | 久久久久精 | 好看的国产精品视频 | 日本不卡一区二区三区在线观看 | 久久爽久久爽久久av东京爽 | 日韩av资源站| 激情婷婷网 | 国产手机视频在线观看 | 国产精品 国内视频 | 亚洲视频免费在线 | 国产黄色大片 | 99精品视频播放 | 久久美女免费视频 | 国产拍揄自揄精品视频麻豆 | 香蕉视频色 | 色播五月激情五月 | 欧美成人h版在线观看 | 成人免费视频a | 国产在线一区二区三区播放 | 天天操天天色天天射 | 亚洲欧洲美洲av | 日产av在线播放 | 日韩av成人免费看 | 人人爽影院 | av在线播放不卡 | 99久久精品日本一区二区免费 | 日韩免费中文 | 韩国av永久免费 | 日批在线看 | 看国产黄色片 | 国产精品亚州 | 欧美色综合 | 欧美激情视频一区二区三区免费 | 色wwww| 国产午夜精品一区二区三区在线观看 | 色网站在线看 | 97碰在线视频 | 婷婷五天天在线视频 | 欧美一区二区三区特黄 | 激情网站网址 | 久久人人爽爽 | 久久精品久久精品 | 国产乱对白刺激视频不卡 | 国产在线永久 | 国产香蕉视频在线观看 | 97国产大学生情侣白嫩酒店 | www最近高清中文国语在线观看 | 亚洲一区二区三区四区在线视频 | bbbbb女女女女女bbbbb国产 | 免费av观看网站 | 丝袜精品视频 | 国内精品久久久久久久久久久久 | 在线观看国产永久免费视频 | 日韩欧美高清免费 | www亚洲精品 | 在线视频一区二区 | 久草免费新视频 | 日韩视频一区二区三区在线播放免费观看 | 久久视频在线看 | 国产高清视频在线免费观看 | 久久深夜福利免费观看 | 久久精品国产v日韩v亚洲 | 丝袜美女在线观看 | 欧美福利片在线观看 | 九九爱免费视频在线观看 | 91理论电影 | 久久免费在线观看 | 亚洲精品麻豆视频 | 久久久综合电影 | 国内精品久久久久久久 | 国产视频精品免费播放 | 狠狠网| 91福利在线导航 | 99久久国产免费看 | 999视频在线播放 | 97人人视频 | 亚洲一区精品人人爽人人躁 | 亚洲人毛片 | 国产在线黄 | 欧美国产91 | 91人人爽人人爽人人精88v | av大全在线看| www国产在线 | 国产做aⅴ在线视频播放 | 亚洲精品国产精品国自产在线 | 免费麻豆| 正在播放五月婷婷狠狠干 | 五月天激情视频 | 97在线观看免费观看高清 | 欧美色图p| 精品一区二区在线免费观看 | 午夜精品久久久久久久99水蜜桃 | 综合网五月天 | 亚洲色视频| 国产亚洲高清视频 | 久久精品男人的天堂 | 亚洲国产精品激情在线观看 | 狠狠狠狠狠狠天天爱 | 亚洲人视频在线 | 亚洲午夜久久久久久久久电影网 | 国产成人免费av电影 | 亚洲男人天堂2018 | 日本aa在线 | 久久久久久久久久久久久9999 | 国产专区一 | 欧美激情亚洲综合 | 亚洲欧洲国产日韩精品 | 福利二区视频 | 色婷婷亚洲婷婷 | 免费在线一区二区 | 国产免费黄视频在线观看 | 久久久精品网站 | 亚洲精品视频在线观看视频 | 经典三级一区 | a级成人毛片| 日本精品xxxx | 日韩在线观看a | 色婷婷激情电影 | 成人免费视频网址 | 一本色道久久精品 | 爱av在线网 | 久草在在线 | 成人亚洲精品久久久久 | 蜜臀精品久久久久久蜜臀 | 国产一区二区在线免费观看 | 国产高清在线精品 | 人人爱人人射 | 亚洲黄电影 | 日韩伦理片一区二区三区 | 久久亚洲在线 | 色一级片| 国产91亚洲精品 | 808电影 | 日本最新一区二区三区 | 久久精品综合网 | 日韩sese | 国产精品少妇 | 国产在线欧美在线 | 久热电影 | 久久视频在线观看免费 | 91精品视频在线看 | 国产成人性色生活片 | 欧美在线视频a | 特级西西www44高清大胆图片 | 日韩中文字幕免费看 | 日韩激情在线 | 91视频久久 | 欧美激情h | 欧美日韩在线观看不卡 | 日韩伦理片一区二区三区 | 色狠狠一区二区 | 在线免费观看麻豆视频 | 国产在线日本 | 999久久久国产精品 高清av免费观看 | 亚洲精品国产精品国产 | 亚洲最新av在线网址 | 久久久久久久久久久久久国产精品 | av网站地址 | 国产99久久久久久免费看 | 日韩av免费观看网站 | 国内精品视频久久 | 亚洲成年人av | 色综合www | 深爱五月激情网 | 99久久精品国产一区二区成人 | 中文字幕色婷婷在线视频 | 亚洲成人黄色网址 | 国产一区免费 | 三三级黄色片之日韩 | 黄色一级大片在线免费看国产一 | 久久国产经典视频 | 视频一区二区在线观看 | 成人亚洲免费 | av中文字幕在线播放 | 热久久视久久精品18亚洲精品 | 99热在线这里只有精品 | 国产成人精品日本亚洲999 | 欧美日韩性视频在线 | 国产中文字幕在线观看 | 天天干天天插伊人网 | 日本aaa在线观看 | 十八岁以下禁止观看的1000个网站 | 亚洲国产欧洲综合997久久, | 国产精品久久久久一区二区三区共 | 国产精品麻豆欧美日韩ww | 国产一级淫片免费看 | 日本久久视频 | 久久天堂精品视频 | 91av视频免费观看 | 九九色在线观看 | 精品久久久免费视频 | 中文字幕一区在线观看视频 | 99热 精品在线 | www久久国产 | 亚洲最新av网站 | 正在播放亚洲精品 | 亚洲经典在线 | 国产成人av片 | 在线观看aa | 91麻豆文化传媒在线观看 | 超碰人人超 | 久久久精品久久 | adn—256中文在线观看 | 国产在线a | 九九久久影院 | 国产剧在线观看片 | 91精品国产一区二区在线观看 | 男女靠逼app | 亚洲精品乱码久久久久久蜜桃动漫 | 高清不卡毛片 | 欧美性黄网官网 | 99久久超碰中文字幕伊人 | 92av视频 | 精品一区二区在线免费观看 | 亚洲精品97 | 日韩在线高清 | 国产精品黄色 | 国产亚洲亚洲 | 精品国产乱码久久久久久1区二区 | av资源在线看 | 美女视频黄的免费的 | 免费福利在线视频 | 国产中年夫妇高潮精品视频 | 91福利视频一区 | 日韩精品一区二区免费视频 | 国产91免费观看 | 毛片网在线播放 | 亚洲精品动漫久久久久 | 色吊丝在线永久观看最新版本 | 久久久久久久免费 | 2024国产精品视频 | 久久在现 | 免费看片成人 | 亚洲免费视频在线观看 | 国产精品露脸在线 | 91视频免费看网站 | 日韩中文字幕视频在线观看 | 永久免费毛片在线观看 | 精品a视频 | 日韩精品一区在线观看 | 国产69久久精品成人看 | 午夜美女网站 | 一本一道久久a久久精品 | 久热久草在线 | 午夜少妇| 天天操比 | 黄色一级性片 | 亚洲另类视频在线 | 国产精品视频免费看 | 日韩av成人在线观看 | 国产高清视频色在线www | 久久不卡国产精品一区二区 | 99视频在线精品国自产拍免费观看 | 麻豆影视在线观看 | 亚洲最新av| 中文字幕视频观看 | 国产精品mv在线观看 | 日韩久久久久久久久 | 91视频久久久久久 | 久久国产精品免费一区二区三区 | 人人爽人人爽人人爽 | 日韩电影中文字幕在线观看 | 99精品视频在线观看 | 欧美美女视频在线观看 | 四虎免费在线观看视频 | 人人草天天草 | 成人在线视频在线观看 | 国产黄色av | 亚洲人成精品久久久久 | 国产永久免费 | av蜜桃在线 | 日韩免费在线观看视频 | 欧美久久久久久久 | 久草在线费播放视频 | 中文字幕在线色 | 黄色大片视频网站 | 久精品在线 | 五月婷婷在线视频观看 | 97在线观看视频 | 亚洲成人资源在线 | 超薄丝袜一二三区 | www黄| www.香蕉视频在线观看 | 四虎影视国产精品免费久久 | 69视频国产| 狠狠干天天射 | 久久黄色免费视频 | 91精品视频一区二区三区 | 91视频亚洲 | www婷婷 | 久久久黄色av | 国产成人专区 | 久久久久综合视频 | 色婷婷欧美 | 最近中文字幕视频网 | 四虎影视国产精品免费久久 | 日韩亚洲在线观看 | 狠狠五月天 | 2021av在线 | av一级片网站 | 亚洲综合小说电影qvod | 亚洲婷婷在线视频 | 福利视频网址 | 狠狠干中文字幕 | 亚洲精品一区二区久 | 亚洲成色777777在线观看影院 | 日韩毛片一区 | 美女av免费看 | 人人干97 | 国产在线观看高清视频 | 久久99久久99 | 中文字幕av一区二区三区四区 | 97超碰总站 | 国产精品久久一区二区无卡 | 青春草视频 | 91桃色视频| 免费情趣视频 | 精品999在线观看 | 欧美日韩在线电影 | 91成人免费| 精品女同一区二区三区在线观看 | 午夜国产一区 | 久久专区| 在线观看一级 | 黄色片网站免费 | 91理论电影 | 99久久99久久| 久草资源在线观看 | 在线观看视频中文字幕 | 免费看的黄色小视频 | 91污在线观看 | 亚洲欧美在线视频免费 | 黄色大片免费播放 | 天天干天天做 | 中文字幕专区高清在线观看 | 国产精品自产拍在线观看 | 天天透天天插 | 超碰免费在线公开 | 欧美最猛性xxxx | 一区二区视频在线播放 | 一区二区免费不卡在线 | 精品国产1区二区 | 亚洲综合在线一区二区三区 | 国产群p| 五月开心婷婷网 | 在线色网站 | 五月婷丁香| 欧美一区二区视频97 | 天天天天天天干 | 三级午夜片 | 日韩精品一区二区三区在线播放 | 免费看污污视频的网站 | 日韩电影中文字幕在线 | 在线视频中文字幕一区 | 麻豆高清免费国产一区 | 久久久久久久久久亚洲精品 | 在线播放一区二区三区 | 免费a视频在线 | 欧美激情一区不卡 | 成人一区二区三区在线 | 超碰成人av | 黄网站污 | 国产在线最新 | 中文字幕av有码 | 一区二区影视 | 色欲综合视频天天天 | 在线观看中文字幕2021 | 91理论片午午伦夜理片久久 | 亚洲精品看片 | 高清中文字幕 | 亚洲精品视频在线免费 | 91九色免费视频 | 中文字幕在线看人 | 综合色中色 | 右手影院亚洲欧美 | 亚洲精品国产高清 | 日韩av手机在线看 | 国产亚洲精品久久久久秋 | 国产区第一页 | 9999精品免费视频 | 国产欧美精品一区二区三区四区 | 成人亚洲精品国产www | 中文字幕一区av | 91成年人视频 | 就要干b| 国产精品免费在线视频 | 国产性xxxx| 久久爱影视i | 亚洲国产美女精品久久久久∴ | 国产精品久久久久久久久久久久 | 亚洲成人第一区 | 久久久久免费精品国产小说色大师 | av大全在线看 | 草久视频在线 | 欧美国产大片 | 亚洲aⅴ久久精品 | 午夜影视一区 | 成人av片免费看 | 免费能看的av| 黄污视频大全 | 国产黄在线看 | 色窝资源 | bbw av| 色久av| 99精品亚洲 | 久插视频 | 亚洲热视频| 亚洲女同ⅹxx女同tv | 中文乱码视频在线观看 | 成人一区二区在线 | 在线日韩中文 | 国产麻豆精品在线观看 | av黄色一级片 | 99精品一区二区三区 | avove黑丝 | 五月天视频网 | 亚洲视频 中文字幕 | 激情av在线资源 | 国模精品在线 | 日韩 国产 | 精品一区二区电影 | 91麻豆精品国产91久久久久 | 精品久久中文 | 不卡视频一区二区三区 | 欧美日韩一区二区在线观看 | 人人要人人澡人人爽人人dvd | 国产在线观看免费 | 亚洲欧洲精品一区二区精品久久久 | 久久xx视频 | 国产成人性色生活片 | 久久人人97超碰国产公开结果 | 国产破处精品 | 夜夜天天干 | 99在线高清视频在线播放 | 在线观看视频福利 | 正在播放国产精品 | 国产综合激情 | 91激情视频在线播放 | 婷婷狠狠操| 国产精品精品国产婷婷这里av | 亚洲乱码久久 | 久久国产精品久久w女人spa | 国产又粗又猛又黄 | 国产成人av网站 | 久久国产精品99久久久久久进口 | 国产五月色婷婷六月丁香视频 | 99久久日韩精品免费热麻豆美女 | 又黄又刺激又爽的视频 | 黄色片网站大全 | 成人久久久久久久久 | 国产成视频在线观看 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲最大色| 精品在线一区二区 | 精品在线视频播放 | 日韩高清黄色 | 久久字幕网 | 婷婷久久丁香 | 国产免码va在线观看免费 | 色婷婷六月天 | 久久久久欠精品国产毛片国产毛生 | 亚洲黄色网络 | 嫩草av影院 | 黄色高清视频在线观看 | 久久超碰在线 | 亚洲免费公开视频 | 久久久精华网 | 在线国产激情视频 | 2019中文在线观看 | 久久伊人热 | 日本精品中文字幕在线观看 | 国产中文字幕视频在线观看 | 在线观看视频91 | 黄污视频网站 | 天天操天天干天天综合网 | 欧美在线视频日韩 | 天天色综合1 | 在线观看爱爱视频 | 91麻豆传媒| 在线 国产 亚洲 欧美 | 成年一级片 | 夜夜躁日日躁狠狠久久av | 欧美成人免费在线 | 91av在线视频播放 | 伊人天堂网 | 久久综合亚洲鲁鲁五月久久 | 日日爱视频 | 精品美女久久久久 | 日韩xxx视频| 日韩黄色大片在线观看 | 国产黄色精品网站 | av片子在线观看 | 国产精品一级视频 | 6080yy午夜一二三区久久 | 亚洲在线a | 国产精品mv在线观看 | 久久99国产综合精品免费 | 欧美怡红院 | 欧美色久| 国产精品免费在线视频 | 亚洲成aⅴ人在线观看 | 国产精品久久久电影 | 波多野结衣资源 | 久久在线看| 国产综合视频在线观看 | 欧美一级片免费在线观看 | 久久久免费精品国产一区二区 | 一级黄色免费网站 | 狠狠黄| 午夜精品久久久 | 免费观看的黄色 | 人人干狠狠操 | 免费在线观看日韩欧美 | 国产高清精品在线 | 成人免费看视频 | 国产成人精品综合 | 亚洲精品天天 | 国产精品视频免费在线观看 | 国产精品人成电影在线观看 | 伊人资源视频在线 | 色综合天天天天做夜夜夜夜做 | 国产成人在线观看免费 | 色妞色视频一区二区三区四区 | 九七视频在线观看 | 国产一级二级在线 | 免费网站看v片在线a | 91福利视频网站 | 毛片www| 麻豆国产在线播放 | 91精品国自产在线观看欧美 | 亚洲免费专区 | 亚洲视频一区二区三区在线观看 | 国产精品精品久久久久久 | a黄色 | 久久国产成人午夜av影院潦草 | 久久久网站| 久久激情小说 | 国产男女爽爽爽免费视频 | 久久久久这里只有精品 | 亚洲乱码国产乱码精品天美传媒 | 天天综合色天天综合 | 玖玖精品在线 | 黄网站色 | 精品国产一区二区久久 | 国内精品久久久久久中文字幕 | 色.com| 免费观看一区二区三区视频 | 美女网站视频免费黄 | 日本一区二区三区免费观看 | 免费在线观看污网站 | 免费av网站观看 | 黄色小说网站在线 | 一区二区中文字幕在线观看 | 国产成人一区二区三区在线观看 | 亚洲国产精品成人精品 | 日韩精品免费一区 | 欧美日韩国产一区二区在线观看 | 日韩av在线高清 | 日韩高清免费电影 | 97人人艹| 久草精品视频在线播放 | 欧美日本国产在线观看 | 欧美粗又大 | 在线播放视频一区 | 免费国产一区二区视频 | 天天操夜夜逼 | 亚洲精品自拍 | 91探花在线| 黄网站色视频 | www.com在线观看 | 91精品国产入口 | 福利视频区| 亚洲精品乱码久久久久久 | av免费在线播放 | 四虎成人网 | av怡红院| 亚洲精品久久激情国产片 | 精品国产一区二区三区久久久久久 | 黄色一级在线观看 | 在线精品视频在线观看高清 | 六月婷婷久香在线视频 | 免费看一级 | 国产又粗又猛又黄又爽的视频 | 色av资源网 | 美女亚洲精品 | 午夜在线日韩 | 99久久国产免费看 | 狠狠狠狠狠狠干 | 欧美做受高潮电影o | 人人草人| 91色网址| 欧美日韩国产在线一区 | 欧美另类老妇 | 美女视频a美女大全免费下载蜜臀 | 国产精品毛片久久久久久久 | 日日干天天射 | 天堂v中文 | 亚洲最大av在线播放 | 中文字幕av免费观看 | 色99色 | 免费成人在线观看视频 | 国产精品大片免费观看 | 久久久久久久毛片 | 亚洲激情中文 | 日韩在线电影一区二区 | 久久久久久视频 | 亚洲精品综合一区二区 | www.狠狠干| 欧美日韩二三区 | 亚洲 欧美变态 另类 综合 | 99性视频| 午夜美女福利直播 | 午夜精品久久久久久久99水蜜桃 | 国产亚洲精品久久久久久无几年桃 | 91av在线视频播放 | 东方av免费在线观看 | 香蕉视频最新网址 | 国产理论影院 | 香蕉网址 | 91麻豆精品国产91久久久使用方法 | 18女毛片| 日日麻批40分钟视频免费观看 | 毛片精品免费在线观看 | 日韩夜夜爽 | 天天干天天综合 | 国产中文字幕在线观看 | 国产成人av综合色 | 日韩在线视频网 | av九九九 | 国产人成一区二区三区影院 | 成人观看| 成人黄色小说视频 | 国产精品一区二区久久精品 | 日韩大片免费观看 | 人人爽人人爽人人片av | 国产精品女 | 日本xxxx裸体xxxx17 | 国产视频一区二区在线播放 | 香蕉久久久久久av成人 | 色多多污污 | 久久国产精品视频免费看 | 狠狠狠狠狠狠天天爱 | 亚洲精品久久久久久国 | 中文字幕一区2区3区 | 狠狠色噜噜狠狠狠狠2021天天 | 九九免费在线观看视频 | 亚洲高清精品在线 | 永久免费看av| 国产精品国产三级国产专区53 | 91视频91自拍| 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 一区二区三区免费网站 | www好男人| 国产一级高清 | 国产理论免费 | 波多野结衣电影一区二区三区 | 97碰在线视频 | 欧美成人tv | 天天插天天色 | 久久国产亚洲 | 狠狠色丁香婷婷综合橹88 | 天天操天天综合网 | 久久人人爽人人爽人人 | 久久人人爽人人爽人人片 | 九九九热精品免费视频观看网站 | 一 级 黄 色 片免费看的 | 蜜桃av人人夜夜澡人人爽 | 丰满少妇在线观看资源站 | 亚洲黄色片一级 | 午夜神马福利 | 奇米影视999 | 婷婷激情综合五月天 | 99精品一区 | 欧美日韩中文字幕综合视频 | 91av国产视频 | 日韩啪视频 | 人人干人人艹 | 亚欧日韩成人h片 | 日韩免费视频 | 欧美福利片在线观看 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲日本中文字幕在线观看 | av大全免费在线观看 | 免费看黄色小说的网站 | 国产中文字幕在线 | 久久国产成人午夜av影院潦草 | 干av在线 | 日韩国产精品毛片 | 精品一区二区在线免费观看 | av久久久| 欧美老女人xx | 国产精品大尺度 | 亚洲电影网站 | 五月天婷婷在线播放 | 色a资源在线 | 在线观看亚洲精品 | 高清国产一区 | www.在线观看视频 | 色综合天天色综合 | 日韩在线观看中文 | 国产精品成人av在线 | 国产精品扒开做爽爽的视频 | 亚洲精品国产精品久久99热 | 中文久草 | 日本不卡视频 | 国产成人精品午夜在线播放 | 欧美日韩在线精品一区二区 | 黄色av网站在线免费观看 | 国产老太婆免费交性大片 | 精品国产不卡 | 婷婷久久一区 | 人人干狠狠操 | 亚洲观看黄色网 | 91丨九色丨高潮丰满 | 久久精品99久久久久久 | 九九久久精品 | 欧美日韩午夜在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品美乳一区二区免费 | 欧美在线久久 | 成人午夜电影久久影院 | 91免费版成人 | 国产精品扒开做爽爽的视频 | 日韩欧美在线观看一区 | 免费看特级毛片 | 日韩一二三在线 | 伊人狠狠色丁香婷婷综合 | 色天天| 国产精品国产自产拍高清av | 四虎影视成人永久免费观看亚洲欧美 | 日韩中文字幕免费视频 | 福利视频网站 | 精品xxx| 综合色中文 | 国语精品视频 | 国产黄色一级大片 | 国产精品久久久久久久99 | 久久免费视屏 | 又黄又爽免费视频 | 中文字幕资源网 国产 | 精品国产乱码久久 | 欧美日韩伦理一区 | 日韩91精品| 天天操天天摸天天爽 | 中文字幕国产 | 国产又黄又爽又猛视频日本 | 久久精品视频观看 | 国产亚洲人| 97自拍超碰 | 久久精品黄 | 999国内精品永久免费视频 | 精品国产一区二区三区久久久蜜臀 | 欧美一级免费片 | 国产中文字幕av | 三级av在线播放 | 五月天久久婷 | www.五月激情.com | 精品久久久久久国产91 | 免费在线成人av电影 | 国产亚洲va综合人人澡精品 | www.久久久精品 | a在线观看免费视频 | 中文字幕在线免费观看视频 | 色九九视频 | 一二三区av | 久久av免费 | 91片在线观看 | 日韩久久精品一区二区三区下载 | 天天曰天天曰 | 黄色在线观看www | 国内视频 | 欧美粗又大 | 欧美 另类 交 | 91精品视频免费在线观看 | 欧美性视频网站 | 精品免费观看视频 | 特级黄色片免费看 | a成人v| 色综合久久久久综合体桃花网 | 国产黄色美女 | 成人在线视频你懂的 | 狠狠色噜噜狠狠 | 最新日韩视频在线观看 | 狠狠干天天射 | 午夜av在线| 丁香电影小说免费视频观看 | 二区三区在线视频 | 国产一级片直播 | 免费在线日韩 | 99久久99久久精品免费 | 国产精品久久久久影院日本 | 亚洲精品美女在线 | 国产小视频你懂的在线 | 久久精品视频中文字幕 | 九九久久国产 | 精品国产123| 国产69久久 | 国产精品毛片完整版 | 天天av天天 | 五月天六月丁香 | www.久久成人| 在线观看中文字幕第一页 | 成人免费毛片aaaaaa片 | 天天操天天操天天操天天 | 欧美电影黄色 | 在线 国产 亚洲 欧美 | 国产精品九九九九九 | 国产一级特黄毛片在线毛片 | 911精品视频 | 九九热精品视频在线播放 | 欧美一级在线观看视频 | 国产精品三级视频 | 天天狠狠 | 狠狠狠狠干 | www久| 免费网站黄色 | 欧美日韩网址 | 久久精品亚洲精品国产欧美 | 天天操伊人 | 久久免费视频网 | 在线国产视频一区 | 在线观看成人国产 | 在线观看黄色av | 欧美日韩精品综合 | 国产在线观看一 | 中文欧美字幕免费 | 日韩色视频在线观看 | 久久久久免费精品国产 | 午夜av一区 | 成人小视频在线播放 | 欧美先锋影音 | 91专区在线观看 | 欧美激情综合五月色丁香 | 国产亚洲精品bv在线观看 | 亚洲jizzjizz日本少妇 | 日韩有色 | 在线观看黄色大片 | 日韩网站在线看片你懂的 | 成年人免费看片 | .国产精品成人自产拍在线观看6 | 超碰97中文| 中文字幕在线观看亚洲 | 国产精选在线 | 亚洲永久精品在线 | 国产精品美女久久久久久久 | 国产一区二区在线免费播放 | 激情婷婷亚洲 | 欧美特一级 | 91桃色视频| 久久久噜噜噜久久久 | 91麻豆高清视频 | 国产午夜视频在线观看 | 日日夜夜精品网站 | 区一区二区三区中文字幕 | 日韩一区二区在线免费观看 | 免费黄在线观看 | 又爽又黄又无遮挡网站动态图 | 99久久精品国 | 91亚色在线观看 | 99精品热 | 成人久久18免费网站 | 黄色大全视频 | 欧美aⅴ在线观看 | 最近高清中文在线字幕在线观看 | 丁香六月网 | 亚洲 欧美 国产 va在线影院 | 99热99| 欧美精品免费在线观看 | 久久精品国产亚洲aⅴ | 狠狠干狠狠插 | 久久精品视频免费 | 97超碰人人模人人人爽人人爱 | 亚洲成人av一区 | 日本99久久 | a√资源在线 | 日韩高清一二三区 | 日韩久久久久 | 中文字幕色网站 | 91精品久久久久久综合乱菊 | 国产精品免费观看网站 | 精品国产伦一区二区三区观看说明 | 国产小视频在线观看 | 99色免费视频 | 久久免费看 | 久久精品亚洲综合专区 | 国产一级在线观看视频 | 亚洲综合色播 | 成人一区二区三区在线观看 | 2021久久 | 日韩黄色影院 | 91av视屏 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 亚洲精品视频在线观看免费视频 | 国产一区免费在线 | 色综合天天综合在线视频 | 久久精品com| 婷婷伊人综合亚洲综合网 | 国产又粗又猛又爽 | 欧美精品一区二区蜜臀亚洲 | 91av在线不卡 | 亚洲国产中文字幕 | 国产精品久久久区三区天天噜 | 久久精品免费电影 | 久草视频在线资源 | 久久久久久久久久久精 | 亚洲一区二区视频在线播放 | 日韩欧美综合视频 |