On Nov 26, 2018, at 12:43 PM, Dave Barach (dbarach) <dbar...@cisco.com> wrote:
> On November 26, 2018, at 3:01 PM, Guy Harris <g...@alum.mit.edu> wrote: > >> So which of those structures describes the primary metadata? > > vlib_buffer_t. The key fields are flags, current_data, and current_length. So that's: > /* VLIB buffer representation. */ > typedef struct > { > /* Offset within data[] that we are currently processing. > If negative current header points into predata area. */ > i16 current_data; /**< signed offset in data[], pre_data[] > that we are currently processing. > If negative current header points into predata area. > */ > u16 current_length; /**< Nbytes between current data and > the end of this buffer. > */ > u32 flags; /**< buffer flags */ > u32 flow_id; /**< Generic flow identifier */ > > > u32 next_buffer; /**< Next buffer for this linked-list of buffers. > Only valid if VLIB_BUFFER_NEXT_PRESENT flag is set. > */ > > u32 current_config_index; /**< Used by feature subgraph arcs to > visit enabled feature nodes > */ > u16 error; /**< Error code for buffers to be enqueued > to error handler. > */ > u8 n_add_refs; /**< Number of additional references to this buffer. */ > > u8 buffer_pool_index; /**< index of buffer pool this buffer belongs. > */ > > u32 opaque[10]; /**< Opaque data used by sub-graphs for their own purposes. > See above */ > u32 trace_index; /**< Specifies index into trace buffer > if VLIB_PACKET_IS_TRACED flag is set. > */ > u32 recycle_count; /**< Used by L2 path recycle code */ > > u32 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. > */ > u8 free_list_index; /** < only used if > > VLIB_BUFFER_NON_DEFAULT_FREELIST > flag is set */ > u8 align_pad[3]; /**< available */ > u32 opaque2[12]; /**< More opaque data, see ../vnet/vnet/buffer.h */ > > /***** end of second cache line */ > u8 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. > */ > > u8 data[0]; /**< Packet data. Hardware DMA here */ > } vlib_buffer_t; /* Must be a multiple of 64B. */ which is 128 bytes followed by VLIB_BUFFER_PRE_DATA_SIZE bytes of data. Which of those 64 of those 128 bytes are the primary metadata? _______________________________________________ tcpdump-workers mailing list tcpdump-workers@lists.tcpdump.org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers