_(ipsec) \
_(map) \
_(map_t) \
-_(ip_frag)
+_(ip_frag) \
+_(tcp)
/*
* vnet stack buffer opaque array overlay structure.
u16 bd_index; /* bridge-domain index */
u8 l2_len; /* ethernet header length */
u8 shg; /* split-horizon group */
- u8 bd_sn; /* bridge domain seq# */
- u8 int_sn; /* interface seq# */
+ u16 l2fib_sn; /* l2fib bd/int seq_num */
} l2;
/* l2tpv3 softwire encap, only valid there */
/* L2 classify */
struct
{
- u64 pad;
- u32 table_index;
- u32 opaque_index;
+ u64 pad; /* paddind for l2 */
+ u16 pad1;
+ union
+ {
+ u32 table_index;
+ u32 opaque_index;
+ };
u64 hash;
} l2_classify;
u32 seq_number;
u32 seq_end;
u32 ack_number;
+ u16 hdr_offset; /**< offset relative to ip hdr */
+ u16 data_offset; /**< offset relative to ip hdr */
+ u16 data_len; /**< data len */
u8 flags;
} tcp;
STATIC_ASSERT (sizeof (vnet_buffer_opaque_t) <= STRUCT_SIZE_OF (vlib_buffer_t,
opaque),
"VNET buffer meta-data too large for vlib_buffer");
+STATIC_ASSERT (STRUCT_OFFSET_OF
+ (vnet_buffer_opaque_t,
+ l2_classify.table_index) >=
+ STRUCT_SIZE_OF (vnet_buffer_opaque_t, l2),
+ "l2_classify padding smaller than l2");
#define vnet_buffer(b) ((vnet_buffer_opaque_t *) (b)->opaque)