X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbuffer.h;h=86f75389d70b2e62778758b97c47f90f67d1215e;hb=25b049484fcf9161edb2c19250066b893c38c264;hp=807cd28f9e40d4ff98466d25bf3d1167a7a96abb;hpb=dac03527f64216e132953a1a1d47b414e6841c68;p=vpp.git diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h index 807cd28f9e4..86f75389d70 100644 --- a/src/vnet/buffer.h +++ b/src/vnet/buffer.h @@ -63,7 +63,8 @@ _(15, L3_HDR_OFFSET_VALID, 0) \ _(16, L4_HDR_OFFSET_VALID, 0) \ _(17, FLOW_REPORT, "flow-report") \ - _(18, IS_DVR, "dvr") + _(18, IS_DVR, "dvr") \ + _(19, QOS_DATA_VALID, 0) #define VNET_BUFFER_FLAGS_VLAN_BITS \ (VNET_BUFFER_F_VLAN_1_DEEP | VNET_BUFFER_F_VLAN_2_DEEP) @@ -160,15 +161,24 @@ typedef struct } icmp; /* reassembly */ - struct + union { - u16 fragment_first; - u16 fragment_last; - u16 range_first; - u16 range_last; - u32 next_range_bi; - u16 ip6_frag_hdr_offset; - u16 estimated_mtu; + /* in/out variables */ + struct + { + u32 next_index; /* index of next node - ignored if "feature" node */ + u16 estimated_mtu; /* estimated MTU calculated during reassembly */ + }; + /* internal variables used during reassembly */ + struct + { + u16 fragment_first; + u16 fragment_last; + u16 range_first; + u16 range_last; + u32 next_range_bi; + u16 ip6_frag_hdr_offset; + }; } reass; }; @@ -181,9 +191,13 @@ typedef struct */ struct { + /* do not overlay w/ ip.adj_index[0,1] nor flow hash */ + u32 pad[VLIB_N_RX_TX + 1]; u8 ttl; u8 exp; u8 first; + /* Rewrite length */ + u32 save_rewrite_length; /* * BIER - the nubmer of bytes in the header. * the len field inthe header is not authoritative. It's the @@ -333,6 +347,7 @@ typedef struct u16 hdr_offset; /**< offset relative to ip hdr */ u16 data_offset; /**< offset relative to ip hdr */ u16 data_len; /**< data len */ + u8 subconn_idx; /**< index of the sub_connection being used */ u8 flags; } sctp; @@ -359,16 +374,35 @@ STATIC_ASSERT (sizeof (vnet_buffer_opaque_t) <= /* Full cache line (64 bytes) of additional space */ typedef struct { + /** + * QoS marking data that needs to persist from the recording nodes + * (nominally in the ingress path) to the marking node (in the + * egress path) + */ + struct + { + u8 bits; + u8 source; + } qos; + + u8 __unused[2]; + + /* Group Based Policy */ + struct + { + u32 src_epg; + } gbp; + union { -#if VLIB_BUFFER_TRACE_TRAJECTORY > 0 - /* buffer trajectory tracing */ struct { +#if VLIB_BUFFER_TRACE_TRAJECTORY > 0 + /* buffer trajectory tracing */ u16 *trajectory_trace; - }; #endif - u32 unused[12]; + }; + u32 unused[10]; }; } vnet_buffer_opaque2_t;