IPv4/6 reassembly
[vpp.git] / src / vnet / buffer.h
index 317f8bb..5d7273a 100644 (file)
@@ -50,7 +50,7 @@
   _( 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")                                 \
@@ -177,6 +177,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;
@@ -289,6 +301,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;
@@ -329,6 +342,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
     {