精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

通過源碼理解Rarp協議(基于linux1.2.13)

網絡 通信技術
arp是通過mac地址查詢ip的協議,主要用于有mac的主機,但是沒有ip的情況。

[[342609]]

本文轉載自微信公眾號「 編程雜技」,作者theanarkh 。轉載本文請聯系 編程雜技公眾號。

rarp是通過mac地址查詢ip的協議,主要用于有mac的主機,但是沒有ip的情況。我們先看看rarp協議的協議定義(來自網上的圖[1])。

rarp協議的格式和arp協議是一樣的,他們都是通過一種地址查詢另外一種地址。操作系統內維護了一個轉換表。定義如下。

  1. struct rarp_table 
  2.     struct rarp_table  *next;             /* Linked entry list           */ 
  3.     unsigned long      ip;                /* ip address of entry         */ 
  4.     unsigned char      ha[MAX_ADDR_LEN];  /* Hardware address            */ 
  5.     unsigned char      hlen;              /* Length of hardware address  */ 
  6.     unsigned char      htype;             /* Type of hardware in use     */ 
  7.     struct device      *dev;              /* Device the entry is tied to */ 
  8. }; 

初始化的時候是空的,這個表格的數據來源于,用戶通過操作系統提供的接口設置。我們看如何操作這個表。

  1. int rarp_ioctl(unsigned int cmd, void *arg) 
  2.     struct arpreq r; 
  3.     struct sockaddr_in *si; 
  4.     int err; 
  5.  
  6.     switch(cmd) 
  7.     { 
  8.         case SIOCDRARP: 
  9.             if (!suser()) 
  10.                 return -EPERM; 
  11.             err = verify_area(VERIFY_READ, arg, sizeof(struct arpreq)); 
  12.             if(err) 
  13.                 return err; 
  14.             memcpy_fromfs(&r, arg, sizeof(r)); 
  15.             if (r.arp_pa.sa_family != AF_INET) 
  16.                 return -EPFNOSUPPORT; 
  17.             si = (struct sockaddr_in *) &r.arp_pa; 
  18.             rarp_destroy(si->sin_addr.s_addr); 
  19.             return 0; 
  20.  
  21.         case SIOCGRARP: 
  22.             err = verify_area(VERIFY_WRITE, arg, sizeof(struct arpreq)); 
  23.             if(err) 
  24.                 return err; 
  25.             return rarp_req_get((struct arpreq *)arg); 
  26.         case SIOCSRARP: 
  27.             if (!suser()) 
  28.                 return -EPERM; 
  29.             err = verify_area(VERIFY_READ, arg, sizeof(struct arpreq)); 
  30.             if(err) 
  31.                 return err; 
  32.             return rarp_req_set((struct arpreq *)arg); 
  33.         default
  34.             return -EINVAL; 
  35.     } 
  36.  
  37.     /*NOTREACHED*/ 
  38.     return 0; 

通過ioctl函數,我們可以對表格進行增刪改查。我們只關注新增的邏輯。因為其他的是類似的。下面是arpreq 的定義

  1. struct arpreq { 
  2.   struct sockaddr    arp_pa;        /* protocol address        */ 
  3.   struct sockaddr    arp_ha;        /* hardware address        */ 
  4.   int            arp_flags;    /* flags            */ 
  5.   struct sockaddr       arp_netmask;    /* netmask (only for proxy arps) */ 
  6. }; 
  1. static int rarp_req_set(struct arpreq *req) 
  2.     struct arpreq r; 
  3.     struct rarp_table *entry; 
  4.     struct sockaddr_in *si; 
  5.     int htype, hlen; 
  6.     unsigned long ip; 
  7.     struct rtable *rt; 
  8.  
  9.     memcpy_fromfs(&r, req, sizeof(r)); 
  10.  
  11.     /* 
  12.      *    We only understand about IP addresses...  
  13.      */ 
  14.  
  15.     if (r.arp_pa.sa_family != AF_INET) 
  16.         return -EPFNOSUPPORT; 
  17.  
  18.     switch (r.arp_ha.sa_family)  
  19.     { 
  20.         case ARPHRD_ETHER: 
  21.             htype = ARPHRD_ETHER; 
  22.             hlen = ETH_ALEN; 
  23.             break; 
  24.         default
  25.             return -EPFNOSUPPORT; 
  26.     } 
  27.  
  28.     si = (struct sockaddr_in *) &r.arp_pa; 
  29.     ip = si->sin_addr.s_addr; 
  30.     if (ip == 0) 
  31.     { 
  32.         printk("RARP: SETRARP: requested PA is 0.0.0.0 !\n"); 
  33.         return -EINVAL; 
  34.     } 
  35.     //  
  36.     rt = ip_rt_route(ip, NULLNULL); 
  37.     if (rt == NULL
  38.         return -ENETUNREACH; 
  39.  
  40. /* 
  41.  *    Is there an existing entry for this address?  Find out... 
  42.  */ 
  43.  
  44.     cli(); 
  45.     // 判斷之前是不是已經存在 
  46.     for (entry = rarp_tables; entry != NULL; entry = entry->next
  47.         if (entry->ip == ip) 
  48.             break; 
  49.  
  50. /* 
  51.  *    If no entry was found, create a new one. 
  52.  */ 
  53.     // 不存在則創建一個表項 
  54.     if (entry == NULL
  55.     { 
  56.         entry = (struct rarp_table *) kmalloc(sizeof(struct rarp_table), 
  57.                     GFP_ATOMIC); 
  58.         // 還沒初始化則初始化 
  59.         if(initflag) 
  60.         { 
  61.             rarp_init(); 
  62.             initflag=0; 
  63.         } 
  64.  
  65.         entry->next = rarp_tables; 
  66.         rarp_tables = entry; 
  67.     } 
  68.  
  69.     entry->ip = ip; 
  70.     entry->hlen = hlen; 
  71.     entry->htype = htype; 
  72.     memcpy(&entry->ha, &r.arp_ha.sa_data, hlen); 
  73.     entry->dev = rt->rt_dev; 
  74.  
  75.     sti(); 
  76.  
  77.     return 0; 

我們看到這里會往表里插入一個表項(如果不存在的話),還有另外一個邏輯是rarp_init。

  1. static void rarp_init (void) 
  2.     /* Register the packet type */ 
  3.     rarp_packet_type.type=htons(ETH_P_RARP); 
  4.     dev_add_pack(&rarp_packet_type); 

這個函數是往底層注冊一個節點,當mac底層收到一個ETH_P_RARP類型的數據包的時候(在mac協議頭里定義),就會執行rarp_packet_type中定義的函數。下面是該rarp_packet_type的定義

  1. static struct packet_type rarp_packet_type = 
  2.     0,  
  3.     0,                /* copy */ 
  4.     rarp_rcv, 
  5.     NULL
  6.     NULL 
  7. }; 

rarp_rcv函數就是收到一個rarp請求的時候(來自其他主機),執行的函數。

  1. int rarp_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt) 
  2. /* 
  3.  *    We shouldn't use this type conversion. Check later. 
  4.  */ 
  5.     // rarp協議報文 
  6.     struct arphdr *rarp = (struct arphdr *)skb->h.raw; 
  7.     // rarp協議數據部分 
  8.     unsigned char *rarp_ptr = (unsigned char *)(rarp+1); 
  9.     struct rarp_table *entry; 
  10.     long sip,tip; 
  11.     unsigned char *sha,*tha;            /* s for "source", t for "target" */ 
  12.  
  13.     // 硬件地址長度或類型不一致則忽略 
  14.     if (rarp->ar_hln != dev->addr_len || dev->type != ntohs(rarp->ar_hrd)  
  15.         || dev->flags&IFF_NOARP) 
  16.     { 
  17.         kfree_skb(skb, FREE_READ); 
  18.         return 0; 
  19.     } 
  20.  
  21.     /* 
  22.      *    If it's not a RARP request, delete it. 
  23.      */ 
  24.     // 不是請求報文則忽略 
  25.     if (rarp->ar_op != htons(ARPOP_RREQUEST)) 
  26.     { 
  27.         kfree_skb(skb, FREE_READ); 
  28.         return 0; 
  29.     } 
  30.     /* 
  31.      *    Extract variable width fields 
  32.      */ 
  33.     // rarp協議首地址 
  34.     sha=rarp_ptr; 
  35.     // 發送端mac地址長度 
  36.     rarp_ptr+=dev->addr_len; 
  37.     // 拿到發送端ip,存到sip 
  38.     memcpy(&sip,rarp_ptr,4); 
  39.     // 跳過4字節 
  40.     rarp_ptr+=4; 
  41.     // 目的mac地址 
  42.     tha=rarp_ptr; 
  43.     // 跳過mac地址長度 
  44.     rarp_ptr+=dev->addr_len; 
  45.     // 目的ip地址 
  46.     memcpy(&tip,rarp_ptr,4); 
  47.  
  48.     /* 
  49.      *    Process entry. Use tha for table lookup according to RFC903. 
  50.      */ 
  51.  
  52.     cli(); 
  53.     for (entry = rarp_tables; entry != NULL; entry = entry->next
  54.         // 判斷mac地址是否相等 
  55.         if (!memcmp(entry->ha, tha, rarp->ar_hln)) 
  56.             break; 
  57.     // 非空則說明找到 
  58.     if (entry != NULL
  59.     {    // 拿到對應的ip 
  60.         sip=entry->ip; 
  61.         sti(); 
  62.         // 回復,類似是響應ARPOP_RREPLY 
  63.         arp_send(ARPOP_RREPLY, ETH_P_RARP, sip, dev, dev->pa_addr, sha,  
  64.             dev->dev_addr); 
  65.     } 
  66.     else 
  67.         sti(); 
  68.  
  69.     kfree_skb(skb, FREE_READ); 
  70.     return 0; 

我們看到這個函數很長,不過邏輯比較簡單,就是解析收到的rarp請求中的數據,然后根據其他主機請求的mac地址,從維護的表格中找到對應的ip(如果有的話),然后調用arp_send函數發送回包。下面列一下該函數的代碼。

  1. void arp_send(int type, int ptype, unsigned long dest_ip,  
  2.           struct device *dev, unsigned long src_ip,  
  3.           unsigned char *dest_hw, unsigned char *src_hw) 
  4.     struct sk_buff *skb; 
  5.     struct arphdr *arp; 
  6.     unsigned char *arp_ptr; 
  7.  
  8.     /* 
  9.      *    No arp on this interface. 
  10.      */ 
  11.  
  12.     if(dev->flags&IFF_NOARP) 
  13.         return
  14.  
  15.     /* 
  16.      *    Allocate a buffer 
  17.      */ 
  18.     // 分配一個skb存儲數據包 
  19.     skb = alloc_skb(sizeof(struct arphdr)+ 2*(dev->addr_len+4) 
  20.                 + dev->hard_header_len, GFP_ATOMIC); 
  21.     // 構造arp協議數據包 
  22.     skb->len = sizeof(struct arphdr) + dev->hard_header_len + 2*(dev->addr_len+4); 
  23.     skb->arp = 1; 
  24.     skb->dev = dev; 
  25.     // 不存在緩存,發完可以銷毀 
  26.     skb->free = 1; 
  27.     // 構造mac頭 
  28.     dev->hard_header(skb->data,dev,ptype,dest_hw?dest_hw:dev->broadcast,src_hw?src_hw:NULL,skb->len,skb); 
  29.  
  30.     /* Fill out the arp protocol part. */ 
  31.     arp = (struct arphdr *) (skb->data + dev->hard_header_len); 
  32.     arp->ar_hrd = htons(dev->type); 
  33.     arp->ar_pro = htons(ETH_P_IP); 
  34.     arp->ar_hln = dev->addr_len; 
  35.     arp->ar_pln = 4; 
  36.     arp->ar_op = htons(type); 
  37.     arp_ptr=(unsigned char *)(arp+1); 
  38.     memcpy(arp_ptr, src_hw, dev->addr_len); 
  39.     arp_ptr+=dev->addr_len; 
  40.     memcpy(arp_ptr, &src_ip,4); 
  41.     arp_ptr+=4; 
  42.     if (dest_hw != NULL
  43.         memcpy(arp_ptr, dest_hw, dev->addr_len); 
  44.     else 
  45.         memset(arp_ptr, 0, dev->addr_len); 
  46.     arp_ptr+=dev->addr_len; 
  47.     memcpy(arp_ptr, &dest_ip, 4); 
  48.     // 調用mac頭發送函數發送出去 
  49.     dev_queue_xmit(skb, dev, 0); 

這就是rarp的早期實現。

References

[1] 網上的圖: https://wenku.baidu.com/view/8fbb89a7f524ccbff12184a0.html#

 

 

責任編輯:武曉燕 來源: 編程雜技
相關推薦

2014-06-11 13:25:14

IPARPRARP

2013-07-01 15:06:04

2010-06-13 14:36:20

RARP協議

2011-07-19 11:35:09

linux網絡協議

2023-07-04 09:39:45

Modbus鴻蒙

2016-12-19 15:09:02

Jedis源碼

2021-05-28 05:30:55

HandleV8代碼

2015-07-27 14:57:32

OpenFlow協議Ryu

2024-04-24 11:05:03

MapReduce編程大數據

2023-12-25 08:04:42

2020-06-17 21:39:11

HTTP協議服務器

2010-07-09 10:13:42

UDP協議

2019-08-23 12:49:18

USB通信協議

2020-11-04 00:00:29

Kerberos協議身份

2011-04-18 19:36:10

HSRP協議

2023-03-04 13:43:31

云終端傳輸協議

2017-09-21 10:00:07

緩存web服務器

2022-04-01 10:27:04

面向對象串口協議代碼

2022-11-02 21:45:54

SPIJava

2016-10-26 20:49:24

ReactJavascript前端
點贊
收藏

51CTO技術棧公眾號

亚洲自拍电影| 在线观看的av| 亚洲精品在线二区| 亚洲女人被黑人巨大进入al| av免费网站观看| 精品麻豆一区二区三区| 成人性生交大合| 国产精品99久久久久久www| 成人18视频免费69| 国产精品巨作av| 欧美亚洲综合在线| 久久这里只有精品18| 国产在线视频网址| 国产激情精品久久久第一区二区| 57pao国产成人免费| 日本女人性生活视频| 欧美成a人免费观看久久| 欧美日韩亚洲综合在线 | 欧美日韩另类一区| 亚洲熟妇无码一区二区三区导航| 电影在线高清| av在线不卡电影| 成人免费视频在线观看超级碰| 国产情侣在线视频| 女人香蕉久久**毛片精品| 亚洲欧美日韩网| 性高潮免费视频| 日本久久二区| 91久久国产综合久久| 亚洲人成无码网站久久99热国产| 日韩av中文| 国产视频一区二区在线观看| 久久精品国产一区二区三区日韩| 国产xxxx在线观看| 精品一区二区影视| 国产精品91视频| 91在线视频在线观看| 欧美日韩国产免费观看 | 欧美极品色图| 手机看片一区二区三区| 国产成人免费在线| 成人福利在线观看| 伊人影院中文字幕| 秋霞av亚洲一区二区三| 热久久免费国产视频| 日本一级一片免费视频| 极品少妇一区二区三区| 欧美成人激情视频| 国产一区二区精彩视频| 亚洲精品a级片| 精品国产自在精品国产浪潮| 又嫩又硬又黄又爽的视频| 欧美理论在线播放| 一区二区三区美女xx视频| 免费人成又黄又爽又色| 国产一区二区三区91| 亚洲美女又黄又爽在线观看| 亚洲精品女人久久久| 欧美高清视频看片在线观看| 亚洲国产日韩欧美在线动漫| 亚洲av永久无码精品| 老牛影视av一区二区在线观看| 日韩精品一区二| 天天躁日日躁狠狠躁av| 豆花视频一区二区| 日韩av资源在线播放| av无码av天天av天天爽| 中文有码一区| 在线精品91av| 欧美风情第一页| 欧美日韩精品| 午夜精品蜜臀一区二区三区免费| 免费日韩一级片| 午夜一区在线| 国产精品黄色av| 国产精品福利电影| 国产成人精品三级麻豆| 国产精品一区二区不卡视频| 日韩一级片免费看| 久久久欧美精品sm网站| 亚洲 国产 欧美一区| 久久99精品久久| 依依成人综合视频| 女人天堂av手机在线| 欧洲av不卡| 欧美顶级少妇做爰| 国产婷婷在线观看| 久久综合欧美| 两个人的视频www国产精品| 欧美精品videos极品| 国产日韩1区| 国产精品三级美女白浆呻吟| 精品国产av一区二区| 99国产精品国产精品毛片| 日韩福利一区二区三区| 麻豆tv免费在线观看| 亚洲成av人片在线| 999在线免费视频| 欧洲精品99毛片免费高清观看| 亚洲成人久久久久| 任我爽在线视频| 国产日韩欧美一区在线| 国产精品自产拍高潮在线观看| 亚洲精品18在线观看| 久久精品人人做人人综合| 日本老太婆做爰视频| japanese23hdxxxx日韩| 日韩精品一区二区三区中文不卡| 扒开jk护士狂揉免费| 欧美区国产区| 国产有码一区二区| 日韩电影免费| 亚洲国产精品久久不卡毛片| 91高清国产视频| 理论片一区二区在线| 伦理中文字幕亚洲| 在线观看污污网站| 成人免费视频播放| 国产三级中文字幕| 97人人做人人爽香蕉精品| 亚洲国产精品va在看黑人| 中日韩一级黄色片| 日本三级亚洲精品| 欧美成人综合一区| 超碰中文在线| 欧美一区二区视频在线观看2020| 国产一区二区三区四区五区六区| 亚洲精品欧美| 97碰碰视频| 黄色网页在线观看| 欧美三级视频在线| 免费污网站在线观看| 99热免费精品在线观看| 91丝袜脚交足在线播放| 午夜视频成人| 欧美亚日韩国产aⅴ精品中极品| 欧亚乱熟女一区二区在线| 欧美88av| 亚洲综合社区网| 久久综合之合合综合久久| 欧美色图片你懂的| 久久久久久久毛片| 久久国产欧美| 欧美日韩高清免费| 中文字幕在线直播| 日韩理论片久久| 国产在线精品观看| proumb性欧美在线观看| 成人免费性视频| 日韩深夜福利网站| 久久九九精品99国产精品| 一级片aaaa| 亚洲欧美中日韩| 亚洲天堂网2018| 天天影视综合| 亚洲伊人成综合成人网| 成人三级网址| 日韩精品一区二区三区老鸭窝| 欧美色图亚洲天堂| 成人av综合在线| 欧美 日韩 亚洲 一区| 色爱av综合网| 国产激情999| 在线看免费av| 日韩欧美视频在线| 国产性xxxx高清| 久久色中文字幕| 五月婷婷狠狠操| 水蜜桃精品av一区二区| 成人激情av在线| av中文字幕在线观看| 亚洲成人三级在线| 99re这里只有精品在线| 国产精品色哟哟网站| 中文字幕日韩久久| 国内精品久久久久久久97牛牛| 成人毛片网站| 伊人久久在线| 中文字幕亚洲图片| 亚洲黄色小说网| 婷婷亚洲久悠悠色悠在线播放| 在线国产视频一区| 国产一区二区福利| av天堂永久资源网| 久久影视一区| 国产伦理一区二区三区| 亚洲承认视频| 久久91精品国产91久久跳| 偷拍自拍在线| 欧美日韩国产另类一区| 精品无码人妻一区二区三| 久久久亚洲精品一区二区三区| 亚洲一级片av| 亚洲一区二区三区高清| 18视频在线观看娇喘| 香蕉久久夜色精品国产使用方法| 91精品国产综合久久香蕉922| 九色porny丨入口在线| 色悠悠久久88| 性xxxx18| 日韩欧美一区二区视频| 99久久久无码国产精品免费蜜柚| 亚洲免费观看高清完整版在线观看| 欧美无人区码suv| 久久99九九99精品| 男女av免费观看| 午夜日韩电影| 色涩成人影视在线播放| 日韩影视高清在线观看| 亚洲一区二区三区777| 欧美一级二级视频| 51久久精品夜色国产麻豆| 91亚洲天堂| 综合激情国产一区| 色网站在线免费观看| 日韩视频中午一区| 天天操天天干天天摸| 午夜影视日本亚洲欧洲精品| 视频这里只有精品| 国产精品网站一区| 亚洲做受高潮无遮挡| 成人手机电影网| 免费黄频在线观看| 日av在线不卡| 免费男同深夜夜行网站| 国产亚洲毛片在线| 老子影院午夜伦不卡大全| 亚洲国产一区二区三区在线播放 | 午夜影院免费版| 美女视频免费一区| 成人3d动漫一区二区三区| 亚洲免费网址| aa在线观看视频| 在线欧美福利| 日本欧美视频在线观看| 欧美jjzz| 欧美 日韩 国产精品| 久久精品国产www456c0m| 四虎永久国产精品| 精品成人影院| 神马影院午夜我不卡| 国产不卡av一区二区| 久久免费99精品久久久久久| 欧美综合自拍| 久久精品中文字幕一区二区三区| 精品三级av| 91精品国产综合久久久久| 国产亚洲欧美另类中文| 精品亚洲欧美日韩| 91色在线看| 欧美激情在线视频二区| 亚洲www色| 欧美高清视频在线| 欧美人与性动交α欧美精品图片| 欧美另类在线播放| 97超碰在线免费| 亚洲天堂av一区| 又黄又爽又色的视频| 国产一区二区三区在线观看免费| 亚洲欧美日韩精品一区| 狠狠网亚洲精品| 男人操女人下面视频| 国产不卡免费视频| 国模私拍在线观看| 91啦中文在线观看| 国产成人福利在线| 亚洲欧洲成人自拍| 18精品爽视频在线观看| www.成人在线视频| 国产视频一区三区| 欧美伦理一区二区| 国产一区二区三区网| 亚洲欧美日韩国产yyy| 国产精品二区不卡| 麻豆传媒网站在线观看| 最新成人av网站| 黄色片久久久久| 美洲天堂一区二卡三卡四卡视频| 日韩av片免费观看| 午夜激情视频在线观看| 国产真实乱子伦精品视频| 九九精品久久久| 国产成a人亚洲精品| 欧美bbbbb性bbbbb视频| 亚洲国产成人私人影院tom | 欧美激情一区二区三区不卡 | 国产在线91| 欧美成人精品一区二区| 九色porny自拍视频在线观看| 国产成人综合久久| 亚洲午夜免费| 日韩精品久久久免费观看| 91成人网在线观看| 日韩欧美在线播放视频| 国产一区二区三区国产| 国产三级视频网站| 1024亚洲合集| 色av性av丰满av| 日韩午夜精品电影| 大片免费播放在线视频| 欧美激情在线有限公司| 日韩黄色碟片| 麻豆精品蜜桃一区二区三区| 在线中文一区| 激情五月婷婷久久| www.欧美日韩| 国产suv一区二区三区| 91黄色免费观看| 欧美自拍偷拍第一页| 不卡av在线网站| 美女色狠狠久久| 久久综合一区| 亚洲手机在线| 久久久久久久久久久久久久久国产| 91色porny| 久久久久国产精品夜夜夜夜夜| 在线中文字幕一区二区| 五月婷婷六月色| 欧美黄色www| 99综合久久| 亚洲欧洲精品在线 | 午夜av免费观看| 欧美日韩999| 一区二区三区| 亚洲一一在线| 男女男精品网站| 一区二区黄色片| 精品日韩中文字幕| 刘玥91精选国产在线观看| 欧美xxxx14xxxxx性爽| 国产福利亚洲| 亚洲精品无人区| 日本vs亚洲vs韩国一区三区二区 | 亚洲乱码中文字幕综合| 中文字幕一区二区三区四区视频| 精品亚洲永久免费精品| 超碰在线网站| 国产精品二区二区三区| 欧美日韩视频| 亚洲精品无码久久久久久久| 中文字幕一区二区三中文字幕 | 精品国产精品网麻豆系列| 亚洲丝袜一区| 亚洲最大av在线| 欧美天堂亚洲电影院在线观看| 欧美一区二区三区影院| 亚洲卡通动漫在线| 国产黄色大片网站| 欧美激情免费在线| 9l亚洲国产成人精品一区二三| 国产成人一区二区三区别| 成人在线一区二区三区| 久久狠狠高潮亚洲精品| 亚洲精品福利免费在线观看| 中文字幕这里只有精品| 日韩三级在线播放| 麻豆国产精品777777在线| 日本在线观看网址| 这里只有精品免费| av在线免费网址| 国产精品久久7| 久久aⅴ国产紧身牛仔裤| 蜜桃传媒一区二区亚洲| 欧美日韩免费高清一区色橹橹| 成人黄色网址| 国产伦精品一区二区三区| 午夜一级在线看亚洲| 精品伦精品一区二区三区视频密桃 | 国产成人精品三级| 亚洲视频免费播放| 国产午夜精品全部视频播放| 视频91a欧美| 精品视频久久久久久久| 国产精品a成v人在线播放| 日韩一区二区免费视频| 182在线视频观看| 日韩av电影免费播放| 精品一二三四区| 国产精品第九页| 亚洲天堂男人的天堂| 亚洲一区二区av| 97超碰国产精品| 久久精品在这里| 免费黄色在线播放| 亚洲精品午夜| www精品久久| 国产女主播一区| 亚洲第一天堂影院| 国产精品吊钟奶在线| 欧美一区影院| 麻豆精品免费视频| 91精品国产综合久久久蜜臀粉嫩 | 日韩毛片视频| 野战少妇38p| 欧美日韩一级片在线观看| 成人性生交大片免费看在线播放| 日本不卡免费新一二三区| 国产一区999| 欧美激情一区二区三区免费观看| 欧美激情奇米色|