diff options
Diffstat (limited to 'src/stateless/common/trex_stateless_pkt.cpp')
-rw-r--r-- | src/stateless/common/trex_stateless_pkt.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/stateless/common/trex_stateless_pkt.cpp b/src/stateless/common/trex_stateless_pkt.cpp index f7d47ec0..14c14462 100644 --- a/src/stateless/common/trex_stateless_pkt.cpp +++ b/src/stateless/common/trex_stateless_pkt.cpp @@ -34,7 +34,7 @@ * * @return uint8_t* */ -void copy_mbuf(uint8_t *dest, const rte_mbuf_t *m) { +void mbuf_to_buffer(uint8_t *dest, const rte_mbuf_t *m) { int index = 0; for (const rte_mbuf_t *it = m; it != NULL; it = it->next) { @@ -55,7 +55,7 @@ TrexPkt::TrexPkt(const rte_mbuf_t *m, int port, origin_e origin, uint64_t index) m_raw = new uint8_t[m_size]; /* copy data */ - copy_mbuf(m_raw, m); + mbuf_to_buffer(m_raw, m); /* generate a packet timestamp */ m_timestamp = now_sec(); @@ -76,6 +76,12 @@ TrexPkt::TrexPkt(const TrexPkt &other) { m_index = other.m_index; } + +/************************************** + * TRex packet buffer + * + *************************************/ + TrexPktBuffer::TrexPktBuffer(uint64_t size, mode_e mode) { m_mode = mode; m_buffer = nullptr; @@ -117,13 +123,14 @@ TrexPktBuffer::push(const rte_mbuf_t *m, int port, TrexPkt::origin_e origin, uin /* push packet */ m_buffer[m_head] = new TrexPkt(m, port, origin, pkt_index); m_bytes += m_buffer[m_head]->get_size(); - - m_head = next(m_head); + /* advance */ + m_head = next(m_head); } /** * packet will be handled internally + * packet pointer is invalid after this call */ void TrexPktBuffer::push(const TrexPkt *pkt) { @@ -140,6 +147,8 @@ TrexPktBuffer::push(const TrexPkt *pkt) { /* push packet */ m_buffer[m_head] = pkt; + m_bytes += pkt->get_size(); + m_head = next(m_head); } @@ -179,4 +188,3 @@ TrexPktBuffer::to_json() const { return output; } - |