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

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

?? mld6igmp_node.cc

?? MLDv2 support igmpv3 lite
?? CC
?? 第 1 頁 / 共 3 頁
字號(hào):
			!= XORP_OK) {			XLOG_ERROR("Cannot delete address %s from vif %s "				   "from the set of configured vifs: %s",				   cstring(addr),				   ifmgr_vif_name.c_str(),				   error_msg.c_str());		    }		    if (add_config_vif_addr(			    ifmgr_vif_name,			    addr,			    subnet_addr,			    broadcast_addr,			    peer_addr,			    error_msg)			!= XORP_OK) {			XLOG_ERROR("Cannot add address %s to vif %s from "				   "the set of configured vifs: %s",				   cstring(addr), ifmgr_vif_name.c_str(),				   error_msg.c_str());		    }		}	    }	    if (is_ipv6()) {		IfMgrVifAtom::IPv6Map::const_iterator a6_iter;		for (a6_iter = ifmgr_vif.ipv6addrs().begin();		     a6_iter != ifmgr_vif.ipv6addrs().end();		     ++a6_iter) {		    const IfMgrIPv6Atom& a6 = a6_iter->second;		    VifAddr* node_vif_addr = node_vif->find_address(IPvX(a6.addr()));		    IPvX addr(a6.addr());		    IPvXNet subnet_addr(addr, a6.prefix_len());		    IPvX broadcast_addr(IPvX::ZERO(family()));		    IPvX peer_addr(IPvX::ZERO(family()));		    if (a6.has_endpoint())			peer_addr = IPvX(a6.endpoint_addr());		    if (node_vif_addr == NULL) {			if (add_config_vif_addr(				ifmgr_vif_name,				addr,				subnet_addr,				broadcast_addr,				peer_addr,				error_msg)			    != XORP_OK) {			    XLOG_ERROR("Cannot add address %s to vif %s from "				       "the set of configured vifs: %s",				       cstring(addr), ifmgr_vif_name.c_str(),				       error_msg.c_str());			}			continue;		    }		    if ((addr == node_vif_addr->addr())			&& (subnet_addr == node_vif_addr->subnet_addr())			&& (peer_addr == node_vif_addr->peer_addr())) {			continue;	// Nothing changed		    }		    // Update the address		    if (delete_config_vif_addr(ifmgr_vif_name,					       addr,					       error_msg)			!= XORP_OK) {			XLOG_ERROR("Cannot delete address %s from vif %s "				   "from the set of configured vifs: %s",				   cstring(addr),				   ifmgr_vif_name.c_str(),				   error_msg.c_str());		    }		    if (add_config_vif_addr(			    ifmgr_vif_name,			    addr,			    subnet_addr,			    broadcast_addr,			    peer_addr,			    error_msg)			!= XORP_OK) {			XLOG_ERROR("Cannot add address %s to vif %s from "				   "the set of configured vifs: %s",				   cstring(addr), ifmgr_vif_name.c_str(),				   error_msg.c_str());		    }		}	    }	    //	    // Delete vif addresses that don't exist anymore	    //	    {		list<IPvX> delete_addresses_list;		list<VifAddr>::const_iterator vif_addr_iter;		for (vif_addr_iter = node_vif->addr_list().begin();		     vif_addr_iter != node_vif->addr_list().end();		     ++vif_addr_iter) {		    const VifAddr& vif_addr = *vif_addr_iter;		    if (vif_addr.addr().is_ipv4()			&& (_iftree.find_addr(ifmgr_iface_name,					      ifmgr_vif_name,					      vif_addr.addr().get_ipv4()))			    == NULL) {			    delete_addresses_list.push_back(vif_addr.addr());		    }		    if (vif_addr.addr().is_ipv6()			&& (_iftree.find_addr(ifmgr_iface_name,					      ifmgr_vif_name,					      vif_addr.addr().get_ipv6()))			    == NULL) {			    delete_addresses_list.push_back(vif_addr.addr());		    }		}		// Delete the addresses		list<IPvX>::iterator ipvx_iter;		for (ipvx_iter = delete_addresses_list.begin();		     ipvx_iter != delete_addresses_list.end();		     ++ipvx_iter) {		    const IPvX& ipvx = *ipvx_iter;		    if (delete_config_vif_addr(ifmgr_vif_name, ipvx, error_msg)			!= XORP_OK) {			XLOG_ERROR("Cannot delete address %s from vif %s from "				   "the set of configured vifs: %s",				   cstring(ipvx), ifmgr_vif_name.c_str(),				   error_msg.c_str());		    }		}	    }	}    }    //    // Remove vifs that don't exist anymore    //    list<string> delete_vifs_list;    for (mld6igmp_vif_iter = configured_vifs().begin();	 mld6igmp_vif_iter != configured_vifs().end();	 ++mld6igmp_vif_iter) {	Vif* node_vif = &mld6igmp_vif_iter->second;#if 0	if (node_vif->is_pim_register())	    continue;		// XXX: don't delete the PIM Register vif#endif	if (_iftree.find_vif(node_vif->name(), node_vif->name()) == NULL) {	    // Add the vif to the list of old interfaces	    delete_vifs_list.push_back(node_vif->name());	}    }    // Delete the old vifs    list<string>::iterator vif_name_iter;    for (vif_name_iter = delete_vifs_list.begin();	 vif_name_iter != delete_vifs_list.end();	 ++vif_name_iter) {	const string& vif_name = *vif_name_iter;	if (delete_config_vif(vif_name, error_msg) != XORP_OK) {	    XLOG_ERROR("Cannot delete vif %s from the set of configured "		       "vifs: %s",		       vif_name.c_str(), error_msg.c_str());	}    }        // Done    set_config_all_vifs_done(error_msg);}/** * Mld6igmpNode::add_vif: * @vif: Information about the new Mld6igmpVif to install. * @error_msg: The error message (if error). *  * Install a new MLD/IGMP vif. *  * Return value: %XORP_OK on success, otherwise %XORP_ERROR. **/intMld6igmpNode::add_vif(const Vif& vif, string& error_msg){    //    // Create a new Mld6igmpVif    //    Mld6igmpVif *mld6igmp_vif = new Mld6igmpVif(*this, vif);        if (ProtoNode<Mld6igmpVif>::add_vif(mld6igmp_vif) != XORP_OK) {	// Cannot add this new vif	error_msg = c_format("Cannot add vif %s: internal error",			     vif.name().c_str());	XLOG_ERROR("%s", error_msg.c_str());		delete mld6igmp_vif;	return (XORP_ERROR);    }    //    // Update and check the primary address    //    do {	if (mld6igmp_vif->update_primary_address(error_msg) == XORP_OK)	    break;	if (mld6igmp_vif->addr_ptr() == NULL) {	    // XXX: don't print an error if the vif has no addresses	    break;	}	if (mld6igmp_vif->is_loopback() || mld6igmp_vif->is_pim_register()) {	    // XXX: don't print an error if this is a loopback or register_vif	    break;	}	XLOG_ERROR("Error updating primary address for vif %s: %s",		   mld6igmp_vif->name().c_str(), error_msg.c_str());	return (XORP_ERROR);    } while (false);    XLOG_INFO("Interface added: %s", mld6igmp_vif->str().c_str());        return (XORP_OK);}/** * Mld6igmpNode::add_vif: * @vif_name: The name of the new vif. * @vif_index: The vif index of the new vif. * @error_msg: The error message (if error). *  * Install a new MLD/IGMP vif. If the vif exists, nothing is installed. *  * Return value: %XORP_OK on success, otherwise %XORP_ERROR. **/intMld6igmpNode::add_vif(const string& vif_name, uint32_t vif_index,		      string& error_msg){    Mld6igmpVif *mld6igmp_vif = vif_find_by_vif_index(vif_index);        if ((mld6igmp_vif != NULL) && (mld6igmp_vif->name() == vif_name)) {	return (XORP_OK);		// Already have this vif    }        //    // Create a new Vif    //    Vif vif(vif_name);    vif.set_vif_index(vif_index);    if (add_vif(vif, error_msg) != XORP_OK) {	return (XORP_ERROR);    }        return (XORP_OK);}/** * Mld6igmpNode::delete_vif: * @vif_name: The name of the vif to delete. * @error_msg: The error message (if error). *  * Delete an existing MLD/IGMP vif. *  * Return value: %XORP_OK on success, otherwise %XORP_ERROR. **/intMld6igmpNode::delete_vif(const string& vif_name, string& error_msg){    Mld6igmpVif *mld6igmp_vif = vif_find_by_name(vif_name);    if (mld6igmp_vif == NULL) {	error_msg = c_format("Cannot delete vif %s: no such vif",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }        if (ProtoNode<Mld6igmpVif>::delete_vif(mld6igmp_vif) != XORP_OK) {	error_msg = c_format("Cannot delete vif %s: internal error",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	delete mld6igmp_vif;	return (XORP_ERROR);    }        delete mld6igmp_vif;        XLOG_INFO("Interface deleted: %s", vif_name.c_str());        return (XORP_OK);}intMld6igmpNode::set_vif_flags(const string& vif_name,			    bool is_pim_register, bool is_p2p,			    bool is_loopback, bool is_multicast,			    bool is_broadcast, bool is_up, uint32_t mtu,			    string& error_msg){    bool is_changed = false;        Mld6igmpVif *mld6igmp_vif = vif_find_by_name(vif_name);    if (mld6igmp_vif == NULL) {	error_msg = c_format("Cannot set flags vif %s: no such vif",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }        if (mld6igmp_vif->is_pim_register() != is_pim_register) {	mld6igmp_vif->set_pim_register(is_pim_register);	is_changed = true;    }    if (mld6igmp_vif->is_p2p() != is_p2p) {	mld6igmp_vif->set_p2p(is_p2p);	is_changed = true;    }    if (mld6igmp_vif->is_loopback() != is_loopback) {	mld6igmp_vif->set_loopback(is_loopback);	is_changed = true;    }    if (mld6igmp_vif->is_multicast_capable() != is_multicast) {	mld6igmp_vif->set_multicast_capable(is_multicast);	is_changed = true;    }    if (mld6igmp_vif->is_broadcast_capable() != is_broadcast) {	mld6igmp_vif->set_broadcast_capable(is_broadcast);	is_changed = true;    }    if (mld6igmp_vif->is_underlying_vif_up() != is_up) {	mld6igmp_vif->set_underlying_vif_up(is_up);	is_changed = true;    }    if (mld6igmp_vif->mtu() != mtu) {	mld6igmp_vif->set_mtu(mtu);	is_changed = true;    }        if (is_changed)	XLOG_INFO("Interface flags changed: %s", mld6igmp_vif->str().c_str());        return (XORP_OK);}intMld6igmpNode::add_vif_addr(const string& vif_name,			   const IPvX& addr,			   const IPvXNet& subnet_addr,			   const IPvX& broadcast_addr,			   const IPvX& peer_addr,			   string& error_msg){    Mld6igmpVif *mld6igmp_vif = vif_find_by_name(vif_name);    if (mld6igmp_vif == NULL) {	error_msg = c_format("Cannot add address on vif %s: no such vif",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }        const VifAddr vif_addr(addr, subnet_addr, broadcast_addr, peer_addr);        //    // Check the arguments    //    if (! addr.is_unicast()) {	error_msg = c_format("Cannot add address on vif %s: "			     "invalid unicast address: %s",			     vif_name.c_str(), addr.str().c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }    if ((addr.af() != family())	|| (subnet_addr.af() != family())	|| (broadcast_addr.af() != family())	|| (peer_addr.af() != family())) {	error_msg = c_format("Cannot add address on vif %s: "			     "invalid address family: %s ",			     vif_name.c_str(), vif_addr.str().c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }        VifAddr* node_vif_addr = mld6igmp_vif->find_address(addr);    if ((node_vif_addr != NULL) && (*node_vif_addr == vif_addr))	return (XORP_OK);		// Already have this address    //    // TODO: If an interface changes its primary IP address, then    // we should do something about it.    //    // However, by adding or updating an existing address we cannot    // change a valid primary address, hence we do nothing here.    //        if (node_vif_addr != NULL) {	// Update the address	XLOG_INFO("Updated existing address on vif %s: old is %s new is %s",		  mld6igmp_vif->name().c_str(), node_vif_addr->str().c_str(),		  vif_addr.str().c_str());	*node_vif_addr = vif_addr;    } else {	// Add a new address	mld6igmp_vif->add_address(vif_addr);		XLOG_INFO("Added new address to vif %s: %s",		  mld6igmp_vif->name().c_str(), vif_addr.str().c_str());    }    //    // Update and check the primary address    //    do {	if (mld6igmp_vif->update_primary_address(error_msg) == XORP_OK)	    break;	if (! (mld6igmp_vif->is_up() || mld6igmp_vif->is_pending_up())) {	    // XXX: print an error only if the interface is UP or PENDING_UP	    break;	}	if (mld6igmp_vif->is_loopback() || mld6igmp_vif->is_pim_register()) {	    // XXX: don't print an error if this is a loopback or register_vif	    break;	}	XLOG_ERROR("Error updating primary address for vif %s: %s",		   mld6igmp_vif->name().c_str(), error_msg.c_str());	return (XORP_ERROR);    } while (false);    return (XORP_OK);}intMld6igmpNode::delete_vif_addr(const string& vif_name,			      const IPvX& addr,			      string& error_msg){    Mld6igmpVif *mld6igmp_vif = vif_find_by_name(vif_name);    if (mld6igmp_vif == NULL) {	error_msg = c_format("Cannot delete address on vif %s: no such vif",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }        const VifAddr *tmp_vif_addr = mld6igmp_vif->find_address(addr);    if (tmp_vif_addr == NULL) {	error_msg = c_format("Cannot delete address on vif %s: "			     "invalid address %s",			     vif_name.c_str(), addr.str().c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);    }    VifAddr vif_addr = *tmp_vif_addr;	// Get a copy    //    // Get the vif's old primary address and whether the vif is UP    //    bool old_vif_is_up = mld6igmp_vif->is_up() || mld6igmp_vif->is_pending_up();    IPvX old_primary_addr = mld6igmp_vif->primary_addr();        //    // If an interface's primary address is deleted, first stop the vif.    //    if (old_vif_is_up) {	if (mld6igmp_vif->primary_addr() == addr) {	    string dummy_error_msg;	    mld6igmp_vif->stop(dummy_error_msg);	}    }    if (mld6igmp_vif->delete_address(addr) != XORP_OK) {	XLOG_UNREACHABLE();	return (XORP_ERROR);    }        XLOG_INFO("Deleted address on interface %s: %s",	      mld6igmp_vif->name().c_str(), vif_addr.str().c_str());        //    // Update and check the primary address.    // If the vif has no primary address, then stop it.    // If the vif's primary address was changed, then restart the vif.    //    do {	string dummy_error_msg;	if (mld6igmp_vif->update_primary_address(error_msg) != XORP_OK) {	    XLOG_ERROR("Error updating primary address for vif %s: %s",		       mld6igmp_vif->name().c_str(), error_msg.c_str());	}	if (mld6igmp_vif->primary_addr().is_zero()) {	    mld6igmp_vif->stop(dummy_error_msg);	    break;	}	if (old_primary_addr == mld6igmp_vif->primary_addr())	    break;		// Nothing changed	// Conditionally restart the interface	mld6igmp_vif->stop(dummy_error_msg);	if (old_vif_is_up)	    mld6igmp_vif->start(dummy_error_msg);	break;    } while (false);    return (XORP_OK);}/** * Mld6igmpNode::enable_vif: * @vif_name: The name of the vif to enable. * @error_msg: The error message (if error). *  * Enable an existing MLD6IGMP vif. *  * Return value: %XORP_OK on success, otherwise %XORP_ERROR. **/intMld6igmpNode::enable_vif(const string& vif_name, string& error_msg){    Mld6igmpVif *mld6igmp_vif = vif_find_by_name(vif_name);    if (mld6igmp_vif == NULL) {	error_msg = c_format("Cannot enable vif %s: no such vif",			     vif_name.c_str());	XLOG_ERROR("%s", error_msg.c_str());	return (XORP_ERROR);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久久久免费看农村| 欧洲精品一区二区| 国产精品国产三级国产普通话三级| 欧美日韩国产三级| 美女视频免费一区| 亚洲成va人在线观看| 亚洲视频小说图片| 欧美国产激情一区二区三区蜜月| 亚洲精品在线三区| 精品国产1区2区3区| 精品88久久久久88久久久| 亚洲精品一区二区三区精华液| 精品久久久久久无| 久久久午夜精品| 中文字幕成人av| 中文字幕一区三区| 亚洲少妇最新在线视频| 自拍视频在线观看一区二区| 国产精品久久久久久久久久免费看 | 久久精品一区二区三区不卡| 久久在线观看免费| 国产精品免费视频观看| 国产精品久久久久永久免费观看| 亚洲人成7777| 亚洲国产aⅴ天堂久久| 日韩av高清在线观看| 久久精品国产一区二区| 国产很黄免费观看久久| 99在线精品观看| 欧美亚一区二区| 日韩欧美中文一区二区| 久久精品一区二区三区不卡| 自拍偷拍亚洲综合| 午夜精品福利一区二区三区av| 麻豆国产一区二区| 懂色av一区二区三区免费观看| 91美女在线看| 91精品国产综合久久婷婷香蕉| 精品国产免费人成在线观看| 国产欧美精品一区二区三区四区 | 亚洲国产综合91精品麻豆| 热久久一区二区| 国产suv精品一区二区6| 日本乱人伦一区| 51精品视频一区二区三区| 亚洲精品在线网站| 一区二区在线免费| 美女视频黄a大片欧美| 97se亚洲国产综合自在线观| 在线成人午夜影院| 国产精品久久久久久久蜜臀| 亚洲国产综合在线| 成人av综合一区| 日韩三级av在线播放| ...中文天堂在线一区| 免费观看30秒视频久久| 91小视频免费看| 久久综合国产精品| 亚洲国产精品一区二区久久| 国产精品资源网| 在线播放欧美女士性生活| 国产精品卡一卡二卡三| 精品综合免费视频观看| 在线观看日韩毛片| 国产欧美日韩在线视频| 亚洲3atv精品一区二区三区| 亚洲免费在线观看视频| 五月婷婷激情综合| 99久久精品国产一区二区三区| 欧美国产亚洲另类动漫| 亚洲高清一区二区三区| 国产一区在线观看视频| 欧美亚洲禁片免费| 欧美国产日韩一二三区| 丝瓜av网站精品一区二区| 国产精品中文欧美| 欧美日韩性生活| 国产精品情趣视频| 青青草一区二区三区| 91小视频在线免费看| 久久久影视传媒| 偷拍一区二区三区| 国产不卡视频一区| 国产无遮挡一区二区三区毛片日本| 亚洲不卡一区二区三区| 国产91色综合久久免费分享| 欧美一区二区视频在线观看2020| 成人欧美一区二区三区| 黄色资源网久久资源365| 欧美日韩在线播| 国产精品久久久久久久久免费相片 | 床上的激情91.| 日韩三级视频在线看| 中文字幕日韩av资源站| 青娱乐精品在线视频| 色综合色综合色综合色综合色综合 | 中文字幕精品一区二区三区精品| 天堂在线亚洲视频| 色偷偷一区二区三区| 中文字幕乱码亚洲精品一区| 极品尤物av久久免费看| 欧美色综合久久| 亚洲mv大片欧洲mv大片精品| 91麻豆国产自产在线观看| 国产亚洲精品福利| 国产一区二区在线看| 日韩一区二区精品| 日韩精品一二区| 欧美日韩国产小视频在线观看| 亚洲精品视频在线观看网站| hitomi一区二区三区精品| 久久久久高清精品| 国产美女精品一区二区三区| 欧美一二三四区在线| 婷婷久久综合九色综合绿巨人 | 久久嫩草精品久久久精品| 日本在线播放一区二区三区| 91美女片黄在线| 亚洲欧洲国产日韩| 99精品视频一区| 亚洲日穴在线视频| 色美美综合视频| 亚洲精品第1页| 欧美伊人久久久久久午夜久久久久| 中文字幕日本乱码精品影院| 韩国精品一区二区| 国产精品理论片在线观看| 成人激情电影免费在线观看| 国产日韩精品一区| 高清不卡在线观看av| 国产午夜精品福利| 国产 日韩 欧美大片| 国产欧美一区二区三区鸳鸯浴 | 久久综合狠狠综合久久激情| 久久国产精品99精品国产| 日本一区二区三区四区在线视频| 成人伦理片在线| 亚洲精品第1页| 99视频有精品| 亚洲精品五月天| 91国产精品成人| 麻豆久久久久久| 欧美一区二区不卡视频| 国产夫妻精品视频| 中文字幕一区二区三区不卡| 精品视频一区二区不卡| 日韩激情av在线| 欧美国产精品专区| 色综合久久六月婷婷中文字幕| 久久久噜噜噜久久人人看| 色哟哟国产精品免费观看| 大胆欧美人体老妇| 国产精品视频麻豆| aa级大片欧美| 五月激情丁香一区二区三区| 欧美成人video| 日本aⅴ精品一区二区三区| 国产色综合久久| 成人听书哪个软件好| 亚洲成a人片在线观看中文| 日韩欧美国产综合在线一区二区三区| 国内精品国产成人国产三级粉色| |精品福利一区二区三区| 7777精品伊人久久久大香线蕉 | 欧美日韩国产综合草草| 美女视频黄 久久| 一区二区三区在线观看网站| 91精品午夜视频| 久久精品国产久精国产爱| 亚洲国产精品二十页| 欧美亚洲尤物久久| 国产a区久久久| 亚洲国产精品久久不卡毛片| 日韩欧美在线观看一区二区三区| 黄色日韩三级电影| 午夜精品在线看| 国产精品乱子久久久久| 欧美久久免费观看| 成人午夜私人影院| 蜜臀av一级做a爰片久久| 国产精品久久777777| 日本乱码高清不卡字幕| 国产99精品在线观看| 亚洲v中文字幕| www.66久久| 亚洲人成7777| 国产成a人无v码亚洲福利| 精品免费99久久| 日精品一区二区| 91在线免费看| 亚洲人妖av一区二区| 亚洲午夜影视影院在线观看| 高清在线不卡av| 91精品国产手机| 国产精品久久久久久久久快鸭| 日韩中文字幕av电影| 91在线国产福利| 国产精品少妇自拍| 欧美嫩在线观看| 欧洲精品中文字幕|