⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xrl_target_ripng.cc

📁 RIP 协议实现
💻 CC
字号:
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// vim:set sts=4 ts=8: // Copyright (c) 2001-2008 XORP, Inc.//// 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.// #define DEBUG_LOGGING#include "libxorp/xorp.h"#include "libxorp/debug.h"#include "libxorp/status_codes.h"#include "libxipc/xrl_router.hh"#include "constants.hh"#include "system.hh"#include "xrl_process_spy.hh"#include "xrl_port_manager.hh"#include "xrl_redist_manager.hh"#include "xrl_target_ripng.hh"#include "xrl_target_common.hh"XrlRipngTarget::XrlRipngTarget(EventLoop&		el,			       XrlRouter&		xr,			       XrlProcessSpy&		xps,			       XrlPortManager<IPv6>& 	xpm,			       XrlRedistManager<IPv6>&	xrm,			       bool&			should_exit,			       System<IPv6>&		rip_system)    : XrlRipngTargetBase(&xr), _e(el){    _ct = new XrlRipCommonTarget<IPv6>(xps, xpm, xrm, should_exit, rip_system);}XrlRipngTarget::~XrlRipngTarget(){    delete _ct;}XrlCmdErrorXrlRipngTarget::common_0_1_get_target_name(string& n){    n = name();    return XrlCmdError::OKAY();}XrlCmdErrorXrlRipngTarget::common_0_1_get_version(string& v){    v = string(version());    return XrlCmdError::OKAY();}voidXrlRipngTarget::set_status(ProcessStatus status, const string& note){    _ct->set_status(status, note);}XrlCmdErrorXrlRipngTarget::common_0_1_get_status(uint32_t& status, string& reason){    return _ct->common_0_1_get_status(status, reason);}XrlCmdErrorXrlRipngTarget::common_0_1_shutdown(){    return _ct->common_0_1_shutdown();}XrlCmdErrorXrlRipngTarget::finder_event_observer_0_1_xrl_target_birth(const string& cname,							   const string& iname){    return _ct->finder_event_observer_0_1_xrl_target_birth(cname, iname);}XrlCmdErrorXrlRipngTarget::finder_event_observer_0_1_xrl_target_death(const string& cname,							   const string& iname){    return _ct->finder_event_observer_0_1_xrl_target_death(cname, iname);}XrlCmdErrorXrlRipngTarget::ripng_0_1_add_rip_address(const string& ifn,					  const string& vifn,					  const IPv6&   addr){    return _ct->ripx_0_1_add_rip_address(ifn, vifn, addr);}XrlCmdErrorXrlRipngTarget::ripng_0_1_remove_rip_address(const string& ifn,					     const string& vifn,					     const IPv6&   addr){    return _ct->ripx_0_1_remove_rip_address(ifn, vifn, addr);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_rip_address_enabled(const string&	ifn,						  const string&	vifn,						  const IPv6&	a,						  const bool&	en){    return _ct->ripx_0_1_set_rip_address_enabled(ifn, vifn, a, en);}XrlCmdErrorXrlRipngTarget::ripng_0_1_rip_address_enabled(const string&	ifn,					      const string&	vifn,					      const IPv6&	a,					      bool&		en){    return _ct->ripx_0_1_rip_address_enabled(ifn, vifn, a, en);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_cost(const string&	ifn,				   const string&	vifn,				   const IPv6&		a,				   const uint32_t&	cost){    return _ct->ripx_0_1_set_cost(ifn, vifn, a, cost);}XrlCmdErrorXrlRipngTarget::ripng_0_1_cost(const string&	ifn,			       const string&	vifn,			       const IPv6&	a,			       uint32_t&	cost){    return _ct->ripx_0_1_cost(ifn, vifn, a, cost);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_horizon(const string&	ifn,				      const string&	vifn,				      const IPv6&	a,				      const string&	horizon){    return _ct->ripx_0_1_set_horizon(ifn, vifn, a, horizon);}XrlCmdErrorXrlRipngTarget::ripng_0_1_horizon(const string&	ifn,				  const string&	vifn,				  const IPv6&	a,				  string&	horizon){    return _ct->ripx_0_1_horizon(ifn, vifn, a, horizon);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_passive(const string&	ifn,				      const string&	vifn,				      const IPv6&	a,				      const bool&	passive){    return _ct->ripx_0_1_set_passive(ifn, vifn, a, passive);}XrlCmdErrorXrlRipngTarget::ripng_0_1_passive(const string&	ifn,				  const string&	vifn,				  const IPv6&	a,				  bool&		passive){    return _ct->ripx_0_1_passive(ifn, vifn, a, passive);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_accept_non_rip_requests(const string&	ifn,						      const string&	vifn,						      const IPv6&	addr,						      const bool&	accept){    return _ct->ripx_0_1_set_accept_non_rip_requests(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipngTarget::ripng_0_1_accept_non_rip_requests(const string&	ifn,						  const string&	vifn,						  const IPv6&	addr,						  bool&		accept){    return _ct->ripx_0_1_accept_non_rip_requests(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_accept_default_route(const string&	ifn,						   const string&	vifn,						   const IPv6&		addr,						   const bool&		accept){    return _ct->ripx_0_1_set_accept_default_route(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipngTarget::ripng_0_1_accept_default_route(const string&	ifn,					     const string&	vifn,					     const IPv6&	addr,					     bool&		accept){    return _ct->ripx_0_1_accept_default_route(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_advertise_default_route(const string&	ifn,						      const string&	vifn,						      const IPv6&	addr,						      const bool&	adv){    return _ct->ripx_0_1_set_advertise_default_route(ifn, vifn, addr, adv);}XrlCmdErrorXrlRipngTarget::ripng_0_1_advertise_default_route(const string&	ifn,						  const string&	vifn,						  const IPv6&	addr,						  bool&		adv){    return _ct->ripx_0_1_advertise_default_route(ifn, vifn, addr, adv);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_route_timeout(const string&	ifn,					    const string&	vifn,					    const IPv6&		a,					    const uint32_t&	t){    return _ct->ripx_0_1_set_route_timeout(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_route_timeout(const string&	ifn,					const string&	vifn,					const IPv6&	a,					uint32_t&	t){    return _ct->ripx_0_1_route_timeout(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_deletion_delay(const string&	ifn,					     const string&	vifn,					     const IPv6&	a,					     const uint32_t&	t){    return _ct->ripx_0_1_set_deletion_delay(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_deletion_delay(const string&	ifn,					 const string&	vifn,					 const IPv6&	a,					 uint32_t&	t){    return _ct->ripx_0_1_deletion_delay(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_request_interval(const string&	ifn,					       const string&	vifn,					       const IPv6&	a,					       const uint32_t&	t){    return _ct->ripx_0_1_set_request_interval(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_request_interval(const string&	ifn,					   const string&	vifn,					   const IPv6&		a,					   uint32_t&		t){    return _ct->ripx_0_1_request_interval(ifn, vifn, a, t);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_update_interval(const string&	ifn,					      const string&	vifn,					      const IPv6&	a,					      const uint32_t&	t_secs){    return _ct->ripx_0_1_set_update_interval(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_update_interval(const string&	ifn,					  const string&	vifn,					  const IPv6&	a,					  uint32_t&	t_secs){    return _ct->ripx_0_1_update_interval(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_update_jitter(const string&	ifn,					    const string&	vifn,					    const IPv6&		a,					    const uint32_t&	t_jitter){    return _ct->ripx_0_1_set_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipngTarget::ripng_0_1_update_jitter(const string&	ifn,					const string&	vifn,					const IPv6&	a,					uint32_t&	t_jitter){    return _ct->ripx_0_1_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_triggered_update_delay(const string&	ifn,						     const string&	vifn,						     const IPv6&	a,						     const uint32_t&	t_secs){    return _ct->ripx_0_1_set_triggered_update_delay(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_triggered_update_delay(const string&	ifn,						 const string&	vifn,						 const IPv6&	a,						 uint32_t&	t_secs){    return _ct->ripx_0_1_triggered_update_delay(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_triggered_update_jitter(const string&	ifn,						      const string&	vifn,						      const IPv6&	a,						      const uint32_t& t_jitter){    return _ct->ripx_0_1_set_triggered_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipngTarget::ripng_0_1_triggered_update_jitter(const string&	ifn,						  const string&	vifn,						  const IPv6&	a,						  uint32_t&	t_jitter){    return _ct->ripx_0_1_triggered_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipngTarget::ripng_0_1_set_interpacket_delay(const string&	ifn,						const string&	vifn,						const IPv6&	a,						const uint32_t&	t_msecs){    return _ct->ripx_0_1_set_interpacket_delay(ifn, vifn, a, t_msecs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_interpacket_delay(const string&	ifn,					    const string&	vifn,					    const IPv6&		a,					    uint32_t&		t_msecs){    return _ct->ripx_0_1_interpacket_delay(ifn, vifn, a, t_msecs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_rip_address_status(const string&	ifn,					     const string&	vifn,					     const IPv6&	a,					     string&		status){    return _ct->ripx_0_1_rip_address_status(ifn, vifn, a, status);}XrlCmdErrorXrlRipngTarget::ripng_0_1_get_all_addresses(XrlAtomList&	ifnames,					    XrlAtomList&	vifnames,					    XrlAtomList&	addrs){    return _ct->ripx_0_1_get_all_addresses(ifnames, vifnames, addrs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_get_peers(const string&	ifn,				    const string&	vifn,				    const IPv6&		a,				    XrlAtomList&	peers){    return _ct->ripx_0_1_get_peers(ifn, vifn, a, peers);}XrlCmdErrorXrlRipngTarget::ripng_0_1_get_all_peers(XrlAtomList&	peers,					XrlAtomList&	ifnames,					XrlAtomList&	vifnames,					XrlAtomList&	addrs){    return _ct->ripx_0_1_get_all_peers(peers, ifnames, vifnames, addrs);}XrlCmdErrorXrlRipngTarget::ripng_0_1_get_counters(const string&	ifname,				       const string&	vifname,				       const IPv6&	addr,				       XrlAtomList&	descs,				       XrlAtomList&	values){    return _ct->ripx_0_1_get_counters(ifname, vifname, addr, descs, values);}XrlCmdErrorXrlRipngTarget::ripng_0_1_get_peer_counters(const string&	ifn,					    const string&	vifn,					    const IPv6&		addr,					    const IPv6&		peer,					    XrlAtomList&	descs,					    XrlAtomList&	vals,					    uint32_t&		last_active){    return _ct->ripx_0_1_get_peer_counters(ifn, vifn, addr, peer,					   descs, vals, last_active);}XrlCmdErrorXrlRipngTarget::socket6_user_0_1_recv_event(					const string&		sockid,					const string&		if_name,					const string&		vif_name,					const IPv6&		src_host,					const uint32_t&		src_port,					const vector<uint8_t>&	pdata					){    return _ct->socketx_user_0_1_recv_event(sockid, if_name, vif_name,					    src_host, src_port, pdata);}XrlCmdErrorXrlRipngTarget::socket6_user_0_1_inbound_connect_event(    const string&	sockid,    const IPv6&		src_host,    const uint32_t&	src_port,    const string&	new_sockid,    bool&		accept){    return _ct->socketx_user_0_1_inbound_connect_event(sockid,						       src_host,						       src_port,						       new_sockid,						       accept);}XrlCmdErrorXrlRipngTarget::socket6_user_0_1_outgoing_connect_event(    const string&	sockid){    return _ct->socketx_user_0_1_outgoing_connect_event(sockid);}XrlCmdErrorXrlRipngTarget::socket6_user_0_1_error_event(const string&	sockid,					     const string& 	reason,					     const bool&	fatal){    return _ct->socketx_user_0_1_error_event(sockid, reason, fatal);}XrlCmdErrorXrlRipngTarget::socket6_user_0_1_disconnect_event(const string&	sockid){    return _ct->socketx_user_0_1_disconnect_event(sockid);}XrlCmdErrorXrlRipngTarget::policy_backend_0_1_configure(const uint32_t& filter,                                           const string& conf){    return _ct->policy_backend_0_1_configure(filter, conf);}XrlCmdErrorXrlRipngTarget::policy_backend_0_1_reset(const uint32_t& filter){    return _ct->policy_backend_0_1_reset(filter);}XrlCmdErrorXrlRipngTarget::policy_backend_0_1_push_routes(){    return _ct->policy_backend_0_1_push_routes();}XrlCmdError XrlRipngTarget::policy_redist6_0_1_add_route6(const IPv6Net&	    network,					      const bool&	    unicast,					      const bool&	    multicast,				              const IPv6&	    nexthop,				              const uint32_t&	    metric,				              const XrlAtomList&    policytags){    return _ct->policy_redistx_0_1_add_routex(network, unicast, multicast,					      nexthop, metric, policytags);}XrlCmdError XrlRipngTarget::policy_redist6_0_1_delete_route6(const IPv6Net&  network,						 const bool&     unicast,					         const bool&     multicast){    return _ct->policy_redistx_0_1_delete_routex(network, unicast, multicast);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -