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

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

?? show_interfaces.cc

?? BCAST Implementation for NS2
?? CC
?? 第 1 頁 / 共 2 頁
字號:
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// Copyright (c) 2001-2003 International Computer Science Institute//// 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 XORP 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 XORP LICENSE file; the license in that file is// legally binding.#ident "$XORP: xorp/rtrmgr/tools/show_interfaces.cc,v 1.10 2003/10/24 20:48:52 pavlin Exp $"#include "rtrmgr/rtrmgr_module.h"#include "config.h"#include "libxorp/xlog.h"#include "libxorp/debug.h"#include "show_interfaces.hh"InterfaceMonitor::InterfaceMonitor(XrlRouter& xrl_rtr,				   EventLoop& eventloop)    : _xrl_rtr(xrl_rtr), _eventloop(eventloop), _ifmgr_client(&xrl_rtr){    _state = INITIALIZING;    _register_retry_counter = 0;    _interfaces_remaining = 0;    _vifs_remaining = 0;    _addrs_remaining = 0;    _flags_remaining = 0;}InterfaceMonitor::~InterfaceMonitor(){    map <string, Vif*>::iterator i;    for (i = _vifs_by_name.begin(); i != _vifs_by_name.end(); i++) {	delete i->second;    }    for (i = _vifs_by_name.begin(); i != _vifs_by_name.end(); i++) {	_vifs_by_name.erase(i);    }}voidInterfaceMonitor::start(){    clean_out_old_state();}voidInterfaceMonitor::clean_out_old_state(){    // we call unregister_client first, to cause the FEA to remove any    // registrations left over from previous incarnations of the RIB    XorpCallback1<void, const XrlError&>::RefPtr cb;    cb = callback(this, &InterfaceMonitor::clean_out_old_state_done);    if (_ifmgr_client.send_unregister_client("fea", _xrl_rtr.name(), cb)	== false) {	XLOG_ERROR("Failed to unregister fea client");	_state = FAILED;    }}voidInterfaceMonitor::clean_out_old_state_done(const XrlError& e){    UNUSED(e);    // We really don't care here if the request succeeded or failed.    // It's normal to fail with COMMAND_FAILED if there was no state    // left behind from a previous incarnation.  Any other errors would    // also show up in register_if_spy, so we'll let that deal with    // them.    register_if_spy();}voidInterfaceMonitor::register_if_spy(){    XorpCallback1<void, const XrlError&>::RefPtr cb;    cb = callback(this, &InterfaceMonitor::register_if_spy_done);    if (_ifmgr_client.send_register_client("fea", _xrl_rtr.name(), cb)	== false) {	XLOG_ERROR("Failed to register fea client");	_state = FAILED;    }}voidInterfaceMonitor::register_if_spy_done(const XrlError& e){    if (e == XrlError::OKAY()) {	// The registration was successful.  Now we need to query the	// entries that are already there.  First, find out the set of	// configured interfaces.	XorpCallback2<void, const XrlError&, const XrlAtomList*>::RefPtr cb;	cb = callback(this, &InterfaceMonitor::interface_names_done);	if (_ifmgr_client.send_get_configured_interface_names("fea", cb)	    == false) {	    XLOG_ERROR("Failed to request interface names");	    _state = FAILED;	}	return;    }    // if the resolve failed, it could be that we got going too quickly    // for the FEA.  Retry every two seconds.  If after ten seconds we    // still can't register, give up.  It's a higher level issue as to    // whether failing to register is a fatal error.    if (e == XrlError::RESOLVE_FAILED() && (_register_retry_counter < 5)) {	XLOG_WARNING("Register Interface Spy: RESOLVE_FAILED");	_register_retry_counter++;	OneoffTimerCallback cb;	cb = callback(this, &InterfaceMonitor::register_if_spy);	_register_retry_timer = _eventloop.new_oneoff_after_ms(2000, cb);	return;    }    _state = FAILED;    XLOG_ERROR("Register Interface Spy: Permanent Error");}voidInterfaceMonitor::interface_names_done(const XrlError&	  e,				       const XrlAtomList* alist){    debug_msg("interface_names_done\n");    if (e == XrlError::OKAY()) {	debug_msg("OK\n");	for (u_int i = 0; i < alist->size(); i++) {	    // Spin through the list of interfaces, and fire off	    // requests in parallel for all the Vifs on each interface	    XrlAtom atom = alist->get(i);	    string ifname = atom.text();	    XorpCallback2<void, const XrlError&,		const XrlAtomList*>::RefPtr cb;	    debug_msg("got interface name: %s\n", ifname.c_str());	    cb = callback(this, &InterfaceMonitor::vif_names_done, ifname);	    if (_ifmgr_client.send_get_configured_vif_names("fea", ifname, cb)		== false) {		XLOG_ERROR("Failed to request vif names");		_state = FAILED;	    }	    _interfaces_remaining++;	}	return;    }    _state = FAILED;    XLOG_ERROR("Get Interface Names: Permanent Error");}voidInterfaceMonitor::vif_names_done(const XrlError&    e,				 const XrlAtomList* alist,				 string		    ifname){    debug_msg("vif_names_done\n");    UNUSED(ifname);    if (e == XrlError::OKAY()) {	for (u_int i = 0; i < alist->size(); i++) {	    // Spin through all the Vifs on this interface, and fire	    // off requests in parallel for all the addresses on each	    // Vif.	    XrlAtom atom = alist->get(i);	    string vifname = atom.text();	    vif_created(ifname, vifname);	    XorpCallback2<void, const XrlError&,		const XrlAtomList*>::RefPtr cb;	    cb = callback(this, &InterfaceMonitor::get_vifaddr4_done,			  ifname, vifname);	    if (_ifmgr_client.send_get_configured_vif_addresses4("fea",								 ifname,								 vifname,								 cb)		== false) {		XLOG_ERROR("Failed to request IPv4 addresses");		_state = FAILED;	    }	    _vifs_remaining++;	}	_interfaces_remaining--;    } else if (e == XrlError::COMMAND_FAILED()) {	// perhaps the interface went away.	_interfaces_remaining--;    } else {	XLOG_ERROR("Get VIF Names: Permanent Error");	_state = FAILED;	return;    }    if (_interfaces_remaining == 0 && _vifs_remaining == 0 &&	_addrs_remaining == 0 && _flags_remaining == 0) {	_state = READY;    }}voidInterfaceMonitor::get_vifaddr4_done(const XrlError&	e,				    const XrlAtomList*	alist,				    string	 	ifname,				    string		vifname){    if (e == XrlError::OKAY()) {	for (u_int i = 0; i < alist->size(); i++) {	    XrlAtom atom = alist->get(i);	    IPv4 addr = atom.ipv4();	    vifaddr4_created(ifname, vifname, addr);	    XorpCallback6<void, const XrlError&, const bool*,		const bool*, const bool*, const bool*, const bool*>::RefPtr cb;	    cb = callback(this, &InterfaceMonitor::get_flags4_done,			  ifname, vifname, addr);	    if (_ifmgr_client.send_get_configured_address_flags4("fea",								 ifname,								 vifname,								 addr,								 cb)		== false) {		XLOG_ERROR("Failed to request interface flags");		_state = FAILED;		return;	    }	    _flags_remaining++;	}	_vifs_remaining--;    } else if (e == XrlError::COMMAND_FAILED()) {	// perhaps the vif went away?	_vifs_remaining--;    } else {	XLOG_ERROR("Get VIF Names: Permanent Error");	_state = FAILED;	return;    }    if (_interfaces_remaining == 0	&& _vifs_remaining == 0	&& _addrs_remaining == 0	&& _flags_remaining == 0) {	_state = READY;    }}voidInterfaceMonitor::get_flags4_done(const XrlError& e,				  const bool*	  enabled,				  const bool*	  broadcast,				  const bool*	  loopback,				  const bool*	  point_to_point,				  const bool*	  multicast,				  string	  ifname,				  string	  vifname,				  IPv4		  addr){    UNUSED(addr);    UNUSED(ifname);    if (e == XrlError::OKAY()) {	if (_vifs_by_name.find(vifname) == _vifs_by_name.end()) {	    // silently ignore - the vif could have been deleted while we	    // were waiting for the answer.	    return;	}	Vif* vif = _vifs_by_name[vifname];	// XXX this should be per-addr, not per VIF!	vif->set_multicast_capable(*multicast);	vif->set_p2p(*point_to_point);	vif->set_broadcast_capable(*broadcast);	vif->set_underlying_vif_up(*enabled);	vif->set_loopback(*loopback);	_flags_remaining--;    } else if (e == XrlError::COMMAND_FAILED()) {	// perhaps the vif went away?	_flags_remaining--;    } else {	_state = FAILED;	XLOG_ERROR("Get VIF Flags: Permanent Error");	return;    }    if (_interfaces_remaining == 0	&& _vifs_remaining == 0	&& _addrs_remaining == 0	&& _flags_remaining == 0) {	_state = READY;    }}voidInterfaceMonitor::interface_update(const string& ifname,				   const uint32_t& event){    switch (event) {    case IF_EVENT_CREATED:	// doesn't directly affect vifs - we'll get a vif_update for	// any new vifs	break;    case IF_EVENT_DELETED:	interface_deleted(ifname);	break;    case IF_EVENT_CHANGED:	// doesn't directly affect vifs	break;    }}voidInterfaceMonitor::vif_update(const string& ifname,			     const string& vifname, const uint32_t& event){    switch (event) {    case IF_EVENT_CREATED:	vif_created(ifname, vifname);	break;    case IF_EVENT_DELETED:	vif_deleted(ifname, vifname);	break;    case IF_EVENT_CHANGED:	// doesn't directly affect us	break;    }}voidInterfaceMonitor::vifaddr4_update(const string& ifname,				  const string& vifname,				  const IPv4& addr,				  const uint32_t& event){    switch (event) {    case IF_EVENT_CREATED:	vifaddr4_created(ifname, vifname, addr);	break;    case IF_EVENT_DELETED:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满高潮xxxx喷水动漫| 国产精品黄色在线观看| 亚洲国产精品ⅴa在线观看| 亚洲一区二区三区爽爽爽爽爽| 免费观看91视频大全| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲欧美激情在线| 另类专区欧美蜜桃臀第一页| 99国产精品久| 亚洲国产经典视频| 国产在线精品视频| 欧美v亚洲v综合ⅴ国产v| 亚洲二区在线视频| 欧美自拍偷拍午夜视频| 18成人在线视频| 国产a精品视频| 精品国产91乱码一区二区三区 | 久久久久国产精品麻豆| 无码av中文一区二区三区桃花岛| 高清不卡在线观看| 国产欧美日韩亚州综合| 国产在线精品一区二区夜色 | 欧美日韩精品一区二区天天拍小说| 国产亚洲一区二区三区| 久久超碰97中文字幕| 在线播放91灌醉迷j高跟美女| 亚洲精品国产精品乱码不99| 91免费看片在线观看| 国产精品久久午夜| 99久久久国产精品| 亚洲另类春色校园小说| 欧美性猛交一区二区三区精品| 亚洲色图清纯唯美| 91高清视频免费看| 午夜精品久久久久久久久| 欧美日韩在线综合| 免费成人美女在线观看.| 日韩午夜中文字幕| 国产一区二区网址| 国产精品久久久久aaaa| 91女厕偷拍女厕偷拍高清| 亚洲黄色录像片| 欧美精选在线播放| 蜜臀av一区二区在线观看| 日韩一区二区免费电影| 国产精品原创巨作av| 国产精品―色哟哟| 色综合久久中文字幕| 午夜精品视频一区| 精品国产一区二区三区忘忧草| 激情深爱一区二区| 国产精品美女一区二区在线观看| 91视频在线看| 日一区二区三区| 久久久欧美精品sm网站| 99精品热视频| 视频在线观看国产精品| 国产视频一区二区三区在线观看| www.色精品| 日韩精品国产精品| 中文字幕巨乱亚洲| 91成人免费电影| 极品少妇一区二区| 亚洲色图另类专区| 欧美成人艳星乳罩| 91香蕉视频mp4| 美女诱惑一区二区| 亚洲天堂免费在线观看视频| 欧美日本乱大交xxxxx| 国产成人av影院| 天涯成人国产亚洲精品一区av| 2024国产精品视频| 欧美日韩一区国产| 成人美女视频在线看| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲少妇屁股交4| 精品美女在线观看| 欧美在线一区二区| 国产suv一区二区三区88区| 日韩影院精彩在线| 亚洲人吸女人奶水| 国产午夜精品久久久久久久| 欧美日韩欧美一区二区| 成人高清视频在线| 久久国产精品99久久人人澡| 夜夜精品视频一区二区| 欧美经典一区二区| 精品国免费一区二区三区| 在线观看日韩毛片| 成人国产精品视频| 国产福利电影一区二区三区| 欧美96一区二区免费视频| 一区二区三区av电影| 国产精品区一区二区三区| 精品国产露脸精彩对白| 欧美一级久久久| 777午夜精品免费视频| 在线观看91精品国产入口| yourporn久久国产精品| 国产一区二区不卡| 激情深爱一区二区| 精油按摩中文字幕久久| 秋霞午夜av一区二区三区| 美女一区二区视频| 丝袜国产日韩另类美女| 性感美女极品91精品| 一区二区日韩av| **网站欧美大片在线观看| 国产精品欧美综合在线| 一区视频在线播放| 国产精品国产三级国产专播品爱网| 精品国精品自拍自在线| 精品国产伦一区二区三区免费| 日韩欧美电影一区| 精品国精品国产尤物美女| 久久蜜桃一区二区| 国产亚洲欧洲一区高清在线观看| 久久夜色精品国产欧美乱极品| 精品国产99国产精品| 久久综合色天天久久综合图片| 精品国产sm最大网站免费看| 久久久久久久久久电影| 日本一区二区三区电影| 亚洲色欲色欲www| 亚洲电影第三页| 日本不卡1234视频| 国产乱码精品一品二品| 高清不卡在线观看| 一本大道av伊人久久综合| 欧美片网站yy| 日韩一级黄色片| 久久综合av免费| 成人欧美一区二区三区视频网页| 亚洲日本免费电影| 五月激情丁香一区二区三区| 狠狠色综合日日| 国产a久久麻豆| 欧美视频在线播放| 精品国产乱码久久久久久图片| 久久美女高清视频| 亚洲同性gay激情无套| 午夜精品久久久久久久久久久 | 肉色丝袜一区二区| 国产精一区二区三区| 一本色道亚洲精品aⅴ| 在线电影院国产精品| 久久亚洲一级片| 亚洲精品视频在线看| 日本视频中文字幕一区二区三区| 九一九一国产精品| 在线影视一区二区三区| 精品黑人一区二区三区久久| 亚洲日本乱码在线观看| 欧美亚洲国产一区二区三区| 日韩一区二区三区四区五区六区 | youjizz国产精品| 欧美精品久久一区二区三区| 久久久久久久久久美女| 亚洲一区二区三区四区五区中文| 日本aⅴ免费视频一区二区三区| 国产91在线|亚洲| 欧美一区二区三区在线观看| 中文字幕中文字幕在线一区| 蜜桃精品视频在线观看| 91美女在线看| 久久久影视传媒| 日韩 欧美一区二区三区| fc2成人免费人成在线观看播放 | 久久久久国产一区二区三区四区| 亚洲国产综合人成综合网站| 国产米奇在线777精品观看| 欧美日韩黄色一区二区| 国产精品高潮呻吟久久| 激情文学综合插| 日韩精品一区二区在线观看| 亚洲精品中文在线影院| 成熟亚洲日本毛茸茸凸凹| 欧美一区二区日韩| 一区二区高清视频在线观看| 成人免费看的视频| 亚洲精品一区二区三区影院| 午夜精品123| 在线亚洲欧美专区二区| 中文字幕制服丝袜成人av| 国产在线视频不卡二| 精品福利在线导航| 看国产成人h片视频| 欧美精品99久久久**| 亚洲国产你懂的| 在线视频你懂得一区| 樱花草国产18久久久久| 99精品欧美一区二区三区小说 | 久久久亚洲欧洲日产国码αv| 91在线观看免费视频| 国产精品久久久久影院亚瑟| 成人免费毛片嘿嘿连载视频| 中文字幕欧美日韩一区| 成人av电影在线网| 亚洲天堂2014| 在线观看日韩毛片|