tcpdump mailing list archives

Re: Request for a new LINKTYPE_/DLT_ type.


From: Guy Harris <gharris () sonic net>
Date: Tue, 27 Nov 2018 10:32:05 -0800

On Nov 27, 2018, at 4:08 AM, Dave Barach (dbarach) <dbarach () cisco com> wrote:

Opaque[10] is the primary metadata.

That's only 40 bytes.

Do you mean that

/* 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 */

is the primary metadata?

Opaque2[12] is the secondary metadata.

That's only 48 bytes; do you mean that

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.
                                          */


is the secondary metadata?

BTW, I've decided to pull all of these opaque structure definitions out of the WS dissector, and do most all of the 
formatting on the vpp side. Should reduce maintenance to near-zero, eliminate endian swapping issues, and generally 
make life less miserable for everyone involved.

So does "doing most [or] all of the formatting on the vpp side" change what's in the header?  Or does it just mean that 
most of the fields of the header should be marked as "opaque data"?
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Current thread: