X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbuffer.h;h=807cd28f9e40d4ff98466d25bf3d1167a7a96abb;hb=438f63094465d35c278155484fe85153e438873e;hp=50b94f7ff2d90fb5a9edd79f9548220be62167bd;hpb=bd846cdc5d99260274a02e9bb474211ef32d031c;p=vpp.git diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h index 50b94f7ff2d..807cd28f9e4 100644 --- a/src/vnet/buffer.h +++ b/src/vnet/buffer.h @@ -42,12 +42,15 @@ #include -#define foreach_vnet_buffer_field \ +/** + * Flags that are set in the high order bits of ((vlib_buffer*)b)->flags + */ +#define foreach_vnet_buffer_flag \ _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed") \ _( 2, L4_CHECKSUM_CORRECT, "l4-cksum-correct") \ _( 3, VLAN_2_DEEP, "vlan-2-deep") \ _( 4, VLAN_1_DEEP, "vlan-1-deep") \ - _( 8, SPAN_CLONE, "span-clone") \ + _( 5, SPAN_CLONE, "span-clone") \ _( 6, HANDOFF_NEXT_VALID, "handoff-next-valid") \ _( 7, LOCALLY_ORIGINATED, "local") \ _( 8, IS_IP4, "ip4") \ @@ -58,7 +61,9 @@ _(13, IS_NATED, "nated") \ _(14, L2_HDR_OFFSET_VALID, 0) \ _(15, L3_HDR_OFFSET_VALID, 0) \ - _(16, L4_HDR_OFFSET_VALID, 0) + _(16, L4_HDR_OFFSET_VALID, 0) \ + _(17, FLOW_REPORT, "flow-report") \ + _(18, IS_DVR, "dvr") #define VNET_BUFFER_FLAGS_VLAN_BITS \ (VNET_BUFFER_F_VLAN_1_DEEP | VNET_BUFFER_F_VLAN_2_DEEP) @@ -66,18 +71,17 @@ enum { #define _(bit, name, v) VNET_BUFFER_F_##name = (1 << LOG2_VLIB_BUFFER_FLAG_USER(bit)), - foreach_vnet_buffer_field + foreach_vnet_buffer_flag #undef _ }; enum { #define _(bit, name, v) VNET_BUFFER_F_LOG2_##name = LOG2_VLIB_BUFFER_FLAG_USER(bit), - foreach_vnet_buffer_field + foreach_vnet_buffer_flag #undef _ }; - #define foreach_buffer_opaque_union_subtype \ _(ip) \ _(swt) \ @@ -92,7 +96,6 @@ _(map) \ _(map_t) \ _(ip_frag) \ _(mpls) \ -_(bier) \ _(tcp) /* @@ -112,6 +115,7 @@ typedef struct i16 l2_hdr_offset; i16 l3_hdr_offset; i16 l4_hdr_offset; + u16 dont_waste_me; union { @@ -154,6 +158,18 @@ typedef struct u8 code; u32 data; } icmp; + + /* reassembly */ + struct + { + u16 fragment_first; + u16 fragment_last; + u16 range_first; + u16 range_last; + u32 next_range_bi; + u16 ip6_frag_hdr_offset; + u16 estimated_mtu; + } reass; }; } ip; @@ -168,18 +184,17 @@ typedef struct u8 ttl; u8 exp; u8 first; + /* + * BIER - the nubmer of bytes in the header. + * the len field inthe header is not authoritative. It's the + * value in the table that counts. + */ + struct + { + u8 n_bytes; + } bier; } mpls; - /* - * BIER - the nubmer of bytes in the header. - * the len field inthe header is not authoritative. It's the - * value in the table that counts. - */ - struct - { - u8 n_bytes; - } bier; - /* ip4-in-ip6 softwire termination, only valid there */ struct { @@ -267,6 +282,7 @@ typedef struct /* IP Fragmentation */ struct { + u32 pad[2]; /* do not overlay w/ ip.adj_index[0,1] */ u16 header_offset; u16 mtu; u8 next_index; @@ -307,6 +323,19 @@ typedef struct u8 flags; } tcp; + /* SCTP */ + struct + { + u32 connection_index; + u16 sid; /**< Stream ID */ + u16 ssn; /**< Stream Sequence Number */ + u32 tsn; /**< Transmission Sequence Number */ + u16 hdr_offset; /**< offset relative to ip hdr */ + u16 data_offset; /**< offset relative to ip hdr */ + u16 data_len; /**< data len */ + u8 flags; + } sctp; + /* SNAT */ struct {