diff options
author | 2016-11-06 18:50:16 +0200 | |
---|---|---|
committer | 2016-11-06 18:50:16 +0200 | |
commit | e85ea75669ea39e4f99519138a3a84e4df6eed2d (patch) | |
tree | 27e1563def12afc2ef03c369324aa2b03807cc76 /src | |
parent | a1ade6fd8e044b9866a8644db3519305539cfc61 (diff) |
RX features
Signed-off-by: imarom <imarom@cisco.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/rpc-server/commands/trex_rpc_cmd_general.cpp | 4 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless_port.cpp | 5 | ||||
-rw-r--r-- | src/stateless/rx/trex_stateless_rx_defs.h | 16 |
3 files changed, 20 insertions, 5 deletions
diff --git a/src/rpc-server/commands/trex_rpc_cmd_general.cpp b/src/rpc-server/commands/trex_rpc_cmd_general.cpp index a441fc33..b5747d21 100644 --- a/src/rpc-server/commands/trex_rpc_cmd_general.cpp +++ b/src/rpc-server/commands/trex_rpc_cmd_general.cpp @@ -708,12 +708,14 @@ TrexRpcCmdSetRxFeature::_run(const Json::Value ¶ms, Json::Value &result) { void TrexRpcCmdSetRxFeature::parse_capture_msg(const Json::Value &msg, TrexStatelessPort *port, Json::Value &result) { - std::string pcap_filename = parse_string(msg, "pcap_filename", result); + bool enabled = parse_bool(msg, "enabled", result); if (enabled) { + std::string pcap_filename = parse_string(msg, "pcap_filename", result); uint64_t limit = parse_uint32(msg, "limit", result); + if (limit == 0) { generate_parse_err(result, "limit cannot be zero"); } diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp index f93d7abd..2318061d 100644 --- a/src/stateless/cp/trex_stateless_port.cpp +++ b/src/stateless/cp/trex_stateless_port.cpp @@ -947,9 +947,7 @@ TrexStatelessPort::remove_and_delete_all_streams() { void TrexStatelessPort::start_rx_capture(const std::string &pcap_filename, uint64_t limit) { - m_rx_capture_info.m_is_active = true; - m_rx_capture_info.m_limit = limit; - m_rx_capture_info.m_pcap_filename = pcap_filename; + m_rx_capture_info.enable(pcap_filename, limit); TrexStatelessCpToRxMsgBase *msg = new TrexStatelessRxStartCapture(m_port_id, pcap_filename, @@ -962,6 +960,7 @@ void TrexStatelessPort::stop_rx_capture() { TrexStatelessCpToRxMsgBase *msg = new TrexStatelessRxStopCapture(m_port_id); send_message_to_rx(msg); + m_rx_capture_info.disable(); } const RXCaptureInfo & diff --git a/src/stateless/rx/trex_stateless_rx_defs.h b/src/stateless/rx/trex_stateless_rx_defs.h index 0b7d1aa3..ee124270 100644 --- a/src/stateless/rx/trex_stateless_rx_defs.h +++ b/src/stateless/rx/trex_stateless_rx_defs.h @@ -59,13 +59,26 @@ typedef enum rx_filter_mode_ { * holds RX capture info * */ -struct RXCaptureInfo { +class RXCaptureInfo { +public: RXCaptureInfo() { m_is_active = false; m_limit = 0; m_shared_counter = 0; } + void enable(const std::string &pcap_filename, uint64_t limit) { + m_pcap_filename = pcap_filename; + m_limit = limit; + m_is_active = true; + } + + void disable() { + m_is_active = false; + m_pcap_filename = ""; + m_limit = 0; + } + void to_json(Json::Value &output) const { output["is_active"] = m_is_active; if (m_is_active) { @@ -75,6 +88,7 @@ struct RXCaptureInfo { } } +public: bool m_is_active; std::string m_pcap_filename; uint64_t m_limit; |