summaryrefslogtreecommitdiffstats
path: root/src/stateless
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2017-01-18 13:08:41 +0200
committerimarom <imarom@cisco.com>2017-01-18 13:08:41 +0200
commit951b09ef1b892594840f091f861f11ad274541ec (patch)
tree1fe935fb6cdbf22308971b081e7685fdb1f185bb /src/stateless
parent9f72a19a6bb0edf7ad54129f7ad06e8e288a61d7 (diff)
many capture modes in Python console
Signed-off-by: imarom <imarom@cisco.com>
Diffstat (limited to 'src/stateless')
-rw-r--r--src/stateless/messaging/trex_stateless_messaging.cpp13
-rw-r--r--src/stateless/messaging/trex_stateless_messaging.h15
-rw-r--r--src/stateless/rx/trex_stateless_capture.cpp9
-rw-r--r--src/stateless/rx/trex_stateless_capture.h2
4 files changed, 32 insertions, 7 deletions
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<TrexCaptureRCRemove> &reply) : m_reply(reply) {
+ m_capture_id = capture_id;
+ }
+
+ virtual bool handle(CRxCoreStateless *rx_core);
+
+private:
+ capture_id_t m_capture_id;
+ MsgReply<TrexCaptureRCRemove> &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: