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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ipmitool源码解析(一)——一次带内ipmitool raw data发送过程

發布時間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ipmitool源码解析(一)——一次带内ipmitool raw data发送过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前有詳細講過,服務器實現IPMI智能管理需要從硬件和軟件層面提供支持,硬件需要嵌入式微控制器BMC,軟件上需要內核提供ipmi驅動以及用戶層與BMC交互的管理工具,今天就聊聊與BMC交互的工具ipmitool。服務器管理員可以通過ipmitool從BMC那邊獲取服務器的一些運行狀況。這樣的管理工具不僅僅只有ipmitool這一款,比如freeipmi以及各家根據標準ipmi編寫的工具,這些工具功能上大致一樣,ipmitool應該是目前使用最廣最好用的工具。現在RedFish API開始慢慢接替ipmitool,一般BMC都會同時支持ipmitool命令行和RedFish API。

ipmitool是一個開源軟件,所以它的安裝包一般就放有源碼,可以從網下免費下載,這里提供其中一個下載鏈接https://zh.osdn.net/projects/sfnet_ipmitool/downloads/ipmitool/1.8.18/ipmitool-1.8.18.tar.bz2/,以最新的Linux版ipitool-1.8.18為例,梳理一下ipmitool 一次收發raw data的過程。

首先,看看ipmitool這個軟件安裝包的目錄結構,看起來一大堆,我們只需要關注其中3個文件夾就好:include/ipmitool、lib、src,其他都是輔助文檔和安裝所需的文件,都可以忽略不看。include/ipmitool目錄下存放著ipmitool源碼的頭文件,這些頭文件是lib目錄里面的C文件需要引用的,基本一一對應,src是整個程序的入口,src/plugins里面包含了ipmi各個接口的定義(比如lan、lanplus、open、serial等),ipmitool將這些接口當做插件的形式調用。從大框架上一看,ipmitool的源碼結構是不是就簡單到一目了然了呢。

include目錄都是些頭文件,也不需要特別關注,在追溯源碼流程涉及到函數、結構體等具體聲明定義的時候到對應頭文件查看即可,所以真正需要傾注注意力去看的只剩下lib和src里面的內容了。

先來看看lib目錄,ipmi的核心源碼都在這兒了,不多,也就38個.c文件,每個C文件都對應BMC的某項功能,比如sdr、sel、sensor、fru等,這幾個是常用的不能再常用的內容了。這次只會用到ipmi_raw.c

再看看src,第一層目錄只需要看ipmitool.c文件,其他不看,第二層目錄plugins關注open目錄和ipmi_intf.c就行,帶內的raw data的發送和接收調用的是open這個接口,其他目錄對應的其他接口,不用看。

?????? ? ??

好了,講這么多就是為了簡化代碼,減少看到這么多文件時的壓力,下面進入正題。

1、基本調用關系

以下是ipmitool raw data發送過程的函數調用的流程圖,ipmitool.c中的main()函數是整個程序的入口,main函數中調用ipmi_main(),然后一級一級調用。

2、ipmitool.c

這里主要涉及到ipmi_cmd這個結構體,定義出自ipmi_intf.h。第一個成員是一個指向函數的指針,在C里稱為函數指針,最好先把概念理解清楚,不然后面會看不懂。

//ipmi_intf.hstruct ipmi_cmd {int (*func)(struct ipmi_intf * intf, int argc, char ** argv);const char * name;const char * desc; };

ipmitool.c首先就創建并初始化了一個數組,數組里面的每個元素都是一個ipmi_cmd的結構體實例。

//ipmitool.cstruct ipmi_cmd ipmitool_cmd_list[] = {{ ipmi_raw_main, "raw", "Send a RAW IPMI request and print response" },{ ipmi_rawi2c_main, "i2c", "Send an I2C Master Write-Read command and print response" },{ ipmi_rawspd_main, "spd", "Print SPD info from remote I2C device" },{ ipmi_lanp_main, "lan", "Configure LAN Channels" },{ ipmi_chassis_main, "chassis", "Get chassis status and set power state" },{ ipmi_power_main, "power", "Shortcut to chassis power commands" },{ ipmi_event_main, "event", "Send pre-defined events to MC" },{ ipmi_mc_main, "mc", "Management Controller status and global enables" },{ ipmi_mc_main, "bmc", NULL }, /* for backwards compatibility */{ ipmi_sdr_main, "sdr", "Print Sensor Data Repository entries and readings" },{ ipmi_sensor_main, "sensor", "Print detailed sensor information" },{ ipmi_fru_main, "fru", "Print built-in FRU and scan SDR for FRU locators" },{ ipmi_gendev_main, "gendev", "Read/Write Device associated with Generic Device locators sdr" },{ ipmi_sel_main, "sel", "Print System Event Log (SEL)" },{ ipmi_pef_main, "pef", "Configure Platform Event Filtering (PEF)" },{ ipmi_sol_main, "sol", "Configure and connect IPMIv2.0 Serial-over-LAN" },{ ipmi_tsol_main, "tsol", "Configure and connect with Tyan IPMIv1.5 Serial-over-LAN" },{ ipmi_isol_main, "isol", "Configure IPMIv1.5 Serial-over-LAN" },{ ipmi_user_main, "user", "Configure Management Controller users" },{ ipmi_channel_main, "channel", "Configure Management Controller channels" },{ ipmi_session_main, "session", "Print session information" },{ ipmi_dcmi_main, "dcmi", "Data Center Management Interface"},{ ipmi_nm_main, "nm", "Node Manager Interface"},{ ipmi_sunoem_main, "sunoem", "OEM Commands for Sun servers" },{ ipmi_kontronoem_main, "kontronoem", "OEM Commands for Kontron devices"},{ ipmi_picmg_main, "picmg", "Run a PICMG/ATCA extended cmd"},{ ipmi_fwum_main, "fwum", "Update IPMC using Kontron OEM Firmware Update Manager" },{ ipmi_firewall_main,"firewall","Configure Firmware Firewall" },{ ipmi_delloem_main, "delloem", "OEM Commands for Dell systems" }, #ifdef HAVE_READLINE{ ipmi_shell_main, "shell", "Launch interactive IPMI shell" }, #endif{ ipmi_exec_main, "exec", "Run list of commands from file" },{ ipmi_set_main, "set", "Set runtime variable for shell and exec" },{ ipmi_echo_main, "echo", NULL }, /* for echoing lines to stdout in scripts */{ ipmi_hpmfwupg_main,"hpm", "Update HPM components using PICMG HPM.1 file"},{ ipmi_ekanalyzer_main,"ekanalyzer", "run FRU-Ekeying analyzer using FRU files"},{ ipmi_ime_main, "ime", "Update Intel Manageability Engine Firmware"},{ ipmi_vita_main, "vita", "Run a VITA 46.11 extended cmd"},{ ipmi_lan6_main, "lan6", "Configure IPv6 LAN Channels"},{ NULL }, };

這里有個關于C語言的語法知識,數組的名字就是指向數組第一個元素的首地址,所以也可以認為數組的名字是指向這個數組的指針。這里將ipmitool_cmd_list就是ipmitool_cmd_list[]數組的指針。

//ipmitool.cint main(int argc, char ** argv) {int rc;rc = ipmi_main(argc, argv, ipmitool_cmd_list, NULL); //ipmitool_cmd_list就是指向ipmi_cmd_list[]數組的指針if (rc < 0)exit(EXIT_FAILURE);elseexit(EXIT_SUCCESS); }

3、ipmitool_mian.c

跳到ipmi_main()函數的定義,這里涉及到接口的調用,ipmi_intf_load()函數就是用來加載用戶會調用哪個接口,這個是根據命令行中-I 后面的值決定的,帶內可以省略這個參數,默認就是open接口。

//ipmitool_main.c/* load interface */ipmi_main_intf = ipmi_intf_load(intfname);if (ipmi_main_intf == NULL) {lprintf(LOG_ERR, "Error loading interface %s", intfname);goto out_free;}

4、ipmi_intf.c

ipmi_intf_table[]這個數組就是存放各個接口的。最后指向ipmi_intf_table[0]。

//ipmi_intf.cstruct ipmi_intf * ipmi_intf_load(char * name) {struct ipmi_intf ** intf;struct ipmi_intf * i;if (name == NULL) {i = ipmi_intf_table[0]; //這里表示如果沒有-I和后面的參數,默認取ipmi_intf_table[0]if (i->setup != NULL && (i->setup(i) < 0)) {lprintf(LOG_ERR, "Unable to setup ""interface %s", name);return NULL;}return i;}for (intf = ipmi_intf_table;((intf != NULL) && (*intf != NULL));intf++) {i = *intf;if (strncmp(name, i->name, strlen(name)) == 0) {if (i->setup != NULL && (i->setup(i) < 0)) {lprintf(LOG_ERR, "Unable to setup ""interface %s", name);return NULL;}return i;}}return NULL; }

ipmi_intf_table[0]就是&ipmi_open_intf,是一個地址,這個地址指向了open.c中的ipmi_open_intf結構體。

//ipmi_intf.cstruct ipmi_intf * ipmi_intf_table[] = { #ifdef IPMI_INTF_OPEN&ipmi_open_intf, #endif #ifdef IPMI_INTF_IMB&ipmi_imb_intf, #endif #ifdef IPMI_INTF_LIPMI&ipmi_lipmi_intf, #endif #ifdef IPMI_INTF_BMC&ipmi_bmc_intf, #endif #ifdef IPMI_INTF_LAN&ipmi_lan_intf, #endif #ifdef IPMI_INTF_LANPLUS&ipmi_lanplus_intf, #endif #ifdef IPMI_INTF_FREE&ipmi_free_intf, #endif #ifdef IPMI_INTF_SERIAL&ipmi_serial_term_intf,&ipmi_serial_bm_intf, #endif #ifdef IPMI_INTF_DUMMY&ipmi_dummy_intf, #endif #ifdef IPMI_INTF_USB&ipmi_usb_intf, #endifNULL };

5、open.c

ipmi_open_intf是ipmi_intf結構體的一個實例,下面是ipmi_open_intf的部分初始化,基本都是函數指針,指定了調用open接口會用到的一些函數。

//open.cstruct ipmi_intf ipmi_open_intf = {.name = "open",.desc = "Linux OpenIPMI Interface",.setup = ipmi_openipmi_setup,.open = ipmi_openipmi_open,.close = ipmi_openipmi_close,.sendrecv = ipmi_openipmi_send_cmd,.set_my_addr = ipmi_openipmi_set_my_addr,.my_addr = IPMI_BMC_SLAVE_ADDR,.target_addr = 0, /* init so -m local_addr does not cause bridging */ };

ipmi_intf結構體如下,成員眾多,上面的實例ipmi_open_intf只為其成員賦值了一部分。

//ipmi_intf.hstruct ipmi_intf {char name[16];char desc[128];char *devfile;int fd;int opened;int abort;int noanswer;int picmg_avail;int vita_avail;IPMI_OEM manufacturer_id;int ai_family;struct ipmi_session_params ssn_params;struct ipmi_session * session;struct ipmi_oem_handle * oem;struct ipmi_cmd * cmdlist;uint8_t target_ipmb_addr;uint32_t my_addr;uint32_t target_addr;uint8_t target_lun;uint8_t target_channel;uint32_t transit_addr;uint8_t transit_channel;uint16_t max_request_data_size;uint16_t max_response_data_size;uint8_t devnum;int (*setup)(struct ipmi_intf * intf);int (*open)(struct ipmi_intf * intf);void (*close)(struct ipmi_intf * intf);struct ipmi_rs *(*sendrecv)(struct ipmi_intf * intf, struct ipmi_rq * req);int (*sendrsp)(struct ipmi_intf * intf, struct ipmi_rs * rsp);struct ipmi_rs *(*recv_sol)(struct ipmi_intf * intf);struct ipmi_rs *(*send_sol)(struct ipmi_intf * intf, struct ipmi_v2_payload * payload);int (*keepalive)(struct ipmi_intf * intf);int (*set_my_addr)(struct ipmi_intf * intf, uint8_t addr);void (*set_max_request_data_size)(struct ipmi_intf * intf, uint16_t size);void (*set_max_response_data_size)(struct ipmi_intf * intf, uint16_t size); };

6、ipmi_main.c

加載open接口后,ipmi_main()中調用了ipmi_cmd_run()

//ipmi_mian.cint ipmi_cmd_run(struct ipmi_intf * intf, char * name, int argc, char ** argv) {struct ipmi_cmd * cmd = intf->cmdlist; //intf->cmdlist指向的就是ipmitool_cmd_list[]數組/* hook to run a default command if nothing specified */if (name == NULL) {if (cmd->func == NULL || cmd->name == NULL)return -1;else if (strncmp(cmd->name, "default", 7) == 0)return cmd->func(intf, 0, NULL);else {lprintf(LOG_ERR, "No command provided!");ipmi_cmd_print(intf->cmdlist);return -1;}}for (cmd=intf->cmdlist; cmd->func != NULL; cmd++) {if (strncmp(name, cmd->name, __maxlen(cmd->name, name)) == 0)break;}if (cmd->func == NULL) {cmd = intf->cmdlist;if (strncmp(cmd->name, "default", 7) == 0)return cmd->func(intf, argc+1, argv-1);lprintf(LOG_ERR, "Invalid command: %s", name);ipmi_cmd_print(intf->cmdlist);return -1;}return cmd->func(intf, argc, argv); }

中間的一個for循環很關鍵,這里遍歷的是ipmitool_cmd_list[]這個數組,根據你傳入的值(這里是raw),確定調用對應的函數。比如我今天發送的是 raw data,用的命令是ipmitool raw 0x06 0x01,這里的name就是等于raw,根據raw,cmd->func指向的函數名就是ipmi_raw_main,接著跳到這個ipmi_raw_main()這個函數中繼續執行。

for (cmd=intf->cmdlist; cmd->func != NULL; cmd++) {if (strncmp(name, cmd->name, __maxlen(cmd->name, name)) == 0)break;}

7、ipmi_raw.c

這里主要弄明白intf->sendrecv指向的是哪個函數就一目了然了,這個在上面已經提到過,ipmi_open_intf中已經賦值過了(.sendrecv = ipmi_openipmi_send_cmd)。正常情況下rsp就是BMC返回的raw data。

//ipmi_raw.cint ipmi_raw_main(struct ipmi_intf * intf, int argc, char ** argv) {struct ipmi_rs * rsp;struct ipmi_rq req;uint8_t netfn, cmd, lun;uint16_t netfn_tmp = 0;int i;uint8_t data[256];if (argc == 1 && strncmp(argv[0], "help", 4) == 0) {ipmi_raw_help();return 0;}else if (argc < 2) {lprintf(LOG_ERR, "Not enough parameters given.");ipmi_raw_help();return (-1);}else if (argc > sizeof(data)){lprintf(LOG_NOTICE, "Raw command input limit (256 bytes) exceeded");return -1;}lun = intf->target_lun;netfn_tmp = str2val(argv[0], ipmi_netfn_vals);if (netfn_tmp == 0xff) {if (is_valid_param(argv[0], &netfn, "netfn") != 0)return (-1);} else {if (netfn_tmp >= UINT8_MAX) {lprintf(LOG_ERR, "Given netfn \"%s\" is out of range.", argv[0]);return (-1);}netfn = netfn_tmp;}if (is_valid_param(argv[1], &cmd, "command") != 0)return (-1);memset(data, 0, sizeof(data));memset(&req, 0, sizeof(req));req.msg.netfn = netfn;req.msg.lun = lun;req.msg.cmd = cmd;req.msg.data = data;for (i=2; i<argc; i++) {uint8_t val = 0;if (is_valid_param(argv[i], &val, "data") != 0)return (-1);req.msg.data[i-2] = val;req.msg.data_len++;}lprintf(LOG_INFO, "RAW REQ (channel=0x%x netfn=0x%x lun=0x%x cmd=0x%x data_len=%d)",intf->target_channel & 0x0f, req.msg.netfn,req.msg.lun , req.msg.cmd, req.msg.data_len);printbuf(req.msg.data, req.msg.data_len, "RAW REQUEST");rsp = intf->sendrecv(intf, &req);if (rsp == NULL) {lprintf(LOG_ERR, "Unable to send RAW command ""(channel=0x%x netfn=0x%x lun=0x%x cmd=0x%x)",intf->target_channel & 0x0f, req.msg.netfn, req.msg.lun, req.msg.cmd);return -1;}if (rsp->ccode > 0) {lprintf(LOG_ERR, "Unable to send RAW command ""(channel=0x%x netfn=0x%x lun=0x%x cmd=0x%x rsp=0x%x): %s",intf->target_channel & 0x0f, req.msg.netfn, req.msg.lun, req.msg.cmd, rsp->ccode,val2str(rsp->ccode, completion_code_vals));return -1;}lprintf(LOG_INFO, "RAW RSP (%d bytes)", rsp->data_len);/* print the raw response buffer */for (i=0; i<rsp->data_len; i++) {if (((i%16) == 0) && (i != 0))printf("\n");printf(" %2.2x", rsp->data[i]);}printf("\n");return 0; }

ipmi_openipmi_send_cmd()函數中,調用了ioctrl()實現數據的發送和接收。ioctrl()有點兒類似于linux中的read()和write(),可以說是一種特殊的read()和write()的組合,read()和write()不能實現的讀寫操作,通過ioctrl()可以實現,這里就不介紹了,沒幾頁紙也寫不完,說不透。

//open.cif (ioctl(intf->fd, IPMICTL_SEND_COMMAND, &_req) < 0) {lperror(LOG_ERR, "Unable to send command");if (data != NULL) {free(data);data = NULL;}return NULL;} //open.c/* get data */if (ioctl(intf->fd, IPMICTL_RECEIVE_MSG_TRUNC, &recv) < 0) {lperror(LOG_ERR, "Error receiving message");if (errno != EMSGSIZE) {if (data != NULL) {free(data);data = NULL;}return NULL;}}

ipmitool 一次raw data的發送大致過程就是這樣,細節可再細看。

總結

以上是生活随笔為你收集整理的ipmitool源码解析(一)——一次带内ipmitool raw data发送过程的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产一区视频在线 | 久久国产视频网 | 美女天天操 | 偷拍福利视频一区二区三区 | 综合天堂av久久久久久久 | 国内精品久久久久影院优 | 91成人免费在线 | 国产美女视频免费观看的网站 | 天天激情综合 | av东方在线 | 亚洲欧美婷婷六月色综合 | 97精产国品一二三产区在线 | 日韩在线高清免费视频 | 国产1区在线 | 99久久爱| 天天艹天天 | 亚洲精品乱码久久久久久蜜桃91 | 欧美资源| 91福利国产在线观看 | 一区二区三区在线视频111 | 久久久久国产精品一区二区 | 久久黄色小说视频 | 久久免费视频在线观看6 | 久久综合国产伦精品免费 | www.综合网.com | 欧洲精品码一区二区三区免费看 | 狠狠搞,com | 在线黄色国产电影 | 成人av影视在线 | 国产精品自产拍在线观看网站 | 成年人视频免费在线播放 | 黄色网在线播放 | 波多野结衣一区 | 毛片网站在线观看 | 精品一区电影 | 中文字幕在线播放av | 在线小视频 | 日韩精品一区二区在线观看 | 中文字幕文字幕一区二区 | 久久国产精品二国产精品中国洋人 | 最新av免费| 色婷婷五 | www.人人草| 亚洲综合日韩在线 | 亚洲黄污| 国产一区播放 | 福利电影一区二区 | 欧美电影在线观看 | 欧美射射射 | 射九九| 免费福利片2019潦草影视午夜 | 免费黄色一区 | 久久久久久久久久久影视 | 亚洲精品午夜aaa久久久 | 天天干天天干天天色 | 成人午夜片av在线看 | 日韩三级视频 | 亚洲精品视频在线观看视频 | 91成年人网站 | 国产午夜精品一区二区三区欧美 | av网站免费在线 | 久久国产精品久久精品国产演员表 | 一级片色播影院 | 日本aaaa级毛片在线看 | 婷婷丁香六月 | 亚州天堂 | 久久精精品| 成人三级黄色 | 日韩欧三级 | 国产一区 在线播放 | 国产高清视频网 | 天天操天天干天天 | av在线播放一区二区三区 | 91桃色视频 | 久久久久综合视频 | 国产又黄又爽无遮挡 | 久久久国产精品人人片99精片欧美一 | 人人爽久久涩噜噜噜网站 | 97综合在线 | 欧美精品中文在线免费观看 | 国产不卡在线播放 | 国产在线看 | 国产一级淫片免费看 | 丁香婷婷色 | 国产二区电影 | 欧美日韩精品影院 | 国产精品门事件 | 婷婷综合久久 | 五月婷社区 | 人人看黄色 | 日本高清免费中文字幕 | 精品欧美一区二区精品久久 | 中文字幕在线观看一区 | 国产精品热视频 | 中文字幕一区二区三区四区在线视频 | 涩涩网站在线看 | 国产精品网红直播 | 又黄又爽又色无遮挡免费 | 韩国av免费看| 日韩电影在线观看中文字幕 | 97高清免费视频 | 日日夜夜网 | 91黄色视屏 | 久久国产精品免费 | 国产成人黄色网址 | 97精产国品一二三产区在线 | 国产精品白浆视频 | 日本公妇在线观看 | 久久免费电影网 | 成人试看120秒 | 樱空桃av | 香蕉久久久久久av成人 | 二区三区在线 | 欧美久久久久久久久久 | 国内久久久 | www.五月天婷婷 | 麻豆国产精品视频 | 深夜免费福利在线 | 亚洲专区在线视频 | 亚洲国产成人久久综合 | 狠狠干 狠狠操 | 国产高清视频免费在线观看 | 黄色毛片视频免费观看中文 | 99久热在线精品视频观看 | 人人揉人人揉人人揉人人揉97 | 国产日产亚洲精华av | 国产四虎在线 | 福利视频| 玖草影院 | 国产无限资源在线观看 | 91精品久久久久久久91蜜桃 | 国产精品电影一区二区 | 亚洲天天摸日日摸天天欢 | 久久久久女人精品毛片 | 国产成人综合在线观看 | 国产福利免费在线观看 | 日批视频在线 | 亚洲精品国产拍在线 | 天天干天天干天天干天天干天天干天天干 | 色91在线视频 | 国产伦精品一区二区三区高清 | 日韩免费一级a毛片在线播放一级 | 亚洲一区欧美激情 | 在线激情av电影 | 久久视了 | 天天干天天综合 | 国产精国产精品 | 色噜噜在线观看 | 97国产在线 | 亚洲国产字幕 | 久久久久久欧美二区电影网 | 91精彩视频 | 亚洲成人av电影在线 | 国产一区二区久久久 | 午夜精品一区二区三区在线视频 | 国产不卡在线观看视频 | 精品乱码一区二区三四区 | 日韩av电影免费观看 | 久久久精品免费看 | 中文字幕在线色 | 亚洲在线色| 麻豆视频观看 | 国产精品18p| 麻豆国产露脸在线观看 | 中文在线字幕免费观看 | 成人免费观看视频网站 | 波多野结衣一区 | 国产精品一区久久久久 | 99久久精品免费看国产免费软件 | 天天操综| 亚洲电影自拍 | 在线免费黄色片 | 日韩精品一区二区电影 | 日日夜夜精品免费视频 | 国产一级大片免费看 | 五月花丁香婷婷 | 四虎在线免费观看视频 | 国产成人精品在线播放 | 国产成人精品一区二区三区网站观看 | 伊人热| 一区二区三区电影大全 | 成人久久久精品国产乱码一区二区 | 91成年视频 | 99久久久精品 | 免费成人黄色片 | 看黄色.com| 日日天天| 免费99精品国产自在在线 | 91精品视屏 | 婷婷av色综合 | 亚洲综合小说电影qvod | 色婷婷久久久综合中文字幕 | 波多野结衣一区二区三区中文字幕 | 亚洲理论电影网 | 色国产精品一区在线观看 | 成人免费网站视频 | 国产亚洲成av人片在线观看桃 | 久久精美视频 | 热久在线| 三上悠亚一区二区在线观看 | 中文不卡视频 | 久久99精品久久久久婷婷 | 91精品国产综合久久婷婷香蕉 | 亚洲免费av电影 | av电影免费看 | 欧美成人h版| 国产精品理论片 | 在线观看一区 | 99久久久国产精品免费99 | 91精品视频免费观看 | 日韩小视频网站 | 日日爽夜夜操 | 精品国产一区二区三区久久 | 在线观看中文字幕一区二区 | 日韩精品久久久久久久电影竹菊 | 久久国产免 | 免费福利在线观看 | 国产成人av综合色 | 久久成人亚洲欧美电影 | 91av视频在线观看 | 中文字幕观看在线 | 国产美女精品在线 | 午夜精品久久久久久久久久久 | 国产伦精品一区二区三区… | 精品国产欧美一区二区三区不卡 | 婷婷综合网 | 99热在 | 日韩二区在线观看 | 亚洲国产三级在线观看 | 国产精品美女久久久久久久久久久 | 天天色官网 | 香蕉网站在线观看 | 国产一区二区不卡视频 | 国产精品99久久久久久小说 | 人人干狠狠干 | www操操操 | 国产成人精品午夜在线播放 | 九色91福利 | 婷婷久久久 | 免费视频一区 | 中文字幕精品三区 | 在线精品视频免费播放 | 在线国产一区二区三区 | 91在线视频免费播放 | 国产99久久99热这里精品5 | 国产一二三区在线观看 | 国产美女免费 | 日韩欧美高清视频在线观看 | 欧美人交a欧美精品 | 久久精品亚洲 | 国产亚洲欧美在线视频 | 亚洲天堂va| 69视频网站| 99r在线视频 | 精品亚洲成a人在线观看 | 国产一二三精品 | 精品国产伦一区二区三区免费 | 免费三级黄 | 深夜免费小视频 | 中文字幕在线观看日本 | 波多野结衣动态图 | 在线婷婷 | 黄色毛片视频免费观看中文 | 国产99久久 | www日日 | 精品国产电影 | 一级欧美日韩 | 麻豆网站免费观看 | 狠狠操影视 | 午夜精品一区二区三区在线观看 | 精品v亚洲v欧美v高清v | 国产精品久久久久久久妇 | 日韩一级黄色片 | 亚州人成在线播放 | 九九免费在线视频 | 人人爱人人舔 | 免费成人在线视频网站 | 国产乱码精品一区二区三区介绍 | 91mv.cool在线观看 | 337p日本欧洲亚洲大胆裸体艺术 | 福利久久久 | 久草视频在线资源站 | 国产精品久久久久久久久久久免费看 | 亚洲第一区在线观看 | 在线看日韩av | 成人免费 在线播放 | 日p视频在线观看 | 国产精品免费观看视频 | 1024手机在线看 | 欧美最猛性xxxxx亚洲精品 | 91精品国产92久久久久 | 日韩精品91偷拍在线观看 | 91你懂的 | 国产精品99久久免费黑人 | 久久国产精品99久久久久久丝袜 | 精品视频在线免费 | 午夜精品久久久久久99热明星 | 国产视频美女 | 日本丰满少妇免费一区 | 国产91精品久久久久 | 色视频网站在线 | 亚洲精品自拍视频在线观看 | 蜜臀aⅴ国产精品久久久国产 | 国产免费资源 | 国产九九九九九 | www.五月婷婷.com | www.国产毛片 | www四虎影院 | 久久久免费高清视频 | 色偷偷av男人天堂 | 免费亚洲精品视频 | 色激情在线 | 国产一级性生活视频 | 九九色在线观看 | 亚洲国产久 | 人人射人人 | 精品亚洲男同gayvideo网站 | 欧美成人在线网站 | 亚洲精品小区久久久久久 | 日韩动漫免费观看高清完整版在线观看 | 亚洲精品999 | 91社区国产高清 | 欧美午夜精品久久久久久孕妇 | 麻豆成人网 | 欧美日韩观看 | 国产亚洲情侣一区二区无 | 免费看日韩 | 国产精品中文久久久久久久 | 欧美日韩午夜爽爽 | 国产亚洲精品美女 | 日韩免费不卡视频 | 日本三级香港三级人妇99 | 国产精品色婷婷视频 | 九九九九热精品免费视频点播观看 | av不卡中文字幕 | 日本最新高清不卡中文字幕 | 国产无吗一区二区三区在线欢 | 国产精品久久99综合免费观看尤物 | 在线免费高清一区二区三区 | 久久精品成人热国产成 | 日本在线h| 日韩视频免费观看高清完整版在线 | 麻豆91精品视频 | 天堂资源在线观看视频 | 久久99在线 | 狠狠色丁香九九婷婷综合五月 | 日韩专区在线播放 | 国际精品久久久 | 日韩av影片在线观看 | 最新av在线播放 | 国产不卡在线观看 | 91av在线不卡 | 波多野结衣在线观看一区二区三区 | 中文字幕无吗 | 丁香花五月 | 亚洲精品视频中文字幕 | 久久精品网站免费观看 | 欧洲黄色片 | 日韩在线视频一区二区三区 | 久久国产精品久久精品国产演员表 | 综合在线亚洲 | 久久8| 久久九九精品 | 五月激情丁香婷婷 | 欧美大片mv免费 | 国产精品1区2区3区在线观看 | 超碰97成人 | 日日爱夜夜爱 | 天天操天天射天天爽 | 国产在线精品国自产拍影院 | 国产精品久久久久久久久久东京 | 久久人操| 久久精品视 | 国产精品久久久久久999 | 国产黄色一级大片 | 97视频免费观看 | av免费播放 | 国产色婷婷在线 | 精品91久久久久 | 韩国视频一区二区三区 | 中文字幕精品三区 | 国产福利中文字幕 | 国产人成看黄久久久久久久久 | 天天碰天天操 | 免费午夜视频在线观看 | av在线电影免费观看 | 日韩在线一二三区 | 亚洲影院天堂 | 成人97视频一区二区 | 欧美极品xxxx | 久久字幕| 亚洲精品综合久久 | 精品国产免费久久 | 国产高清视频免费观看 | 久久99国产精品自在自在app | 欧美精品亚洲精品日韩精品 | 亚洲日韩中文字幕 | 欧美色图p | 日韩欧美视频 | 国产视频久久 | 成人免费在线视频 | 亚洲 欧洲 国产 日本 综合 | 一区二区三区手机在线观看 | 在线观看的a站 | 精品福利国产 | 中文国产成人精品久久一 | 成人久久精品视频 | 69久久99精品久久久久婷婷 | 草久电影| 亚洲午夜av久久乱码 | 91亚洲国产成人久久精品网站 | 免费看一级一片 | 国产精品福利一区 | 青青草国产精品 | 激情五月伊人 | 午夜av日韩 | 中文字幕有码在线观看 | 久久99久久99精品中文字幕 | 久久久久久久影院 | 欧洲一区精品 | 精品福利在线 | 日韩有码中文字幕在线 | 色香蕉网 | 国产免费不卡av | 亚洲精品乱码 | 视频一区在线免费观看 | 丁香九月激情综合 | 欧美日韩在线播放 | 久久久久久视频 | 国产精品日韩久久久久 | 欧美日韩在线精品一区二区 | 国产69熟| 日韩视频1| 99国产在线观看 | 五月婷婷综 | 91精品啪在线观看国产81旧版 | 人人揉人人揉人人揉人人揉97 | 国产精品欧美精品 | 久久久国产精品一区二区三区 | 深爱婷婷激情 | 久久精品久久精品久久 | 综合激情婷婷 | 91精品国产高清自在线观看 | 欧美日韩国语 | 国产麻豆精品久久 | 中文在线中文资源 | 日韩午夜一级片 | 日韩av片无码一区二区不卡电影 | 亚洲欧洲av| 欧美精品久久天天躁 | 在线免费视 | 在线观看黄av | 中文字幕在线观看播放 | 久操视频在线播放 | 国产一级在线观看视频 | av综合av | 98超碰在线| 欧美日韩有码 | 最新国产一区二区三区 | 日韩在线视频二区 | 天天射天天操天天色 | 精品国产伦一区二区三区观看说明 | 91精品国产亚洲 | 亚洲视频免费在线观看 | www91在线观看 | 色综合久久久久综合体桃花网 | 在线播放视频一区 | av高清网站在线观看 | 亚洲精品小视频 | 一区二区不卡视频在线观看 | 天天干天天操人体 | 精品久久片 | 亚a在线| 国产小视频你懂的在线 | 婷婷精品国产欧美精品亚洲人人爽 | 亚洲国产mv| 亚洲2019精品 | 黄色免费高清视频 | 久久视频99 | 日韩黄色av网站 | 欧美在线久久 | 精品免费 | 免费69视频 | 亚洲国产大片 | 欧美黄在线 | 久久草草影视免费网 | 国产精品video | www色网站| 97日日碰人人模人人澡分享吧 | 午夜少妇av | 亚洲成熟女人毛片在线 | 日韩一区视频在线 | 精品91 | 国产成人精品综合久久久久99 | 国产精品久久久久久久久久久久午夜片 | 免费观看视频的网站 | 成人羞羞视频在线观看免费 | 美女久久网站 | av资源在线看 | 国产裸体无遮挡 | 国产精品一区二区白浆 | 人人艹人人 | 天天综合网在线 | 免费观看www小视频的软件 | 日本精品一二区 | 99精品视频免费观看视频 | 亚洲粉嫩av | 91久久黄色| 91资源在线免费观看 | 久精品在线 | 日韩精品在线看 | 国产精品久久久久久久久久久久午 | 国产精品21区| 亚洲一级久久 | 最新国产一区二区三区 | 国产精品免费看久久久8精臀av | 玖玖玖在线观看 | 午夜在线看片 | 日韩精品欧美专区 | 91精品一区二区三区蜜臀 | 免费av黄色 | 亚洲精品久久久蜜臀下载官网 | 中文字幕av最新更新 | 国产色网 | 看黄色.com| 麻豆视频免费播放 | 一区三区在线欧 | 免费视频你懂的 | 日韩av视屏 | www.国产高清 | 久久国产精品久久w女人spa | 在线观看网站黄 | 日韩色av色资源 | 亚洲精品美女久久久久网站 | 亚洲精品videossex少妇 | 激情文学综合丁香 | 久久婷婷国产色一区二区三区 | 国产永久网站 | 狠狠操狠狠插 | 91精品在线免费视频 | 九九久久婷婷 | 99精品一区 | 亚洲一级电影在线观看 | 人人爽人人澡人人添人人人人 | 久久高清毛片 | 精品国产一区二区三区久久久蜜月 | 欧美 日韩 成人 | 国产精品久久久久毛片大屁完整版 | 久久的色| 中文字幕在线观看一区二区三区 | 久久久久久久国产精品视频 | 不卡中文字幕在线 | 99在线精品视频观看 | 高清av网站| 超碰九九 | 国产手机在线播放 | av大全免费在线观看 | 亚洲高清网站 | 国产99久久九九精品免费 | 深夜福利视频在线观看 | 国产精品视频大全 | 九色在线视频 | 日韩成人精品 | www亚洲精品| 久久精品站 | 久99久视频 | 欧美精品一二三 | 99色 | 999视频网站 | 久久亚洲国产精品 | 亚洲精品国产综合久久 | 国产精品日韩久久久久 | 国产精品久久久av久久久 | 在线观看av网 | 精品国产_亚洲人成在线 | 国产视频精品网 | a级片韩国| 欧美人交a欧美精品 | 国产精品毛片一区视频播不卡 | 激情久久久久 | 日韩在线视频国产 | 成人一级在线观看 | 久久综合狠狠综合久久激情 | 在线电影a | 人人揉人人揉人人揉人人揉97 | 天天色天天艹 | 国产精品女同一区二区三区久久夜 | 手机在线视频福利 | a在线v| 4438全国亚洲精品在线观看视频 | 成人免费在线电影 | 国产免费不卡 | 国产99久久久国产精品成人免费 | 国产高清中文字幕 | 国产精品xxxx18a99 | 在线免费中文字幕 | 日韩二区在线播放 | 成人免费在线观看av | 狠狠操91 | 亚州精品一二三区 | 亚洲三级在线 | 97精品国产97久久久久久粉红 | 国产一区网 | av免费在线观 | 免费在线精品视频 | 日韩艹| 一区二区三区影院 | 国产久草在线 | 午夜精品久久久久久久99 | 在线国产视频观看 | 人人爽人人乐 | av网站手机在线观看 | 在线看片91 | 国产一区二区日本 | 亚洲免费不卡 | 久久久午夜视频 | 夜夜视频资源 | 成 人 黄 色 免费播放 | 日日干天天操 | 日韩无在线 | 国产精品久久久久久一区二区三区 | 久草免费资源 | 伊人狠狠色丁香婷婷综合 | 最新日韩在线 | 久久女同性恋中文字幕 | 很黄很黄的网站免费的 | 91精品久久香蕉国产线看观看 | 久久久av免费 | 久久视频一区二区 | 欧美午夜视频在线 | 日韩二区在线 | 啪啪小视频网站 | 国产99久久久国产精品免费二区 | 亚洲精品一区二区三区在线观看 | 99精品视频精品精品视频 | 国产美女免费观看 | 激情视频综合网 | 狠狠狠狠狠狠 | 午夜免费在线观看 | 在线日韩精品视频 | 日本黄色大片免费 | 精品久久久久久久久久久久久久久久久久 | 又黄又爽的免费高潮视频 | 日韩二区在线播放 | 99精品一区 | 四虎在线免费观看 | 成人国产精品久久久久久亚洲 | 国产精品av免费在线观看 | 天天综合区 | 欧美一级大片在线观看 | 日日碰狠狠躁久久躁综合网 | 亚洲精品美女在线观看播放 | 99re国产| 天天爱天天操 | 国产小视频在线观看 | 亚洲va韩国va欧美va精四季 | 麻花天美星空视频 | 在线看黄色av | 深夜免费福利视频 | 骄小bbw搡bbbb揉bbbb | 国产小视频在线 | 日韩videos | 色偷偷男人的天堂av | 久久久国产视频 | 免费视频一二三区 | 精品一二 | 欧美三级免费 | 亚洲国产理论片 | 99久久精品免费一区 | 在线一区电影 | 天堂av免费在线 | 日韩特黄一级欧美毛片特黄 | 免费视频网 | 国产精品一区在线播放 | 欧美精品成人在线 | 国产片免费在线观看视频 | 亚州性色| 日本黄色免费观看 | 国产亚洲永久域名 | 亚洲精品乱码久久久久久蜜桃91 | 99re国产视频 | 久久精品79国产精品 | 午夜美女福利直播 | 97精品国产97久久久久久久久久久久 | 最近中文字幕视频网 | av资源免费看 | aaa亚洲精品一二三区 | 综合网中文字幕 | 久久99久久99精品免观看软件 | 日韩在线视 | 久久久国产影视 | 久久久久久久99 | 久久国产免| 国产黄色精品在线 | 天堂网一区二区三区 | 99精品在线| 亚洲精品视频一二三 | 中文字幕视频在线播放 | 黄色毛片大全 | 最近高清中文在线字幕在线观看 | 欧美一区日韩一区 | 十八岁以下禁止观看的1000个网站 | 欧美日韩二区三区 | 99色| 九九色网| 国产成人综合图片 | av高清网站在线观看 | 免费av观看 | 蜜臀一区二区三区精品免费视频 | 91视频91自拍 | 日本一区二区三区免费观看 | 成人午夜电影久久影院 | 99精品一级欧美片免费播放 | 免费精品人在线二线三线 | 国产成人免费观看 | 国产 一区二区三区 在线 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 日韩激情免费视频 | 色婷婷av在线 | 久久99国产精品自在自在app | 久久视频在线看 | 久久99国产综合精品 | 91少妇精拍在线播放 | 亚洲人在线7777777精品 | 91麻豆视频| 97操碰| 香蕉在线播放 | 久久一区二区三区四区 | 97在线视 | 国际av在线 | 一区二区三区精品在线视频 | www免费在线观看 | 亚洲精品美女久久 | 九色91福利 | 国产成人免费在线 | 97视频在线观看成人 | 天天操天天舔天天干 | 一区二区三区免费网站 | 欧美福利片在线观看 | 91免费在线视频 | 日韩理论片在线观看 | 亚洲经典视频在线观看 | 五月婷婷操 | 波多野结衣一区 | 精品国产大片 | www.狠狠色.com | 激情网站网址 | 天天色天天色天天色 | 成x99人av在线www | 九九免费视频 | 在线观看成人网 | 精品久久中文 | 国内精品久久久久久久久久清纯 | 国产精品一区二区久久 | 超碰在线观看97 | 成年人免费在线观看网站 | www99精品| 亚洲另类人人澡 | av综合av| 最近中文国产在线视频 | 欧美激情xxxx | 日韩精品中文字幕一区二区 | 十八岁以下禁止观看的1000个网站 | 精品久久久免费 | 射久久久 | 日本中文字幕在线电影 | 国产香蕉97碰碰久久人人 | 日本久久中文 | 国产精品久久免费看 | 99在线视频播放 | wwwww.国产 | 欧美日韩亚洲在线观看 | 久久成人在线视频 | 欧美成人h版 | www.夜夜| 久久免费视频99 | 国产精品18久久久久久久久久久久 | 婷婷视频在线观看 | 成人在线视频免费 | 最近中文字幕大全 | 国产精品一区二区电影 | 日韩在线观看视频在线 | 国产亚洲视频在线 | 日本激情视频中文字幕 | 成人午夜毛片 | 久久久久久久久免费视频 | 蜜臀久久99静品久久久久久 | 国产亚洲人成网站在线观看 | 色婷婷久久一区二区 | 亚洲一级片 | 中文字幕在线观看第三页 | 成人a在线 | 国产在线视频在线观看 | 亚洲欧洲一区二区在线观看 | 国产成人精品av久久 | 免费看黄在线观看 | 人人狠狠综合久久亚洲 | 午夜手机电影 | 精品国产自在精品国产精野外直播 | 91精品久久香蕉国产线看观看 | 久久视频这里只有精品 | 91桃色免费观看 | 国产精品成人av电影 | 中文字幕色播 | 五月婷婷综合在线视频 | 免费在线国产精品 | 久热色超碰 | 日韩网站一区二区 | 亚洲另类视频在线观看 | 97夜夜澡人人双人人人喊 | 久久久久北条麻妃免费看 | 亚洲黄色一级电影 | 亚洲国产精品va在线 | 精品一区二区在线免费观看 | 亚洲成人精品在线观看 | 久久免费av电影 | av资源中文字幕 | 日韩va欧美va亚洲va久久 | 西西www4444大胆视频 | 夜又临在线观看 | 国产视频欧美视频 | 精品国产乱码一区二区三区在线 | 欧美另类高潮 | 在线观看黄a| 国产精品原创在线 | 久久久国产精品成人免费 | 九九热在线观看 | 九九欧美视频 | 国产精品高潮呻吟久久久久 | 免费看国产曰批40分钟 | 91久久人澡人人添人人爽欧美 | av千婊在线免费观看 | 国产高清专区 | 一本—道久久a久久精品蜜桃 | 亚洲片在线 | 久久看免费视频 | 四虎国产精品免费 | 黄色毛片大全 | 精品欧美一区二区精品久久 | 91在线www| 一级精品视频在线观看宜春院 | 综合激情婷婷 | 婷婷av综合| 国产伦精品一区二区三区… | 黄在线免费看 | 丝袜美腿亚洲综合 | 狠狠ri| 69久久久久久久 | 国产黄色精品视频 | 久久久国产精品一区二区三区 | 狠狠色丁香久久综合网 | 成年人视频免费在线播放 | 久久婷婷一区二区三区 | 在线视频日韩 | 91传媒视频在线观看 | 国产原创av在线 | 97精品伊人 | 久久精品牌麻豆国产大山 | 久视频在线| 色婷婷亚洲婷婷 | 日本亚洲国产 | 午夜黄色| 国产高清不卡在线 | a天堂中文在线 | 一区二区三区三区在线 | 96精品视频 | 91麻豆国产 | 网站在线观看日韩 | 欧美成人黄色片 | 久久理论电影 | 国产人成一区二区三区影院 | 狠狠色狠狠色 | 日韩激情综合 | 国产成人精品在线观看 | 手机成人av | 久久99国产一区二区三区 | 国产在线欧美在线 | 日韩精品一区二区三区不卡 | 免费三级骚 | 精品视频123区在线观看 | 欧美嫩草影院 | 国产一级二级在线观看 | 国产精品毛片一区二区三区 | 天天操天天色天天射 | 激情五月六月婷婷 | 国产精品专区在线观看 | 99热99re6国产在线播放 | 国产高清视频在线观看 | 天天草天天草 | 少妇资源站 | 992tv在线 | 中文字幕一区二区三区四区久久 | 黄色1级大片 | 国产精品一区二 | 国产91学生粉嫩喷水 | 日韩理论电影在线 | 亚洲 欧美 精品 | 999成人国产 | 91大神dom调教在线观看 | 在线免费91 | 丁香六月婷婷 | 国产伦理久久精品久久久久_ | 日韩欧美视频一区二区三区 | 色噜噜在线观看视频 | 91在线一区二区 | 欧美亚洲三级 | 综合在线观看色 | 国产超碰在线 | 97爱| 日韩中字在线观看 | 亚洲蜜桃在线 | av电影在线观看完整版一区二区 | 免费高清在线观看成人 | 欧美午夜精品久久久久久浪潮 | 久久在现| 色天堂在线视频 | 欧美精品一区二区性色 | 亚洲狠狠干 | 久久免费久久 | 国产欧美在线一区 | 激情 一区二区 | 久久久久亚洲精品国产 | 久久综合亚洲鲁鲁五月久久 | 婷婷午夜天 | 五月婷婷天堂 | 五月天婷亚洲天综合网鲁鲁鲁 | 午夜少妇av | 精品亚洲va在线va天堂资源站 | 97看片吧 | 久久久国产一区二区三区四区小说 | 久久优| 国产资源站 | 深夜福利视频一区二区 | 久久99久久99精品免视看婷婷 | 久久永久免费视频 | 免费看的黄网站 | 西西4444www大胆无视频 | 久草视频在线资源 | 天天插天天爱 | 午夜视频免费在线观看 | 成人精品一区二区三区电影免费 | 欧美午夜激情网 | 精品日韩在线 | 18性欧美xxxⅹ性满足 | 在线黄色免费 | 欧美一区二区在线免费观看 | 黄色的网站免费看 | 国产精品免费视频久久久 | 天天操夜夜操夜夜操 | 中文字幕在线播放视频 | 午夜久久久久 | 天天操狠狠操网站 | 久久国内免费视频 | 欧美日本国产在线观看 | 亚洲理论电影 | 福利二区视频 | 亚洲精品在线资源 | 丁香网婷婷 | 激情丁香久久 | 丁香婷婷社区 | 国产精品免费久久久 | 色之综合网| 亚洲欧美日韩国产一区二区 | 超碰97久久| 97超碰人 | 久久字幕网 | 国产精品久久一区二区三区不卡 | www.久久色 | 国产视频中文字幕 | 91网站观看 | 中文字幕在线成人 | 夜夜操天天摸 | 国产在线自| 国产一区在线免费观看 | 欧美天天综合网 | 国产日韩精品一区二区在线观看播放 | 99国产情侣在线播放 | 国产成人不卡 | 91色亚洲 | 婷婷丁香花 | 婷婷六月天丁香 | 天天色图| 欧美日韩一区二区视频在线观看 | 国产午夜精品一区二区三区四区 | 日韩欧美一区二区在线观看 | 一区二区三区免费 | 久久精品看片 | 成人午夜精品久久久久久久3d | 精品嫩模福利一区二区蜜臀 | 日韩亚洲在线视频 | 欧美日韩国内在线 | 国产 视频 高清 免费 | 999久久久欧美日韩黑人 | 国产短视频在线播放 | 一区二区欧美激情 | 九九九九色 | 国产精品久久网 | 97超碰人人澡 |