3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

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

编程问答

lwIP 细节之三:TCP 回调函数是何时调用的

發布時間:2024/1/8 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lwIP 细节之三:TCP 回调函数是何时调用的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 lwIP 協議棧進行 TCP 裸機編程,其本質就是編寫協議棧指定的各種回調函數。將你的應用邏輯封裝成函數,注冊到協議棧,在適當的時候,由協議棧自動調用,所以稱為回調

注:除非特別說明,以下內容針對 lwIP 2.0.0 及以上版本。

向協議棧注冊回調函數有專門的接口,如下所示:

tcp_err(pcb, errf); //注冊 TCP 接到 RST 標志或發生錯誤回調函數 errf tcp_connect(pcb, ipaddr, port, connected); //注冊 TCP 建立連接成功回調函數 connecter tcp_accept(pcb, accept); //注冊 TCP 處于 LISTEN 狀態時,監聽到有新的連接接入 tcp_recv(pcb, recv); //注冊 TCP 接收到數據回調函數 recv tcp_sent(pcb, sent); //注冊 TCP 發送數據成功回調函數 sent tcp_poll(pcb, poll, interval); //注冊 TCP 周期性執行回調函數 poll

errf 回調函數

在 TCP 控制塊中,函數指針 errf 指向用戶實現的 TCP 錯誤處理函數,當 TCP 連接發送錯誤時,由協議棧調用此函數。
函數指針 errf 的類型為 tcp_err_fn ,該類型定義在 tcp.h 中:

/** Function prototype for tcp error callback functions. Called when the pcb* receives a RST or is unexpectedly closed for any other reason.** @note The corresponding pcb is already freed when this callback is called!** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param err Error code to indicate why the pcb has been closed* ERR_ABRT: aborted through tcp_abort or by a TCP timer* ERR_RST: the connection was reset by the remote host*/ typedef void (*tcp_err_fn)(void *arg, err_t err);

從注釋得知,錯誤處理函數在接收到 RST 標志,或者連接意外關閉時,由協議棧調用。
注意,當這個函數調用的時候,TCP 控制塊已經釋放掉了。

協議棧通過宏 TCP_EVENT_ERR(last_state,errf,arg,err) 調用 errf 指向的錯誤處理函數,宏 TCP_EVENT_ERR 定義在 tcp_priv.h 中:

#define TCP_EVENT_ERR(last_state,errf,arg,err) \do { \LWIP_UNUSED_ARG(last_state); \if((errf) != NULL) \(errf)((arg),(err)); \} while (0)

可以看到這個宏的第 4 個參數就是傳遞給錯誤處理函數的錯誤碼
以關鍵字 TCP_EVENT_ERR 搜索源碼,可以搜索到 4 處使用:

TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST); TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_CLSD); TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT); TCP_EVENT_ERR(last_state, err_fn, err_arg, ERR_ABRT);

用到了 3 個錯誤碼:ERR_RST、ERR_CLSD 和 ERR_ABRT ,分別表示連接復位、連接關閉和連接異常。

1.連接復位

當遠端連接發送 RST 標志,并且報文序號正確是,調用錯誤類型為 ERR_RST 的錯誤處理回調函數,這一過程在 tcp_input 函數中執行。

void tcp_input(struct pbuf *p, struct netif *inp) {// 經過一系列檢測,沒有錯誤flags = TCPH_FLAGS(tcphdr); // 這里獲取數據包的 [標志] 字段/* 在本地找到有效的控制塊 pcb */if (pcb != NULL) {tcp_input_pcb = pcb;err = tcp_process(pcb); // [標志]中有 RST, 且報文序號正確:recv_flags |= TF_RESET/* A return value of ERR_ABRT means that tcp_abort() was calledand that the pcb has been freed. If so, we don't do anything. */if (err != ERR_ABRT) {if (recv_flags & TF_RESET) {/* TF_RESET means that the connection was reset by the otherend. We then call the error callback to inform theapplication that the connection is dead before wedeallocate the PCB. */TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST);tcp_pcb_remove(&tcp_active_pcbs, pcb);tcp_free(pcb);} }} return; }

tcp_process 函數中關于 RST 標志的判斷代碼:

static err_t tcp_process(struct tcp_pcb *pcb) {/* Process incoming RST segments. */if (flags & TCP_RST) { // flags 保存數據包的 [標志] 字段,在 tcp_input 函數中取得 /* First, determine if the reset is acceptable. */if (pcb->state == SYN_SENT) {/* "In the SYN-SENT state (a RST received in response to an initial SYN),the RST is acceptable if the ACK field acknowledges the SYN." */if (ackno == pcb->snd_nxt) {acceptable = 1;}} else {/* "In all states except SYN-SENT, all reset (RST) segments are validatedby checking their SEQ-fields." */if (seqno == pcb->rcv_nxt) {acceptable = 1;} else if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,pcb->rcv_nxt + pcb->rcv_wnd)) {/* If the sequence number is inside the window, we send a challenge ACKand wait for a re-send with matching sequence number.This follows RFC 5961 section 3.2 and addresses CVE-2004-0230(RST spoofing attack), which is present in RFC 793 RST handling. */tcp_ack_now(pcb);}}if (acceptable) {LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n"));recv_flags |= TF_RESET;tcp_clear_flags(pcb, TF_ACK_DELAY);return ERR_RST;}} }

2.連接關閉

這部分代碼沒有理解清楚,暫時保留

3.連接異常

3.1 由 tcp_abandon 函數調用

tcp_abandon 函數會調用錯誤類型為 ERR_ABRT 的錯誤回調函數,簡化后的代碼為:

void tcp_abandon(struct tcp_pcb *pcb, int reset) {if (pcb->state == TIME_WAIT) {tcp_pcb_remove(&tcp_tw_pcbs, pcb);tcp_free(pcb);} else {// 從鏈表中移除 TCP_PCB// 按需釋放[未應答]、[未發送]、[失序]報文內存// 按需發送 RST 標志// 釋放 TCP_PCB :tcp_free(pcb)TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT); // <-- 這里} }

tcp_abandon 函數又是誰在調用呢?

3.1.1 tcp_listen_input 函數中

在 tcp_listen_input 函數中,檢測接收到 SYN 標志報文,則創建新的 TCP_PCB,然后發送 SYN|ACK 標志報文。在這一過程中,若發送 SYN|ACK 標志報文失敗,則調用 tcp_abandon 函數放棄這個連接,在 tcp_abandon 函數內部會調用錯誤類型為 ERR_ABRT 的錯誤處理回調函數。簡化后的代碼為:

static void tcp_listen_input(struct tcp_pcb_listen *pcb) {/* In the LISTEN state, we check for incoming SYN segments,creates a new PCB, and responds with a SYN|ACK. */if (flags & TCP_SYN) {npcb = tcp_alloc(pcb->prio);/* 這里 TCP PCB 申請成功,初始化新的 PCB*/// ...npcb->state = SYN_RCVD;// .../* Send a SYN|ACK together with the MSS option. */rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK);if (rc != ERR_OK) {tcp_abandon(npcb, 0); // <-- 這里return;}tcp_output(npcb);}return; }

3.1.2 tcp_kill_state 函數中
在《lwIP 細節之二:協議棧什么情況下發送 RST 標志》博文中,有提到 tcp_alloc 函數,tcp_alloc 函數設計原則是盡一切可能返回一個有效的 TCP_PCB 控制塊,因此,當 TCP_PCB 不足時,函數可能 “殺死”(kill)正在使用的連接,以釋放 TCP_PCB 控制塊!
具體就是:

  • 先調用 tcp_kill_timewait 函數,試圖找到 TIME_WAIT 狀態下生存時間最長的連接,如果找到符合條件的控制塊 pcb ,則調用 tcp_abort(pcb) 函數 “殺” 掉這個連接,這會發送 RST 標志,以便通知遠端釋放連接;
  • 如果第 1 步失敗了,則調用 tcp_kill_state 函數,試圖找到 LAST_ACK 和 CLOSING 狀態下生存時間最長的連接,如果找到符合條件的控制塊 pcb ,則調用 tcp_abandon(pcb, 0) 函數 “殺” 掉這個連接,注意這個函數并不會發送 RST 標志,處于這兩種狀態的連接都是等到對方發送的 ACK 就會結束連接,不會有數據丟失;
  • 如果第 2 步也失敗了,則調用 tcp_kill_prio(prio) 函數,試圖找到小于指定優先級(prio)的最低優先級且生存時間最長的有效(active)連接!如果找到符合條件的控制塊 pcb ,則調用 tcp_abort(pcb) 函數 “殺” 掉這個連接,這會發送 RST 標志。
  • 這里的第 2 步,調用 tcp_abandon(pcb, 0) 函數 “殺” 掉這個連接時,會調用 tcp_abandon 函數放棄這個連接,在 tcp_abandon 函數內部會調用錯誤類型為 ERR_ABRT 的錯誤處理回調函數。簡化后的代碼為:

    static void tcp_kill_state(enum tcp_state state) {inactivity = 0;inactive = NULL;/* Go through the list of active pcbs and get the oldest pcb that is in stateCLOSING/LAST_ACK. */for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {if (pcb->state == state) {if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {inactivity = tcp_ticks - pcb->tmr;inactive = pcb;}}}if (inactive != NULL) {LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_closing: killing oldest %s PCB %p (%"S32_F")\n",tcp_state_str[state], (void *)inactive, inactivity));/* Don't send a RST, since no data is lost. */tcp_abandon(inactive, 0);} }

    3.1.3 tcp_abort 函數中
    tcp_abort 函數終止一個連接,會向遠端主機發送一個 RST 標志。這個函數只能在某個 TCP 回調函數中調用,并返回 ERR_ABRT 錯誤碼(其它情況絕不要返回 ERR_ABRT 錯誤碼,否則可能會有內存泄漏的風險或者訪問已經釋放的內存!
    tcp_abort 函數代碼簡單,原始無簡化代碼為:

    void tcp_abort(struct tcp_pcb *pcb) {tcp_abandon(pcb, 1); }
    3.2 由 tcp_slowtmr 函數調用

    tcp_slowtmr 函數中完成重傳和超時處理,當重傳達到設定次數,或者超時達到設定時間,則調用錯誤類型為 ERR_ABRT 的錯誤處理回調函數。

    重傳和超時事件有:

    • PCB 控制塊處于 SYN_SENT 狀態,重傳次數達到 TCP_SYNMAXRTX 次(默認 6 次)
    • PCB 控制塊處于其它狀態,重傳次數達到 TCP_MAXRTX 次(默認 12 次)
    • 堅持定時器探查窗口達到 TCP_MAXRTX 次(默認 12 次)
    • PCB 控制塊處于 FIN_WAIT_2 狀態,超時達到 TCP_FIN_WAIT_TIMEOUT 秒(默認 20 秒)
    • PCB 控制塊處于 SYN_RCVD 狀態,超時達到 TCP_SYN_RCVD_TIMEOUT 秒(默認 20 秒)
    • PCB 控制塊處于 LAST_ACK 狀態,超時達到 2 * TCP_MSL 秒(默認 120 秒)
    • 使能保活、PCB 控制塊處于 ESTABLISHED 或 CLOSE_WAIT 狀態,超時達到 pcb->keep_idle + TCP_KEEP_DUR(pcb) 秒(默認 2 小時 10 分 48 秒)

    tcp_abort 函數簡化后的代碼為:

    /*** Called every 500 ms and implements the retransmission timer and the timer that* removes PCBs that have been in TIME-WAIT for enough time. It also increments* various timers such as the inactivity timer in each PCB.** Automatically called from tcp_tmr().*/ void tcp_slowtmr(void) {while (pcb != NULL) {/* 這里表明處于 CLOSED、LISTEN 和 TIME_WAIT 狀態的連接不會有重傳 */LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);if (pcb->state == SYN_SENT && pcb->nrtx >= TCP_SYNMAXRTX) {++pcb_remove; // 處于SYN_SENT 狀態,重傳達到 6 次LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n"));} else if (pcb->nrtx >= TCP_MAXRTX) {++pcb_remove; // 其它狀態,重傳達到 12 次LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));} else {if (pcb->persist_backoff > 0) {if (pcb->persist_probe >= TCP_MAXRTX) {++pcb_remove; // 探查次數達到 12 次 */}}if (pcb->state == FIN_WAIT_2) {if (pcb->flags & TF_RXCLOSED) {if ((u32_t)(tcp_ticks - pcb->tmr) >TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {++pcb_remove; // 處于 FIN_WAIT_2 狀態,超時達到 20 秒}}}/* 注意只有 ESTABLISHED 和 CLOSE_WAIT 狀態才會有 KEEPALIVE(保活) */if (ip_get_option(pcb, SOF_KEEPALIVE) &&((pcb->state == ESTABLISHED) ||(pcb->state == CLOSE_WAIT))) {if ((u32_t)(tcp_ticks - pcb->tmr) >(pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {++pcb_remove; // 使能保活,超時 2 小時 10 分鐘 48 秒++pcb_reset;} }if (pcb->state == SYN_RCVD) {if ((u32_t)(tcp_ticks - pcb->tmr) >TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {++pcb_remove; // 處于 SYN_RCVD 狀態,超時達到 20 秒}}if (pcb->state == LAST_ACK) {if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {++pcb_remove; // 處于 LAST_ACK 狀態,超時達到 120 秒}}/* 需要移除 PCB 控制塊 */if (pcb_remove) {tcp_pcb_purge(pcb); // 釋放 PCB 中的數據緩沖區(refused_data、unsent、unacked、ooseq)if (prev != NULL) { // 從 tcp_active_pcbs 列表中移除 PCBprev->next = pcb->next;} else {tcp_active_pcbs = pcb->next;}if (pcb_reset) { // 根據需要發送 RST 標志tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,pcb->local_port, pcb->remote_port);}tcp_free(pcb2); // 釋放 PCB 控制塊內存/* 調用錯誤回調函數 */TCP_EVENT_ERR(last_state, err_fn, err_arg, ERR_ABRT);} } }

    connected 回調函數

    在 TCP 控制塊中,函數指針 connected 指向用戶實現的函數,當一個 PCB 連接到遠端主機時,由協議棧調用此函數。
    函數指針 connected 的類型為 tcp_connected_fn,該類型定義在 tcp.h 中:

    /** Function prototype for tcp connected callback functions. Called when a pcb* is connected to the remote side after initiating a connection attempt by* calling tcp_connect().** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param tpcb The connection pcb which is connected* @param err An unused error code, always ERR_OK currently ;-) @todo!* Only return ERR_ABRT if you have called tcp_abort from within the* callback function!** @note When a connection attempt fails, the error callback is currently called!*/ typedef err_t (*tcp_connected_fn)(void *arg, struct tcp_pcb *tpcb, err_t err);

    協議棧通過宏 TCP_EVENT_CONNECTED(pcb,err,ret) 調用 pcb->connected 指向的函數,宏 TCP_EVENT_CONNECTED 定義在 tcp_priv.h 中:

    #define TCP_EVENT_CONNECTED(pcb,err,ret) \do { \if((pcb)->connected != NULL) \(ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \else (ret) = ERR_OK; \} while (0)

    以關鍵字 TCP_EVENT_CONNECTED 搜索源碼,可以搜索到 1 處使用:

    TCP_EVENT_CONNECTED(pcb, ERR_OK, err);

    這句代碼在 tcp_process 函數中,PCB 控制塊處于 SYN_SENT 狀態的連接,收到 SYN + ACK 標志且序號正確,則調用宏 TCP_EVENT_CONNECTED 回調 connected 指向的函數,報告應用層連接

    static err_t tcp_process(struct tcp_pcb *pcb) {/* Do different things depending on the TCP state. */switch (pcb->state) {case SYN_SENT:/* received SYN ACK with expected sequence number? */if ((flags & TCP_ACK) && (flags & TCP_SYN)&& (ackno == pcb->lastack + 1)) {// PCB 字段更新/* Call the user specified function to call when successfully connected. */TCP_EVENT_CONNECTED(pcb, ERR_OK, err);if (err == ERR_ABRT) {return ERR_ABRT;}tcp_ack_now(pcb);}break;}return ERR_OK; }

    accept 回調函數

    在 TCP 控制塊中,函數指針 accept 指向用戶實現的函數,當監聽到有新的連接接入時,由協議棧調用此函數,通知用戶接受了新的連接或者通知用戶內存不足。
    函數指針 accept 的類型為 tcp_accept_fn ,該類型定義在 tcp.h 中:

    /** Function prototype for tcp accept callback functions. Called when a new* connection can be accepted on a listening pcb.** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param newpcb The new connection pcb* @param err An error code if there has been an error accepting.* Only return ERR_ABRT if you have called tcp_abort from within the* callback function!*/ typedef err_t (*tcp_accept_fn)(void *arg, struct tcp_pcb *newpcb, err_t err);

    協議棧通過宏 TCP_EVENT_ACCEPT(lpcb,pcb,arg,err,ret) 調用 lpcb->accept 指向的函數。宏 TCP_EVENT_ACCEPT 定義在 tcp_priv.h 中:

    #define TCP_EVENT_ACCEPT(lpcb,pcb,arg,err,ret) \do { \if((lpcb)->accept != NULL) \(ret) = (lpcb)->accept((arg),(pcb),(err)); \else (ret) = ERR_ARG; \} while (0)

    以關鍵字 TCP_EVENT_ACCEPT 搜索源碼,可以搜索到 2 處使用:

    TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err); TCP_EVENT_ACCEPT(pcb->listener, pcb, pcb->callback_arg, ERR_OK, err);

    1 由 tcp_listen_input 函數調用

    處于 LISTEN 狀態的 TCP 控制塊 ,如果收到客戶端發送的 SYN 同步標志,表示一個客戶端在請求建立連接了。
    lwIP 會為這個新連接申請一個 TCP_PCB ,這一過程在 tcp_listen_input 函數中完成的。然而 TCP_PCB 的個數是有限的,如果申請失敗,則會調用錯誤碼為 ERR_MEM 的 accept 回調函數,向用戶報告內存分配失敗。簡化后的代碼為:

    static void tcp_listen_input(struct tcp_pcb_listen *pcb) {// 通過一系列檢查 沒有錯誤 npcb = tcp_alloc(pcb->prio); // 申請新的 TCP_PCB if (npcb == NULL) { // 內存錯誤處理LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n"));TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err);return;}// 申請成功,初始化新申請的pcbnpcb->state = SYN_RCVD;// 發送 ACK|SYN 標志return; }

    這里需要注意,申請 TCP_PCB 失敗的處理方法,lwIP 2.1.x 版本與 lwIP 1.4.1 不同
    再看看 lwIP 1.4.1 的 tcp_listen_input 函數代碼(經簡化):

    static err_t tcp_listen_input(struct tcp_pcb_listen *pcb) {// 通過一系列檢查 沒有錯誤 npcb = tcp_alloc(pcb->prio); // 申請新的 TCP_PCB if (npcb == NULL) { // 內存錯誤處理LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n"));return ERR_MEM;}// 申請成功,初始化新申請的pcb// 發送 ACK|SYN 標志return ERR_OK; }

    可以看到, lwIP 1.4.1 版本 tcp_listen_input 函數具有返回值,如果申請 TCP_PCB 失敗,則返回 ERR_MEM 錯誤碼。而 lwIP 2.1.x 版本 tcp_listen_input 函數不具有返回值(返回類型為 void ),其次,lwIP 2.1.x 版本處理內存錯誤是通過調用 accept 回調函數來實現的。宏展開代碼(簡化后)如下所示,注意第二個參數為 NULL ,錯誤碼為 ERR_MEM:

    if(pcb->accept != NULL)pcb->accept(pcb->callback_arg, NULL, ERR_MEM);

    這個功能最早是由 Simon Goldschmidt 在 2016-03-23 提交的,提交記錄為:

    tcp: call accept-callback with ERR_MEM when allocating a pcb fails onpassive open to inform the application about this errorATTENTION: applications have to handle NULL pcb in accept callback!

    tcp:在被動打開分配 pcb 失敗時,使用 ERR_MEM 參數調用 accept 回調函數,以通知應用程序有關此錯誤
    注意:應用程序必須在 accept 回調中處理 pcb 句柄為 NULL 的情況!

    這就告訴我們一個重要的信息:lwIP 2.1.x 版本的 accept 回調函數編寫方式與 lwIP 1.4.1 版本不同。lwIP 2.1.x 版本的 accept 回調函數 必須 在 accept 回調中處理 pcb 句柄為 NULL 的情況!!舉個例子。
    lwIP 1.4.1 版本的 accept 回調函數可以這么寫:

    /* 客戶端連接時, 回調此函數 */ static err_t telnet_accept(void *arg, struct tcp_pcb *pcb, err_t err) {char * p_link_info = "已連接到Telnet!\r\n";tcp_recv(pcb,telnet_recv);tcp_err(pcb,NULL);pcb->so_options |= SOF_KEEPALIVE; //增加保活機制tcp_write(pcb, p_link_info, strlen(p_link_info), TCP_WRITE_FLAG_COPY);return ERR_OK; }

    而 lwIP 2.1.x 版本的accept 回調函數需要這么寫:

    /* 客戶端連接時, 回調此函數 */ static err_t telnet_accept(void *arg, struct tcp_pcb *pcb, err_t err) {char * p_link_info = "已連接到Telnet!\r\n";if(pcb == NULL){if(err == ERR_MEM)// 處理 TCP 連接個數不足,可選return ERR_OK;}tcp_recv(pcb,telnet_recv);tcp_err(pcb,NULL);pcb->so_options |= SOF_KEEPALIVE; //增加保活機制tcp_write(pcb, p_link_info, strlen(p_link_info), TCP_WRITE_FLAG_COPY);return ERR_OK; }

    這里對 pcb 句柄是否為 NULL 做了處理,如果檢測到 NULL,accpet 回調函數需要提前退出!。

    2 由 tcp_process 函數調用

    處于 SYN_RCVD 狀態的 TCP 控制塊,如果接收的正確的 ACK 標志,則調用錯誤碼為 ERR_OK 的 accept 回調函數,向用戶報告接受了新的連接。簡化后的代碼為:

    static err_t tcp_process(struct tcp_pcb *pcb) {switch (pcb->state) {case SYN_RCVD:if (flags & TCP_ACK) {/* expected ACK number? */if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) {pcb->state = ESTABLISHED;/* Call the accept function. */TCP_EVENT_ACCEPT(pcb->listener, pcb, pcb->callback_arg, ERR_OK, err);if (err != ERR_OK) {/* If the accept function returns with an error, we abort the connection. */if (err != ERR_ABRT) {tcp_abort(pcb);}return ERR_ABRT;}tcp_receive(pcb);} }break;}return ERR_OK; }

    recv 回調函數

    在 TCP 控制塊中,函數指針 recv 指向用戶實現的函數,當接收到有效數據時,由協議棧調用此函數,通知用戶處理接收到的數據。
    函數指針 recv 的類型為 tcp_recv_fn ,該類型定義在 tcp.h 中:

    /** Function prototype for tcp receive callback functions. Called when data has* been received.** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param tpcb The connection pcb which received data* @param p The received data (or NULL when the connection has been closed!)* @param err An error code if there has been an error receiving* Only return ERR_ABRT if you have called tcp_abort from within the* callback function!*/ typedef err_t (*tcp_recv_fn)(void *arg, struct tcp_pcb *tpcb,struct pbuf *p, err_t err);

    協議棧通過宏 TCP_EVENT_RECV(pcb,p,err,ret) 調用 pcb->recv 指向的函數。宏 TCP_EVENT_RECV 定義在 tcp_priv.h 中:

    #define TCP_EVENT_RECV(pcb,p,err,ret) \do { \if((pcb)->recv != NULL) { \(ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err));\} else { \(ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \} \} while (0)

    以關鍵字 TCP_EVENT_RECV 搜索源碼,可以搜索到 2 處使用:

    TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err);

    1 由 tcp_input 函數調用

    指針 recv_data 是一個 struct pbuf 類型的指針,定義在 tcp_in.c 文件中,是一個靜態變量:

    static struct pbuf *recv_data;

    經過 tcp_process 函數處理后,如果接收到有效數據,則指針 recv_data 指向數據 pbuf ,此時協議棧通過宏 TCP_EVENT_RECV 調用用戶編寫的數據處理函數。

    簡化后的代碼為:

    void tcp_input(struct pbuf *p, struct netif *inp) {// 經過一系列檢測,沒有錯誤/* 在本地找到有效的控制塊 pcb */if (pcb != NULL) {err = tcp_process(pcb);/* A return value of ERR_ABRT means that tcp_abort() was calledand that the pcb has been freed. If so, we don't do anything. */if (err != ERR_ABRT) {if (recv_data != NULL) {/* Notify application that data has been received. */TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);if (err == ERR_ABRT) {goto aborted;}/* If the upper layer can't receive this data, store it */if (err != ERR_OK) {pcb->refused_data = recv_data;LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n"));}}/* Try to send something out. */tcp_output(pcb); // <--- 注意這里調用了發送函數,所以 recv 回調函數就沒必要再調用這個函數}} }

    從以上代碼中可以看出:

  • 回調函數有返回值,若發現異常,用戶層可以主動調用 tcp_abort 函數終止連接,然后返回 ERR_ABRT 錯誤碼,協議棧會完成后續的操作:
  • /* Notify application that data has been received. */ TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); if (err == ERR_ABRT) {goto aborted; }
  • 如果正確的處理了數據,回調函數必須返回 ERR_OK 錯誤碼,否則協議棧會認為用戶沒有接收這包數據,就會對它進行緩存:
  • /* If the upper layer can't receive this data, store it */ if (err != ERR_OK) {pcb->refused_data = recv_data;LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n")); }

    所以上層如果來不及處理數據,可以讓協議棧暫存。這里暫存數據使用了指針 pcb->refused_data ,需要注意一下,因為接下來會再次看到它。

  • 注意這里會調用 TCP 發送函數:
  • /* Try to send something out. */ tcp_output(pcb);

    在 recv 回調函數中,處理完接收到的數據后,通常我們還會調用 tcp_write 函數回送數據。函數原型為:

    /*** @ingroup tcp_raw* Write data for sending (but does not send it immediately).** It waits in the expectation of more data being sent soon (as* it can send them more efficiently by combining them together).* To prompt the system to send data now, call tcp_output() after* calling tcp_write().* * This function enqueues the data pointed to by the argument dataptr. The length of* the data is passed as the len parameter. The apiflags can be one or more of:* - TCP_WRITE_FLAG_COPY: indicates whether the new memory should be allocated* for the data to be copied into. If this flag is not given, no new memory* should be allocated and the data should only be referenced by pointer. This* also means that the memory behind dataptr must not change until the data is* ACKed by the remote host* - TCP_WRITE_FLAG_MORE: indicates that more data follows. If this is omitted,* the PSH flag is set in the last segment created by this call to tcp_write.* If this flag is given, the PSH flag is not set.** The tcp_write() function will fail and return ERR_MEM if the length* of the data exceeds the current send buffer size or if the length of* the queue of outgoing segment is larger than the upper limit defined* in lwipopts.h. The number of bytes available in the output queue can* be retrieved with the tcp_sndbuf() function.** The proper way to use this function is to call the function with at* most tcp_sndbuf() bytes of data. If the function returns ERR_MEM,* the application should wait until some of the currently enqueued* data has been successfully received by the other host and try again.** @param pcb Protocol control block for the TCP connection to enqueue data for.* @param arg Pointer to the data to be enqueued for sending.* @param len Data length in bytes* @param apiflags combination of following flags :* - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack* - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will not be set on last segment sent,* @return ERR_OK if enqueued, another err_t on error*/ err_t tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags)

    通過注釋可以得知,這個函數會盡可能把發送的數據組合在一起,然后一次性發送出去,因為這樣更有效率。換句話說,調用這個函數并不會立即發送數據,如果希望立即發送數據,需要在調用 tcp_write 函數之后調用 tcp_output 函數。

    而現在我們又知道了,在 tcp_input 函數中,調用 recv 回調函數后,協議棧會執行一次 tcp_output 函數,這就是我們在 recv 回調函數中調用 tcp_write 函數能夠立即將數據發送出去的原因!

    2 由 tcp_process_refused_data 函數調用

    在上一節提到 “上層如果來不及處理數據,可以讓協議棧暫存。這里暫存數據使用了指針 pcb->refused_data ”,而 tcp_process_refused_data 函數就是把暫存的數據重新提交給應用層處理。提交的方法是調用 recv 回調函數,簡化后的代碼為:

    err_t tcp_process_refused_data(struct tcp_pcb *pcb) {/* set pcb->refused_data to NULL in case the callback frees it and thencloses the pcb */struct pbuf *refused_data = pcb->refused_data;pcb->refused_data = NULL;/* Notify again application with data previously received. */TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err);if (err == ERR_ABRT) {return ERR_ABRT;} else if(err != ERR_OK){/* data is still refused, pbuf is still valid (go on for ACK-only packets) */pcb->refused_data = refused_data;return ERR_INPROGRESS;}return ERR_OK; }

    協議棧會在兩處調用 tcp_process_refused_data 函數。
    2.1 在 tcp_input 函數中調用

    void tcp_input(struct pbuf *p, struct netif *inp) {// 經過一系列檢測,沒有錯誤/* 在本地找到有效的控制塊 pcb */if (pcb != NULL) {/* If there is data which was previously "refused" by upper layer */if (pcb->refused_data != NULL) {if ((tcp_process_refused_data(pcb) == ERR_ABRT) || // <--- 這里((pcb->refused_data != NULL) && (tcplen > 0))) {/* pcb has been aborted or refused data is still refused and the new segment contains data */if (pcb->rcv_ann_wnd == 0) {/* this is a zero-window probe, we respond to it with current RCV.NXTand drop the data segment */tcp_send_empty_ack(pcb);}goto aborted;}}err = tcp_process(pcb);/* A return value of ERR_ABRT means that tcp_abort() was calledand that the pcb has been freed. If so, we don't do anything. */if (err != ERR_ABRT) {if (recv_data != NULL) {/* Notify application that data has been received. */TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);if (err == ERR_ABRT) {goto aborted;}/* If the upper layer can't receive this data, store it */if (err != ERR_OK) {pcb->refused_data = recv_data;}}/* Try to send something out. */tcp_output(pcb);}} }

    通過以上代碼可以知道:

  • 在處理接收數據之前,先檢查一下是否有上次暫存的數據,如果有則調用 tcp_process_refused_data 函數,將暫存數據上報給應用層處理。
  • 無論上層有多少數據沒有處理,協議棧只暫存最后一次接收且上層沒有處理的數據:
  • /* If the upper layer can't receive this data, store it */ if (err != ERR_OK) {pcb->refused_data = recv_data; }

    2.2 在 tcp_fasttmr 函數中調用
    協議棧每隔 TCP_TMR_INTERVAL (默認 250)毫秒調用一次 tcp_fasttmr 函數,在這個函數中會檢查 TCP_PCB 是否有尚未給上層應用處理的暫存數據,如果有則調用 tcp_process_refused_data 函數,將暫存數據上報給應用層處理。簡化后的代碼為:

    void tcp_fasttmr(void) {++tcp_timer_ctr;tcp_fasttmr_start:pcb = tcp_active_pcbs;while (pcb != NULL) {if (pcb->last_timer != tcp_timer_ctr) {next = pcb->next;/* If there is data which was previously "refused" by upper layer */if (pcb->refused_data != NULL) {tcp_active_pcbs_changed = 0;tcp_process_refused_data(pcb); // <--- 這里if (tcp_active_pcbs_changed) {/* application callback has changed the pcb list: restart the loop */goto tcp_fasttmr_start;}}pcb = next;} else {pcb = pcb->next;}} }

    recv 函數的復用行為

    前面看到了錯誤回調函數、連接成功回調函數、接收到數據回調函數,后面還會看到發送成功回調函數等。那么我們合理推測,應該也有連接關閉回調函數。在連接關閉時,協議棧確實回調了一個函數,但這個函數也是 recv 回調函數!協議棧并沒有提供單獨的連接關閉回調函數,而是復用了 recv 回調函數。協議棧使用宏 TCP_EVENT_CLOSED 封裝了這一過程,代碼為:

    #define TCP_EVENT_CLOSED(pcb,ret) \do { \if(((pcb)->recv != NULL)) { \(ret) = (pcb)->recv((pcb)->callback_arg,(pcb),NULL,ERR_OK);\} else { \(ret) = ERR_OK; \} \} while (0)

    注意調用 recv 函數時,第 3 個參數為 NULL ,這很重要。我們又知道,recv 的原型為:

    typedef err_t (*tcp_recv_fn)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err);

    所以第三個參數是 struct pbuf 型指針。
    也就是說,我們必須在 recv 回調函數中處理 pbuf 指針為 NULL 的特殊情況,這表示遠端主動關閉了連接,這時我們應主動調用 tcp_close 函數,關閉本地連接。一個典型的 recv 回調函數框架為:

    static err_t app_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) {if (p == NULL) {// 連接關閉前的處理,可選tcp_close(pcb);} else {if (err != ERR_OK) {// 目前還沒有使用 ERR_OK 之外的回調參數,這里兼容以后的協議棧pbuf_free(p);return err;}// 更新窗口值,必須調用tcp_recved(pcb,p->tot_len);// 在這里處理接收到的數據// 釋放 pbuf,必須 pbuf_free(p);}return ERR_OK; }

    協議棧在 tci_input 函數中調用宏 TCP_EVENT_CLOSED ,簡化后的代碼為:

    void tcp_input(struct pbuf *p, struct netif *inp) {// 經過一系列檢測,沒有錯誤/* 在本地找到有效的控制塊 pcb */if (pcb != NULL) {err = tcp_process(pcb);if (err != ERR_ABRT) {if (recv_flags & TF_RESET) {// 收到 RST 標志,回調 errf 函數TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST);tcp_pcb_remove(&tcp_active_pcbs, pcb);tcp_free(pcb);} else {if (recv_acked > 0) {// 收到數據 ACK 應答,回調 sent 函數TCP_EVENT_SENT(pcb, (u16_t)acked16, err);if (err == ERR_ABRT) {goto aborted;}recv_acked = 0;}if (recv_data != NULL) {// 收到有效數據, 回調 recv 函數TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);if (err == ERR_ABRT) {goto aborted;}}if (recv_flags & TF_GOT_FIN) {// 收到 FIN 標志,回調 recv 函數,遠端關閉連接TCP_EVENT_CLOSED(pcb, err); // <--- 這里if (err == ERR_ABRT) {goto aborted;}}/* Try to send something out. */tcp_output(pcb);}}} }

    sent 回調函數

    在 TCP 控制塊中,函數指針 sent 指向用戶實現的函數,當成功發送數據后,由協議棧調用此函數,通知用戶數據已成功發送。
    函數指針 sent 的類型為 tcp_sent_fn ,該類型定義在 tcp.h 中:

    /** Function prototype for tcp sent callback functions. Called when sent data has* been acknowledged by the remote side. Use it to free corresponding resources.* This also means that the pcb has now space available to send new data.** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param tpcb The connection pcb for which data has been acknowledged* @param len The amount of bytes acknowledged* @return ERR_OK: try to send some data by calling tcp_output* Only return ERR_ABRT if you have called tcp_abort from within the* callback function!*/ typedef err_t (*tcp_sent_fn)(void *arg, struct tcp_pcb *tpcb,u16_t len);

    通過注釋可以知道當數據成功發送后(收到遠端主機 ACK 應答),調用 sent 回調函數,用于釋放某些資源(如果用到的話)。這也意味著 PCB 現在有可以發送新的數據的空間了。
    協議棧通過宏 TCP_EVENT_SENT(pcb,space,ret) 調用 pcb->sent 指向的函數。宏 TCP_EVENT_SENT 定義在 tcp_priv.h 中:

    #define TCP_EVENT_SENT(pcb,space,ret) \do { \if((pcb)->sent != NULL) \(ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \else (ret) = ERR_OK; \} while (0)

    以關鍵字 TCP_EVENT_SENT 搜索源碼,可以搜索到 1 處使用:

    TCP_EVENT_SENT(pcb, (u16_t)acked16, err);

    這是在 tcp_input 函數中,如果收到數據 ACK 應答,則回調 sent 函數,應答的數據字節數作為參數傳到到回調函數。

    void tcp_input(struct pbuf *p, struct netif *inp) {// 經過一系列檢測,沒有錯誤/* 在本地找到有效的控制塊 pcb */if (pcb != NULL) {err = tcp_process(pcb);if (err != ERR_ABRT) {if (recv_flags & TF_RESET) {// 收到 RST 標志,回調 errf 函數TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST);tcp_pcb_remove(&tcp_active_pcbs, pcb);tcp_free(pcb);} else {if (recv_acked > 0) {// 收到數據 ACK 應答,回調 sent 函數TCP_EVENT_SENT(pcb, (u16_t)acked16, err); // <--- 這里if (err == ERR_ABRT) {goto aborted;}recv_acked = 0;}if (recv_data != NULL) {// 收到有效數據, 回調 recv 函數TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);if (err == ERR_ABRT) {goto aborted;}}if (recv_flags & TF_GOT_FIN) {// 收到 FIN 標志,回調 recv 函數,遠端關閉連接TCP_EVENT_CLOSED(pcb, err); if (err == ERR_ABRT) {goto aborted;}}/* Try to send something out. */tcp_output(pcb);}}} }

    poll 回調函數

    在 TCP 控制塊中,函數指針 poll 指向用戶實現的函數,協議棧周期性的調用此函數,“周期“由用戶在注冊回調函數時指定,最小為 TCP_SLOW_INTERVAL 毫秒(默認 500),用戶層可以使用這個回調函數做一些周期性處理。
    函數指針 poll 的類型為 tcp_poll_fn ,該類型定義在 tcp.h 中:

    /** Function prototype for tcp poll callback functions. Called periodically as* specified by @see tcp_poll.** @param arg Additional argument to pass to the callback function (@see tcp_arg())* @param tpcb tcp pcb* @return ERR_OK: try to send some data by calling tcp_output* Only return ERR_ABRT if you have called tcp_abort from within the* callback function!*/ typedef err_t (*tcp_poll_fn)(void *arg, struct tcp_pcb *tpcb);

    協議棧通過宏 TCP_EVENT_POLL(pcb,ret) 調用 pcb->poll 指向的函數。宏 TCP_EVENT_POLL 定義在 tcp_priv.h 中:

    #define TCP_EVENT_POLL(pcb,ret) \do { \if((pcb)->poll != NULL) \(ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \else (ret) = ERR_OK; \} while (0)

    以關鍵字 TCP_EVENT_POLL 搜索源碼,可以搜索到 1 處使用:

    TCP_EVENT_POLL(prev, err);

    這是在 tcp_slowtmr 函數中,當達到設定的時間時,調用 poll 回調函數。簡化后的代碼為:

    void tcp_slowtmr(void) {++prev->polltmr;if (prev->polltmr >= prev->pollinterval) {prev->polltmr = 0;TCP_EVENT_POLL(prev, err); // <-- 這里/* if err == ERR_ABRT, 'prev' is already deallocated */if (err == ERR_OK) {tcp_output(prev);}}} }






    讀后有收獲,資助博主養娃 - 千金難買知識,但可以買好多奶粉 (〃‘▽’〃)

    總結

    以上是生活随笔為你收集整理的lwIP 细节之三:TCP 回调函数是何时调用的的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    av在线亚洲欧洲日产一区二区 | 人妻互换免费中文字幕 | 中文字幕+乱码+中文字幕一区 | 日本一区二区三区免费播放 | 少妇高潮一区二区三区99 | 国产精品久久久 | 亚洲成av人片在线观看无码不卡 | 99国产欧美久久久精品 | 色婷婷综合激情综在线播放 | 日本丰满护士爆乳xxxx | 日韩在线不卡免费视频一区 | 国产另类ts人妖一区二区 | 伊人久久大香线蕉亚洲 | 人妻少妇精品无码专区动漫 | 最近免费中文字幕中文高清百度 | 亚洲伊人久久精品影院 | 欧美精品一区二区精品久久 | 又大又硬又黄的免费视频 | 伊人久久婷婷五月综合97色 | 久久久久久久女国产乱让韩 | 色婷婷综合中文久久一本 | 搡女人真爽免费视频大全 | 日日噜噜噜噜夜夜爽亚洲精品 | 99国产精品白浆在线观看免费 | 十八禁真人啪啪免费网站 | 色婷婷av一区二区三区之红樱桃 | 全球成人中文在线 | 久久人人爽人人爽人人片av高清 | 免费国产成人高清在线观看网站 | 久久久久99精品成人片 | 少女韩国电视剧在线观看完整 | 国产色在线 | 国产 | 日韩av无码中文无码电影 | 极品嫩模高潮叫床 | 欧美丰满老熟妇xxxxx性 | 麻豆av传媒蜜桃天美传媒 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 性色欲情网站iwww九文堂 | 欧洲vodafone精品性 | 欧美日韩视频无码一区二区三 | 激情综合激情五月俺也去 | 天天拍夜夜添久久精品大 | 最新国产乱人伦偷精品免费网站 | 久久99精品国产麻豆蜜芽 | 久久人人97超碰a片精品 | 久热国产vs视频在线观看 | 老司机亚洲精品影院无码 | 中文字幕 亚洲精品 第1页 | 亚洲国产精华液网站w | 性生交大片免费看女人按摩摩 | 亚洲熟女一区二区三区 | 精品成人av一区二区三区 | 国产卡一卡二卡三 | 亚洲成av人片在线观看无码不卡 | 亚洲精品一区二区三区大桥未久 | 国产乱子伦视频在线播放 | 成人动漫在线观看 | 欧美激情内射喷水高潮 | 亚洲乱码中文字幕在线 | 国产精品无码久久av | 久久久久亚洲精品中文字幕 | 内射老妇bbwx0c0ck | 国产成人午夜福利在线播放 | 亚洲午夜福利在线观看 | 无码人妻少妇伦在线电影 | 欧美国产亚洲日韩在线二区 | 永久免费观看美女裸体的网站 | 亚洲成a人片在线观看无码3d | 扒开双腿疯狂进出爽爽爽视频 | 粉嫩少妇内射浓精videos | 久久www免费人成人片 | 欧美熟妇另类久久久久久多毛 | 亚洲欧洲无卡二区视頻 | 久久久久免费看成人影片 | 六十路熟妇乱子伦 | 国产另类ts人妖一区二区 | 亚洲国产欧美国产综合一区 | 麻豆精品国产精华精华液好用吗 | 亚洲国产精品毛片av不卡在线 | 55夜色66夜色国产精品视频 | 少妇太爽了在线观看 | 性欧美熟妇videofreesex | 动漫av网站免费观看 | a在线亚洲男人的天堂 | 日韩欧美中文字幕公布 | 国产av剧情md精品麻豆 | √天堂资源地址中文在线 | 人妻少妇被猛烈进入中文字幕 | 精品 日韩 国产 欧美 视频 | 中文字幕人妻无码一区二区三区 | 波多野结衣av一区二区全免费观看 | 精品国产av色一区二区深夜久久 | 色综合天天综合狠狠爱 | 在线观看欧美一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 一本一道久久综合久久 | 人妻与老人中文字幕 | 久在线观看福利视频 | 久久久久久亚洲精品a片成人 | 全黄性性激高免费视频 | 国产情侣作爱视频免费观看 | 国产午夜手机精彩视频 | 国产精品亚洲五月天高清 | 国产欧美精品一区二区三区 | 人妻互换免费中文字幕 | 少妇的肉体aa片免费 | 亚洲精品久久久久中文第一幕 | 久久婷婷五月综合色国产香蕉 | 国产无遮挡吃胸膜奶免费看 | 欧洲熟妇精品视频 | 久久99精品久久久久久 | 免费国产黄网站在线观看 | 1000部啪啪未满十八勿入下载 | 国产av一区二区三区最新精品 | 精品无码国产一区二区三区av | 国产极品视觉盛宴 | 色综合视频一区二区三区 | 国产精品久久精品三级 | 曰韩少妇内射免费播放 | 色婷婷香蕉在线一区二区 | 无码午夜成人1000部免费视频 | 扒开双腿吃奶呻吟做受视频 | 精品国产一区二区三区四区 | 鲁鲁鲁爽爽爽在线视频观看 | 东京热一精品无码av | 欧美freesex黑人又粗又大 | 欧美兽交xxxx×视频 | 一本色道婷婷久久欧美 | 日本www一道久久久免费榴莲 | 樱花草在线社区www | 国产精品久久久av久久久 | 亚洲成a人片在线观看日本 | 久久久久久a亚洲欧洲av冫 | 丰满人妻一区二区三区免费视频 | 99久久精品午夜一区二区 | 精品久久久久久亚洲精品 | 欧美日韩一区二区三区自拍 | 久久午夜夜伦鲁鲁片无码免费 | 特大黑人娇小亚洲女 | www成人国产高清内射 | 鲁大师影院在线观看 | 国内丰满熟女出轨videos | 亚洲狠狠色丁香婷婷综合 | 又湿又紧又大又爽a视频国产 | 婷婷六月久久综合丁香 | 日日天日日夜日日摸 | 欧美 日韩 人妻 高清 中文 | 在线精品国产一区二区三区 | 亚洲国产精品久久久久久 | 久久国产精品萌白酱免费 | 久久久久99精品国产片 | 国产激情无码一区二区app | 丰满人妻一区二区三区免费视频 | 97精品国产97久久久久久免费 | 最新版天堂资源中文官网 | 亚洲日本va午夜在线电影 | 国产莉萝无码av在线播放 | 亚洲国产日韩a在线播放 | 天天摸天天透天天添 | 人妻无码αv中文字幕久久琪琪布 | 免费网站看v片在线18禁无码 | 国产综合久久久久鬼色 | 亚洲第一网站男人都懂 | 精品亚洲韩国一区二区三区 | 少妇激情av一区二区 | 1000部啪啪未满十八勿入下载 | 精品人人妻人人澡人人爽人人 | 成人无码视频在线观看网站 | 扒开双腿吃奶呻吟做受视频 | 永久黄网站色视频免费直播 | 无码吃奶揉捏奶头高潮视频 | 2020久久超碰国产精品最新 | 荫蒂添的好舒服视频囗交 | 日韩av无码一区二区三区不卡 | 日本精品人妻无码免费大全 | 无码国产乱人伦偷精品视频 | 丰满少妇高潮惨叫视频 | ass日本丰满熟妇pics | 日产精品高潮呻吟av久久 | 天堂а√在线地址中文在线 | 国产婷婷色一区二区三区在线 | 成人女人看片免费视频放人 | 国产av久久久久精东av | 国产精品久久久久无码av色戒 | 天天躁夜夜躁狠狠是什么心态 | 国产成人久久精品流白浆 | 亚洲日韩乱码中文无码蜜桃臀网站 | 婷婷六月久久综合丁香 | 国产人妖乱国产精品人妖 | 久久亚洲中文字幕无码 | 国产女主播喷水视频在线观看 | 国产精品第一国产精品 | 成人影院yy111111在线观看 | 亚洲国产一区二区三区在线观看 | 色老头在线一区二区三区 | 天天摸天天透天天添 | 1000部夫妻午夜免费 | 中文字幕精品av一区二区五区 | 亚洲の无码国产の无码步美 | 国产另类ts人妖一区二区 | 377p欧洲日本亚洲大胆 | 亚洲国产欧美在线成人 | 国产97人人超碰caoprom | 精品无码成人片一区二区98 | 色婷婷综合激情综在线播放 | 午夜肉伦伦影院 | 国内丰满熟女出轨videos | 秋霞成人午夜鲁丝一区二区三区 | 性欧美大战久久久久久久 | 亚洲成色在线综合网站 | 老熟妇仑乱视频一区二区 | 熟妇人妻无乱码中文字幕 | 男女性色大片免费网站 | 色欲久久久天天天综合网精品 | 欧美日韩一区二区免费视频 | 成人精品天堂一区二区三区 | av香港经典三级级 在线 | 人妻少妇精品视频专区 | 亚洲精品成人福利网站 | 亚洲一区二区三区含羞草 | 在线播放免费人成毛片乱码 | 国产亚av手机在线观看 | 精品国产一区二区三区四区在线看 | 无码人妻久久一区二区三区不卡 | 久久精品女人天堂av免费观看 | 国产无套内射久久久国产 | 无码国产乱人伦偷精品视频 | 伊人久久大香线蕉亚洲 | 国产sm调教视频在线观看 | 免费播放一区二区三区 | 日本丰满熟妇videos | 99麻豆久久久国产精品免费 | 麻豆成人精品国产免费 | 丝袜人妻一区二区三区 | 在线欧美精品一区二区三区 | 色五月丁香五月综合五月 | 人人妻人人澡人人爽欧美一区 | 亚洲人成人无码网www国产 | 少妇无套内谢久久久久 | 永久免费精品精品永久-夜色 | 97色伦图片97综合影院 | 无码av中文字幕免费放 | 国内揄拍国内精品人妻 | 精品国产麻豆免费人成网站 | 久久这里只有精品视频9 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品久久久久无码av色戒 | 人人爽人人澡人人高潮 | 亚洲色欲色欲天天天www | 国产美女精品一区二区三区 | 亚洲精品成人福利网站 | 国产美女精品一区二区三区 | 国内精品一区二区三区不卡 | 永久免费观看美女裸体的网站 | 在教室伦流澡到高潮hnp视频 | 学生妹亚洲一区二区 | 99riav国产精品视频 | 免费看男女做好爽好硬视频 | 日本护士xxxxhd少妇 | 18精品久久久无码午夜福利 | 国产成人精品久久亚洲高清不卡 | 亚洲国产av美女网站 | 无码人妻精品一区二区三区不卡 | 国产成人精品久久亚洲高清不卡 | 国产又爽又黄又刺激的视频 | 欧美日韩综合一区二区三区 | 亚洲第一无码av无码专区 | 性色av无码免费一区二区三区 | 激情爆乳一区二区三区 | 1000部啪啪未满十八勿入下载 | 成人无码视频在线观看网站 | 99久久精品国产一区二区蜜芽 | 亚洲码国产精品高潮在线 | 欧美 日韩 人妻 高清 中文 | 在线欧美精品一区二区三区 | 久久精品中文字幕一区 | 性开放的女人aaa片 | a国产一区二区免费入口 | 国产精华av午夜在线观看 | 国产女主播喷水视频在线观看 | √天堂中文官网8在线 | 欧美三级不卡在线观看 | 精品国产精品久久一区免费式 | 国产精品手机免费 | 亚洲欧洲日本综合aⅴ在线 | 国产精品久免费的黄网站 | 日产精品高潮呻吟av久久 | 国产69精品久久久久app下载 | 欧美 日韩 亚洲 在线 | 免费男性肉肉影院 | 免费网站看v片在线18禁无码 | 亚洲中文字幕无码一久久区 | 少妇人妻偷人精品无码视频 | 毛片内射-百度 | 动漫av一区二区在线观看 | 丁香啪啪综合成人亚洲 | 伊人久久大香线焦av综合影院 | 国产成人一区二区三区在线观看 | 国产人妻久久精品二区三区老狼 | 精品久久久久久亚洲精品 | 日本一本二本三区免费 | 精品夜夜澡人妻无码av蜜桃 | 国产激情综合五月久久 | а天堂中文在线官网 | 思思久久99热只有频精品66 | 国产av一区二区三区最新精品 | 欧美精品国产综合久久 | 久久成人a毛片免费观看网站 | 亚洲经典千人经典日产 | 亚洲人成网站免费播放 | 成人综合网亚洲伊人 | 午夜精品久久久内射近拍高清 | 国产无遮挡吃胸膜奶免费看 | a片在线免费观看 | 免费无码午夜福利片69 | 日本精品久久久久中文字幕 | 撕开奶罩揉吮奶头视频 | 伊人久久婷婷五月综合97色 | 色婷婷av一区二区三区之红樱桃 | 日日橹狠狠爱欧美视频 | 日本熟妇浓毛 | 久久久久久久久888 | 国产欧美精品一区二区三区 | 日本肉体xxxx裸交 | 日本精品高清一区二区 | 日韩精品一区二区av在线 | 秋霞成人午夜鲁丝一区二区三区 | 成人三级无码视频在线观看 | 在线亚洲高清揄拍自拍一品区 | 大肉大捧一进一出视频出来呀 | 欧洲精品码一区二区三区免费看 | 日韩精品无码一区二区中文字幕 | 免费人成网站视频在线观看 | 性生交大片免费看l | 色一情一乱一伦一视频免费看 | 欧美日本精品一区二区三区 | 久久视频在线观看精品 | 亚洲成av人在线观看网址 | 亚洲一区二区三区四区 | 日本丰满护士爆乳xxxx | 免费视频欧美无人区码 | 99久久99久久免费精品蜜桃 | 国产成人精品必看 | 精品偷自拍另类在线观看 | 日本丰满熟妇videos | 伦伦影院午夜理论片 | 日日天日日夜日日摸 | 亚洲精品一区二区三区四区五区 | 国产亚洲精品久久久久久久久动漫 | 日本xxxx色视频在线观看免费 | 精品国产一区二区三区av 性色 | 中文字幕人妻无码一区二区三区 | 日产国产精品亚洲系列 | 欧美日韩久久久精品a片 | 国产一区二区三区四区五区加勒比 | 久久综合九色综合97网 | 精品国偷自产在线 | 熟妇女人妻丰满少妇中文字幕 | 亚洲成av人片在线观看无码不卡 | 亚洲中文字幕在线观看 | 色窝窝无码一区二区三区色欲 | 亚洲一区二区三区国产精华液 | 久久国产精品精品国产色婷婷 | 国产综合久久久久鬼色 | 欧美性生交活xxxxxdddd | 99久久久国产精品无码免费 | 成人试看120秒体验区 | 精品国产一区二区三区av 性色 | 少妇性l交大片欧洲热妇乱xxx | 久久97精品久久久久久久不卡 | 黑人大群体交免费视频 | 99麻豆久久久国产精品免费 | 中文字幕无码热在线视频 | 在线观看国产一区二区三区 | 国产成人精品久久亚洲高清不卡 | 国语精品一区二区三区 | www国产亚洲精品久久久日本 | 亚洲综合无码一区二区三区 | 亚洲第一无码av无码专区 | 国产无套内射久久久国产 | 国产乱人伦偷精品视频 | 国内丰满熟女出轨videos | 天天爽夜夜爽夜夜爽 | 丰满人妻精品国产99aⅴ | 青草青草久热国产精品 | 国产乱人伦偷精品视频 | 日本熟妇浓毛 | 无码免费一区二区三区 | 精品 日韩 国产 欧美 视频 | 国产免费久久久久久无码 | 亚洲国产精品一区二区美利坚 | 亚洲国精产品一二二线 | 伦伦影院午夜理论片 | 久久国产精品萌白酱免费 | 亚洲精品综合五月久久小说 | 亚洲人成网站免费播放 | 亚洲日本一区二区三区在线 | 国产精品久久久久影院嫩草 | 亚洲色欲久久久综合网东京热 | 国产亚洲人成在线播放 | 国产人妻大战黑人第1集 | 久久精品国产99精品亚洲 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 性生交片免费无码看人 | 麻豆国产人妻欲求不满谁演的 | 亚洲人成无码网www | 精品欧洲av无码一区二区三区 | 中文字幕 亚洲精品 第1页 | 国产精品久久久久7777 | 荫蒂被男人添的好舒服爽免费视频 | 天堂无码人妻精品一区二区三区 | 精品无码国产一区二区三区av | 久久人人爽人人爽人人片av高清 | 国产人妖乱国产精品人妖 | 精品成人av一区二区三区 | 欧美真人作爱免费视频 | 日本丰满熟妇videos | 欧美第一黄网免费网站 | 亚洲精品久久久久中文第一幕 | 男人的天堂2018无码 | 免费观看又污又黄的网站 | 狠狠色噜噜狠狠狠狠7777米奇 | 图片区 小说区 区 亚洲五月 | 亚洲成av人在线观看网址 | 国产两女互慰高潮视频在线观看 | 噜噜噜亚洲色成人网站 | 牲交欧美兽交欧美 | 日日碰狠狠躁久久躁蜜桃 | 精品久久久久香蕉网 | 九九久久精品国产免费看小说 | 国产精华av午夜在线观看 | 久久国产精品二国产精品 | 国产精品爱久久久久久久 | 天天拍夜夜添久久精品大 | 51国偷自产一区二区三区 | 一本色道久久综合亚洲精品不卡 | 国产成人久久精品流白浆 | 国产亚洲精品久久久久久大师 | 欧美老熟妇乱xxxxx | 国产suv精品一区二区五 | 亚洲 高清 成人 动漫 | 国产亚洲精品久久久久久 | 久久精品丝袜高跟鞋 | 国产精品欧美成人 | 天干天干啦夜天干天2017 | 国产做国产爱免费视频 | 特大黑人娇小亚洲女 | 99久久人妻精品免费二区 | 亚洲综合久久一区二区 | 国产精品美女久久久网av | 久热国产vs视频在线观看 | 无码任你躁久久久久久久 | 激情综合激情五月俺也去 | 亚洲精品中文字幕乱码 | 无码免费一区二区三区 | 狂野欧美性猛xxxx乱大交 | 久久久精品成人免费观看 | 欧美老妇与禽交 | 国精品人妻无码一区二区三区蜜柚 | 99麻豆久久久国产精品免费 | 免费国产成人高清在线观看网站 | 亚洲人成网站在线播放942 | 国产极品美女高潮无套在线观看 | 国产乱人伦av在线无码 | 国产区女主播在线观看 | 麻豆md0077饥渴少妇 | 亚洲乱码中文字幕在线 | www国产亚洲精品久久网站 | 无码乱肉视频免费大全合集 | 在线а√天堂中文官网 | 中文字幕亚洲情99在线 | 露脸叫床粗话东北少妇 | 欧美 日韩 人妻 高清 中文 | 特级做a爰片毛片免费69 | 日韩精品乱码av一区二区 | 精品国偷自产在线视频 | 久久久久人妻一区精品色欧美 | 动漫av一区二区在线观看 | 蜜桃无码一区二区三区 | 全球成人中文在线 | 97久久精品无码一区二区 | 国产办公室秘书无码精品99 | 国産精品久久久久久久 | 久久午夜无码鲁丝片午夜精品 | 无码一区二区三区在线观看 | 5858s亚洲色大成网站www | 亚洲天堂2017无码中文 | 一本久道高清无码视频 | 婷婷五月综合缴情在线视频 | 性欧美熟妇videofreesex | 久久婷婷五月综合色国产香蕉 | 又色又爽又黄的美女裸体网站 | 在线精品国产一区二区三区 | 特大黑人娇小亚洲女 | 久久精品女人天堂av免费观看 | 99视频精品全部免费免费观看 | 国语自产偷拍精品视频偷 | 亚洲日韩av一区二区三区中文 | 欧美熟妇另类久久久久久多毛 | 国产亚洲视频中文字幕97精品 | 成人片黄网站色大片免费观看 | 无人区乱码一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 人妻少妇精品视频专区 | 日本www一道久久久免费榴莲 | 欧美野外疯狂做受xxxx高潮 | 天堂在线观看www | 亚洲小说春色综合另类 | 久久久久亚洲精品中文字幕 | 国产又爽又黄又刺激的视频 | 久久久精品国产sm最大网站 | 好爽又高潮了毛片免费下载 | 日日摸日日碰夜夜爽av | 亚洲中文字幕乱码av波多ji | 澳门永久av免费网站 | 欧美一区二区三区视频在线观看 | 无码精品国产va在线观看dvd | 人妻少妇精品视频专区 | 老熟女重囗味hdxx69 | 亚洲熟悉妇女xxx妇女av | 日日摸夜夜摸狠狠摸婷婷 | 国产精品丝袜黑色高跟鞋 | 人人妻人人澡人人爽精品欧美 | 内射后入在线观看一区 | 最近免费中文字幕中文高清百度 | 亚洲精品国偷拍自产在线观看蜜桃 | 成人三级无码视频在线观看 | 国产精品久久久久无码av色戒 | 亚洲精品鲁一鲁一区二区三区 | 我要看www免费看插插视频 | 亚洲七七久久桃花影院 | 国产成人精品视频ⅴa片软件竹菊 | 色婷婷香蕉在线一区二区 | 伊在人天堂亚洲香蕉精品区 | 中文字幕中文有码在线 | 人妻有码中文字幕在线 | 色妞www精品免费视频 | 男女猛烈xx00免费视频试看 | 特黄特色大片免费播放器图片 | 无码帝国www无码专区色综合 | 亚洲日本va午夜在线电影 | 中国大陆精品视频xxxx | 国产亚洲日韩欧美另类第八页 | 白嫩日本少妇做爰 | 国产深夜福利视频在线 | 久久久www成人免费毛片 | 国产又粗又硬又大爽黄老大爷视 | 狠狠cao日日穞夜夜穞av | 欧美色就是色 | 99久久无码一区人妻 | 乱人伦中文视频在线观看 | 精品久久久久久人妻无码中文字幕 | 中文字幕无码日韩专区 | 精品无码一区二区三区爱欲 | 国产人妻人伦精品 | 乱人伦人妻中文字幕无码久久网 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品久久久久久亚洲精品 | 熟妇人妻中文av无码 | 丰满少妇熟乱xxxxx视频 | 少妇性l交大片欧洲热妇乱xxx | 青春草在线视频免费观看 | 欧美日韩色另类综合 | 亚洲日本va中文字幕 | 牲欲强的熟妇农村老妇女视频 | 好屌草这里只有精品 | 又大又硬又黄的免费视频 | 亚洲 欧美 激情 小说 另类 | 欧美freesex黑人又粗又大 | 国产亚洲美女精品久久久2020 | 综合人妻久久一区二区精品 | 久久视频在线观看精品 | 人妻互换免费中文字幕 | 中文字幕 人妻熟女 | 亚洲人成影院在线观看 | 99久久久无码国产精品免费 | 狠狠色欧美亚洲狠狠色www | 娇妻被黑人粗大高潮白浆 | 成人欧美一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 成人aaa片一区国产精品 | 精品久久久久久人妻无码中文字幕 | 国产精品高潮呻吟av久久 | 无码免费一区二区三区 | 未满小14洗澡无码视频网站 | 欧美一区二区三区 | 无码人妻出轨黑人中文字幕 | 桃花色综合影院 | 97无码免费人妻超级碰碰夜夜 | 国产片av国语在线观看 | 在线欧美精品一区二区三区 | 天天做天天爱天天爽综合网 | 亚洲色大成网站www | 无码精品国产va在线观看dvd | 国产精品资源一区二区 | 亚洲国产精品久久久久久 | 无套内谢老熟女 | 久久99精品久久久久久动态图 | 欧美人与物videos另类 | 国产超级va在线观看视频 | 国产无遮挡又黄又爽又色 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久久国产一区二区三区 | 免费无码av一区二区 | 久久久久亚洲精品中文字幕 | 无码吃奶揉捏奶头高潮视频 | 亚洲欧美日韩综合久久久 | 亚洲 另类 在线 欧美 制服 | 国产午夜福利100集发布 | 18禁黄网站男男禁片免费观看 | 国产一区二区三区影院 | 蜜臀av无码人妻精品 | 亚洲欧洲中文日韩av乱码 | 少妇邻居内射在线 | 国产午夜亚洲精品不卡 | 亚洲熟妇自偷自拍另类 | 牲交欧美兽交欧美 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲成av人在线观看网址 | 性生交大片免费看l | 亚洲国产精品一区二区第一页 | 日本一区二区三区免费播放 | 国产精品久久久久久久影院 | 久久精品国产大片免费观看 | 亚洲成av人综合在线观看 | 最新版天堂资源中文官网 | 中文字幕无码热在线视频 | 国产凸凹视频一区二区 | 亚洲精品久久久久久久久久久 | 午夜福利电影 | 黑人巨大精品欧美一区二区 | 国产精品国产自线拍免费软件 | 国产乱人伦av在线无码 | 日日摸夜夜摸狠狠摸婷婷 | 国产成人无码区免费内射一片色欲 | 精品国产一区二区三区四区 | 熟女俱乐部五十路六十路av | 2020久久香蕉国产线看观看 | 99精品国产综合久久久久五月天 | 午夜熟女插插xx免费视频 | 亚洲日本va中文字幕 | 一本久道高清无码视频 | 亚洲男人av香蕉爽爽爽爽 | 日韩少妇内射免费播放 | 97精品国产97久久久久久免费 | 中文字幕精品av一区二区五区 | 亚洲精品中文字幕久久久久 | 亚洲成a人片在线观看日本 | 日产国产精品亚洲系列 | 一本久道久久综合婷婷五月 | 国产情侣作爱视频免费观看 | 国产午夜无码精品免费看 | 国产97色在线 | 免 | 丰满人妻一区二区三区免费视频 | 国产精品成人av在线观看 | 欧美性猛交内射兽交老熟妇 | 人人妻人人澡人人爽人人精品浪潮 | 久久亚洲日韩精品一区二区三区 | 97se亚洲精品一区 | 国产精品手机免费 | 国产国语老龄妇女a片 | 中文字幕人妻无码一区二区三区 | 国产精品久久久久久亚洲毛片 | 亚洲中文字幕va福利 | 精品久久8x国产免费观看 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲s色大片在线观看 | 美女毛片一区二区三区四区 | 亚洲精品国产品国语在线观看 | 初尝人妻少妇中文字幕 | 婷婷丁香五月天综合东京热 | 装睡被陌生人摸出水好爽 | 中国女人内谢69xxxxxa片 | 亚洲成av人综合在线观看 | 国产精品欧美成人 | 99久久亚洲精品无码毛片 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕无码热在线视频 | 欧美成人午夜精品久久久 | 国产人妻人伦精品1国产丝袜 | 蜜臀av无码人妻精品 | 国产偷国产偷精品高清尤物 | 97无码免费人妻超级碰碰夜夜 | 99精品国产综合久久久久五月天 | 午夜不卡av免费 一本久久a久久精品vr综合 | 四虎4hu永久免费 | 亚洲天堂2017无码中文 | 少妇久久久久久人妻无码 | 国产莉萝无码av在线播放 | 午夜肉伦伦影院 | 麻豆成人精品国产免费 | 夜夜高潮次次欢爽av女 | 国产97人人超碰caoprom | 成人一在线视频日韩国产 | 精品久久久无码人妻字幂 | 国产成人无码av片在线观看不卡 | 国产偷自视频区视频 | 亚洲一区二区三区含羞草 | 亚洲大尺度无码无码专区 | 台湾无码一区二区 | 午夜理论片yy44880影院 | 一本加勒比波多野结衣 | 美女毛片一区二区三区四区 | 亚洲欧洲中文日韩av乱码 | 色一情一乱一伦一区二区三欧美 | 精品欧洲av无码一区二区三区 | 欧美精品无码一区二区三区 | 极品尤物被啪到呻吟喷水 | 亚洲精品国偷拍自产在线麻豆 | 国产精品18久久久久久麻辣 | 精品久久久久香蕉网 | 精品久久久无码中文字幕 | 四虎国产精品免费久久 | 免费无码肉片在线观看 | 东京热一精品无码av | 一本久久伊人热热精品中文字幕 | 日韩精品a片一区二区三区妖精 | 亚欧洲精品在线视频免费观看 | 欧美性猛交xxxx富婆 | 欧美高清在线精品一区 | 欧美成人免费全部网站 | 亚洲国产日韩a在线播放 | 无码免费一区二区三区 | a在线亚洲男人的天堂 | 妺妺窝人体色www在线小说 | 蜜桃视频韩日免费播放 | 精品人妻人人做人人爽夜夜爽 | 高清无码午夜福利视频 | 国产成人综合在线女婷五月99播放 | 精品亚洲韩国一区二区三区 | 亚洲色无码一区二区三区 | 精品午夜福利在线观看 | 1000部夫妻午夜免费 | 男女爱爱好爽视频免费看 | 亚洲 高清 成人 动漫 | 综合激情五月综合激情五月激情1 | 成人无码视频免费播放 | 亚洲理论电影在线观看 | 亚洲色www成人永久网址 | 欧美人与善在线com | 九月婷婷人人澡人人添人人爽 | 国产偷国产偷精品高清尤物 | 亚洲欧美精品aaaaaa片 | 好爽又高潮了毛片免费下载 | 亚洲国产精华液网站w | 久久久无码中文字幕久... | 久久综合给合久久狠狠狠97色 | 波多野结衣高清一区二区三区 | 奇米影视7777久久精品人人爽 | 国产xxx69麻豆国语对白 | 免费看少妇作爱视频 | 日韩欧美中文字幕在线三区 | 久久久久成人片免费观看蜜芽 | 清纯唯美经典一区二区 | 成 人影片 免费观看 | 人妻少妇精品无码专区二区 | 青草视频在线播放 | 久久天天躁狠狠躁夜夜免费观看 | 午夜精品一区二区三区在线观看 | 人人妻人人澡人人爽欧美一区九九 | 亚洲精品国产精品乱码不卡 | 亚洲国产一区二区三区在线观看 | 欧美日韩在线亚洲综合国产人 | 久久久婷婷五月亚洲97号色 | 蜜臀aⅴ国产精品久久久国产老师 | 少妇无码一区二区二三区 | 国内老熟妇对白xxxxhd | 人人妻在人人 | 77777熟女视频在线观看 а天堂中文在线官网 | 无码成人精品区在线观看 | 精品人人妻人人澡人人爽人人 | 99er热精品视频 | 人妻夜夜爽天天爽三区 | a国产一区二区免费入口 | 欧美精品免费观看二区 | 最近中文2019字幕第二页 | 天干天干啦夜天干天2017 | 丰满少妇人妻久久久久久 | 国产亚洲精品久久久久久久久动漫 | 俺去俺来也www色官网 | 老熟女乱子伦 | 强伦人妻一区二区三区视频18 | 亚洲精品一区二区三区四区五区 | 国内老熟妇对白xxxxhd | 免费无码午夜福利片69 | 欧美精品免费观看二区 | 欧美日韩精品 | 人妻人人添人妻人人爱 | 国产成人无码专区 | 亚洲国产av精品一区二区蜜芽 | 国产口爆吞精在线视频 | 久久精品国产日本波多野结衣 | 久久亚洲日韩精品一区二区三区 | 久久国内精品自在自线 | 国内少妇偷人精品视频免费 | 亚洲狠狠婷婷综合久久 | 国产精品igao视频网 | 国产人妻人伦精品 | 国产两女互慰高潮视频在线观看 | 久久国产精品_国产精品 | 亚洲欧美综合区丁香五月小说 | 人人妻人人澡人人爽精品欧美 | 日本免费一区二区三区最新 | 亚洲精品一区二区三区大桥未久 | v一区无码内射国产 | av在线亚洲欧洲日产一区二区 | 国产无av码在线观看 | 风流少妇按摩来高潮 | 免费网站看v片在线18禁无码 | 99久久人妻精品免费一区 | 亚洲人成人无码网www国产 | 色诱久久久久综合网ywww | 亚洲精品中文字幕久久久久 | 丰满岳乱妇在线观看中字无码 | 欧美猛少妇色xxxxx | 伊在人天堂亚洲香蕉精品区 | 欧美国产日韩久久mv | 色综合久久88色综合天天 | 国产三级久久久精品麻豆三级 | 窝窝午夜理论片影院 | 亚洲经典千人经典日产 | 人妻少妇被猛烈进入中文字幕 | 国产偷自视频区视频 | 日本一区二区三区免费高清 | 300部国产真实乱 | 亚洲欧美中文字幕5发布 | 中文字幕无线码 | 国产精品对白交换视频 | 国产精品高潮呻吟av久久4虎 | 无码国产色欲xxxxx视频 | 国产av无码专区亚洲a∨毛片 | 免费无码一区二区三区蜜桃大 | 欧美成人免费全部网站 | 精品国产aⅴ无码一区二区 | 欧美日韩一区二区三区自拍 | 亚洲成在人网站无码天堂 | 国产国产精品人在线视 | 欧美成人家庭影院 | 一本久道久久综合婷婷五月 | 精品无码av一区二区三区 | 国产成人av免费观看 | 久久久久99精品成人片 | 久久久久亚洲精品中文字幕 | 亚洲精品一区二区三区四区五区 | 国产av无码专区亚洲a∨毛片 | 99久久人妻精品免费一区 | 中文无码成人免费视频在线观看 | 真人与拘做受免费视频一 | 国产精品毛片一区二区 | 亚洲色大成网站www国产 | 成熟女人特级毛片www免费 | 18精品久久久无码午夜福利 | 国产69精品久久久久app下载 | 国产乱人伦偷精品视频 | 最近免费中文字幕中文高清百度 | 亚洲爆乳精品无码一区二区三区 | 成 人 网 站国产免费观看 | 成人无码视频在线观看网站 | 久久亚洲日韩精品一区二区三区 | 色情久久久av熟女人妻网站 | 亚洲成a人片在线观看无码3d | 欧美自拍另类欧美综合图片区 | 亚洲综合久久一区二区 | 国产av人人夜夜澡人人爽麻豆 | 鲁大师影院在线观看 | 国产精品亚洲а∨无码播放麻豆 | 熟女少妇在线视频播放 | 久久国产36精品色熟妇 | 玩弄中年熟妇正在播放 | 国产在线精品一区二区高清不卡 | 亚洲va欧美va天堂v国产综合 | 少妇人妻偷人精品无码视频 | 高潮喷水的毛片 | 国产精品va在线观看无码 | 麻豆成人精品国产免费 | 色一情一乱一伦 | 日日碰狠狠躁久久躁蜜桃 | 人妻体内射精一区二区三四 | 久久综合九色综合97网 | 少妇一晚三次一区二区三区 | 无码av岛国片在线播放 | 88国产精品欧美一区二区三区 | 狂野欧美性猛交免费视频 | 国产无遮挡吃胸膜奶免费看 | 人妻与老人中文字幕 | 国产精品久久久久无码av色戒 | 婷婷五月综合激情中文字幕 | 无码人妻黑人中文字幕 | 欧美人与牲动交xxxx | 国产97人人超碰caoprom | 娇妻被黑人粗大高潮白浆 | 欧洲精品码一区二区三区免费看 | 国产精品国产自线拍免费软件 | 西西人体www44rt大胆高清 | 激情爆乳一区二区三区 | 国产精品无码久久av | 青青草原综合久久大伊人精品 | 日本一本二本三区免费 | 无套内谢的新婚少妇国语播放 | 亚洲区小说区激情区图片区 | 激情亚洲一区国产精品 | 天堂久久天堂av色综合 | 人妻少妇精品视频专区 | 青春草在线视频免费观看 | 中文字幕乱码亚洲无线三区 | 免费观看黄网站 | 未满成年国产在线观看 | 精品国产乱码久久久久乱码 | 玩弄中年熟妇正在播放 | 日本精品人妻无码免费大全 | 成人免费视频视频在线观看 免费 | 成熟女人特级毛片www免费 | 成人性做爰aaa片免费看 | 日日橹狠狠爱欧美视频 | 日本熟妇浓毛 | 人妻体内射精一区二区三四 | 亚洲阿v天堂在线 | 国产激情综合五月久久 | 在线精品亚洲一区二区 | 日韩亚洲欧美精品综合 | 成人精品天堂一区二区三区 | 欧美阿v高清资源不卡在线播放 | 人人妻人人澡人人爽人人精品 | 天天做天天爱天天爽综合网 | 色诱久久久久综合网ywww | 丰满人妻精品国产99aⅴ | 强伦人妻一区二区三区视频18 | 77777熟女视频在线观看 а天堂中文在线官网 | 欧美老熟妇乱xxxxx | 成人三级无码视频在线观看 | 在线播放无码字幕亚洲 | 国产成人一区二区三区在线观看 | 亚洲va欧美va天堂v国产综合 | 国产亚洲精品久久久久久久久动漫 | 日韩精品无码一本二本三本色 | 亚洲va中文字幕无码久久不卡 | 帮老师解开蕾丝奶罩吸乳网站 | 免费观看黄网站 | 精品国产一区av天美传媒 | 51国偷自产一区二区三区 | 亚洲成a人片在线观看无码3d | 国产免费久久精品国产传媒 | 中文字幕av无码一区二区三区电影 | 亚洲人成网站在线播放942 | 国产精品a成v人在线播放 | 亚洲中文字幕在线无码一区二区 | 亚洲欧洲无卡二区视頻 | 国产精品久久久久久久9999 | 澳门永久av免费网站 | 爆乳一区二区三区无码 | 欧美激情内射喷水高潮 | 久久熟妇人妻午夜寂寞影院 | 日韩少妇白浆无码系列 | 人人爽人人爽人人片av亚洲 | 国产亚洲精品久久久ai换 | 亚洲欧美精品aaaaaa片 | 国产农村乱对白刺激视频 | 亚洲欧洲日本无在线码 | 亚洲天堂2017无码中文 | 欧美日韩精品 | 亚洲精品一区二区三区在线观看 | 国产九九九九九九九a片 | 日日摸天天摸爽爽狠狠97 | 日日鲁鲁鲁夜夜爽爽狠狠 | 天堂在线观看www | 国产无遮挡又黄又爽又色 | 亚洲阿v天堂在线 | 亚洲国产精华液网站w | 对白脏话肉麻粗话av | 欧美老人巨大xxxx做受 | 国内综合精品午夜久久资源 | 精品久久久久香蕉网 | 久久精品女人的天堂av | 国产亚洲日韩欧美另类第八页 | 亚洲欧美日韩成人高清在线一区 | 天天躁日日躁狠狠躁免费麻豆 | 久久久精品成人免费观看 | a在线观看免费网站大全 | 97精品人妻一区二区三区香蕉 | 福利一区二区三区视频在线观看 | 国产情侣作爱视频免费观看 | av无码电影一区二区三区 | 国产人成高清在线视频99最全资源 | 国产亚洲精品久久久久久大师 | 国产农村乱对白刺激视频 | 国产尤物精品视频 | 精品无码一区二区三区爱欲 | 日本丰满熟妇videos | 中文字幕人妻无码一区二区三区 | 乱人伦中文视频在线观看 | 天天爽夜夜爽夜夜爽 | 亚洲人成网站免费播放 | 亚洲娇小与黑人巨大交 | 熟妇激情内射com | 久久久精品456亚洲影院 | 久久精品国产一区二区三区肥胖 | 欧美人与善在线com | 精品午夜福利在线观看 | 婷婷综合久久中文字幕蜜桃三电影 | 人妻有码中文字幕在线 | 国产精品第一国产精品 | 亚洲精品一区二区三区大桥未久 | 国产午夜亚洲精品不卡下载 | 午夜肉伦伦影院 | 久久99久久99精品中文字幕 | 欧美日韩一区二区三区自拍 | 男人扒开女人内裤强吻桶进去 | 欧美一区二区三区视频在线观看 | 无码播放一区二区三区 | 色偷偷人人澡人人爽人人模 | 亚洲色在线无码国产精品不卡 | 亚洲国产日韩a在线播放 | 久久久久久av无码免费看大片 | 天天躁夜夜躁狠狠是什么心态 | 一区二区传媒有限公司 | 久久天天躁夜夜躁狠狠 | 成 人 网 站国产免费观看 | 免费观看的无遮挡av | 欧美成人午夜精品久久久 | 小sao货水好多真紧h无码视频 | 国产成人精品三级麻豆 | 男女超爽视频免费播放 | 色婷婷av一区二区三区之红樱桃 | 东北女人啪啪对白 | 亚洲一区二区三区播放 | 欧美熟妇另类久久久久久多毛 | 成人无码精品1区2区3区免费看 | 2019午夜福利不卡片在线 | 人妻少妇被猛烈进入中文字幕 | 国内少妇偷人精品视频免费 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 中文字幕日产无线码一区 | 99精品国产综合久久久久五月天 | 久久国语露脸国产精品电影 | 一本无码人妻在中文字幕免费 | 欧洲精品码一区二区三区免费看 | 国产卡一卡二卡三 | 亚洲乱码中文字幕在线 | 天天摸天天透天天添 | 亚洲欧洲中文日韩av乱码 | 中文字幕无码视频专区 | 天堂а√在线地址中文在线 | 久久久久免费精品国产 | 国产香蕉97碰碰久久人人 | 久在线观看福利视频 | 99久久亚洲精品无码毛片 | 国产人妻精品午夜福利免费 | 天干天干啦夜天干天2017 | 国产福利视频一区二区 | 国产超级va在线观看视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 欧美大屁股xxxxhd黑色 | 香港三级日本三级妇三级 | 精品国产一区二区三区四区 | 夜精品a片一区二区三区无码白浆 | 久久97精品久久久久久久不卡 | 欧美性生交xxxxx久久久 | 男人的天堂2018无码 | 精品一区二区不卡无码av | 国产人妖乱国产精品人妖 | 亚洲精品中文字幕乱码 | 蜜桃视频韩日免费播放 | 国产亚洲精品精品国产亚洲综合 | 水蜜桃色314在线观看 | 搡女人真爽免费视频大全 | 好爽又高潮了毛片免费下载 | 性生交大片免费看女人按摩摩 | 久久99精品国产.久久久久 | www国产亚洲精品久久久日本 | 少女韩国电视剧在线观看完整 | 内射巨臀欧美在线视频 | 国产亚洲日韩欧美另类第八页 | 玩弄中年熟妇正在播放 | 蜜臀aⅴ国产精品久久久国产老师 | 老头边吃奶边弄进去呻吟 | 国产真人无遮挡作爱免费视频 | 久久婷婷五月综合色国产香蕉 | 亚洲国产精品美女久久久久 | 一二三四在线观看免费视频 | 国内精品九九久久久精品 | 精品日本一区二区三区在线观看 | 国产高清不卡无码视频 | 黑人玩弄人妻中文在线 | 俺去俺来也在线www色官网 | 国产成人午夜福利在线播放 | 人人妻人人澡人人爽欧美一区 | 美女黄网站人色视频免费国产 | 日韩视频 中文字幕 视频一区 | 成人欧美一区二区三区黑人免费 | 九月婷婷人人澡人人添人人爽 | 亚洲一区二区三区偷拍女厕 | 亚洲精品欧美二区三区中文字幕 | 国产精品a成v人在线播放 | 六十路熟妇乱子伦 | 久久久久久久女国产乱让韩 | 撕开奶罩揉吮奶头视频 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲一区二区三区香蕉 | 九九综合va免费看 | 国内少妇偷人精品视频 | 免费国产黄网站在线观看 | 中文字幕无码日韩欧毛 | 精品无码一区二区三区的天堂 | 国産精品久久久久久久 | 无遮挡啪啪摇乳动态图 | 伊人久久大香线蕉av一区二区 | 日韩精品无码免费一区二区三区 | 丰满护士巨好爽好大乳 | 精品偷拍一区二区三区在线看 | www国产亚洲精品久久网站 | 狠狠色噜噜狠狠狠7777奇米 | 老太婆性杂交欧美肥老太 | 在线成人www免费观看视频 | 白嫩日本少妇做爰 | 亚洲日韩乱码中文无码蜜桃臀网站 | 色狠狠av一区二区三区 | 鲁大师影院在线观看 | 免费看男女做好爽好硬视频 | 国产偷自视频区视频 | 最近的中文字幕在线看视频 | 内射巨臀欧美在线视频 | 日产国产精品亚洲系列 | 妺妺窝人体色www在线小说 | 永久黄网站色视频免费直播 | 久久精品人妻少妇一区二区三区 | 九九综合va免费看 | 牲交欧美兽交欧美 | 国产成人无码a区在线观看视频app | 亚洲小说图区综合在线 | 小泽玛莉亚一区二区视频在线 | 女人和拘做爰正片视频 | 中文字幕久久久久人妻 | 成 人影片 免费观看 | 欧美亚洲国产一区二区三区 | 永久黄网站色视频免费直播 | 樱花草在线播放免费中文 | 无码国内精品人妻少妇 | 国产在线精品一区二区三区直播 | 久久综合香蕉国产蜜臀av | 国产精品人妻一区二区三区四 | 曰韩无码二三区中文字幕 | 青草青草久热国产精品 | 极品尤物被啪到呻吟喷水 | 乱人伦中文视频在线观看 | 国产女主播喷水视频在线观看 | 久久精品国产日本波多野结衣 | 97精品国产97久久久久久免费 | 欧美午夜特黄aaaaaa片 | 亚洲毛片av日韩av无码 | 国产精品成人av在线观看 | www国产精品内射老师 | 国产午夜福利100集发布 | 欧美人与物videos另类 | 麻豆果冻传媒2021精品传媒一区下载 | 日韩精品无码一本二本三本色 | 曰韩少妇内射免费播放 | 麻豆成人精品国产免费 | 狠狠色欧美亚洲狠狠色www | 日日躁夜夜躁狠狠躁 | 欧美第一黄网免费网站 | 东北女人啪啪对白 | 亚洲精品国偷拍自产在线麻豆 | 无码人妻精品一区二区三区下载 | 内射老妇bbwx0c0ck | 少妇性l交大片 | 51国偷自产一区二区三区 | 久久成人a毛片免费观看网站 | 无码帝国www无码专区色综合 | 人妻aⅴ无码一区二区三区 | 久久久久亚洲精品中文字幕 | 在线观看国产一区二区三区 | 亚洲熟妇自偷自拍另类 | 欧美喷潮久久久xxxxx | 国产精品va在线播放 | 男人的天堂2018无码 | 国产 浪潮av性色四虎 | 亚洲精品一区三区三区在线观看 | 一本一道久久综合久久 | 久久国产精品萌白酱免费 | 国产精品多人p群无码 | 日韩人妻少妇一区二区三区 | 亚洲va欧美va天堂v国产综合 | 欧美日韩色另类综合 | 波多野结衣乳巨码无在线观看 | 久久成人a毛片免费观看网站 | 日本大乳高潮视频在线观看 | 亚洲中文字幕在线无码一区二区 | 中文字幕久久久久人妻 | 在线天堂新版最新版在线8 | 亚洲中文无码av永久不收费 | 午夜精品久久久久久久 | 欧美日本免费一区二区三区 | 久久精品国产亚洲精品 | 无码精品国产va在线观看dvd | 日本又色又爽又黄的a片18禁 | www国产亚洲精品久久久日本 | 老熟妇仑乱视频一区二区 | 国产精品国产自线拍免费软件 | 欧美性生交xxxxx久久久 | 亚洲s色大片在线观看 | 纯爱无遮挡h肉动漫在线播放 | 日韩少妇内射免费播放 | 欧美自拍另类欧美综合图片区 | 欧美丰满少妇xxxx性 | 国产乱人偷精品人妻a片 | 亚洲成色www久久网站 | 伊人色综合久久天天小片 | 丰满少妇熟乱xxxxx视频 | 久久久久久a亚洲欧洲av冫 | 精品人妻av区 | 老熟女乱子伦 | 亚洲色大成网站www | 亚洲呦女专区 | 噜噜噜亚洲色成人网站 | 欧美人与动性行为视频 | 欧美高清在线精品一区 | 成人三级无码视频在线观看 | 国内精品久久久久久中文字幕 | 国产精品久久久久9999小说 | 国产国产精品人在线视 | 女人和拘做爰正片视频 | 国产一区二区三区精品视频 | 亚洲成av人片在线观看无码不卡 | 男女爱爱好爽视频免费看 | 98国产精品综合一区二区三区 | 亚洲乱码中文字幕在线 | 一二三四社区在线中文视频 | 无套内谢的新婚少妇国语播放 | 免费中文字幕日韩欧美 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲第一网站男人都懂 | 亚洲aⅴ无码成人网站国产app | 精品厕所偷拍各类美女tp嘘嘘 | 欧美老妇交乱视频在线观看 | 亚洲国产一区二区三区在线观看 | 久久久国产一区二区三区 | 中文字幕无线码 | 伊人色综合久久天天小片 | 18禁黄网站男男禁片免费观看 | 午夜丰满少妇性开放视频 | 久久久婷婷五月亚洲97号色 | 无码精品人妻一区二区三区av | 亚无码乱人伦一区二区 | 中文无码伦av中文字幕 | 色一情一乱一伦 | 人妻无码久久精品人妻 | 久久久久久久久蜜桃 | 精品午夜福利在线观看 | 国产亚洲日韩欧美另类第八页 | 激情内射日本一区二区三区 | 国产无遮挡又黄又爽又色 | 免费无码午夜福利片69 | 又大又黄又粗又爽的免费视频 | 乌克兰少妇性做爰 | 麻豆av传媒蜜桃天美传媒 | 无码国产激情在线观看 | 久久久www成人免费毛片 | 亚洲啪av永久无码精品放毛片 | 99麻豆久久久国产精品免费 | 一本色道久久综合亚洲精品不卡 | 国产精品国产三级国产专播 | 又粗又大又硬毛片免费看 | 欧美亚洲国产一区二区三区 | 成人免费视频在线观看 | 伊人久久大香线蕉午夜 | 99国产精品白浆在线观看免费 | 丁香花在线影院观看在线播放 | 波多野42部无码喷潮在线 | 国产成人午夜福利在线播放 | 人人妻人人澡人人爽欧美一区九九 | 蜜桃视频插满18在线观看 | 国产色视频一区二区三区 | 国产亲子乱弄免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 少妇无码吹潮 | 久久综合狠狠综合久久综合88 | 一本色道久久综合亚洲精品不卡 | 国产亚洲视频中文字幕97精品 | 男人和女人高潮免费网站 | 亚洲综合精品香蕉久久网 | 中文久久乱码一区二区 | 无码国模国产在线观看 | 国产97在线 | 亚洲 | 天堂一区人妻无码 | 亚洲精品无码人妻无码 | 中文久久乱码一区二区 | 国产精品久久久久无码av色戒 | 国产午夜无码精品免费看 | 动漫av一区二区在线观看 | 少妇被黑人到高潮喷出白浆 | 国产明星裸体无码xxxx视频 | 色欲av亚洲一区无码少妇 | 在线视频网站www色 | 亚洲精品成人福利网站 | 婷婷丁香五月天综合东京热 | 国产亚洲人成a在线v网站 | 国产亚洲精品久久久久久久久动漫 | 亚洲欧美精品伊人久久 | 亚洲无人区午夜福利码高清完整版 | 人人妻人人澡人人爽欧美精品 | 亚洲精品一区二区三区大桥未久 | 老太婆性杂交欧美肥老太 | aⅴ在线视频男人的天堂 | 成人毛片一区二区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 伊在人天堂亚洲香蕉精品区 | 欧美丰满老熟妇xxxxx性 | 亚洲成a人片在线观看无码3d | 日本护士xxxxhd少妇 | 国产精品无码mv在线观看 | 亚洲自偷精品视频自拍 | 亚洲自偷精品视频自拍 | 亚洲色欲色欲天天天www | 免费人成在线观看网站 | 国产成人无码午夜视频在线观看 | 啦啦啦www在线观看免费视频 | 久久人人爽人人人人片 | 国内综合精品午夜久久资源 | 我要看www免费看插插视频 | 澳门永久av免费网站 | 波多野42部无码喷潮在线 | 久久精品视频在线看15 | 天堂无码人妻精品一区二区三区 | 久久综合狠狠综合久久综合88 | 中文久久乱码一区二区 | 偷窥村妇洗澡毛毛多 | 天天拍夜夜添久久精品 | 日本爽爽爽爽爽爽在线观看免 | 对白脏话肉麻粗话av | 国产人妻精品一区二区三区不卡 | 色欲人妻aaaaaaa无码 | 久久综合给久久狠狠97色 | 亚洲精品美女久久久久久久 | 18精品久久久无码午夜福利 | 午夜熟女插插xx免费视频 | 国产无遮挡吃胸膜奶免费看 | 亚洲熟悉妇女xxx妇女av | 亚洲综合久久一区二区 | 精品国产成人一区二区三区 | 欧美阿v高清资源不卡在线播放 | 国产综合久久久久鬼色 | 亚欧洲精品在线视频免费观看 | 精品国产国产综合精品 | 亚洲日本va午夜在线电影 | 日韩少妇内射免费播放 | 国产人妻精品一区二区三区不卡 | 亚洲中文字幕在线观看 | 麻豆精品国产精华精华液好用吗 | 精品无码国产自产拍在线观看蜜 | 99久久精品午夜一区二区 | 2020久久超碰国产精品最新 | 伊人久久婷婷五月综合97色 | 亚洲成av人影院在线观看 | 国产成人无码一二三区视频 | 色 综合 欧美 亚洲 国产 | 丰满少妇熟乱xxxxx视频 | 中文字幕av无码一区二区三区电影 | 国产内射爽爽大片视频社区在线 | 亚洲 欧美 激情 小说 另类 | 欧美xxxxx精品 | 亚洲欧洲日本无在线码 | 国产欧美亚洲精品a | 成人av无码一区二区三区 | 亚洲一区二区三区香蕉 | 中文字幕色婷婷在线视频 | 国内精品人妻无码久久久影院蜜桃 | 久久久久成人精品免费播放动漫 | 国产精品18久久久久久麻辣 | 国产人妻人伦精品 | 久久久久se色偷偷亚洲精品av | 国产偷抇久久精品a片69 | 少妇无码一区二区二三区 | 国产成人精品一区二区在线小狼 | 国产福利视频一区二区 | 国产美女精品一区二区三区 | 日本va欧美va欧美va精品 | 99麻豆久久久国产精品免费 | 国产婷婷色一区二区三区在线 | 亚洲成av人综合在线观看 | 中文字幕无码热在线视频 | 国产97在线 | 亚洲 | 色欲av亚洲一区无码少妇 | 四虎国产精品免费久久 | 国产精品久久久久久亚洲影视内衣 | 97色伦图片97综合影院 | 日韩精品久久久肉伦网站 | 奇米影视7777久久精品人人爽 | 日韩精品无码一本二本三本色 | 国产麻豆精品精东影业av网站 | 一本久道久久综合狠狠爱 | 欧美人与禽zoz0性伦交 | 男女超爽视频免费播放 | 亚洲精品久久久久中文第一幕 | 亚洲综合另类小说色区 | 国产精品嫩草久久久久 | www成人国产高清内射 | 成年美女黄网站色大免费全看 | 国产精品久久久久久无码 | 国产乱人伦av在线无码 | 国产内射老熟女aaaa | 亚洲日韩精品欧美一区二区 | 亚洲一区二区三区在线观看网站 | 国产真实伦对白全集 | 亚洲小说图区综合在线 | 日产精品99久久久久久 | 国产偷自视频区视频 | 国产人成高清在线视频99最全资源 | 国产精品国产自线拍免费软件 | 狠狠色噜噜狠狠狠7777奇米 | 精品久久综合1区2区3区激情 | 精品成人av一区二区三区 | 国产午夜视频在线观看 | 日本欧美一区二区三区乱码 | 丰满人妻被黑人猛烈进入 | 婷婷色婷婷开心五月四房播播 | www成人国产高清内射 | 午夜福利试看120秒体验区 | 亚洲精品久久久久avwww潮水 | 午夜福利一区二区三区在线观看 | 免费无码一区二区三区蜜桃大 | 久久熟妇人妻午夜寂寞影院 | 少妇激情av一区二区 | 一本无码人妻在中文字幕免费 | 欧美亚洲日韩国产人成在线播放 | 成人性做爰aaa片免费看 | 三级4级全黄60分钟 | 久久成人a毛片免费观看网站 | 国产亚洲精品久久久久久国模美 | 欧美亚洲日韩国产人成在线播放 | 无码人妻精品一区二区三区下载 | 成在人线av无码免观看麻豆 | 成人试看120秒体验区 | 狠狠亚洲超碰狼人久久 | 人人妻人人藻人人爽欧美一区 | 四虎影视成人永久免费观看视频 | 亚洲精品一区国产 | 国产农村妇女高潮大叫 | 中文字幕无码免费久久9一区9 | 中文久久乱码一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 午夜福利不卡在线视频 | 久久亚洲中文字幕无码 | 精品欧美一区二区三区久久久 | 宝宝好涨水快流出来免费视频 | 国产成人无码午夜视频在线观看 | 亚洲成av人影院在线观看 | 国产香蕉尹人综合在线观看 | 伊人久久大香线焦av综合影院 | 欧美人与牲动交xxxx | 欧美丰满老熟妇xxxxx性 | 亚洲精品欧美二区三区中文字幕 | 色综合天天综合狠狠爱 | 乱码av麻豆丝袜熟女系列 | 黑人粗大猛烈进出高潮视频 | 欧美亚洲日韩国产人成在线播放 | 亚洲色欲色欲欲www在线 | 中文字幕久久久久人妻 | 国产猛烈高潮尖叫视频免费 | 国产午夜视频在线观看 | 水蜜桃亚洲一二三四在线 | 亚洲人成网站免费播放 | 久久精品中文闷骚内射 | 成人一区二区免费视频 | 国产av久久久久精东av | 一本色道久久综合亚洲精品不卡 | 99国产精品白浆在线观看免费 | 欧美性生交xxxxx久久久 | 午夜理论片yy44880影院 | 国产精品亚洲lv粉色 | 精品久久久无码人妻字幂 | 亚洲精品国产第一综合99久久 | 正在播放东北夫妻内射 | 熟妇女人妻丰满少妇中文字幕 | 国产小呦泬泬99精品 | 精品国产一区二区三区四区在线看 | 一个人看的www免费视频在线观看 | 亚洲欧美中文字幕5发布 | 激情亚洲一区国产精品 | 国产卡一卡二卡三 | 亚洲精品一区国产 | 日本饥渴人妻欲求不满 | 国产又粗又硬又大爽黄老大爷视 | 日韩精品无码一本二本三本色 | 人人爽人人澡人人人妻 | 国产激情综合五月久久 | av在线亚洲欧洲日产一区二区 | 国产无遮挡又黄又爽又色 | 国产亚洲精品久久久ai换 | 欧美高清在线精品一区 | 免费播放一区二区三区 | 亚洲自偷自拍另类第1页 | 久久精品丝袜高跟鞋 | 精品乱子伦一区二区三区 | 国内揄拍国内精品人妻 | 激情爆乳一区二区三区 | 日本一本二本三区免费 | 欧美第一黄网免费网站 | 搡女人真爽免费视频大全 | 亚洲国产精品毛片av不卡在线 | 性生交片免费无码看人 | 亚洲欧美国产精品久久 | 久久亚洲国产成人精品性色 | 国产精品久久福利网站 | 国产精品国产自线拍免费软件 | 亚洲色大成网站www | 99er热精品视频 | 国产极品美女高潮无套在线观看 | 国产疯狂伦交大片 | 黑人巨大精品欧美一区二区 | 精品成在人线av无码免费看 | 国产卡一卡二卡三 | 亚洲国产精品成人久久蜜臀 | 欧美丰满少妇xxxx性 | 99精品久久毛片a片 | 精品久久久久久人妻无码中文字幕 | 300部国产真实乱 | 人妻无码久久精品人妻 | 中文毛片无遮挡高清免费 | 亚洲成av人片在线观看无码不卡 | 四虎国产精品免费久久 | 少妇被粗大的猛进出69影院 | 天干天干啦夜天干天2017 | 无码av中文字幕免费放 | 欧美丰满熟妇xxxx性ppx人交 | 六十路熟妇乱子伦 | 亚洲阿v天堂在线 | 国产精品久久精品三级 | 亚洲国产精品久久久天堂 | 日韩欧美群交p片內射中文 | 亚洲中文字幕无码一久久区 | 国产内射老熟女aaaa | 丰满护士巨好爽好大乳 | 国产绳艺sm调教室论坛 | 欧美人与物videos另类 | 欧美 日韩 亚洲 在线 | 国产香蕉尹人综合在线观看 | 婷婷丁香五月天综合东京热 | 色欲人妻aaaaaaa无码 | 丰满人妻翻云覆雨呻吟视频 | 久久99精品久久久久久 | 两性色午夜免费视频 | 中文字幕无码日韩欧毛 | 日本一区二区三区免费播放 | 久久久亚洲欧洲日产国码αv | 性色欲情网站iwww九文堂 | av在线亚洲欧洲日产一区二区 | 免费看男女做好爽好硬视频 | 国产成人无码av片在线观看不卡 | 国产亚洲精品久久久久久大师 | 久久亚洲国产成人精品性色 | 永久免费观看国产裸体美女 | 国产精品亚洲lv粉色 | 欧洲美熟女乱又伦 | 在教室伦流澡到高潮hnp视频 | 欧美第一黄网免费网站 | 人人妻人人澡人人爽人人精品 | 狂野欧美激情性xxxx | 在线观看欧美一区二区三区 | 久久99久久99精品中文字幕 | 国产综合久久久久鬼色 | 久久久久av无码免费网 | 国产精品99爱免费视频 | 99精品无人区乱码1区2区3区 | 极品尤物被啪到呻吟喷水 | 亚洲欧美国产精品专区久久 | 国产成人一区二区三区在线观看 | 国产在线精品一区二区高清不卡 | 无码av最新清无码专区吞精 | 无码国产激情在线观看 | 97夜夜澡人人双人人人喊 | 中文久久乱码一区二区 | 在线观看免费人成视频 | 黑森林福利视频导航 | 久久精品丝袜高跟鞋 | 中文字幕无线码免费人妻 | 亚洲精品成人福利网站 | a国产一区二区免费入口 | 人人妻人人澡人人爽欧美一区 | 亚洲成a人一区二区三区 | 亚洲精品一区二区三区在线观看 | 亚洲欧美国产精品专区久久 | 欧美野外疯狂做受xxxx高潮 | 国产在热线精品视频 | 4hu四虎永久在线观看 | 欧美日韩视频无码一区二区三 | 亚洲午夜久久久影院 | 中文字幕无码av激情不卡 | 中文字幕无码av激情不卡 | 67194成是人免费无码 | 无码人妻丰满熟妇区毛片18 | 丰腴饱满的极品熟妇 | 成人亚洲精品久久久久软件 | 狂野欧美性猛交免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 午夜精品一区二区三区的区别 | 中文字幕 亚洲精品 第1页 | 一本色道久久综合亚洲精品不卡 | 久久亚洲中文字幕精品一区 | 成人片黄网站色大片免费观看 | 男女超爽视频免费播放 | 日日鲁鲁鲁夜夜爽爽狠狠 | 欧美熟妇另类久久久久久多毛 | 在线看片无码永久免费视频 | 大色综合色综合网站 | 国产艳妇av在线观看果冻传媒 | 国产色视频一区二区三区 | 精品欧洲av无码一区二区三区 | 国语自产偷拍精品视频偷 | 永久免费精品精品永久-夜色 | 一本久久伊人热热精品中文字幕 | 国产成人一区二区三区在线观看 | 人妻少妇精品视频专区 | 国产精品毛片一区二区 | 熟女少妇人妻中文字幕 | 亚洲综合精品香蕉久久网 | 国产成人无码一二三区视频 | 九九久久精品国产免费看小说 | 乱人伦中文视频在线观看 | 老熟女乱子伦 | 桃花色综合影院 | 综合人妻久久一区二区精品 | 欧美猛少妇色xxxxx | 亚洲国产精品一区二区美利坚 | 清纯唯美经典一区二区 | 欧洲精品码一区二区三区免费看 | a在线观看免费网站大全 | 娇妻被黑人粗大高潮白浆 | 亚洲欧美中文字幕5发布 | 男女作爱免费网站 | 99精品久久毛片a片 | 中文字幕人妻无码一区二区三区 | 男女猛烈xx00免费视频试看 | 福利一区二区三区视频在线观看 | 欧美大屁股xxxxhd黑色 | 久久亚洲国产成人精品性色 | 日韩av无码中文无码电影 | 在线观看欧美一区二区三区 | 精品亚洲成av人在线观看 | 国产片av国语在线观看 | 亚洲日韩av一区二区三区四区 | 全黄性性激高免费视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲人成人无码网www国产 | 久久精品国产一区二区三区 | 大地资源网第二页免费观看 | 国内精品久久久久久中文字幕 | 日韩精品无码免费一区二区三区 | 日本xxxx色视频在线观看免费 | 日本精品人妻无码77777 天堂一区人妻无码 | 人人妻在人人 | 国产一区二区三区四区五区加勒比 | 欧美放荡的少妇 | 精品成在人线av无码免费看 | 无码国内精品人妻少妇 | 国产香蕉尹人视频在线 | 亚洲一区二区三区国产精华液 | 少妇性l交大片欧洲热妇乱xxx | yw尤物av无码国产在线观看 | 天堂亚洲2017在线观看 | 丰满护士巨好爽好大乳 | 亚洲午夜福利在线观看 | 在线播放无码字幕亚洲 | 曰韩少妇内射免费播放 | 国产成人精品视频ⅴa片软件竹菊 | 3d动漫精品啪啪一区二区中 | 中文字幕乱码人妻二区三区 | 亚洲欧美国产精品久久 | 亚洲一区二区三区偷拍女厕 | 亚洲国产精品一区二区第一页 | 中文字幕无码av波多野吉衣 | 中文字幕人妻无码一夲道 | 成人无码精品1区2区3区免费看 | 久久精品中文字幕一区 | 2020最新国产自产精品 | 2019nv天堂香蕉在线观看 |