rib_base.cc
来自「BCAST Implementation for NS2」· CC 代码 · 共 1,522 行 · 第 1/4 页
CC
1,522 行
/* Return value declarations */ try { XrlCmdError e = rib_0_1_delete_route6( xa_inputs.get_string("protocol"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast"), xa_inputs.get_ipv6net("network")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/delete_route6 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_lookup_route4(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 3) { XLOG_ERROR("Wrong number of arguments (%u != 3) handling rib/0.1/lookup_route4", (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 nexthop; try { XrlCmdError e = rib_0_1_lookup_route4( xa_inputs.get_ipv4("addr"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast"), nexthop); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/lookup_route4 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("nexthop", nexthop); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_lookup_route6(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 3) { XLOG_ERROR("Wrong number of arguments (%u != 3) handling rib/0.1/lookup_route6", (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 */ IPv6 nexthop; try { XrlCmdError e = rib_0_1_lookup_route6( xa_inputs.get_ipv6("addr"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast"), nexthop); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/lookup_route6 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("nexthop", nexthop); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_new_vif(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 1) { XLOG_ERROR("Wrong number of arguments (%u != 1) handling rib/0.1/new_vif", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_new_vif( xa_inputs.get_string("name")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/new_vif 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_add_vif_addr4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 3) { XLOG_ERROR("Wrong number of arguments (%u != 3) handling rib/0.1/add_vif_addr4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_add_vif_addr4( xa_inputs.get_string("name"), xa_inputs.get_ipv4("addr"), xa_inputs.get_ipv4net("subnet")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/add_vif_addr4 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_add_vif_addr6(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 3) { XLOG_ERROR("Wrong number of arguments (%u != 3) handling rib/0.1/add_vif_addr6", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_add_vif_addr6( xa_inputs.get_string("name"), xa_inputs.get_ipv6("addr"), xa_inputs.get_ipv6net("subnet")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/add_vif_addr6 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_redist_enable4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling rib/0.1/redist_enable4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_redist_enable4( xa_inputs.get_string("from"), xa_inputs.get_string("to"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/redist_enable4 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_redist_enable6(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling rib/0.1/redist_enable6", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_redist_enable6( xa_inputs.get_string("from"), xa_inputs.get_string("to"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/redist_enable6 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_redist_disable4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling rib/0.1/redist_disable4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_redist_disable4( xa_inputs.get_string("from"), xa_inputs.get_string("to"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/redist_disable4 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_redist_disable6(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 4) { XLOG_ERROR("Wrong number of arguments (%u != 4) handling rib/0.1/redist_disable6", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_redist_disable6( xa_inputs.get_string("from"), xa_inputs.get_string("to"), xa_inputs.get_bool("unicast"), xa_inputs.get_bool("multicast")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/redist_disable6 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_register_interest4(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling rib/0.1/register_interest4", (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 */ bool resolves; IPv4 base_addr; uint32_t prefix_len; uint32_t real_prefix_len; IPv4 nexthop; uint32_t metric; try { XrlCmdError e = rib_0_1_register_interest4( xa_inputs.get_string("target"), xa_inputs.get_ipv4("addr"), resolves, base_addr, prefix_len, real_prefix_len, nexthop, metric); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/register_interest4 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("resolves", resolves); pxa_outputs->add("base_addr", base_addr); pxa_outputs->add("prefix_len", prefix_len); pxa_outputs->add("real_prefix_len", real_prefix_len); pxa_outputs->add("nexthop", nexthop); pxa_outputs->add("metric", metric); } catch (const XrlArgs::XrlAtomFound& ) { XLOG_FATAL("Duplicate atom name"); /* XXX Should never happen */ } return XrlCmdError::OKAY();}const XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_deregister_interest4(const XrlArgs& xa_inputs, XrlArgs* /* pxa_outputs */){ if (xa_inputs.size() != 3) { XLOG_ERROR("Wrong number of arguments (%u != 3) handling rib/0.1/deregister_interest4", (uint32_t)xa_inputs.size()); return XrlCmdError::BAD_ARGS(); } /* Return value declarations */ try { XrlCmdError e = rib_0_1_deregister_interest4( xa_inputs.get_string("target"), xa_inputs.get_ipv4("addr"), xa_inputs.get_uint32("prefix_len")); if (e != XrlCmdError::OKAY()) { XLOG_WARNING("Handling method for rib/0.1/deregister_interest4 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 XrlCmdErrorXrlRibTargetBase::handle_rib_0_1_register_interest6(const XrlArgs& xa_inputs, XrlArgs* pxa_outputs){ if (xa_inputs.size() != 2) { XLOG_ERROR("Wrong number of arguments (%u != 2) handling rib/0.1/register_interest6", (uint32_t)xa_inputs.size());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?