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

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

?? route_db.cc

?? RIP 協(xié)議實現(xiàn)
?? CC
?? 第 1 頁 / 共 2 頁
字號:
		    // such metric, then remove the "set_cost()" statement		    // below, and add "return true;" at the end of this block.		    //		    r->set_cost(RIP_INFINITY);		    set_deletion_timer(r);		    updated = true;		}    //		delete_route(r);	    }	}    } else {	// route from other origin	if (!accepted) {	    delete new_route;	    return false;	}	// this is "RIP's decision" -- where one route wins another.	// Source-match filtering should go here.	bool should_replace = false;	do {	    if (r->cost() > new_route->cost()) {		should_replace = true;		break;	    }	    if (r->cost() < new_route->cost())		break;		// XXX: the old route is better	    //	    // Same cost routes	    //	    if (new_route->cost() == RIP_INFINITY) {		//		// XXX: Don't update routes if both the old and the new		// costs are infinity.		//		break;	    }	    //	    // If the existing route is showing signs of timing out, it	    // may be better to switch to an equally-good alternative route	    // immediately, rather than waiting for the timeout to happen.	    // The heuristic is: if the route is at least halfway to the	    // expiration point, switch to the new route	    // (see RFC 2453 Section 3.9.2 and RFC 2080 Section 2.4.2).	    //	    TimeVal expiry_timeval = TimeVal::ZERO();	    if (r->origin() != NULL)		expiry_timeval = TimeVal(r->origin()->expiry_secs(), 0);	    	    if (expiry_timeval == TimeVal::ZERO())		break;		// XXX: the old route would never expire	    TimeVal remain;	    if (r->timer().time_remaining(remain) != true)		break;		// XXX: couldn't get the remaining time	    if (remain < (expiry_timeval / 2)) {		should_replace = true;		break;	    }	    break;	} while (false);	    	if (should_replace) {	    r->set_nexthop(new_route->nexthop());	    r->set_ifname(new_route->ifname());	    r->set_vifname(new_route->vifname());	    r->set_tag(new_route->tag());	    r->set_cost(new_route->cost());	    r->set_policytags(new_route->policytags());	    r->set_origin(o);	    set_expiry_timer(r);	    updated = true;	}    	delete new_route;    }    if (updated) {	_uq->push_back(r);    }    return updated;}template <typename A>voidRouteDB<A>::dump_routes(vector<ConstDBRouteEntry>& routes){    typename RouteContainer::iterator i = _routes.begin();    while (i != _routes.end()) {	routes.push_back(i->second);	++i;    }}template <typename A>voidRouteDB<A>::flush_routes(){    _uq->flush();    _routes.erase(_routes.begin(), _routes.end());}template <typename A>uint32_tRouteDB<A>::route_count() const{    return _routes.size();}template <typename A>const RouteEntry<A>*RouteDB<A>::find_route(const IPNet<A>& net) const{    typename RouteContainer::const_iterator ri = _routes.find(net);    if (ri == _routes.end())	return 0;    return ri->second.get();}template <typename A>UpdateQueue<A>&RouteDB<A>::update_queue(){    return *_uq;}template <typename A>const UpdateQueue<A>&RouteDB<A>::update_queue() const{    return *_uq;}template <typename A>typename RouteDB<A>::RouteContainer&RouteDB<A>::routes(){    return _routes;}// ----------------------------------------------------------------------------// RouteWalkertemplate <typename A>const typename RouteWalker<A>::Net RouteWalker<A>::NO_NET(~A::ZERO(), 0);template <typename A>RouteWalker<A>::RouteWalker(RouteDB<A>& rdb)    : _route_db(rdb), _state(STATE_RUNNING),      _last_visited(NO_NET),      _pos(rdb.routes().begin()){}template <typename A>RouteWalker<A>::~RouteWalker(){}template <typename A>const typename RouteWalker<A>::Route*RouteWalker<A>::next_route(){    if (state() != STATE_RUNNING) {	XLOG_ERROR("Calling RouteWalker::next_route() whilst not in "		   "STATE_RUNNING state.");	return 0;    }    if (++_pos == _route_db.routes().end()) {	return 0;    }    return _pos->second.get();}template <typename A>const typename RouteWalker<A>::Route*RouteWalker<A>::current_route(){    if (state() != STATE_RUNNING) {	XLOG_ERROR("Calling RouteWalker::next_route() whilst not in "		   "STATE_RUNNING state.");	return 0;    }    if (_pos == _route_db.routes().end()) {	return 0;    }    return _pos->second.get();}template <typename A>voidRouteWalker<A>::pause(uint32_t pause_ms){    if (state() == STATE_PAUSED)	return;    _state = STATE_PAUSED;    if (_pos == _route_db.routes().end()) {	_last_visited = NO_NET;	return;    }    // Check if route has a deletion timer and if so push it's expiry time    // back to maximize the chance of the route still being valid when    // resume is called.  Otherwise we have to do more work to find a good    // point to resume from.  We're advertising the route at infinity    // so advertising it once past it's original expiry is no big deal    XorpTimer t = _pos->second->timer();    if (t.scheduled() && _pos->second->cost() == RIP_INFINITY) {	TimeVal next_run;	_route_db.eventloop().current_time(next_run);	next_run += TimeVal(0, 1000 * pause_ms * 2); // factor of 2 == slack	if (t.expiry() <= next_run) {	    t.schedule_at(next_run);	    _pos->second->set_timer(t);	}    }    _last_visited = _pos->second->net();}template <typename A>voidRouteWalker<A>::resume(){    if (state() != STATE_PAUSED)	return;    _state = STATE_RUNNING;    if (_last_visited == NO_NET) {	_pos = _route_db.routes().end();	return;    }    _pos = _route_db.routes().find(_last_visited);    if (_pos == _route_db.routes().end()) {	// Node got deleted despite our pushing back it's timer (???)	_pos = _route_db.routes().upper_bound(_last_visited);    }}template <typename A>voidRouteWalker<A>::reset(){    _state = STATE_RUNNING;    _pos = _route_db.routes().begin();}template <typename A>voidRouteDB<A>::push_routes(){    debug_msg("[RIP] Push routes\n");    //    // Push the original routes from all peers    //    for (typename set<Peer<A>* >::iterator i = _peers.begin();	 i != _peers.end(); ++i) {	Peer<A>* peer = *i;	peer->push_routes();    }    // XXX may have got RIB route adds because of delete_route    // flush is probably not necessary...    debug_msg("[RIP] Pushing the RIB routes we have\n");       for (typename RouteContainerNoRef::iterator i = _rib_routes.begin();	i != _rib_routes.end(); ++i) {	Route* r = (*i).second;	debug_msg("[RIP] Pushing RIB route %s\n", r->net().str().c_str());		update_route(r->net(), r->nexthop(), r->ifname(), r->vifname(),		     r->cost(), r->tag(), _rib_origin, r->policytags(), true);    }}template <typename A>voidRouteDB<A>::add_rib_route(const Net& net, const Addr& nexthop,			  const string& ifname, const string& vifname,			  uint32_t cost, uint32_t tag, RouteOrigin* origin,			  const PolicyTags& policytags){    debug_msg("[RIP] adding RIB route %s\n",net.str().c_str());      _rib_origin = origin;             typename RouteContainerNoRef::iterator i = _rib_routes.find(net);    if (i != _rib_routes.end()) {	Route* prev = (*i).second;	delete prev;    }    //    // XXX: We are cheating here NULL origin so we don't get association.    //    RouteOrigin* no_origin = NULL;    Route* r = new Route(net, nexthop, ifname, vifname, cost, no_origin, tag,			 policytags);    _rib_routes[net] = r;}template <typename A>voidRouteDB<A>::delete_rib_route(const Net& net){    debug_msg("[RIP] deleting RIB route %s\n",net.str().c_str());    typename RouteContainerNoRef::iterator i = _rib_routes.find(net);    if (i == _rib_routes.end())	return;			// XXX: nothing to do    Route* r = (*i).second;    delete r;    _rib_routes.erase(i);}// ----------------------------------------------------------------------------// Instantiations#ifdef INSTANTIATE_IPV4template class RouteDB<IPv4>;template class RouteWalker<IPv4>;#endif#ifdef INSTANTIATE_IPV6template class RouteDB<IPv6>;template class RouteWalker<IPv6>;#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线不卡一区| 免费成人美女在线观看| 三级不卡在线观看| 99久久国产综合精品色伊| 日韩欧美精品在线视频| 18涩涩午夜精品.www| 九色porny丨国产精品| 欧美性做爰猛烈叫床潮| 中文字幕一区在线观看| 国内成+人亚洲+欧美+综合在线| 欧美性三三影院| 亚洲欧美一区二区视频| 国产久卡久卡久卡久卡视频精品| 欧美一区日本一区韩国一区| 1024成人网色www| 国产精品18久久久久久vr| 欧美一区二区三区免费观看视频 | 成人av资源在线| 精品久久久久久久久久久久久久久 | 91精品欧美综合在线观看最新| 中文字幕一区二区三区在线观看| 国产精品影音先锋| 欧美成人一级视频| 麻豆专区一区二区三区四区五区| 欧美日韩国产高清一区二区| 亚洲观看高清完整版在线观看| 色噜噜狠狠色综合中国| 国产精品乱码一区二三区小蝌蚪| 高清shemale亚洲人妖| 久久久蜜桃精品| 国产精品一区免费视频| 欧美大片一区二区| 精品一区二区三区久久久| 欧美一级一区二区| 黑人精品欧美一区二区蜜桃| 精品国产成人在线影院| 国内成人免费视频| 中文天堂在线一区| 91老师片黄在线观看| 一区二区在线电影| 91精品国产一区二区三区香蕉| 婷婷综合另类小说色区| 日韩视频中午一区| 韩国一区二区三区| 国产精品视频一区二区三区不卡| 97se亚洲国产综合自在线观| 亚洲最色的网站| 欧美一区二区三区影视| 国产伦理精品不卡| 亚洲欧美日韩一区二区| 欧美中文字幕不卡| 老司机精品视频一区二区三区| 久久一区二区三区国产精品| 成人不卡免费av| 亚洲一区在线观看视频| 欧美一区二区视频免费观看| 国产美女一区二区三区| 亚洲乱码精品一二三四区日韩在线| 色哟哟在线观看一区二区三区| 亚洲宅男天堂在线观看无病毒| 日韩欧美国产综合在线一区二区三区| 国产福利一区二区三区| 亚洲国产视频在线| 国产视频一区在线播放| 91福利资源站| 国产二区国产一区在线观看| 亚洲午夜羞羞片| 国产欧美一区二区三区鸳鸯浴 | 精品女同一区二区| 色婷婷综合五月| 国产综合色在线视频区| 亚洲综合免费观看高清完整版| 精品国产乱码久久久久久1区2区| 一本久久精品一区二区| 韩国欧美国产1区| 一卡二卡欧美日韩| 国产日韩欧美高清在线| 欧美性猛交xxxxxxxx| 国产福利91精品一区| 亚洲国产成人91porn| 中文字幕中文字幕在线一区| 欧美高清hd18日本| av一区二区久久| 国产九九视频一区二区三区| 亚洲一区二区三区精品在线| 国产精品美女久久久久久久久 | 亚洲香蕉伊在人在线观| 国产偷国产偷亚洲高清人白洁| 91精品国产乱码| 92精品国产成人观看免费| 极品尤物av久久免费看| 日本成人在线不卡视频| 亚洲小说春色综合另类电影| ...av二区三区久久精品| 久久综合狠狠综合久久激情| 91精品欧美综合在线观看最新 | 成人激情免费视频| 久草中文综合在线| 免播放器亚洲一区| 五月婷婷欧美视频| 亚洲午夜三级在线| 亚洲制服欧美中文字幕中文字幕| 国产精品久久久久久久久免费相片| 精品国产免费人成电影在线观看四季| 在线观看不卡视频| 色噜噜狠狠色综合中国| 色综合天天综合网天天狠天天 | 韩国女主播一区| 国产在线一区二区| 国内精品伊人久久久久影院对白| 美腿丝袜亚洲综合| 狠狠色狠狠色综合系列| 久久av资源网| 国产一区二区h| 国产成人鲁色资源国产91色综| 国产成人亚洲综合a∨婷婷| 国产精品888| gogogo免费视频观看亚洲一| av电影在线观看完整版一区二区| aaa欧美色吧激情视频| 色综合久久中文字幕综合网 | 国产二区国产一区在线观看| 福利一区福利二区| 99久久亚洲一区二区三区青草| 成人av电影免费在线播放| 99国产麻豆精品| 欧美日韩中文字幕一区| 日韩视频在线永久播放| 国产欧美日韩亚州综合| 中文字幕av资源一区| 亚洲精品欧美专区| 日韩av电影天堂| 国产精品自拍在线| 日本久久一区二区| 欧美一区二区三区视频免费| 欧美精品一区二区蜜臀亚洲| 国产精品久久久久久久午夜片| 一区二区三区中文字幕在线观看| 午夜电影网亚洲视频| 激情五月婷婷综合| 99国产精品久久久久久久久久久| 色婷婷久久一区二区三区麻豆| 91精品婷婷国产综合久久| 欧美精彩视频一区二区三区| 亚洲精品老司机| 国产又黄又大久久| 欧美性videosxxxxx| 精品成人一区二区| 一区二区理论电影在线观看| 狠狠狠色丁香婷婷综合激情| 一本一道综合狠狠老| 91精品国产综合久久精品性色| 久久亚洲私人国产精品va媚药| 亚洲免费在线播放| 国产乱国产乱300精品| 欧美性大战久久久| 欧美国产日韩精品免费观看| 婷婷综合另类小说色区| 成人黄色国产精品网站大全在线免费观看| 欧美午夜理伦三级在线观看| 中文子幕无线码一区tr| 午夜久久久久久久久久一区二区| 国产老肥熟一区二区三区| 欧美高清性hdvideosex| 国产精品全国免费观看高清| 麻豆精品一区二区| 欧美午夜在线一二页| 国产精品白丝在线| 国产福利一区二区| 日韩欧美国产不卡| 亚洲国产cao| 91无套直看片红桃| 国产精品少妇自拍| 国产精品亚洲а∨天堂免在线| 欧美日韩精品综合在线| 亚洲激情网站免费观看| 成人免费观看av| 欧美本精品男人aⅴ天堂| 亚洲成va人在线观看| 色妹子一区二区| **性色生活片久久毛片| 国产成人午夜99999| 精品少妇一区二区三区日产乱码| 亚洲高清久久久| 91极品美女在线| 亚洲欧美日韩综合aⅴ视频| 成人午夜视频在线观看| 久久久三级国产网站| 国产一区视频在线看| xnxx国产精品| 国产馆精品极品| 国产亚洲精品久| 国产成人综合在线| 国产欧美综合在线观看第十页 | 毛片基地黄久久久久久天堂| 7777精品久久久大香线蕉 | 91麻豆精品国产91久久久久久久久| 性做久久久久久久久| 欧美精品免费视频| 日韩成人一区二区三区在线观看|