LCOV - code coverage report
Current view: top level - vnsw/agent/pkt - packet_buffer.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 3 3 100.0 %
Date: 2026-11-09 02:10:49 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
       3             :  * Copyright Contributors to the OpenSDN project
       4             :  */
       5             : 
       6             : #ifndef vnsw_agent_pkt_packet_buffer_hpp
       7             : #define vnsw_agent_pkt_packet_buffer_hpp
       8             : 
       9             : #include <string>
      10             : #include <stdint.h>
      11             : #include <boost/shared_ptr.hpp>
      12             : #include <boost/shared_array.hpp>
      13             : #include <base/util.h>
      14             : 
      15             : class PacketBuffer;
      16             : class PacketBufferManager;
      17             : struct AgentHdr;
      18             : class PktHandler;
      19             : class PktModule;
      20             : 
      21             : typedef boost::shared_ptr<PacketBuffer> PacketBufferPtr;
      22             : class PacketBuffer {
      23             : public:
      24             :     static const uint32_t kDefaultBufferLen = 1024;
      25             :     virtual ~PacketBuffer();
      26             : 
      27             :     uint8_t *buffer() const { return buffer_.get(); }
      28        2623 :     uint16_t buffer_len() const { return buffer_len_; }
      29             : 
      30             :     uint8_t *data() const;
      31             :     uint16_t data_len() const;
      32             : 
      33        4408 :     uint32_t module() const { return module_; }
      34          75 :     void set_module(uint32_t module) { module_ = module; }
      35             : 
      36             :     void set_len(uint32_t len);
      37             :     bool SetOffset(uint16_t offset);
      38             : private:
      39             :     friend class PacketBufferManager;
      40             :     PacketBuffer(PacketBufferManager *mgr, uint32_t module, uint16_t len,
      41             :                  uint32_t mdata);
      42             : 
      43             :     // Create PacketBuffer from existing memory
      44             :     PacketBuffer(PacketBufferManager *mgr, uint32_t module, uint8_t *buff,
      45             :                  uint16_t len, uint16_t data_offset, uint16_t data_len,
      46             :                  uint32_t mdata);
      47             : 
      48             :     boost::shared_array<uint8_t> buffer_;
      49             :     uint16_t buffer_len_;
      50             : 
      51             :     uint8_t *data_;
      52             :     uint16_t data_len_;
      53             : 
      54             :     uint32_t module_;
      55             :     uint32_t mdata_;
      56             :     PacketBufferManager *mgr_;
      57             :     DISALLOW_COPY_AND_ASSIGN(PacketBuffer);
      58             : };
      59             : 
      60             : class PacketBufferManager {
      61             : public:
      62             :     PacketBufferManager(PktModule *pkt_module);
      63             :     virtual ~PacketBufferManager();
      64             : 
      65             :     PacketBufferPtr Allocate(uint32_t module, uint16_t len, uint32_t mdata);
      66             : 
      67             :     PacketBufferPtr Allocate(uint32_t module, uint8_t *buff, uint16_t len,
      68             :                              uint16_t data_offset, uint16_t data_len,
      69             :                              uint32_t mdata);
      70             : private:
      71             :     friend class PacketBuffer;
      72             :     void FreeIndication(PacketBuffer *);
      73             : 
      74             :     uint64_t alloc_;
      75             :     uint64_t free_;
      76             :     PktModule *pkt_module_;
      77             : 
      78             :     DISALLOW_COPY_AND_ASSIGN(PacketBufferManager);
      79             : };
      80             : 
      81             : #endif // vnsw_agent_pkt_packet_buffer_hpp

Generated by: LCOV version 1.14