From 951b09ef1b892594840f091f861f11ad274541ec Mon Sep 17 00:00:00 2001 From: imarom Date: Wed, 18 Jan 2017 13:08:41 +0200 Subject: many capture modes in Python console Signed-off-by: imarom --- src/stateless/messaging/trex_stateless_messaging.cpp | 13 +++++++++++++ src/stateless/messaging/trex_stateless_messaging.h | 15 +++++++++++++++ src/stateless/rx/trex_stateless_capture.cpp | 9 +++------ src/stateless/rx/trex_stateless_capture.h | 2 +- 4 files changed, 32 insertions(+), 7 deletions(-) (limited to 'src/stateless') diff --git a/src/stateless/messaging/trex_stateless_messaging.cpp b/src/stateless/messaging/trex_stateless_messaging.cpp index b9bb1d1c..2452487c 100644 --- a/src/stateless/messaging/trex_stateless_messaging.cpp +++ b/src/stateless/messaging/trex_stateless_messaging.cpp @@ -313,6 +313,19 @@ TrexStatelessRxCaptureStatus::handle(CRxCoreStateless *rx_core) { return true; } +bool +TrexStatelessRxCaptureRemove::handle(CRxCoreStateless *rx_core) { + + TrexCaptureRCRemove remove_rc; + + TrexStatelessCaptureMngr::getInstance().remove(m_capture_id, remove_rc); + + /* mark as done */ + m_reply.set_reply(remove_rc); + + return true; +} + bool TrexStatelessRxStartQueue::handle(CRxCoreStateless *rx_core) { diff --git a/src/stateless/messaging/trex_stateless_messaging.h b/src/stateless/messaging/trex_stateless_messaging.h index 4027d075..3535ad4f 100644 --- a/src/stateless/messaging/trex_stateless_messaging.h +++ b/src/stateless/messaging/trex_stateless_messaging.h @@ -552,6 +552,21 @@ private: }; + +class TrexStatelessRxCaptureRemove : public TrexStatelessRxCapture { +public: + TrexStatelessRxCaptureRemove(capture_id_t capture_id, MsgReply &reply) : m_reply(reply) { + m_capture_id = capture_id; + } + + virtual bool handle(CRxCoreStateless *rx_core); + +private: + capture_id_t m_capture_id; + MsgReply &m_reply; +}; + + class TrexStatelessRxStartQueue : public TrexStatelessCpToRxMsgBase { public: TrexStatelessRxStartQueue(uint8_t port_id, diff --git a/src/stateless/rx/trex_stateless_capture.cpp b/src/stateless/rx/trex_stateless_capture.cpp index 85be7aef..5d43cede 100644 --- a/src/stateless/rx/trex_stateless_capture.cpp +++ b/src/stateless/rx/trex_stateless_capture.cpp @@ -62,7 +62,7 @@ TrexStatelessCapture::handle_pkt_rx(const rte_mbuf_t *m, int port) { return; } - m_pkt_buffer->push(m); + m_pkt_buffer->push(m, port, TrexPkt::ORIGIN_RX); } @@ -87,7 +87,6 @@ TrexStatelessCapture::to_json() const { default: assert(0); - } return output; @@ -178,10 +177,6 @@ TrexStatelessCaptureMngr::fetch(capture_id_t capture_id, uint32_t pkt_limit, Tre rc.set_err(TrexCaptureRC::RC_CAPTURE_NOT_FOUND); return; } - if (capture->is_active()) { - rc.set_err(TrexCaptureRC::RC_CAPTURE_FETCH_UNDER_ACTIVE); - return; - } uint32_t pending = 0; TrexPktBuffer *pkt_buffer = capture->fetch(pkt_limit, pending); @@ -214,6 +209,8 @@ TrexStatelessCaptureMngr::remove(capture_id_t capture_id, TrexCaptureRCRemove &r /* update global filter */ update_global_filter(); + + rc.set_ok(); } void diff --git a/src/stateless/rx/trex_stateless_capture.h b/src/stateless/rx/trex_stateless_capture.h index 6cd25a94..4a9efea7 100644 --- a/src/stateless/rx/trex_stateless_capture.h +++ b/src/stateless/rx/trex_stateless_capture.h @@ -27,7 +27,7 @@ limitations under the License. #include "trex_stateless_pkt.h" #include "trex_stateless_capture_msg.h" -typedef int64_t capture_id_t; +typedef int32_t capture_id_t; class TrexCaptureRC { public: -- cgit 1.2.3-korg