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 + -
显示快捷键?