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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? node.cc

?? MAODV代碼和安裝程序 hen nan找啊
?? CC
字號(hào):
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- * * Copyright (c) 1997 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the Computer Systems *	Engineering Group at Lawrence Berkeley Laboratory. * 4. Neither the name of the University nor of the Laboratory may be used *    to endorse or promote products derived from this software without *    specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Header: /nfs/jade/vint/CVSROOT/ns-2/common/node.cc,v 1.34 2002/05/30 17:44:03 haldar Exp $ * * CMU-Monarch project's Mobility extensions ported by Padma Haldar,  * 10/98. */#include <stdio.h>#include <stdarg.h>#include "address.h"#include "config.h"#ifdef HAVE_STL#include "nix/nixnode.h"#endif //HAVE_STL#include "node.h"static class LinkHeadClass : public TclClass {public:	LinkHeadClass() : TclClass("Connector/LinkHead") {}	TclObject* create(int, const char*const*) {		return (new LinkHead);	}} class_link_head;LinkHead::LinkHead() : net_if_(0), node_(0), type_(0) { }int32_t LinkHead::label() {	if (net_if_)		return net_if_->intf_label();	printf("Configuration error:  Network Interface missing\n");	exit(1);	// Make msvc happy	return 0;}int LinkHead::command(int argc, const char*const* argv){        if (argc == 3) {		if(strcmp(argv[1], "setnetinf") == 0) {			net_if_ =				(NetworkInterface*) TclObject::lookup(argv[2]);			if (net_if_ == 0)				return TCL_ERROR;			return TCL_OK;		} else if(strcmp(argv[1], "setnode") == 0) {			node_ = (Node*) TclObject::lookup(argv[2]); 			if (node_ == 0)				return TCL_ERROR;			return TCL_OK;		}	}	return (Connector::command(argc, argv));}static class NodeClass : public TclClass {public:	NodeClass() : TclClass("Node") {}	TclObject* create(int, const char*const*) {                return (new Node);        }} class_node;struct node_head Node::nodehead_ = { 0 }; // replaces LIST_INIT macrochar Node::nwrk_[NODE_NAMLOG_BUFSZ];/* Additions for NixRouting */int NixRoutingUsed = -1;Node::Node() : 	address_(-1), nodeid_ (-1), namChan_(0),	rtnotif_(NULL),#ifdef HAVE_STL	nixnode_(NULL),#endif //HAVE_STL	energy_model_(NULL), location_(NULL), index_(0) //index_ is added for prediction{	LIST_INIT(&ifhead_);	LIST_INIT(&linklisthead_);	insert(&(Node::nodehead_)); // insert self into static list of nodes#ifdef HAVE_STL	// Mods for Nix-Vector routing	if (NixRoutingUsed < 0)	{		// Find out if nix routing is in use		Tcl& tcl = Tcl::instance();		tcl.evalf("Simulator set nix-routing");		tcl.resultAs(&NixRoutingUsed);	}	if (NixRoutingUsed) {		// Create the NixNode pointer		if(0)printf("Nix routing in use, creating NixNode\n");		nixnode_ = new NixNode();	}#endif //HAVE_STL	neighbor_list_ = NULL;       //******added for prediction        for (int i=0;i<50;i++) {                neighborSignal[i].initial();        }       //******end}Node::~Node(){	LIST_REMOVE(this, entry);}intNode::command(int argc, const char*const* argv){	Tcl& tcl = Tcl::instance();	if (argc == 2) {#ifdef HAVE_STL		// Mods for Nix-Vector Routing		if(strcmp(argv[1], "populate-objects") == 0) {			if (nixnode_) {				nixnode_->PopulateObjects();			}			return TCL_OK;		}		// End mods for Nix-Vector routing#endif // HAVE_STL		if(strcmp(argv[1], "address?") == 0) {			tcl.resultf("%d", address_); 			return TCL_OK;		}					} else if (argc == 3) {#ifdef HAVE_STL		// Mods for Nix-Vector Routing		if (strcmp(argv[1], "get-nix-vector") == 0) {			if (nixnode_) {				nixnode_->GetNixVector(atol(argv[2]));			}			return TCL_OK;		}#endif //HAVE_STL		if (strcmp(argv[1], "set-neighbor") == 0) {#ifdef HAVE_STL			if (nixnode_) {				nixnode_->AddAdj(atol(argv[2]));			}#endif //HAVE_STL			return(TCL_OK);		}		if (strcmp(argv[1], "addr") == 0) {			address_ = Address::instance().str2addr(argv[2]);#ifdef HAVE_STL			if (nixnode_) {				nixnode_->Id(address_);			}#endif //HAVE_STL			return TCL_OK;		// End mods for Nix-Vector routing		} else if (strcmp(argv[1], "nodeid") == 0) {			nodeid_ = atoi(argv[2]);			return TCL_OK;		} else if(strcmp(argv[1], "addlinkhead") == 0) {			LinkHead* slhp = (LinkHead*)TclObject::lookup(argv[2]);			if (slhp == 0)				return TCL_ERROR;			slhp->insertlink(&linklisthead_);			return TCL_OK;		} else if (strcmp(argv[1], "addenergymodel") == 0) {			energy_model_=(EnergyModel*)TclObject::lookup(argv[2]);			if(!energy_model_)				return TCL_ERROR;			return TCL_OK;		} else if (strcmp(argv[1], "namattach") == 0) {                        int mode;                        namChan_ = Tcl_GetChannel(tcl.interp(), (char*)argv[2],                                                  &mode);                        if (namChan_ == 0) {                                tcl.resultf("node: can't attach %s", argv[2]);                                return (TCL_ERROR);                        }                        return (TCL_OK);		} else if (strcmp(argv[1], "add-neighbor") == 0) {			Node * node = (Node *)TclObject::lookup(argv[2]); 			if (node == 0) { 				tcl.resultf("Invalid node %s", argv[2]);                                 return (TCL_ERROR);			}			addNeighbor(node);			return TCL_OK;		}	}	return ParentNode::command(argc,argv);}void Node::route_notify(RoutingModule *rtm) {	if (rtnotif_ == NULL)		rtnotif_ = rtm;	else		rtnotif_->route_notify(rtm);}void Node::unreg_route_notify(RoutingModule *rtm) {	if (rtnotif_) {		if (rtnotif_ == rtm) {			//RoutingModule *tmp = rtnotif_;			rtnotif_= rtnotif_->next_rtm_;			//free (tmp);		}		else			rtnotif_->unreg_route_notify(rtm);	}}void Node::add_route(char *dst, NsObject *target) {	if (rtnotif_)		rtnotif_->add_route(dst, target);}void Node::delete_route(char *dst, NsObject *nullagent) {	if (rtnotif_)		rtnotif_->delete_route(dst, nullagent);}void Node::set_table_size(int nn) {	if (rtnotif_)		rtnotif_->set_table_size(nn);}void Node::set_table_size(int level, int csize) {	if (rtnotif_)		rtnotif_->set_table_size(level, csize);}void Node::addNeighbor(Node * neighbor) {	neighbor_list_node* nlistItem = (neighbor_list_node *)malloc(sizeof(neighbor_list_node));	nlistItem->nodeid = neighbor->nodeid();	nlistItem->next = neighbor_list_;	neighbor_list_=nlistItem; }void Node::namlog(const char* fmt, ...){	// Don't do anything if we don't have a log file.	if (namChan_ == 0) 		return;	va_list ap;	va_start(ap, fmt);	vsprintf(nwrk_, fmt, ap);	namdump();}void Node::namdump(){        int n = 0;        /* Otherwise nwrk_ isn't initialized */	n = strlen(nwrk_);	if (n >= NODE_NAMLOG_BUFSZ-1) {		fprintf(stderr, 			"Node::namdump() exceeds buffer size. Bail out.\n");		abort();	}	if (n > 0) {		/*		 * tack on a newline (temporarily) instead		 * of doing two writes		 */		nwrk_[n] = '\n';		nwrk_[n + 1] = 0;		(void)Tcl_Write(namChan_, nwrk_, n + 1);		nwrk_[n] = 0;	}}// Given an interface label for a NetworkInterface on this node, we return // the head of that linkNsObject* Node::intf_to_target(int32_t label){	LinkHead *lhp = linklisthead_.lh_first;	for (; lhp; lhp = lhp->nextlinkhead()) 		if (label == lhp->label())			return ((NsObject*) lhp);	return NULL;}// A class static method. Return the node instance from the static node listNode* Node::get_node_by_address (nsaddr_t id){	Node * tnode = nodehead_.lh_first;	for (; tnode; tnode = tnode->nextnode()) {		if (tnode->address_ == id ) {			return (tnode);		}	}	return NULL;}//******added for predictionint Node::getIndex(int anID){        int pos=0;        for(int i=0;i<index_;i++){                if(anID==neighborSignal[i].getNodeid()){                        pos=i;                        break;                }        }        return pos;}//add a node to the neighbor listvoid Node::addNode(int anID,double aTime,double aPower){        SignalPower aSignal;        aSignal.initial();        aSignal.nodeID=anID;        aSignal.addParameter(aPower,aTime);        neighborSignal[index_]=aSignal;        index_++;}//check if the node is in the neighborSignal arraybool Node::isRecorde(int anID){        bool result=false;        for(int i=0;i<index_;i++){                if(anID==neighborSignal[i].getNodeid()){                        result=true;                        break;                }        }        return result;}//get a node power time info by with specified IDSignalPower* Node::getNodeValue(int anID){        SignalPower* aPowerValue;        //if we found the node;        bool found=false;        for(int i=0;i<index_;i++){                if(anID==neighborSignal[i].getNodeid()){                        aPowerValue=&neighborSignal[i];                        found=true;                        break;                }        }        //if not found, return a default value        if(!found){           SignalPower aSignal;           aSignal.initial();           aPowerValue=&aSignal;        }        double theTime=aPowerValue->getPredict();        return aPowerValue;}//add signal power value to the specified node in the listvoid Node::addValue(int anID,double aTime,double aPower){        if(isRecorde(anID)){                neighborSignal[getIndex(anID)].addParameter(aPower,aTime);                        }        else{                addNode(anID,aTime,aPower);        }}//remove a node from the listbool Node::removeNode(int anID){        bool result=false;        int position =0;        for(int i=0;i<index_;i++){                if(anID==neighborSignal[i].getNodeid()){                        position=i;                        for(int j=position;j<index_;j++){                        //move forward                                neighborSignal[j]=neighborSignal[j+1];                        }                        index_--;                        result=true;                }        }        return result;}//get the predict timedouble Node::getTime(int anID){        SignalPower *aValue;        aValue=getNodeValue(anID);        double aTime=aValue->getPredict();        return aTime;}//******end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区人| 99re热视频这里只精品| 国产精品欧美一区喷水| 欧美精品 日韩| 波多野结衣中文一区| 另类小说一区二区三区| 一区二区三区中文字幕精品精品| 久久久噜噜噜久久中文字幕色伊伊| 欧美视频第二页| 成人h动漫精品一区二| 紧缚捆绑精品一区二区| 日韩高清电影一区| 亚洲欧洲成人精品av97| 欧美大黄免费观看| 欧美人动与zoxxxx乱| 91久久精品国产91性色tv| 国产一区二区三区久久悠悠色av| 日本亚洲电影天堂| 亚洲成人综合视频| 亚洲激情成人在线| 亚洲精品视频免费看| 国产精品久久三| 国产精品免费网站在线观看| 久久综合久久综合九色| 欧美大片日本大片免费观看| 欧美丝袜丝nylons| 欧美性欧美巨大黑白大战| 91蜜桃视频在线| 99精品国产99久久久久久白柏| 国产1区2区3区精品美女| 国产一区二区调教| 国产专区欧美精品| 国产精品一区一区| 成人午夜电影网站| 不卡高清视频专区| 99精品国产99久久久久久白柏| 9l国产精品久久久久麻豆| 成人一区二区三区在线观看 | 国产日韩综合av| 亚洲色图.com| 亚洲色图一区二区三区| 亚洲欧美日韩系列| 亚洲激情av在线| 偷拍日韩校园综合在线| 午夜精品免费在线| 天涯成人国产亚洲精品一区av| 日韩精品1区2区3区| 久久成人免费电影| 国产福利精品一区二区| 99视频超级精品| 91在线观看视频| 在线观看视频一区| 欧美精品一级二级| 欧美成人精品福利| 欧美激情综合五月色丁香小说| 国产精品毛片大码女人 | 国产精品一区二区久久不卡 | 一区二区理论电影在线观看| 亚洲一区成人在线| 麻豆成人av在线| 国产99一区视频免费| 亚洲国产精品成人综合| 精品国产免费一区二区三区香蕉 | 在线观看成人小视频| 欧美老年两性高潮| 精品美女一区二区三区| 中文一区二区在线观看| 一级精品视频在线观看宜春院| 天堂va蜜桃一区二区三区| 欧美精品99久久久**| 日韩一级片在线播放| 欧美激情中文字幕| 亚洲一区二区三区四区在线免费观看| 日韩国产欧美在线观看| 国产福利一区二区三区| 欧美私人免费视频| 久久精品无码一区二区三区| 亚洲色图制服诱惑| 久久国产精品色婷婷| 色哟哟在线观看一区二区三区| 这里是久久伊人| 中文字幕精品一区二区三区精品| 亚洲一区二区不卡免费| 国产精品资源网| 欧美日韩成人综合| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲小说欧美激情另类| 国产自产v一区二区三区c| 91福利精品第一导航| 精品美女一区二区三区| 亚洲欧美经典视频| 国产美女娇喘av呻吟久久| 欧美性猛交xxxx乱大交退制版| 久久久国产精华| 日韩精品一二三四| 色综合久久中文综合久久97| 精品久久久久久久久久久久久久久| 综合在线观看色| 国内一区二区视频| 777久久久精品| 一区二区三区在线免费观看| 国产精品夜夜嗨| 91精品国产麻豆| 亚洲精品美国一| 国产精品1区2区| 91精品国产综合久久久久| 亚洲国产激情av| 久久不见久久见免费视频1 | 国产网红主播福利一区二区| 五月婷婷综合在线| 一本色道**综合亚洲精品蜜桃冫| 国产欧美日韩不卡免费| 九色综合狠狠综合久久| 欧美欧美欧美欧美首页| 亚洲自拍偷拍麻豆| 91在线观看视频| 国产精品久久久一本精品| 国产一区二区三区av电影 | 欧美一级欧美一级在线播放| 一区二区三区高清| 色婷婷久久一区二区三区麻豆| 国产精品天天摸av网| 国产91精品在线观看| 久久午夜老司机| 国精产品一区一区三区mba桃花 | 中文字幕国产精品一区二区| 国产一区二区三区不卡在线观看| 精品欧美一区二区三区精品久久| 日韩影院在线观看| 欧美二区在线观看| 日本不卡视频在线| 日韩美女在线视频 | 麻豆精品国产91久久久久久| 91精品婷婷国产综合久久性色| 午夜精彩视频在线观看不卡| 欧美日韩美女一区二区| 午夜精品视频在线观看| 欧美精品视频www在线观看| 亚洲二区视频在线| 91精品国产色综合久久不卡电影| 日韩精品亚洲一区二区三区免费| 91麻豆精品91久久久久同性| 免费日韩伦理电影| 久久先锋影音av鲁色资源| 国产成人av自拍| 自拍偷拍国产亚洲| 欧美午夜精品久久久久久超碰| 亚洲成人av一区二区三区| 777xxx欧美| 国产一区在线观看视频| 国产精品家庭影院| 欧美伊人久久久久久久久影院| 午夜电影一区二区三区| 欧美精品一区视频| 99久久婷婷国产综合精品电影| 亚洲靠逼com| 欧美一级一级性生活免费录像| 美国毛片一区二区| 中文字幕va一区二区三区| 色综合久久天天| 婷婷综合另类小说色区| 久久婷婷久久一区二区三区| 99久久综合国产精品| 亚洲国产成人av| 久久综合av免费| 99精品久久99久久久久| 日韩精品欧美精品| 久久精品视频在线看| 色婷婷久久99综合精品jk白丝| 日韩vs国产vs欧美| 国产精品日日摸夜夜摸av| 欧美日韩国产小视频| 国产乱理伦片在线观看夜一区| 亚洲三级在线播放| 日韩美女在线视频 | 日韩免费视频线观看| 北岛玲一区二区三区四区| 午夜在线成人av| 久久精品亚洲精品国产欧美 | 欧美猛男gaygay网站| 国产一区二区三区不卡在线观看 | 中文成人av在线| 欧美丰满高潮xxxx喷水动漫| 成人看片黄a免费看在线| 日韩高清不卡在线| 亚洲免费在线看| 精品国产免费人成在线观看| 91麻豆免费观看| 国产美女av一区二区三区| 亚洲成在线观看| 国产精品久线在线观看| 日韩欧美的一区| 欧美在线影院一区二区| 福利91精品一区二区三区| 秋霞午夜鲁丝一区二区老狼| 中文字幕一区在线| 欧美精品一区二区三| 717成人午夜免费福利电影| 91视频国产观看| 高清不卡在线观看av|