diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rpc-server/commands/trex_rpc_cmd_general.cpp | 18 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless_port.cpp | 8 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/rpc-server/commands/trex_rpc_cmd_general.cpp b/src/rpc-server/commands/trex_rpc_cmd_general.cpp index c8b4841a..f936f946 100644 --- a/src/rpc-server/commands/trex_rpc_cmd_general.cpp +++ b/src/rpc-server/commands/trex_rpc_cmd_general.cpp @@ -799,7 +799,11 @@ TrexRpcCmdSetL2::_run(const Json::Value ¶ms, Json::Value &result) { generate_parse_err(result, ss.str()); } - port->set_l2_mode(dst_mac); + try { + port->set_l2_mode(dst_mac); + } catch (const TrexException &ex) { + generate_execute_err(result, ex.what()); + } return (TREX_RPC_CMD_OK); } @@ -844,11 +848,19 @@ TrexRpcCmdSetL3::_run(const Json::Value ¶ms, Json::Value &result) { generate_parse_err(result, ss.str()); } - port->set_l3_mode(src_ipv4, dst_ipv4, mac); + try { + port->set_l3_mode(src_ipv4, dst_ipv4, mac); + } catch (const TrexException &ex) { + generate_execute_err(result, ex.what()); + } } else { + try { + port->set_l3_mode(src_ipv4, dst_ipv4); + } catch (const TrexException &ex) { + generate_execute_err(result, ex.what()); + } - port->set_l3_mode(src_ipv4, dst_ipv4); } return (TREX_RPC_CMD_OK); diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp index e41cc88c..3a4db196 100644 --- a/src/stateless/cp/trex_stateless_port.cpp +++ b/src/stateless/cp/trex_stateless_port.cpp @@ -1004,6 +1004,9 @@ TrexStatelessPort::get_rx_queue_pkts() { void TrexStatelessPort::set_l2_mode(const uint8_t *dest_mac) { + /* not valid under traffic */ + verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l2_mode"); + /* no IPv4 src */ getPortAttrObj()->set_src_ipv4(0); @@ -1020,6 +1023,9 @@ TrexStatelessPort::set_l2_mode(const uint8_t *dest_mac) { void TrexStatelessPort::set_l3_mode(uint32_t src_ipv4, uint32_t dest_ipv4) { + /* not valid under traffic */ + verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l3_mode"); + /* set src IPv4 */ getPortAttrObj()->set_src_ipv4(src_ipv4); @@ -1041,6 +1047,8 @@ TrexStatelessPort::set_l3_mode(uint32_t src_ipv4, uint32_t dest_ipv4) { void TrexStatelessPort::set_l3_mode(uint32_t src_ipv4, uint32_t dest_ipv4, const uint8_t *resolved_mac) { + verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS, "set_l3_mode"); + /* set src IPv4 */ getPortAttrObj()->set_src_ipv4(src_ipv4); |