summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-11-06 18:50:16 +0200
committerimarom <imarom@cisco.com>2016-11-06 18:50:16 +0200
commite85ea75669ea39e4f99519138a3a84e4df6eed2d (patch)
tree27e1563def12afc2ef03c369324aa2b03807cc76 /src
parenta1ade6fd8e044b9866a8644db3519305539cfc61 (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.cpp4
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp5
-rw-r--r--src/stateless/rx/trex_stateless_rx_defs.h16
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 &params, 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;