bgp_base.cc
来自「BCAST Implementation for NS2」· CC 代码 · 共 1,435 行 · 第 1/3 页
CC
1,435 行
try { pxa_outputs->add("retry_interval", retry_interval); pxa_outputs->add("hold_time", hold_time); pxa_outputs->add("keep_alive", keep_alive); pxa_outputs->add("hold_time_conf", hold_time_conf); pxa_outputs->add("keep_alive_conf", keep_alive_conf); pxa_outputs->add("min_as_orgination_interval", min_as_orgination_interval); pxa_outputs->add("min_route_adv_interval", min_route_adv_interval); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_register_rib(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 1) { XLOG_ERROR("Wrong number of arguments (%u != 1) handling bgp/0.2/register_rib", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = bgp_0_2_register_rib( xa_inputs.get_string("name")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/register_rib 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_add_route(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling bgp/0.2/add_route", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = bgp_0_2_add_route( xa_inputs.get_int32("origin"), xa_inputs.get_int32("asnum"), xa_inputs.get_ipv4("next_hop"), xa_inputs.get_ipv4net("nlri")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/add_route 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_delete_route(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 1) { XLOG_ERROR("Wrong number of arguments (%u != 1) handling bgp/0.2/delete_route", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = bgp_0_2_delete_route( xa_inputs.get_ipv4net("nlri")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/delete_route 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_v4_route_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_v4_route_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; try { XrlCmdError e = bgp_0_2_get_v4_route_list_start( token); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_v4_route_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); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_v6_route_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_v6_route_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; try { XrlCmdError e = bgp_0_2_get_v6_route_list_start( token); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_v6_route_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); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_v4_route_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_v4_route_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 peer_id; IPv4Net net; uint32_t best_and_origin; vector<uint8_t> aspath; IPv4 nexthop; int32_t med; int32_t localpref; int32_t atomic_agg; vector<uint8_t> aggregator; int32_t calc_localpref; vector<uint8_t> attr_unknown; bool valid; try { XrlCmdError e = bgp_0_2_get_v4_route_list_next( xa_inputs.get_uint32("token"), peer_id, net, best_and_origin, aspath, nexthop, med, localpref, atomic_agg, aggregator, calc_localpref, attr_unknown, valid); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_v4_route_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("peer_id", peer_id); pxa_outputs->add("net", net); pxa_outputs->add("best_and_origin", best_and_origin); pxa_outputs->add("aspath", aspath); pxa_outputs->add("nexthop", nexthop); pxa_outputs->add("med", med); pxa_outputs->add("localpref", localpref); pxa_outputs->add("atomic_agg", atomic_agg); pxa_outputs->add("aggregator", aggregator); pxa_outputs->add("calc_localpref", calc_localpref); pxa_outputs->add("attr_unknown", attr_unknown); pxa_outputs->add("valid", valid); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_bgp_0_2_get_v6_route_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_v6_route_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 peer_id; IPv6Net net; uint32_t best_and_origin; vector<uint8_t> aspath; IPv6 nexthop; int32_t med; int32_t localpref; int32_t atomic_agg; vector<uint8_t> aggregator; int32_t calc_localpref; vector<uint8_t> attr_unknown; bool valid; try { XrlCmdError e = bgp_0_2_get_v6_route_list_next( xa_inputs.get_uint32("token"), peer_id, net, best_and_origin, aspath, nexthop, med, localpref, atomic_agg, aggregator, calc_localpref, attr_unknown, valid); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for bgp/0.2/get_v6_route_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("peer_id", peer_id); pxa_outputs->add("net", net); pxa_outputs->add("best_and_origin", best_and_origin); pxa_outputs->add("aspath", aspath); pxa_outputs->add("nexthop", nexthop); pxa_outputs->add("med", med); pxa_outputs->add("localpref", localpref); pxa_outputs->add("atomic_agg", atomic_agg); pxa_outputs->add("aggregator", aggregator); pxa_outputs->add("calc_localpref", calc_localpref); pxa_outputs->add("attr_unknown", attr_unknown); pxa_outputs->add("valid", valid); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlBgpTargetBase::handle_rib_client_0_1_route_info_changed4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 6) { XLOG_ERROR("Wrong number of arguments (%u != 6) handling rib_client/0.1/route_info_changed4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_client_0_1_route_info_changed4( xa_inputs.get_ipv4("addr"), xa_inputs.get_uint32("prefix_len"), xa_inputs.get_ipv4("nexthop"), xa_inputs.get_uint32("metric"), xa_inputs.get_uint32("admin_distance"), xa_inputs.get_string("protocol_origin")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib_client/0.1/route_info_changed4 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_rib_client_0_1_route_info_changed6(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 6) { XLOG_ERROR("Wrong number of arguments (%u != 6) handling rib_client/0.1/route_info_changed6", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_client_0_1_route_info_changed6( xa_inputs.get_ipv6("addr"), xa_inputs.get_uint32("prefix_len"), xa_inputs.get_ipv6("nexthop"), xa_inputs.get_uint32("metric"), xa_inputs.get_uint32("admin_distance"), xa_inputs.get_string("protocol_origin")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib_client/0.1/route_info_changed6 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_rib_client_0_1_route_info_invalid4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling rib_client/0.1/route_info_invalid4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_client_0_1_route_info_invalid4( xa_inputs.get_ipv4("addr"), xa_inputs.get_uint32("prefix_len")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib_client/0.1/route_info_invalid4 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_rib_client_0_1_route_info_invalid6(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling rib_client/0.1/route_info_invalid6", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_client_0_1_route_info_invalid6( xa_inputs.get_ipv6("addr"), xa_inputs.get_uint32("prefix_len")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib_client/0.1/route_info_invalid6 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_finder_event_observer_0_1_xrl_target_birth(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling finder_event_observer/0.1/xrl_target_birth", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = finder_event_observer_0_1_xrl_target_birth( xa_inputs.get_string("target_class"), xa_inputs.get_string("target_instance")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for finder_event_observer/0.1/xrl_target_birth 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_finder_event_observer_0_1_xrl_target_death(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling finder_event_observer/0.1/xrl_target_death", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = finder_event_observer_0_1_xrl_target_death( xa_inputs.get_string("target_class"), xa_inputs.get_string("target_instance")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for finder_event_observer/0.1/xrl_target_death 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();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?