FD.io VPP  v17.07.01-10-g3be13f0
Vector Packet Processing
vlib_buffer_t Struct Reference

Public Member Functions

 CLIB_CACHE_LINE_ALIGN_MARK (cacheline0)
 
 STRUCT_MARK (template_start)
 
 STRUCT_MARK (template_end)
 
 CLIB_CACHE_LINE_ALIGN_MARK (cacheline1)
 
 CLIB_CACHE_LINE_ALIGN_MARK (cacheline2)
 

Data Fields

i16 current_data
 signed offset in data[], pre_data[] that we are currently processing. More...
 
u16 current_length
 Nbytes between current data and the end of this buffer. More...
 
u32 flags
 buffer flags:
VLIB_BUFFER_IS_TRACED: trace this buffer. More...
 
u32 free_list_index
 Buffer free list that this buffer was allocated from and will be freed to. More...
 
u32 total_length_not_including_first_buffer
 Only valid for first buffer in chain. More...
 
u32 next_buffer
 Next buffer for this linked-list of buffers. More...
 
vlib_error_t error
 Error code for buffers to be enqueued to error handler. More...
 
u32 current_config_index
 Used by feature subgraph arcs to visit enabled feature nodes. More...
 
u8 feature_arc_index
 Used to identify feature arcs by intermediate feature node. More...
 
u8 n_add_refs
 Number of additional references to this buffer. More...
 
u8 dont_waste_me [2]
 Available space in the (precious) first 32 octets of buffer metadata Before allocating any of it, discussion required! More...
 
u32 opaque [8]
 Opaque data used by sub-graphs for their own purposes. More...
 
u32 trace_index
 Specifies index into trace buffer if VLIB_PACKET_IS_TRACED flag is set. More...
 
u32 recycle_count
 Used by L2 path recycle code. More...
 
u32 opaque2 [14]
 More opaque data, currently unused. More...
 
u8 pre_data [VLIB_BUFFER_PRE_DATA_SIZE]
 Space for inserting data before buffer start. More...
 
u8 data [0]
 Packet data. More...
 

Detailed Description

Definition at line 61 of file buffer.h.

Member Function Documentation

vlib_buffer_t::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline0  )
vlib_buffer_t::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline1  )
vlib_buffer_t::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline2  )
vlib_buffer_t::STRUCT_MARK ( template_start  )
vlib_buffer_t::STRUCT_MARK ( template_end  )

Field Documentation

u32 vlib_buffer_t::current_config_index

Used by feature subgraph arcs to visit enabled feature nodes.

Definition at line 116 of file buffer.h.

i16 vlib_buffer_t::current_data

signed offset in data[], pre_data[] that we are currently processing.

If negative current header points into predata area.

Definition at line 67 of file buffer.h.

u16 vlib_buffer_t::current_length

Nbytes between current data and the end of this buffer.

Definition at line 71 of file buffer.h.

u8 vlib_buffer_t::data[0]

Packet data.

Hardware DMA here

Definition at line 152 of file buffer.h.

u8 vlib_buffer_t::dont_waste_me[2]

Available space in the (precious) first 32 octets of buffer metadata Before allocating any of it, discussion required!

Definition at line 126 of file buffer.h.

vlib_error_t vlib_buffer_t::error

Error code for buffers to be enqueued to error handler.

Definition at line 113 of file buffer.h.

u8 vlib_buffer_t::feature_arc_index

Used to identify feature arcs by intermediate feature node.

Definition at line 120 of file buffer.h.

u32 vlib_buffer_t::flags

buffer flags:
VLIB_BUFFER_IS_TRACED: trace this buffer.


VLIB_BUFFER_NEXT_PRESENT: this is a multi-chunk buffer.
VLIB_BUFFER_TOTAL_LENGTH_VALID: as it says
VLIB_BUFFER_REPL_FAIL: packet replication failure
VLIB_BUFFER_RECYCLE: as it says
VLIB_BUFFER_FLOW_REPORT: buffer is a flow report,
VLIB_BUFFER_EXT_HDR_VALID: buffer contains valid external buffer manager header, set to avoid adding it to a flow report
VLIB_BUFFER_FLAG_USER(n): user-defined bit N

Definition at line 74 of file buffer.h.

u32 vlib_buffer_t::free_list_index

Buffer free list that this buffer was allocated from and will be freed to.

Definition at line 99 of file buffer.h.

u8 vlib_buffer_t::n_add_refs

Number of additional references to this buffer.

Definition at line 124 of file buffer.h.

u32 vlib_buffer_t::next_buffer

Next buffer for this linked-list of buffers.

Only valid if VLIB_BUFFER_NEXT_PRESENT flag is set.

Definition at line 109 of file buffer.h.

u32 vlib_buffer_t::opaque[8]

Opaque data used by sub-graphs for their own purposes.

See .../vnet/vnet/buffer.h

Definition at line 131 of file buffer.h.

u32 vlib_buffer_t::opaque2[14]

More opaque data, currently unused.

Definition at line 140 of file buffer.h.

u8 vlib_buffer_t::pre_data[VLIB_BUFFER_PRE_DATA_SIZE]

Space for inserting data before buffer start.

Packet rewrite string will be rewritten backwards and may extend back before buffer->data[0]. Must come directly before packet data.

Definition at line 144 of file buffer.h.

u32 vlib_buffer_t::recycle_count

Used by L2 path recycle code.

Definition at line 139 of file buffer.h.

u32 vlib_buffer_t::total_length_not_including_first_buffer

Only valid for first buffer in chain.

Current length plus total length given here give total number of bytes in buffer chain.

Definition at line 103 of file buffer.h.

u32 vlib_buffer_t::trace_index

Specifies index into trace buffer if VLIB_PACKET_IS_TRACED flag is set.

Definition at line 136 of file buffer.h.


The documentation for this struct was generated from the following file: