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

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

?? sim.c

?? 一個linux下的各種組播路由算法編程
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
 * Copyright (c) 1995 Center for Advanced Computing and Communications (CACC),
 * North Carolina State University at Raleigh.
 * All rights reserved.
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation.  The CACC makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 */


/*****************************************************************************
***            Project: GUI for a Computer Network Simulator               ***
***                       Date: September 9, 1994                          ***
***                            File: sim.c                                 ***
***          The main program and Motif callbacks and event handlers       ***
*****************************************************************************/

#include "sim.h"

//Definition of global variabnles


//First define the main objects: a message bar, a command bar, a graphics
//object, a network manager, and a toplevel widget.
messageBar msgb;
commandBar cmdb;
graphics painter;
TheNodeList manager;
Widget toplevel;


//Define some general purpose variables
int flag, i, j, model, symmetry, batch, alg;
double tmpx, tmpy, tmpz, tmpx2, tmpy2;
NodeListEntry *tmpNode;
AdjacencyListEntry *tmpAdj;

//Define and initialize the parameter for the random network and random link 
//generators
float beta = 2.2;
int   number = 20;
float degree = 4;
float alpha = .15;

//Define and initialize the parameters for the simulation
double batchSize = .01;   //100 msec is the default size of a simulation batch
int    minNumBatches = 3;
int    maxNumBatches = 5;
   
char *currentFile; //name of the curren5t file

void changeTitle() {
   //Changes the title displayed on the title bar to file name.

   Arg al[10];
   int ac;
   char s[50];

   if ((currentFile != NULL) && (currentFile != "")) {
      strcpy(s, "SIM - ");
      strcat(s, currentFile);
      ac = 0;
      XtSetArg(al[ac], XmNtitle, s); ac++;
      XtSetValues(toplevel, al, ac);
   }   
   else {
      strcpy(s, "SIM");
      ac = 0;
      XtSetArg(al[ac], XmNtitle, s); ac++;
      XtSetValues(toplevel, al, ac);
   }; 
};   

main(Cardinal argc, char *argv[]) {

   Arg al[10];
   int ac;

   //Define widgets, menus, and menu items
   XtAppContext context;

   Widget form, MenuBar, MessageBar, CommandBar;
   Widget Separator1, Separator2, DrawingArea;

   menu file, edit, parameters, generator, groups_sources, routing, 
        AddBackgroundTraffic, AddSymmetricBackgroundTraffic,
        simulation, display, DisplayLinkCost, DisplayLinkCap, DisplayNodeName,
        DisplayGroup, DisplayTree, AddSource, Cost, Constrained, Dbv;

   menuItem Open, Save, Close, Exit,
            AddNode, RemoveNode, MoveNode, AddLink, RemoveLink, Refresh,
            Renumber, EditLinkCap,
            Alpha2, Beta2, Number, Degree, DefCap, RandomGraph, RandomLinks,
            AddSourceVoice, AddSourceVideo, RemoveSource, 
            AddDestination, RemoveDestination, 
            AddRandomGroup, RemoveGroup,
            RemoveBackgroundTraffic,
            Dks, Bf, Pim, Mst, Waters, ModWaters, Cstc, Cstcd, Opt, Copt,
            Dksld, Kmb, Cao, Bsma, Dcdimst, Dimst, Dvmrp, Bfnoadm, Cdks,
            RemoveTree,
            BatchSize, MinNumBatches, MaxNumBatches, Run,
            DLCYes, DLCNo, DLCapYes, DLCapNo, DNNYes, DNNNo,
            DGYes, DGNo, DTYes, DTNo, DGraphDegree, Peak, Average,
            Muxed1, Batch1, Muxed2, Batch2,
            AdmitCapacity, DelayBound, DelayStep, DbvYes, DbvNo;

   currentFile = new char(20); 
   currentFile = "";

   //initialize the random numbers generator
   srand(time(NULL));

   // create the toplevel shell and resize it
   toplevel = XtAppInitialize(&context,"",NULL,0,&argc,argv,NULL,NULL,0);
   ac=0;
   XtSetArg(al[ac],XmNheight,SIDE + 100); ac++;
   XtSetArg(al[ac],XmNwidth,SIDE + 30); ac++;
   XtSetArg(al[ac], XmNresizable, False); ac++;
   XtSetValues(toplevel,al,ac);
   changeTitle();

   // Create a form to hold widgets 
   ac = 0;
   XtSetArg(al[ac], XmNforeground, 0); ac++;
   XtSetArg(al[ac], XmNbackground, 0); ac++;
   XtSetArg(al[ac], XmNtopShadowColor, 0); ac++;
   XtSetArg(al[ac], XmNresizable, False); ac++;
   form = XmCreateForm(toplevel, "form", al, ac);
   XtManageChild(form);   

   // create a menu bar
   menuBar mb(form);
   MenuBar = mb.getWidget();

   // cereate a drawing area
   drawingArea da(form);
   DrawingArea = da.getWidget();

   // initialize graphics for the drawing area
   graphics painter1(DrawingArea);
   painter = painter1;

   // create a message bar
   messageBar msgb1(form);
   msgb = msgb1;
   MessageBar = msgb.getWidget();

   // create a command bar
   commandBar cmdb1(form);
   cmdb = cmdb1;
   CommandBar = cmdb.getWidget();

   // create separators
   separator sp1(form), sp2(form);
   Separator1 = sp1.getWidget();
   Separator2 = sp2.getWidget();

   // place the widgets on the form
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
   XtSetValues(MenuBar, al, ac);
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNtopWidget, MenuBar); ac++;
   XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
   XtSetValues(Separator1, al, ac);
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNtopWidget, Separator1); ac++;
   XtSetArg(al[ac], XmNwidth, (int)(3 *SIDE / 4)); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
   XtSetValues(MessageBar, al, ac);
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNtopWidget, Separator1); ac++;
   XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNleftWidget, MessageBar); ac++;
   XtSetValues(CommandBar, al, ac);
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNtopWidget, MessageBar); ac++;
   XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
   XtSetValues(Separator2, al, ac);
   ac = 0;
   XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
   XtSetArg(al[ac], XmNtopWidget, Separator2); ac++;
   XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
   XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
   XtSetValues(DrawingArea, al, ac);

   // add menus on the menu bar
   file = mb.addMenu("File");
   edit = mb.addMenu("Edit");
   generator = mb.addMenu("Generator");
   groups_sources = mb.addMenu("Groups & Sources"); 
   routing = mb.addMenu("Routing"); 
   simulation = mb.addMenu("Simulation");
   display = mb.addMenu("Display");

   // add items for the menus
   Open = file.addItem("Open", (XtCallbackProc)openCB);
   Save = file.addItem("Save", (XtCallbackProc)saveCB);
   Close = file.addItem("Close", (XtCallbackProc)closeCB);
   Exit = file.addItem("Exit", (XtCallbackProc)exitCB);
   AddNode = edit.addItem("Add Node", (XtCallbackProc)addNodeCB);
   RemoveNode = edit.addItem("Remove Node", (XtCallbackProc)removeNodeCB);
   MoveNode = edit.addItem("Move Node", (XtCallbackProc)moveNodeCB);
   AddLink = edit.addItem("Add Link", (XtCallbackProc)addLinkCB);
   RemoveLink = edit.addItem("Remove Link", (XtCallbackProc)removeLinkCB);
   EditLinkCap = edit.addItem("Edit Link Capacity", 
			      (XtCallbackProc)editLinkCapCB);
   Renumber = edit.addItem("Renumber Nodes", (XtCallbackProc)renumberCB);
   Refresh = edit.addItem("Refresh", (XtCallbackProc)refreshCB);
   Alpha2 = generator.addItem("Alpha", (XtCallbackProc)alphaCB);
   Beta2 = generator.addItem("Beta", (XtCallbackProc)betaCB);
   Number = generator.addItem("# 0f Nodes", (XtCallbackProc)numberCB);
   Degree = generator.addItem("Node Degree", (XtCallbackProc)degreeCB);
   DefCap = generator.addItem("Default Link Capacity", 
			      (XtCallbackProc)defCapCB);
   RandomGraph = generator.addItem("Generate Random Graph", 
                                  (XtCallbackProc)randomGraphCB);
   RandomLinks = generator.addItem("Generate Random Links", 
                                  (XtCallbackProc)randomLinksCB);
   AddDestination = groups_sources.addItem("Add Destination",
                                  (XtCallbackProc)addDestinationCB);
   RemoveDestination = groups_sources.addItem("Remove Destination",
                                  (XtCallbackProc)removeDestinationCB);
   AddRandomGroup = groups_sources.addItem("Add Random Group",
                                  (XtCallbackProc)randomGroupCB);
   RemoveGroup = groups_sources.addItem("Remove Group",
                                  (XtCallbackProc)removeGroupCB);
   AddSource = groups_sources.addMenu("Add Source");
   AddSourceVoice = AddSource.addItem("Add Voice Source", 
                    (XtCallbackProc)addSourceVoiceCB);  
   AddSourceVideo = AddSource.addItem("Add Video Source", 
                    (XtCallbackProc)addSourceVideoCB);  
   RemoveSource = groups_sources.addItem("Remove Source",
                                  (XtCallbackProc)removeSourceCB);
   AddBackgroundTraffic = groups_sources.addMenu("Add Background Traffic");
   Muxed1 = AddBackgroundTraffic.addItem("Multiplexed",
				 (XtCallbackProc)muxedBackgroundTrafficCB);
   Batch1 = AddBackgroundTraffic.addItem("Batch",
				 (XtCallbackProc)batchBackgroundTrafficCB);
   AddSymmetricBackgroundTraffic = groups_sources.addMenu(
     "Add Symmetric Background Traffic");
   Muxed2 = AddSymmetricBackgroundTraffic.addItem("Multiplexed",
	       (XtCallbackProc)muxedSymmetricBackgroundTrafficCB);
   Batch2 = AddSymmetricBackgroundTraffic.addItem("Batch",
	       (XtCallbackProc)batchSymmetricBackgroundTrafficCB);
   RemoveBackgroundTraffic = groups_sources.addItem("Remove Background Traffic",
                                  (XtCallbackProc)removeBackgroundTrafficCB);
   Cost = routing.addMenu("Peak/Average");
   Peak = Cost.addItem("Peak", (XtCallbackProc)PeakCB);
   Average = Cost.addItem("Average", (XtCallbackProc)AverageCB);
   AdmitCapacity = routing.addItem("Admission Capacity",
				   (XtCallbackProc)ADMITCB);
   DelayBound = routing.addItem("Delay Bound", 
				(XtCallbackProc)DBOUNDCB);
   DelayStep = routing.addItem("Delay Step (for KPP)", 
				(XtCallbackProc)DSTEPCB);
   Dbv = routing.addMenu("Delay Bound Violation");
   DbvYes = Dbv.addItem("Allowed", (XtCallbackProc)DBVYESCB);
   DbvNo = Dbv.addItem("Not Allowed", (XtCallbackProc)DBVNOCB);
   Opt = routing.addItem("Optimal Min. Steiner Tree Algorithm", (XtCallbackProc)OPTCB);
   Kmb = routing.addItem("KMB Min. Steiner Tree Heuristic", (XtCallbackProc)KMBCB);
   Dksld = routing.addItem("Least-Delay (Dijkstra)", (XtCallbackProc)DKSLDCB);
   Dks = routing.addItem("Least-Cost (Dijkstra)", (XtCallbackProc)DKSCB);
   Bf = routing.addItem("Least-Cost (Bellman-Ford)", (XtCallbackProc)BFCB);
   Mst = routing.addItem("Pruned MST Heuristic", (XtCallbackProc)MSTCB);
   Dimst = routing.addItem("Pruned Directed MST Heuristic", (XtCallbackProc)DIMSTCB);
//   Pim = routing.addItem("Reverse Path Multicasting (RPM)", (XtCallbackProc)PIMCB);
   Dvmrp = routing.addItem("RPM (adm. ctrl. separate)", (XtCallbackProc)DVMRPCB);
   Bfnoadm = routing.addItem("Least-Cost (Bellman-Ford, adm. ctrl. separate)", (XtCallbackProc)BFNOADMCB);
   Waters = routing.addItem("Semiconstrained Heuristic (SC)", (XtCallbackProc)WatersCB);
   ModWaters = routing.addItem("Mod. Semiconstrained Heuristic (MSC)", 
                               (XtCallbackProc)ModWatersCB);
   Constrained = routing.addMenu("Constrained Steiner Algorithms");
   Copt = Constrained.addItem("Optimal Constrained Steiner Tree", (XtCallbackProc)COPTCB);
   Cstc = Constrained.addItem("KPP - Cost (UC San Diego)", (XtCallbackProc)CSTCCB);
   Cstcd = Constrained.addItem("KPP - Cost&Delay (UC San Diego)", (XtCallbackProc)CSTCDCB);
   Cao = Constrained.addItem("CAO Heuristic (UC Berkeley)", (XtCallbackProc)CAOCB);
   Bsma = Constrained.addItem("BSMA Heuristic (UC Santa Cruz)", (XtCallbackProc)BSMACB);
   Dcdimst = Constrained.addItem("Pruned BDB Heuristic", (XtCallbackProc)DCDIMSTCB);
   Cdks = Constrained.addItem("CDKS Heuristic", (XtCallbackProc)CDKSCB);
   RemoveTree = routing.addItem("Remove Tree", (XtCallbackProc)removeTreeCB);
   BatchSize = simulation.addItem("Batch Size", (XtCallbackProc)batchSizeCB);
   MinNumBatches = simulation.addItem("Min. Number of Batches",
                                   (XtCallbackProc)minNumBatchesCB);
   MaxNumBatches = simulation.addItem("Max. Number of Batches",
                                   (XtCallbackProc)maxNumBatchesCB);
   Run = simulation.addItem("RUN", (XtCallbackProc)runCB);
   DisplayLinkCost = display.addMenu("Display Link Costs");
   DLCYes = DisplayLinkCost.addItem("Yes",(XtCallbackProc)DLCYesCB);
   DLCNo = DisplayLinkCost.addItem("No",(XtCallbackProc)DLCNoCB);
   DisplayLinkCap = display.addMenu("Display Link Capacities");
   DLCapYes = DisplayLinkCap.addItem("Yes",(XtCallbackProc)DLCapYesCB);
   DLCapNo = DisplayLinkCap.addItem("No",(XtCallbackProc)DLCapNoCB);
   DisplayNodeName = display.addMenu("Display Node Names");
   DNNYes = DisplayNodeName.addItem("Yes",(XtCallbackProc)DNNYesCB);
   DNNNo = DisplayNodeName.addItem("No",(XtCallbackProc)DNNNoCB);
   DisplayGroup = display.addMenu("Display Group");
   DGYes = DisplayGroup.addItem("Yes", (XtCallbackProc)DGYesCB);
   DGNo = DisplayGroup.addItem("No", (XtCallbackProc)DGNoCB);
   DisplayTree = display.addMenu("Display Tree");
   DTYes = DisplayTree.addItem("Yes", (XtCallbackProc)DTYesCB);
   DTNo = DisplayTree.addItem("No", (XtCallbackProc)DTNoCB);
   DGraphDegree = display.addItem("Display Graph Degree",
                                   (XtCallbackProc)graphDegreeCB);

   // realize the window and manage the system
   XtRealizeWidget(toplevel);
   XtAppMainLoop(context);
}; // end of main


void openCB() { 
         //open a file and read its contents, must be in netsim format
         flag = OPEN;
         msgb.message("Enter file name: ");
         cmdb.message(currentFile, True);
};

void closeCB() { 
         //erase any work from the drawing area without saving
         msgb.message("");
         cmdb.message("", False);
         flag = NOTHING;
         currentFile = "";
         changeTitle();
         manager.deleteGraph();
         manager.refresh(painter);
};

void saveCB() { 
         //save the network displayed on the drawing area to file   
         flag = SAVE;
         msgb.message("Save as: ");
         cmdb.message(currentFile, True);
};

void addNodeCB() { 
         //   
         flag = ADDNODE;
         msgb.message("Click on the new node's position");
         cmdb.message("", False);
};

void removeNodeCB() {         
         //   
         flag = REMOVENODE;
         msgb.message("Click on the node's position");
         cmdb.message("", False);
};

void moveNodeCB() {
         //
         flag = MOVENODE;
         msgb.message("Click on the node's position");
         cmdb.message("", False);
};

void addLinkCB() { 
         //   
         flag = ADDLINK;
         msgb.message("Click on the first node");
         cmdb.message("", False);
};

void removeLinkCB() {         
         //   
         flag = REMOVELINK;
         msgb.message("Click on the first node");
         cmdb.message("", False);
};

void editLinkCapCB() {
         //   
         flag = EDITLINKCAP;
         msgb.message("Click on the tail node");
         cmdb.message("", False);
};

void exitCB() { 
         //leave the simulator
         msgb.message("");
         cmdb.message("", False);
         flag = NOTHING;
         exit(0); 
};

void randomGraphCB() { 
   //generate arandom graph
   cmdb.message("", False);
   msgb.message("");
   NodeListEntry *tmp = manager.randomGraphGenerator(number, alpha,
                                                     beta, degree);
   if (tmp == NULL) msgb.message("Failed: change parameters");
   manager.refresh(painter);
};

void randomLinksCB() { 
   //generate random links without changing the node positions
   cmdb.message("", False);
   msgb.message("");
   NodeListEntry *tmp = manager.randomLinkGenerator(alpha, beta, degree);
   if (tmp == NULL) msgb.message("Failed: change parameters");
   manager.refresh(painter);
};

void drawingHandler(Widget w, XtPointer client_data, XEvent *event) {

   //Handles the button press event

   int xpos, ypos;
   NodeListEntry *n1, *n2, *n;
   Node *nd1, *nd2, *nd;
   int status;

   msgb.message("");

   //get the mouse's position
   xpos = event->xbutton.x;
   ypos = event->xbutton.y;
   
   switch (flag) {
  
      case ADDNODE:
            tmpx = (xpos - 10.0) / SIDE;
            tmpy = (ypos - 15.0) / SIDE;
            nd = new Node(tmpx, tmpy);
            n = new NodeListEntry;
            n->nodePtr(nd);
            manager.addNode(n);
            manager.refresh(painter);
            flag = NOTHING;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲另类| 蜜臀av国产精品久久久久| 国产精品99久久久久久宅男| 久久婷婷成人综合色| 国产伦精品一区二区三区免费| 精品电影一区二区三区| 国产一区二区美女| 中文字幕乱码一区二区免费| 波多野结衣的一区二区三区| 亚洲婷婷综合久久一本伊一区| 色琪琪一区二区三区亚洲区| 偷拍日韩校园综合在线| 久久综合九色综合欧美亚洲| 成人国产一区二区三区精品| 亚洲主播在线观看| 欧美一区二区三区的| 激情五月婷婷综合网| 欧美高清一级片在线观看| 91丨porny丨蝌蚪视频| 天堂一区二区在线| 久久久五月婷婷| 91激情在线视频| 精品一区二区久久| 亚洲欧美偷拍卡通变态| 欧美日本视频在线| 高清av一区二区| 首页欧美精品中文字幕| 久久久精品tv| 欧美视频日韩视频在线观看| 韩国三级在线一区| 一区二区三区.www| 国产亚洲综合性久久久影院| 欧美丝袜丝交足nylons图片| 精品一区二区三区视频在线观看 | 国产精品青草久久| 欧美色综合影院| 国产一区二区在线观看免费| 亚洲综合区在线| 久久精品夜夜夜夜久久| 欧美日本一区二区三区四区 | 中文字幕av一区二区三区免费看| 欧美三级电影在线观看| 国产精品一级片在线观看| 亚洲成a人v欧美综合天堂下载 | 宅男在线国产精品| 色综合久久久久综合99| 国产曰批免费观看久久久| 亚洲一区在线看| 国产精品欧美久久久久无广告| 91精品国产免费| 欧美色视频在线| 97精品国产露脸对白| 国产一区二区三区黄视频| 日韩精品1区2区3区| 一区二区三区四区在线免费观看| 久久久天堂av| 精品福利二区三区| 日韩欧美国产1| 欧美精品欧美精品系列| 在线观看www91| 91在线国内视频| 国产成人免费视频网站| 精品一区二区久久| 精品无人区卡一卡二卡三乱码免费卡| 亚洲大型综合色站| 亚洲一区二区三区美女| 亚洲狠狠丁香婷婷综合久久久| 国产精品国产馆在线真实露脸| 国产午夜一区二区三区| 久久天天做天天爱综合色| 欧美精品一区二区三区四区| 欧美r级在线观看| 欧美成人性福生活免费看| 欧美理论片在线| 欧美日韩视频不卡| 欧美嫩在线观看| 欧美一级日韩免费不卡| 91精品国产美女浴室洗澡无遮挡| 51精品国自产在线| 欧美一卡2卡3卡4卡| 91精品国产综合久久久久久久 | 色婷婷综合久久久久中文一区二区| 国产激情91久久精品导航| 国产精品一二一区| 国产福利91精品一区| 国产成人av自拍| 成人黄色免费短视频| 91一区二区三区在线播放| 91麻豆福利精品推荐| 在线国产电影不卡| 91精品国产一区二区三区 | 久久人人97超碰com| 久久精品一二三| 亚洲少妇最新在线视频| 亚洲精品免费在线播放| 亚洲成av人片在线| 久久精品国产99国产精品| 国产一区二区福利| 99视频在线精品| 欧美在线观看18| 欧美一区二区成人6969| 欧美激情一区二区三区在线| 亚洲欧洲成人精品av97| 午夜精品久久久久久久| 精品伊人久久久久7777人| 盗摄精品av一区二区三区| 色婷婷久久99综合精品jk白丝| 欧美日韩久久不卡| 久久影院午夜论| 亚洲人成在线观看一区二区| 亚洲bdsm女犯bdsm网站| 国产最新精品免费| 91在线高清观看| 91麻豆精品国产综合久久久久久| 久久久久久久精| 中文字幕一区二区视频| 日日夜夜免费精品| 成人动漫在线一区| 欧美一区二区三区系列电影| 亚洲国产高清aⅴ视频| 午夜激情一区二区三区| 国产高清不卡一区二区| 欧美日韩视频在线一区二区| 中文字幕久久午夜不卡| 免费在线观看视频一区| 99re视频精品| 欧美成人综合网站| 亚洲一区在线电影| 国产91精品欧美| 日韩欧美一区在线| 亚洲精品国产视频| 国产一区二区三区在线观看精品| 欧美性色aⅴ视频一区日韩精品| 精品福利一区二区三区| 日韩高清在线观看| 色女孩综合影院| 久久久久久久久一| 日本大胆欧美人术艺术动态| 97久久超碰国产精品| 国产色产综合色产在线视频| 日韩国产精品久久久久久亚洲| 91浏览器打开| 欧美激情在线免费观看| 国精品**一区二区三区在线蜜桃| 777久久久精品| 亚洲主播在线观看| 99久久精品免费观看| 久久精品综合网| 国产自产视频一区二区三区| 日韩欧美精品在线| 日韩电影网1区2区| 欧美日韩黄视频| 亚洲另类在线一区| 91麻豆国产自产在线观看| 中文字幕二三区不卡| 成人免费高清在线观看| 久久久国产精品午夜一区ai换脸 | 国产麻豆欧美日韩一区| 日韩欧美亚洲国产精品字幕久久久| 午夜不卡av免费| 欧美影视一区二区三区| 亚洲免费视频成人| 色哟哟亚洲精品| 亚洲一区在线播放| 欧美三级韩国三级日本一级| 一区二区成人在线| 欧美日韩久久不卡| 日韩va欧美va亚洲va久久| 91精品国产一区二区三区香蕉| 婷婷国产在线综合| 欧美一区二区视频在线观看| 免费不卡在线观看| 精品对白一区国产伦| 国产成人日日夜夜| 中文字幕在线不卡一区| 色婷婷久久99综合精品jk白丝| 亚洲男同性视频| 91极品美女在线| 午夜电影一区二区三区| 欧美成人精品二区三区99精品| 狠狠色丁香九九婷婷综合五月| 日韩美女天天操| 国产精品123| 国产精品久久久久久久久久久免费看 | 欧美日韩在线亚洲一区蜜芽| 亚洲精品日产精品乱码不卡| 精品视频在线视频| 美女在线视频一区| 久久精品亚洲一区二区三区浴池| 不卡视频一二三四| 亚洲精品乱码久久久久久黑人| 欧美色视频在线| 久久99久久99| 国产精品免费视频观看| 欧美伊人久久久久久久久影院| 久久精品国产澳门| 中文字幕欧美一| 欧美日韩日日骚| 国产成人av电影| 一区二区三区精品|