亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲成人av一区二区三区| 欧美国产精品一区| 99re视频精品| 国产一级精品在线| 午夜精品福利一区二区三区av| 国产精品青草久久| 国产精品久久久一本精品 | 99re这里只有精品视频首页| 国产原创一区二区| 日韩中文字幕不卡| 偷拍与自拍一区| 亚洲午夜成aⅴ人片| 亚洲在线视频免费观看| 一区2区3区在线看| 亚洲高清不卡在线| 五月婷婷欧美视频| 蜜芽一区二区三区| 日本视频一区二区| 青青草成人在线观看| 日本一区中文字幕| 蜜臀av一区二区在线免费观看| 中文字幕在线不卡一区| 亚洲品质自拍视频网站| 亚洲资源在线观看| 日韩中文字幕一区二区三区| 麻豆免费精品视频| 国产曰批免费观看久久久| 国产福利一区二区三区视频在线| 成人一二三区视频| 91在线你懂得| 欧美日本免费一区二区三区| 日韩女优电影在线观看| 国产亚洲制服色| 日韩国产欧美在线视频| 精品写真视频在线观看| 成人av在线播放网址| 欧美在线不卡一区| 亚洲精品在线一区二区| 中文字幕一区二区三区四区不卡| 亚洲国产综合视频在线观看| 麻豆高清免费国产一区| 成人午夜短视频| 欧美日韩一级二级三级| 久久综合色综合88| 亚洲视频1区2区| 日韩一区精品字幕| 成av人片一区二区| 666欧美在线视频| 国产亚洲精品aa| 亚洲国产综合人成综合网站| 国产精品一线二线三线精华| 在线精品视频一区二区三四| 久久先锋影音av鲁色资源网| 亚洲自拍另类综合| 国产在线国偷精品免费看| a美女胸又www黄视频久久| 欧美军同video69gay| 久久日韩精品一区二区五区| 亚洲国产精品尤物yw在线观看| 国产在线播放一区| 51久久夜色精品国产麻豆| 国产精品污www在线观看| 日日摸夜夜添夜夜添亚洲女人| 不卡一区二区中文字幕| 精品免费日韩av| 一区二区三区成人| 欧美影院精品一区| 中文字幕精品综合| 国产一区日韩二区欧美三区| 欧美中文字幕亚洲一区二区va在线 | 91在线精品秘密一区二区| wwwwww.欧美系列| 日韩和欧美的一区| 在线影视一区二区三区| 国产精品久久99| 国产传媒欧美日韩成人| 久久婷婷国产综合国色天香| 蜜桃精品在线观看| 欧美一级片在线| 亚洲不卡av一区二区三区| 色爱区综合激月婷婷| 中文字幕一区三区| jizzjizzjizz欧美| 中文字幕一区二区三区精华液| 国产乱子轮精品视频| 精品国产91乱码一区二区三区| 日韩va亚洲va欧美va久久| 精品视频1区2区| 亚洲一二三专区| 欧美中文字幕一二三区视频| 亚洲综合清纯丝袜自拍| 欧美性xxxxxx少妇| 污片在线观看一区二区| 51精品久久久久久久蜜臀| 美洲天堂一区二卡三卡四卡视频| 欧美精品久久久久久久久老牛影院| 亚洲电影一级片| 欧美丰满嫩嫩电影| 日韩av一区二区在线影视| 欧美一级精品大片| 精品一区二区三区不卡 | 欧美日韩在线不卡| 一区二区三区四区蜜桃| 欧美伊人精品成人久久综合97| 夜夜嗨av一区二区三区四季av| 在线中文字幕不卡| 日本成人在线看| 久久亚区不卡日本| av一区二区三区黑人| 亚洲欧美一区二区三区极速播放 | 韩日欧美一区二区三区| 2021国产精品久久精品| 粉嫩av亚洲一区二区图片| 国产精品国产三级国产普通话三级| 不卡在线观看av| 香蕉久久夜色精品国产使用方法| 91精品国产综合久久精品app| 成人免费av资源| 综合欧美亚洲日本| 欧美日韩不卡一区| 国产精品亚洲专一区二区三区| 日本一区二区电影| 91精品办公室少妇高潮对白| 日韩黄色片在线观看| 久久噜噜亚洲综合| 91麻豆蜜桃一区二区三区| 亚洲大片精品永久免费| 日韩精品一区二区三区四区视频| 国产一区二区精品久久| 亚洲嫩草精品久久| 久久网站热最新地址| 91丝袜美女网| 久久精品72免费观看| 中文字幕亚洲不卡| 日韩欧美国产一区二区三区| av高清久久久| 精品一区二区三区香蕉蜜桃| 一区二区三区欧美| 久久久五月婷婷| 欧美三级一区二区| 成人精品在线视频观看| 蜜臀av性久久久久蜜臀av麻豆| 国产精品美女www爽爽爽| 91精品国产综合久久小美女| 成人深夜福利app| 免费亚洲电影在线| 一区二区三区精品在线| 久久久久久影视| 91精品国产综合久久国产大片| 成人免费看黄yyy456| 久久99精品国产.久久久久久| 一个色在线综合| 国产视频亚洲色图| 欧美一区二区三区视频免费| 91在线免费视频观看| 国产suv精品一区二区6| 视频一区欧美精品| 亚洲美女淫视频| 国产精品黄色在线观看| 国产午夜亚洲精品理论片色戒| 在线成人高清不卡| 欧美日韩精品一区二区天天拍小说 | 欧美午夜免费电影| 91香蕉视频mp4| 成人av先锋影音| 高清成人免费视频| 国产精品一区二区三区四区| 看电视剧不卡顿的网站| 男女男精品网站| 免费成人av资源网| 麻豆高清免费国产一区| 日本中文字幕不卡| 亚洲成人激情综合网| 亚洲午夜影视影院在线观看| 一区二区三区欧美久久| 亚洲自拍欧美精品| 亚洲电影激情视频网站| 亚洲18色成人| 爽爽淫人综合网网站| 视频一区欧美精品| 琪琪一区二区三区| 久久精品久久精品| 狠狠色狠狠色综合日日91app| 精品系列免费在线观看| 国产精品1区二区.| www.综合网.com| 91啦中文在线观看| 欧美性极品少妇| 欧美一级在线视频| 精品国产露脸精彩对白 | 欧美乱妇20p| 91麻豆精品国产91久久久久久久久 | 欧美一区二区三区免费| 日韩你懂的在线播放| 久久久欧美精品sm网站| 国产精品国产三级国产aⅴ无密码| 亚洲你懂的在线视频| 肉丝袜脚交视频一区二区| 精品亚洲国产成人av制服丝袜| 懂色av中文字幕一区二区三区|