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