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

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

?? click-combine.cc

?? COPE the first practical network coding scheme which is developped on click
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* * click-combine.cc -- combine several Click configurations at their devices * Eddie Kohler * * Copyright (c) 2000 Massachusetts Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, subject to the conditions * listed in the Click LICENSE file. These conditions include: you must * preserve this copyright notice, and you cannot mention the copyright * holders in advertising related to the Software without their permission. * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This * notice is a summary of the Click LICENSE file; the license in that file is * legally binding. */#include <click/config.h>#include "routert.hh"#include "lexert.hh"#include <click/error.hh>#include <click/clp.h>#include "toolutils.hh"#include "elementmap.hh"#include <click/confparse.hh>#include <click/straccum.hh>#include <click/variableenv.hh>#include <click/driver.hh>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <errno.h>#include <time.h>#include <unistd.h>#include <sys/stat.h>#include <stdarg.h>#define HELP_OPT		300#define VERSION_OPT		301#define ROUTER_OPT		302#define OUTPUT_OPT		303#define NAME_OPT		304#define LINK_OPT		305#define EXPRESSION_OPT		306#define CONFIG_OPT		307static Clp_Option options[] = {  { "config", 'c', CONFIG_OPT, 0, 0 },  { "expression", 'e', EXPRESSION_OPT, Clp_ArgString, 0 },  { "file", 'f', ROUTER_OPT, Clp_ArgString, 0 },  { "help", 0, HELP_OPT, 0, 0 },  { "link", 'l', LINK_OPT, Clp_ArgString, 0 },  { "name", 'n', NAME_OPT, Clp_ArgString, 0 },  { "output", 'o', OUTPUT_OPT, Clp_ArgString, 0 },  { "version", 'v', VERSION_OPT, 0, 0 },};static const char *program_name;static String::Initializer string_initializer;static String runclick_prog;voidshort_usage(){  fprintf(stderr, "Usage: %s [OPTION]... [ROUTERFILE]\n\Try '%s --help' for more information.\n",	  program_name, program_name);}voidusage(){  printf("\'Click-combine' combines several Click router configurations at their network\n\devices and writes the combined configuration to the standard output. The\n\combination is controlled by link specifications. The click-uncombine tool can\n\extract components from these combined configurations.\n\\n\Usage: %s [OPTION]... [ROUTERFILE | ROUTERNAME=FILE | LINKSPEC]\n\\n\Options:\n\  -o, --output FILE      Write combined configuration to FILE.\n\  -n, --name NAME        The next router component name is NAME.\n\  -f, --file FILE        Read router component configuration from FILE.\n\  -e, --expression EXPR  Use EXPR as router component configuration.\n\  -l, --link LINKSPEC    Add a link between router components. LINKSPEC has the\n\                         form 'NAME1.COMP1=NAME2.COMP2'. Each NAME is a router\n\                         component name. Each COMP is either an element name or\n\                         a device name (for linking at From/To/PollDevices).\n\  -c, --config           Output config only (not an archive).\n\      --help             Print this message and exit.\n\  -v, --version          Print version number and exit.\n\\n\Report bugs to <click@pdos.lcs.mit.edu>.\n", program_name);}static Vector<String> router_names;static Vector<RouterT *> routers;typedef PortT RouterPortT;	// except that 'port' is the router indexstatic Vector<RouterPortT> links_from;static Vector<RouterPortT> links_to;static Vector<int> link_id;static voidcc_read_router(String name, String &next_name, int &next_number,	       const char *filename, bool file_is_expr, ErrorHandler *errh){  if (name && next_name)    errh->warning("router name specified twice ('%s' and '%s')",		  next_name.cc(), name.cc());  else if (name)    next_name = name;    RouterT *r = read_router(filename, file_is_expr, errh);    if (r) {    r->flatten(errh);    if (next_name) {      int span = strspn(next_name.cc(), "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_/@0123456789");      if (span != next_name.length() || strstr(next_name.cc(), "//") != 0	  || next_name[0] == '/')	errh->error("router name '%s' is not a legal Click identifier", next_name.cc());      router_names.push_back(next_name);    } else      router_names.push_back(String(next_number));    routers.push_back(r);  }  next_name = String();  next_number++;}static ElementT *try_find_device(String devname, String class1, String class2,		int rn, ErrorHandler *errh){  RouterT *r = routers[rn];  String router_name = router_names[rn];    // fix config  {    Vector<String> words;    cp_argvec(devname, words);    devname = words[0];  }    ElementClassT *t1 = ElementClassT::base_type(class1);  ElementClassT *t2 = ElementClassT::base_type(class2);  ElementT *found = 0;  bool duplicate = false;  for (int i = 0; i < r->nelements(); i++) {    ElementT *e = r->element(i);    if (e->live() && (e->type() == t1 || e->type() == t2)) {      Vector<String> words;      cp_argvec(e->configuration(), words);      if (words.size() >= 1 && words[0] == devname) {	// found it, but check for duplication	if (!found && !duplicate)	  found = e;	else if (!duplicate) {	  if (class2)	    errh->error("more than one '%s(%s)' or '%s(%s)' element in router '%s'", class1.cc(), devname.cc(), class2.cc(), devname.cc(), router_name.cc());	  else	    errh->error("more than one '%s(%s)' element in router '%s'",			class1.cc(), devname.cc(), router_name.cc());	  duplicate = true;	  found = 0;	}      }    }  }    return found;}static intparse_link(String text, ErrorHandler *errh){  // separate into words  Vector<String> words;  {    StringAccum sa;    const char *s = text.data();    for (int i = 0; i < text.length(); i++)      if (s[i] == '.' || s[i] == '=')	sa << ' ' << s[i] << ' ';      else	sa << s[i];    cp_spacevec(sa.take_string(), words);  }  // check for errors  if (words.size() != 7 || words[1] != "." || words[3] != "="      || words[5] != ".")    return errh->error("bad link definition '%s'", text.cc());  // find pieces  int router1 = -1, router2 = -1;  for (int i = 0; i < routers.size(); i++) {    if (router_names[i] == words[0])      router1 = i;    if (router_names[i] == words[4])      router2 = i;  }  if (router1 < 0 || router2 < 0) {    if (router1 < 0) errh->error("no router named '%s'", words[0].cc());    if (router2 < 0) errh->error("no router named '%s'", words[4].cc());    return -1;  }  ElementT *element1 = routers[router1]->element(words[2]);  if (!element1)    element1 = try_find_device(words[2], "ToDevice", "", router1, errh);  ElementT *element2 = routers[router2]->element(words[6]);  if (!element2)    element2 = try_find_device(words[6], "FromDevice", "PollDevice", router2, errh);  if (!element1 || !element2) {    if (!element1)      errh->error("router '%s' has no element or device named '%s'", words[0].cc(), words[2].cc());    if (!element2)      errh->error("router '%s' has no element or device named '%s'", words[4].cc(), words[6].cc());    return -1;  }  // check element types  String tn1 = element1->type_name();  String tn2 = element2->type_name();  if (tn1 != "ToDevice") {    errh->warning("router '%s' element '%s' has unexpected class", words[0].cc(), words[2].cc());    errh->message("  expected ToDevice, got %s", tn1.cc());  }  if (tn2 != "FromDevice" && tn2 != "PollDevice") {    errh->warning("router '%s' element '%s' has unexpected class", words[4].cc(), words[6].cc());    errh->message("  expected FromDevice or PollDevice, got %s", tn2.cc());  }    // append link definition  links_from.push_back(RouterPortT(element1, router1));  links_to.push_back(RouterPortT(element2, router2));  return -1;}static voidfrob_nested_routerlink(ElementT *e){  String prefix = e->name().substring(e->name().begin(), find(e->name(), '/') + 1);  assert(prefix.length() > 1 && prefix.back() == '/');  Vector<String> words;  cp_argvec(e->configuration(), words);  for (int i = 0; i < words.size(); i += 2)    words[i] = prefix + words[i];  e->configuration() = cp_unargvec(words);}static intcombine_links(ErrorHandler *errh){  // check for same name used as both source and destination  int before = errh->nerrors();  for (int i = 1; i < links_from.size(); i++)    for (int j = 0; j < i; j++)      if (links_from[i] == links_to[j] || links_from[j] == links_to[i]) {	const RouterPortT &h = links_from[i];	errh->error("router '%s' element '%s' used as both source and destination", router_names[h.port].c_str(), h.element->name_c_str());      }  if (errh->nerrors() != before)    return -1;  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产免费观看| 久久99久久久久| 一本一道久久a久久精品综合蜜臀| 国产欧美日韩亚州综合| 国产麻豆午夜三级精品| 国产欧美一区二区三区鸳鸯浴| 国产成人精品免费一区二区| 国产精品电影一区二区| 色综合久久综合| 国产日韩欧美精品综合| 国产精品传媒在线| 午夜视频一区二区| 奇米在线7777在线精品| 图片区小说区国产精品视频| 国产精品一区二区在线播放| 欧美日韩mp4| 日本精品一区二区三区高清| 欧美日韩国产一区| 久久久99久久| 国产精品久线观看视频| 日本强好片久久久久久aaa| 91精品国产高清一区二区三区| 免费在线观看不卡| 中文在线资源观看网站视频免费不卡| 91视频国产资源| 蜜臀av一区二区在线观看| 欧美经典一区二区| 制服.丝袜.亚洲.中文.综合| 国产乱国产乱300精品| 亚洲精品伦理在线| 久久综合色婷婷| 色综合天天性综合| 激情综合一区二区三区| 亚洲精品日日夜夜| 26uuu亚洲| 欧美精品三级在线观看| 懂色av一区二区夜夜嗨| 奇米精品一区二区三区在线观看 | 精品国产青草久久久久福利| 91片在线免费观看| 精品在线观看免费| 日韩成人免费电影| 亚洲乱码一区二区三区在线观看| 久久久精品综合| 欧美日韩高清在线| 99国产精品久久久久| 国产专区欧美精品| 石原莉奈一区二区三区在线观看| 国产精品福利一区二区| 久久综合九色综合97_久久久| 欧美亚洲动漫另类| 色综合天天综合在线视频| 国产一区二区三区av电影| 亚洲va天堂va国产va久| 自拍偷拍亚洲激情| 欧美国产日韩亚洲一区| 精品粉嫩超白一线天av| 91精品黄色片免费大全| 欧美写真视频网站| 色拍拍在线精品视频8848| 粉嫩高潮美女一区二区三区| 韩国在线一区二区| 精品一区二区三区的国产在线播放| av高清不卡在线| 国产精品免费免费| 精品剧情在线观看| 欧美唯美清纯偷拍| 久久不见久久见免费视频7 | 99免费精品视频| 自拍av一区二区三区| 日韩欧美专区在线| 99re成人精品视频| 欧美国产激情一区二区三区蜜月| 一区二区不卡在线播放| 国产精品女同互慰在线看| 久久日韩粉嫩一区二区三区| 精品国产乱码久久久久久免费 | 日本高清免费不卡视频| 色综合天天天天做夜夜夜夜做| 不卡一区二区在线| 99久久99久久精品国产片果冻| 成人开心网精品视频| 不卡电影一区二区三区| av一区二区三区| 91高清视频在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色一情一乱一乱一91av| 欧美三级三级三级爽爽爽| 欧美高清你懂得| 日韩免费观看2025年上映的电影| 欧美成人高清电影在线| 久久久久久99久久久精品网站| 久久综合99re88久久爱| 国产女人水真多18毛片18精品视频| 亚洲国产精品国自产拍av| 日韩理论片在线| 亚洲成人免费影院| 老司机精品视频导航| 成人午夜免费电影| 色偷偷成人一区二区三区91 | 日韩一区二区电影在线| 久久综合久久综合久久综合| 国产精品传媒视频| 天堂蜜桃91精品| 国产成人午夜99999| 91精品91久久久中77777| 日韩一区二区麻豆国产| 国产日韩欧美一区二区三区乱码 | 精品免费一区二区三区| 国产精品久久久久久久久久久免费看| 亚洲精品视频自拍| 激情综合色综合久久综合| 不卡电影一区二区三区| 91精品在线一区二区| 欧美国产激情一区二区三区蜜月| 亚洲综合成人在线| 国产美女精品在线| ...av二区三区久久精品| 午夜私人影院久久久久| 精品美女一区二区三区| 国产精品美女一区二区三区| 综合婷婷亚洲小说| 丝袜国产日韩另类美女| 国产在线精品国自产拍免费| 欧美三级日韩三级| 国产午夜三级一区二区三| 亚洲欧美国产77777| 麻豆精品国产91久久久久久| 91浏览器打开| 色菇凉天天综合网| 色哟哟一区二区| 日韩美女在线视频| 一级精品视频在线观看宜春院| 蜜桃免费网站一区二区三区| 欧洲国内综合视频| 欧美极品另类videosde| 美日韩一区二区三区| 在线亚洲一区二区| 国产精品嫩草影院av蜜臀| 久久成人综合网| 在线成人午夜影院| 亚洲免费高清视频在线| 成人一二三区视频| wwww国产精品欧美| 久久99精品国产麻豆不卡| 欧美日韩国产电影| 亚洲免费视频成人| 91在线观看成人| 中文字幕欧美日本乱码一线二线| 蜜臀va亚洲va欧美va天堂| 欧美精品自拍偷拍| 亚洲一区国产视频| 一本色道久久综合亚洲精品按摩| 中文字幕av一区二区三区高| 另类的小说在线视频另类成人小视频在线 | 亚洲另类春色校园小说| 成人免费视频视频| 亚洲国产精品二十页| 国产一区二区三区四区五区入口 | 91黄色免费看| 亚洲国产激情av| 成人午夜视频免费看| 久久精品男人的天堂| 精品亚洲aⅴ乱码一区二区三区| 欧美肥妇bbw| 日产欧产美韩系列久久99| 欧美美女喷水视频| 日韩精品电影一区亚洲| 91麻豆精品国产91久久久久久| 亚洲国产成人av| 欧美日韩国产影片| 日本成人中文字幕| 精品国产乱码久久久久久夜甘婷婷| 久久国产成人午夜av影院| 精品日韩欧美一区二区| 国内精品嫩模私拍在线| 久久久99精品免费观看不卡| 国产.欧美.日韩| 亚洲欧美一区二区在线观看| 日本一区二区电影| 5566中文字幕一区二区电影| 欧美午夜在线观看| 成人欧美一区二区三区白人| 欧美日韩成人高清| 91亚洲午夜精品久久久久久| 国产精品一线二线三线精华| 99精品久久免费看蜜臀剧情介绍| 亚洲国产成人91porn| 日本一区二区三区四区在线视频| 欧美日韩一区二区在线观看视频| 国产.欧美.日韩| 国产综合色在线| 精品亚洲免费视频| 成人的网站免费观看| 精品一区二区三区视频在线观看 | 国产日韩av一区| 91视频免费播放| 美女在线观看视频一区二区| 久久久久久一级片| 色狠狠av一区二区三区|