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

📄 xrl_target_rip.cc

📁 RIP 协议实现
💻 CC
📖 第 1 页 / 共 2 页
字号:
// -*- 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 "auth.hh"#include "system.hh"#include "xrl_process_spy.hh"#include "xrl_port_manager.hh"#include "xrl_redist_manager.hh"#include "xrl_target_rip.hh"#include "xrl_target_common.hh"static intdecode_time_string(EventLoop& eventloop, const string& time_string,		   TimeVal& timeval){    const char* s;    const char* format = "%Y-%m-%d.%H:%M";    struct tm tm;    time_t result;    if (time_string.empty()) {	timeval = TimeVal::ZERO();	return (XORP_OK);    }    //    // Initialize the parsed result with the current time, because    // strptime(3) would not set/modify the unspecified members of the    // time format (e.g, the timezone and the summer time flag).    //    TimeVal now;    eventloop.current_time(now);    time_t local_time = now.secs();    const struct tm* local_tm = localtime(&local_time);    memcpy(&tm, local_tm, sizeof(tm));    s = xorp_strptime(time_string.c_str(), format, &tm);    if ((s == NULL) || (*s != '\0')) {	return (XORP_ERROR);    }    result = mktime(&tm);    if (result == -1)	return (XORP_ERROR);    timeval = TimeVal(result, 0);    return (XORP_OK);}XrlRipTarget::XrlRipTarget(EventLoop&			el,			   XrlRouter&			xr,			   XrlProcessSpy&		xps,			   XrlPortManager<IPv4>& 	xpm,			   XrlRedistManager<IPv4>&	xrm,			   bool&			should_exit,			   System<IPv4>&		rip_system)    : XrlRipTargetBase(&xr), _e(el){    _ct = new XrlRipCommonTarget<IPv4>(xps, xpm, xrm, should_exit, rip_system);}XrlRipTarget::~XrlRipTarget(){    delete _ct;}XrlCmdErrorXrlRipTarget::common_0_1_get_target_name(string& n){    n = name();    return XrlCmdError::OKAY();}XrlCmdErrorXrlRipTarget::common_0_1_get_version(string& v){    v = string(version());    return XrlCmdError::OKAY();}voidXrlRipTarget::set_status(ProcessStatus status, const string& note){    _ct->set_status(status, note);}XrlCmdErrorXrlRipTarget::common_0_1_get_status(uint32_t& status,				    string&   reason){    return _ct->common_0_1_get_status(status, reason);}XrlCmdErrorXrlRipTarget::common_0_1_shutdown(){    return _ct->common_0_1_shutdown();}XrlCmdErrorXrlRipTarget::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);}XrlCmdErrorXrlRipTarget::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);}XrlCmdErrorXrlRipTarget::rip_0_1_add_rip_address(const string& ifn,				      const string& vifn,				      const IPv4&   addr){    return _ct->ripx_0_1_add_rip_address(ifn, vifn, addr);}XrlCmdErrorXrlRipTarget::rip_0_1_remove_rip_address(const string& ifn,					 const string& vifn,					 const IPv4&   addr){    return _ct->ripx_0_1_remove_rip_address(ifn, vifn, addr);}XrlCmdErrorXrlRipTarget::rip_0_1_set_rip_address_enabled(const string& ifn,					      const string& vifn,					      const IPv4&   a,					      const bool&   en){    return _ct->ripx_0_1_set_rip_address_enabled(ifn, vifn, a, en);}XrlCmdErrorXrlRipTarget::rip_0_1_rip_address_enabled(const string& ifn,					  const string& vifn,					  const IPv4&   a,					  bool&		en){    return _ct->ripx_0_1_rip_address_enabled(ifn, vifn, a, en);}XrlCmdErrorXrlRipTarget::rip_0_1_set_cost(const string&	ifn,			       const string&	vifn,			       const IPv4&	a,			       const uint32_t&	cost){    return _ct->ripx_0_1_set_cost(ifn, vifn, a, cost);}XrlCmdErrorXrlRipTarget::rip_0_1_cost(const string&	ifn,			   const string&	vifn,			   const IPv4&		a,			   uint32_t&		cost){    return _ct->ripx_0_1_cost(ifn, vifn, a, cost);}XrlCmdErrorXrlRipTarget::rip_0_1_set_horizon(const string&	ifn,				  const string&	vifn,				  const IPv4&	a,				  const string&	horizon){    return _ct->ripx_0_1_set_horizon(ifn, vifn, a, horizon);}XrlCmdErrorXrlRipTarget::rip_0_1_horizon(const string&	ifn,			      const string&	vifn,			      const IPv4&	a,			      string&		horizon){    return _ct->ripx_0_1_horizon(ifn, vifn, a, horizon);}XrlCmdErrorXrlRipTarget::rip_0_1_set_passive(const string&	ifn,				  const string&	vifn,				  const IPv4&	a,				  const bool&	passive){    return _ct->ripx_0_1_set_passive(ifn, vifn, a, passive);}XrlCmdErrorXrlRipTarget::rip_0_1_passive(const string&	ifn,			      const string&	vifn,			      const IPv4&	a,			      bool&		passive){    return _ct->ripx_0_1_passive(ifn, vifn, a, passive);}XrlCmdErrorXrlRipTarget::rip_0_1_set_accept_non_rip_requests(const string&	ifn,						  const string&	vifn,						  const IPv4&	addr,						  const bool&	accept){    return _ct->ripx_0_1_set_accept_non_rip_requests(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipTarget::rip_0_1_accept_non_rip_requests(const string&	ifn,					      const string&	vifn,					      const IPv4&	addr,					      bool&		accept){    return _ct->ripx_0_1_accept_non_rip_requests(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipTarget::rip_0_1_set_accept_default_route(const string&	ifn,						  const string&	vifn,						  const IPv4&	addr,						  const bool&	accept){    return _ct->ripx_0_1_set_accept_default_route(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipTarget::rip_0_1_accept_default_route(const string&	ifn,					   const string&	vifn,					   const IPv4&		addr,					   bool&		accept){    return _ct->ripx_0_1_accept_default_route(ifn, vifn, addr, accept);}XrlCmdErrorXrlRipTarget::rip_0_1_set_advertise_default_route(const string&	ifn,						  const string&	vifn,						  const IPv4&	addr,						  const bool&	adv){    return _ct->ripx_0_1_set_advertise_default_route(ifn, vifn, addr, adv);}XrlCmdErrorXrlRipTarget::rip_0_1_advertise_default_route(const string&	ifn,					      const string&	vifn,					      const IPv4&	addr,					      bool&		adv){    return _ct->ripx_0_1_advertise_default_route(ifn, vifn, addr, adv);}XrlCmdErrorXrlRipTarget::rip_0_1_set_route_timeout(const string&	ifn,					const string&	vifn,					const IPv4&	a,					const uint32_t&	t){    return _ct->ripx_0_1_set_route_timeout(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_route_timeout(const string&	ifn,				    const string&	vifn,				    const IPv4&		a,				    uint32_t&		t){    return _ct->ripx_0_1_route_timeout(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_set_deletion_delay(const string&		ifn,					 const string&		vifn,					 const IPv4&		a,					 const uint32_t&	t){    return _ct->ripx_0_1_set_deletion_delay(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_deletion_delay(const string&	ifn,				     const string&	vifn,				     const IPv4&	a,				     uint32_t&		t){    return _ct->ripx_0_1_deletion_delay(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_set_request_interval(const string&	ifn,					   const string&	vifn,					   const IPv4&		a,					   const uint32_t&	t){    return _ct->ripx_0_1_set_request_interval(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_request_interval(const string&	ifn,				       const string&	vifn,				       const IPv4&	a,				       uint32_t&	t){    return _ct->ripx_0_1_request_interval(ifn, vifn, a, t);}XrlCmdErrorXrlRipTarget::rip_0_1_set_update_interval(const string&	ifn,					  const string&	vifn,					  const IPv4&	a,					  const uint32_t& t_secs){    return _ct->ripx_0_1_set_update_interval(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipTarget::rip_0_1_update_interval(const string&	ifn,				      const string&	vifn,				      const IPv4&	a,				      uint32_t&		t_secs){    return _ct->ripx_0_1_update_interval(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipTarget::rip_0_1_set_update_jitter(const string&	ifn,					const string&	vifn,					const IPv4&	a,					const uint32_t& t_jitter){    return _ct->ripx_0_1_set_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipTarget::rip_0_1_update_jitter(const string&	ifn,				    const string&	vifn,				    const IPv4&		a,				    uint32_t&		t_jitter){    return _ct->ripx_0_1_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipTarget::rip_0_1_set_triggered_update_delay(const string&	ifn,						 const string&	vifn,						 const IPv4&	a,						 const uint32_t& t_secs){    return _ct->ripx_0_1_set_triggered_update_delay(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipTarget::rip_0_1_triggered_update_delay(const string&	ifn,					     const string&	vifn,					     const IPv4&	a,					     uint32_t&		t_secs){    return _ct->ripx_0_1_triggered_update_delay(ifn, vifn, a, t_secs);}XrlCmdErrorXrlRipTarget::rip_0_1_set_triggered_update_jitter(const string&	ifn,						  const string&	vifn,						  const IPv4&	a,						  const uint32_t& t_jitter){    return _ct->ripx_0_1_set_triggered_update_jitter(ifn, vifn, a, t_jitter);}XrlCmdErrorXrlRipTarget::rip_0_1_triggered_update_jitter(const string&	ifn,					      const string&	vifn,					      const IPv4&	a,					      uint32_t&		t_jitter){    return _ct->ripx_0_1_triggered_update_jitter(ifn, vifn, a, t_jitter);}

⌨️ 快捷键说明

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