📄 xrl_target_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 "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 + -