📄 xrl_mld6igmp_node.cc
字号:
XrlCmdErrorXrlMld6igmpNode::common_0_1_get_target_name( // Output values, string& name){ name = xrl_router().class_name(); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::common_0_1_get_version( // Output values, string& version){ version = XORP_MODULE_VERSION; return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::common_0_1_get_status(// Output values, uint32_t& status, string& reason){ status = Mld6igmpNode::node_status(reason); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::common_0_1_shutdown(){ bool is_error = false; string error_msg; if (shutdown() != XORP_OK) { if (! is_error) error_msg = c_format("Failed to shutdown %s", Mld6igmpNode::proto_is_igmp() ? "IGMP" : "MLD"); is_error = true; } if (is_error) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}/** * Announce target birth to observer. * * @param target_class the target class name. * * @param target_instance the target instance name. */XrlCmdErrorXrlMld6igmpNode::finder_event_observer_0_1_xrl_target_birth( // Input values, const string& target_class, const string& target_instance){ if (target_class == _fea_target) { _is_fea_alive = true; Mld6igmpNode::decr_startup_requests_n(); // XXX: for FEA birth } if (target_class == _mfea_target) { _is_mfea_alive = true; Mld6igmpNode::decr_startup_requests_n(); // XXX: for MFEA birth // // XXX: when the startup is completed, // IfMgrHintObserver::tree_complete() will be called. // if (_ifmgr.startup() != XORP_OK) { Mld6igmpNode::set_status(SERVICE_FAILED); Mld6igmpNode::update_status(); } } return XrlCmdError::OKAY(); UNUSED(target_instance);}/** * Announce target death to observer. * * @param target_class the target class name. * * @param target_instance the target instance name. */XrlCmdErrorXrlMld6igmpNode::finder_event_observer_0_1_xrl_target_death( // Input values, const string& target_class, const string& target_instance){ bool do_shutdown = false; if (target_class == _fea_target) { XLOG_ERROR("FEA (instance %s) has died, shutting down.", target_instance.c_str()); _is_fea_alive = false; do_shutdown = true; } if (target_class == _mfea_target) { XLOG_ERROR("MFEA (instance %s) has died, shutting down.", target_instance.c_str()); _is_mfea_alive = false; do_shutdown = true; } if (do_shutdown) stop_mld6igmp(); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::cli_processor_0_1_process_command( // Input values, const string& processor_name, const string& cli_term_name, const uint32_t& cli_session_id, const string& command_name, const string& command_args, // Output values, string& ret_processor_name, string& ret_cli_term_name, uint32_t& ret_cli_session_id, string& ret_command_output){ Mld6igmpNodeCli::cli_process_command(processor_name, cli_term_name, cli_session_id, command_name, command_args, ret_processor_name, ret_cli_term_name, ret_cli_session_id, ret_command_output); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::raw_packet4_client_0_1_recv( // Input values, const string& if_name, const string& vif_name, const IPv4& src_address, const IPv4& dst_address, const uint32_t& ip_protocol, const int32_t& ip_ttl, const int32_t& ip_tos, const bool& ip_router_alert, const bool& ip_internet_control, const vector<uint8_t>& payload){ string error_msg; // // Verify the address family // if (! Mld6igmpNode::is_ipv4()) { error_msg = c_format("Received protocol message with " "invalid address family: IPv4"); return XrlCmdError::COMMAND_FAILED(error_msg); } // // Receive the message // Mld6igmpNode::proto_recv(if_name, vif_name, IPvX(src_address), IPvX(dst_address), ip_protocol, ip_ttl, ip_tos, ip_router_alert, ip_internet_control, payload, error_msg); // XXX: no error returned, because if there is any, it is at the // protocol level, and the FEA shoudn't care about it. // // Success // return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::raw_packet6_client_0_1_recv( // Input values, const string& if_name, const string& vif_name, const IPv6& src_address, const IPv6& dst_address, const uint32_t& ip_protocol, const int32_t& ip_ttl, const int32_t& ip_tos, const bool& ip_router_alert, const bool& ip_internet_control, const XrlAtomList& ext_headers_type, const XrlAtomList& ext_headers_payload, const vector<uint8_t>& payload){ string error_msg; UNUSED(ext_headers_type); UNUSED(ext_headers_payload); // // Verify the address family // if (! Mld6igmpNode::is_ipv6()) { error_msg = c_format("Received protocol message with " "invalid address family: IPv6"); return XrlCmdError::COMMAND_FAILED(error_msg); } // // Receive the message // Mld6igmpNode::proto_recv(if_name, vif_name, IPvX(src_address), IPvX(dst_address), ip_protocol, ip_ttl, ip_tos, ip_router_alert, ip_internet_control, payload, error_msg); // XXX: no error returned, because if there is any, it is at the // protocol level, and the FEA shoudn't care about it. // // Success // return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_enable_vif( // Input values, const string& vif_name, const bool& enable){ string error_msg; int ret_value; if (enable) ret_value = Mld6igmpNode::enable_vif(vif_name, error_msg); else ret_value = Mld6igmpNode::disable_vif(vif_name, error_msg); if (ret_value != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_start_vif( // Input values, const string& vif_name){ string error_msg; if (Mld6igmpNode::start_vif(vif_name, error_msg) != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_stop_vif( // Input values, const string& vif_name){ string error_msg; if (Mld6igmpNode::stop_vif(vif_name, error_msg) != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_enable_all_vifs( // Input values, const bool& enable){ string error_msg; int ret_value; if (enable) ret_value = Mld6igmpNode::enable_all_vifs(); else ret_value = Mld6igmpNode::enable_all_vifs(); if (ret_value != XORP_OK) { if (enable) error_msg = c_format("Failed to enable all vifs"); else error_msg = c_format("Failed to disable all vifs"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_start_all_vifs(){ string error_msg; if (Mld6igmpNode::start_all_vifs() != XORP_OK) { error_msg = c_format("Failed to start all vifs"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_stop_all_vifs(){ string error_msg; if (Mld6igmpNode::stop_all_vifs() != XORP_OK) { error_msg = c_format("Failed to stop all vifs"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_enable_mld6igmp( // Input values, const bool& enable){ string error_msg; int ret_value; if (enable) ret_value = enable_mld6igmp(); else ret_value = disable_mld6igmp(); if (ret_value != XORP_OK) { if (enable) error_msg = c_format("Failed to enable MLD6IGMP"); else error_msg = c_format("Failed to disable MLD6IGMP"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_start_mld6igmp(){ string error_msg; if (start_mld6igmp() != XORP_OK) { error_msg = c_format("Failed to start MLD6IMGP"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_stop_mld6igmp(){ string error_msg; if (stop_mld6igmp() != XORP_OK) { error_msg = c_format("Failed to stop MLD6IMGP"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_enable_cli( // Input values, const bool& enable){ string error_msg; int ret_value; if (enable) ret_value = enable_cli(); else ret_value = disable_cli(); if (ret_value != XORP_OK) { if (enable) error_msg = c_format("Failed to enable MLD6IGMP CLI"); else error_msg = c_format("Failed to disable MLD6IGMP CLI"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_start_cli(){ string error_msg; if (start_cli() != XORP_OK) { error_msg = c_format("Failed to start MLD6IMGP CLI"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_stop_cli(){ string error_msg; if (stop_cli() != XORP_OK) { error_msg = c_format("Failed to stop MLD6IMGP CLI"); return XrlCmdError::COMMAND_FAILED(error_msg); } return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_get_vif_proto_version( // Input values, const string& vif_name, // Output values, uint32_t& proto_version){ string error_msg; int v; if (Mld6igmpNode::get_vif_proto_version(vif_name, v, error_msg) != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); proto_version = v; return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_set_vif_proto_version( // Input values, const string& vif_name, const uint32_t& proto_version){ string error_msg; if (Mld6igmpNode::set_vif_proto_version(vif_name, proto_version, error_msg) != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_reset_vif_proto_version( // Input values, const string& vif_name){ string error_msg; if (Mld6igmpNode::reset_vif_proto_version(vif_name, error_msg) != XORP_OK) return XrlCmdError::COMMAND_FAILED(error_msg); return XrlCmdError::OKAY();}XrlCmdErrorXrlMld6igmpNode::mld6igmp_0_1_get_vif_ip_router_alert_option_check( // Input values, const string& vif_name, // Output values, bool& enabled){ string error_msg; bool v; if (Mld6igmpNode::get_vif_ip_router_alert_option_check(vif_name, v, error_msg) != XORP_OK) { return XrlCmdError::COMMAND_FAILED(error_msg); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -