FD.io VPP  v21.01.1
Vector Packet Processing
vlib_buffer_t Union Reference

VLIB buffer representation. More...

Data Fields

struct {
   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_FREE_LIST_INDEX_MASK: bits used to store free list index,
VLIB_BUFFER_IS_TRACED: trace this buffer. More...
 
   u32   flow_id
 Generic flow identifier. More...
 
   volatile u8   ref_count
 Reference count for this buffer. More...
 
   u8   buffer_pool_index
 index of buffer pool this buffer belongs. More...
 
   vlib_error_t   error
 Error code for buffers to be enqueued to error handler. More...
 
   u32   next_buffer
 Next buffer for this linked-list of buffers. More...
 
   union {
      u32   current_config_index
 Used by feature subgraph arcs to visit enabled feature nodes. More...
 
      u32   punt_reason
 
   } 
 The following fields can be in a union because once a packet enters the punt path, it is no longer on a feature arc. More...
 
   u32   opaque [10]
 Opaque data used by sub-graphs for their own purposes. More...
 
   u32   trace_handle
 Specifies trace buffer handle if VLIB_PACKET_IS_TRACED flag is set. More...
 
   u32   total_length_not_including_first_buffer
 Only valid for first buffer in chain. More...
 
   u32   opaque2 [14]
 
   u8   pre_data [VLIB_BUFFER_PRE_DATA_SIZE]
 Space for inserting data before buffer start. More...
 
   u8   data []
 Packet data. More...
 
}; 
 

Detailed Description

VLIB buffer representation.

Definition at line 102 of file buffer.h.

Field Documentation

◆ @612

struct { ... }

◆ buffer_pool_index

u8 vlib_buffer_t::buffer_pool_index

index of buffer pool this buffer belongs.

Definition at line 133 of file buffer.h.

◆ current_config_index

u32 vlib_buffer_t::current_config_index

Used by feature subgraph arcs to visit enabled feature nodes.

Definition at line 147 of file buffer.h.

◆ current_data

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 110 of file buffer.h.

◆ current_length

u16 vlib_buffer_t::current_length

Nbytes between current data and the end of this buffer.

Definition at line 113 of file buffer.h.

◆ data

u8 vlib_buffer_t::data[]

Packet data.

Definition at line 181 of file buffer.h.

◆ error

vlib_error_t vlib_buffer_t::error

Error code for buffers to be enqueued to error handler.

Definition at line 136 of file buffer.h.

◆ flags

u32 vlib_buffer_t::flags

buffer flags:
VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index,
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_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 124 of file buffer.h.

◆ flow_id

u32 vlib_buffer_t::flow_id

Generic flow identifier.

Definition at line 127 of file buffer.h.

◆ next_buffer

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 140 of file buffer.h.

◆ opaque

u32 vlib_buffer_t::opaque[10]

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

Definition at line 153 of file buffer.h.

◆ opaque2

u32 vlib_buffer_t::opaque2[14]

Definition at line 170 of file buffer.h.

◆ pre_data

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 178 of file buffer.h.

◆ punt_reason

u32 vlib_buffer_t::punt_reason

Definition at line 149 of file buffer.h.

◆ ref_count

volatile u8 vlib_buffer_t::ref_count

Reference count for this buffer.

Definition at line 130 of file buffer.h.

◆ total_length_not_including_first_buffer

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. More opaque data, see ../vnet/vnet/buffer.h

Definition at line 167 of file buffer.h.

◆ trace_handle

u32 vlib_buffer_t::trace_handle

Specifies trace buffer handle if VLIB_PACKET_IS_TRACED flag is set.

Definition at line 163 of file buffer.h.


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