bgp_base.cc
来自「BCAST Implementation for NS2」· CC 代码 · 共 1,435 行 · 第 1/3 页
CC
1,435 行
e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_next_hop_rewrite_filter(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 5) { XLOG_ERROR("Wrong number of arguments (%u != 5) handling bgp/0.2/next_hop_rewrite_filter", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = bgp_0_2_next_hop_rewrite_filter( xa_inputs.get_string("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_string("peer_ip"), xa_inputs.get_uint32("peer_port"), xa_inputs.get_ipv4("next_hop")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/next_hop_rewrite_filter failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_set_peer_state(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 5) { XLOG_ERROR("Wrong number of arguments (%u != 5) handling bgp/0.2/set_peer_state", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = bgp_0_2_set_peer_state( xa_inputs.get_string("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_string("peer_ip"), xa_inputs.get_uint32("peer_port"), xa_inputs.get_bool("toggle")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/set_peer_state failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_list_start(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 0) { XLOG_ERROR("Wrong number of arguments (%u != 0) handling bgp/0.2/get_peer_list_start", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t token; bool more; try { XrlCmdError e = bgp_0_2_get_peer_list_start( token, more); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_list_start failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("token", token); pxa_outputs->add("more", more); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_list_next(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 1) { XLOG_ERROR("Wrong number of arguments (%u != 1) handling bgp/0.2/get_peer_list_next", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ IPv4 local_ip; uint32_t local_port; IPv4 peer_ip; uint32_t peer_port; bool more; try { XrlCmdError e = bgp_0_2_get_peer_list_next( xa_inputs.get_uint32("token"), local_ip, local_port, peer_ip, peer_port, more); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_list_next failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("local_ip", local_ip); pxa_outputs->add("local_port", local_port); pxa_outputs->add("peer_ip", peer_ip); pxa_outputs->add("peer_port", peer_port); pxa_outputs->add("more", more); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_id(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_id", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ IPv4 peer_id; try { XrlCmdError e = bgp_0_2_get_peer_id( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), peer_id); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_id failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("peer_id", peer_id); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_status(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_status", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t peer_state; uint32_t admin_status; try { XrlCmdError e = bgp_0_2_get_peer_status( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), peer_state, admin_status); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_status failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("peer_state", peer_state); pxa_outputs->add("admin_status", admin_status); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_negotiated_version(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_negotiated_version", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ int32_t neg_version; try { XrlCmdError e = bgp_0_2_get_peer_negotiated_version( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), neg_version); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_negotiated_version failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("neg_version", neg_version); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_as(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_as", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t peer_as; try { XrlCmdError e = bgp_0_2_get_peer_as( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), peer_as); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_as failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("peer_as", peer_as); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_msg_stats(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_msg_stats", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t in_updates; uint32_t out_updates; uint32_t in_msgs; uint32_t out_msgs; uint32_t last_error; uint32_t in_update_elapsed; try { XrlCmdError e = bgp_0_2_get_peer_msg_stats( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), in_updates, out_updates, in_msgs, out_msgs, last_error, in_update_elapsed); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_msg_stats failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("in_updates", in_updates); pxa_outputs->add("out_updates", out_updates); pxa_outputs->add("in_msgs", in_msgs); pxa_outputs->add("out_msgs", out_msgs); pxa_outputs->add("last_error", last_error); pxa_outputs->add("in_update_elapsed", in_update_elapsed); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_established_stats(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_established_stats", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t transitions; uint32_t established_time; try { XrlCmdError e = bgp_0_2_get_peer_established_stats( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), transitions, established_time); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_established_stats failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */ try { pxa_outputs->add("transitions", transitions); pxa_outputs->add("established_time", established_time); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_peer_timer_config(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/get_peer_timer_config", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } if (pxa_outputs == 0) { XLOG_FATAL("Return list empty"); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ uint32_t retry_interval; uint32_t hold_time; uint32_t keep_alive; uint32_t hold_time_conf; uint32_t keep_alive_conf; uint32_t min_as_orgination_interval; uint32_t min_route_adv_interval; try { XrlCmdError e = bgp_0_2_get_peer_timer_config( xa_inputs.get_ipv4("local_ip"), xa_inputs.get_uint32("local_port"), xa_inputs.get_ipv4("peer_ip"), xa_inputs.get_uint32("peer_port"), retry_interval, hold_time, keep_alive, hold_time_conf, keep_alive_conf, min_as_orgination_interval, min_route_adv_interval); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_peer_timer_config failed: %s", e.str().c_str()); return e; } } catch (const XrlArgs::XrlAtomNotFound& e) { XLOG_ERROR("Argument not found"); return XrlCmdError::BAD_ARGS(); } /* Marshall return values */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?