diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright Procera Networks 2013
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Procera Networks nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/rws.cabal b/rws.cabal
new file mode 100644
--- /dev/null
+++ b/rws.cabal
@@ -0,0 +1,82 @@
+-- rws.cabal auto-generated by cabal init. For additional options,
+-- see
+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
+-- The name of the package.
+Name:                rws
+
+-- The package version. See the Haskell package versioning policy
+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
+-- standards guiding when and how versions should be incremented.
+Version:             0.1.1.2
+
+-- A short (one-line) description of the package.
+Synopsis:            Packet Generation
+
+-- A longer description of the package.
+Description:         Generate pcaps from a simple packet description language
+
+-- URL for the project homepage or repository.
+Homepage:            https://github.com/karknu/rws
+
+-- The license under which the package is released.
+License:             BSD3
+
+-- The file containing the license text.
+License-file:        LICENSE
+
+-- The package author(s).
+Author:              Karl Knutsson
+
+-- An email address to which users can send suggestions, bug reports,
+-- and patches.
+Maintainer:          karl.knutsson@proceranetworks.com
+
+-- A copyright notice.
+-- Copyright: Procera Networks 2013
+
+-- Stability of the pakcage (experimental, provisional, stable...)
+Stability:           Experimental
+
+Category:            Network
+
+Build-type:          Simple
+
+-- Extra files to be distributed with the package, such as examples or
+-- a README.
+-- Extra-source-files:  
+
+-- Constraint on the version of Cabal needed to build this package.
+Cabal-version:       >=1.8
+
+Data-Files:
+  samples/*.pkt
+  samples/*.m4
+
+Test-Suite test-qt
+  type: exitcode-stdio-1.0
+  hs-source-dirs: tests src
+  main-is: Qt.hs
+  Build-depends: base==4.*, bytestring, binary==0.5.*, parsec==3.1.*, test-framework, QuickCheck, test-framework-quickcheck2==0.3.0.1
+  ghc-options: -Wall -fno-warn-missing-signatures -fno-warn-orphans -fno-warn-unused-do-bind -fexcess-precision -rtsopts -auto-all -fhpc
+  cpp-options: -DHRWS_TEST
+
+
+Executable rws
+  -- .hs or .lhs file containing the Main module.
+  Main-is: Run.hs
+  
+  -- Packages needed in order to build this package.
+  Build-depends: base==4.*, bytestring, binary==0.5.*, parsec==3.1.*
+  
+  -- Modules not exported by this package.
+  Other-modules: Ethernet, Icmp, Ppp, Fragv6, IcmpV6, PseudoSum, Gre, L2tp, Gtp, Lexer, SerializePcap, HexPayload, Packet, Tcp, HopByHop, PadN, Teredo, IPv4, Parser, Udp, IPv6, Payload, Util
+  
+  -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
+  -- Build-tools:         
+  hs-source-dirs:      src
+  ghc-options: -Wall -fno-warn-missing-signatures -fno-warn-orphans -fno-warn-unused-do-bind -fexcess-precision -optc-O3 -optc-ffast-math -rtsopts -auto-all
+
+
+source-repository head
+  type:     git
+  location: git://github.com/karknu/rws.git
diff --git a/samples/fragv4.pkt b/samples/fragv4.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv4.pkt
@@ -0,0 +1,7 @@
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=1234
+   (udp csum=0 fixcsum=false len=2072 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=1234
+   (payload pattern=1 length=1024)))
+
diff --git a/samples/fragv4_ooo.pkt b/samples/fragv4_ooo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv4_ooo.pkt
@@ -0,0 +1,10 @@
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2083  prot=17 id=1234
+   (payload pattern=1 length=1024)))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=1234
+   (udp csum=0xcda7 fixcsum=false len=3096 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0103  prot=17 id=1234
+   (payload pattern=2 length=1024)))
+
diff --git a/samples/fragv6.pkt b/samples/fragv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv6.pkt
@@ -0,0 +1,6 @@
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =1 id=0xffffffff (udp (payload pattern=0x1) csum=0xbaf5))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =64 id=0xffffffff (payload pattern=0x2))))
diff --git a/samples/fragv6_awsome.m4 b/samples/fragv6_awsome.m4
new file mode 100644
--- /dev/null
+++ b/samples/fragv6_awsome.m4
@@ -0,0 +1,28 @@
+define(`forloop',
+       `pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
+define(`_forloop',
+       `$4`'ifelse($1, `$3', ,
+		   `define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
+
+define(`_len', 1312)
+
+define(`_frag',
+`(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =eval(1312 * $1 + 1) id=0xffffffff (payload pattern=$1 length=_len))))
+')
+
+dnl first frag
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =1 id=0xffffffff (udp len=65481 (payload pattern=0 length=eval(_len - 8)) csum=0xbaf5))))
+
+forloop(`i', 1, 48, `_frag(`i')')
+
+dnl last frag
+dnl interesting last lengths 1247, 1208 and 1194
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =eval(1312 * 49) id=0xffffffff (payload pattern=49 length=1194))))
+
+
diff --git a/samples/fragv6_awsome.pkt b/samples/fragv6_awsome.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv6_awsome.pkt
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =1 id=0xffffffff (udp len=65481 (payload pattern=0 length=1304) csum=0xbaf5))))
+
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =1313 id=0xffffffff (payload pattern=1 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =2625 id=0xffffffff (payload pattern=2 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =3937 id=0xffffffff (payload pattern=3 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =5249 id=0xffffffff (payload pattern=4 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =6561 id=0xffffffff (payload pattern=5 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =7873 id=0xffffffff (payload pattern=6 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =9185 id=0xffffffff (payload pattern=7 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =10497 id=0xffffffff (payload pattern=8 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =11809 id=0xffffffff (payload pattern=9 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =13121 id=0xffffffff (payload pattern=10 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =14433 id=0xffffffff (payload pattern=11 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =15745 id=0xffffffff (payload pattern=12 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =17057 id=0xffffffff (payload pattern=13 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =18369 id=0xffffffff (payload pattern=14 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =19681 id=0xffffffff (payload pattern=15 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =20993 id=0xffffffff (payload pattern=16 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =22305 id=0xffffffff (payload pattern=17 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =23617 id=0xffffffff (payload pattern=18 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =24929 id=0xffffffff (payload pattern=19 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =26241 id=0xffffffff (payload pattern=20 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =27553 id=0xffffffff (payload pattern=21 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =28865 id=0xffffffff (payload pattern=22 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =30177 id=0xffffffff (payload pattern=23 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =31489 id=0xffffffff (payload pattern=24 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =32801 id=0xffffffff (payload pattern=25 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =34113 id=0xffffffff (payload pattern=26 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =35425 id=0xffffffff (payload pattern=27 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =36737 id=0xffffffff (payload pattern=28 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =38049 id=0xffffffff (payload pattern=29 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =39361 id=0xffffffff (payload pattern=30 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =40673 id=0xffffffff (payload pattern=31 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =41985 id=0xffffffff (payload pattern=32 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =43297 id=0xffffffff (payload pattern=33 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =44609 id=0xffffffff (payload pattern=34 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =45921 id=0xffffffff (payload pattern=35 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =47233 id=0xffffffff (payload pattern=36 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =48545 id=0xffffffff (payload pattern=37 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =49857 id=0xffffffff (payload pattern=38 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =51169 id=0xffffffff (payload pattern=39 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =52481 id=0xffffffff (payload pattern=40 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =53793 id=0xffffffff (payload pattern=41 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =55105 id=0xffffffff (payload pattern=42 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =56417 id=0xffffffff (payload pattern=43 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =57729 id=0xffffffff (payload pattern=44 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =59041 id=0xffffffff (payload pattern=45 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =60353 id=0xffffffff (payload pattern=46 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =61665 id=0xffffffff (payload pattern=47 length=1312))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =62977 id=0xffffffff (payload pattern=48 length=1312))))
+
+
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =64288 id=0xffffffff (payload pattern=49 length=1194))))
+
+
diff --git a/samples/fragv6_awsome_hbh.m4 b/samples/fragv6_awsome_hbh.m4
new file mode 100644
--- /dev/null
+++ b/samples/fragv6_awsome_hbh.m4
@@ -0,0 +1,28 @@
+define(`forloop',
+       `pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
+define(`_forloop',
+       `$4`'ifelse($1, `$3', ,
+		   `define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
+
+define(`_len', 1312)
+
+define(`_frag',
+`(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =eval(1312 * $1 + 1) id=0xffffffff (payload pattern=$1 length=_len))))
+')
+
+dnl first frag
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =1 id=0xffffffff (udp len=65481 (payload pattern=0 length=eval(_len - 8)) csum=0xbaf5))))
+
+forloop(`i', 1, 48, `_frag(`i')')
+
+dnl last frag
+dnl interesting last lengths 1247, 1208 and 1194
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=17 off =eval(1312 * 49) id=0xffffffff (payload pattern=49 length=1194))))
+
+
diff --git a/samples/fragv6_dst.pkt b/samples/fragv6_dst.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv6_dst.pkt
@@ -0,0 +1,4 @@
+(eth type=0x86dd
+ (ipv6 nh = 60
+  (hopbyhop nh=17 len=13 (padn len=4
+   (payload pattern=0x1)))))
diff --git a/samples/fragv6_hbh.pkt b/samples/fragv6_hbh.pkt
new file mode 100644
--- /dev/null
+++ b/samples/fragv6_hbh.pkt
@@ -0,0 +1,7 @@
+(eth type=0x86dd
+ (ipv6 nh = 0
+  (hopbyhop nh=44 len=0 (padn len=4
+   (fragv6 nh=0 off =1 id=0xffffffff (hopbyhop nh=17 len=0 (padn len=4 (udp len=76 (payload pattern=0x1) csum=0xb721 fixcsum=false))))))))
+(eth type=0x86dd
+ (ipv6 nh = 44
+  (fragv6 nh=0 off =80 id=0xffffffff (payload pattern=0x2 length=4))))
diff --git a/samples/gre.pkt b/samples/gre.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gre.pkt
@@ -0,0 +1,5 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=64 src=90.0.0.3 dst=90.0.0.2 prot = 47
+  (gre key=0x12345678 seq=0xaaaaaaaa
+   (ipv4 ttl=64 src=10.0.0.3 dst=10.0.0.2 prot = 17
+    (udp (payload pattern=0 length=8))))))
diff --git a/samples/gtp.pkt b/samples/gtp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp.pkt
@@ -0,0 +1,7 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 2152
+   (gtp
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp (payload pattern=0 length=8)))))))
diff --git a/samples/gtp2.pkt b/samples/gtp2.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp2.pkt
@@ -0,0 +1,11 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 2152
+   (gtp teid=0xcafebabe
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp dst=1701
+      (l2tp tid=0xaaaa
+       (ppp
+        (ipv4  src=30.10.10.1 dst=30.10.10.1 prot=17
+         (udp (payload pattern=0 length=8)))))))))))
diff --git a/samples/gtp3.pkt b/samples/gtp3.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp3.pkt
@@ -0,0 +1,12 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4src=10.10.10.1 dst=10.10.10.2  prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0xcafebabe
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp dst=1701 (payload pattern=0 length=8)))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4src=10.10.10.1 dst=10.10.10.2  prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0xcafebabe
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp dst=1701 (payload pattern=0 length=8)))))))
diff --git a/samples/gtp_3.pkt b/samples/gtp_3.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp_3.pkt
@@ -0,0 +1,19 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x1
+    (ipv4 src=30.10.10.1 dst=20.10.10.1 prot=1
+     (icmp (payload pattern=0 length=666)))))))
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x2
+    (ipv4 src=30.10.10.1 dst=20.10.10.2 prot=1
+     (icmp (payload pattern=0 length=666)))))))
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x3
+    (ipv4 src=30.10.10.1 dst=20.10.10.3 prot=1
+     (icmp (payload pattern=0 length=666)))))))
+
diff --git a/samples/gtp_33.pkt b/samples/gtp_33.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp_33.pkt
@@ -0,0 +1,21 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x1
+    (ipv4 src=30.10.10.1 dst=20.10.10.1 prot=1
+      (icmp (payload pattern=0 length=666)))))))
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x2
+    (ipv4 src=30.10.10.1 dst=20.10.10.2 prot=4
+     (ipv4 src=30.10.10.1 dst=20.10.10.1 prot=1
+      (icmp (payload pattern=0 length=666))))))))
+(eth
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=1234 dst = 2152
+   (gtp teid=0x3
+    (ipv4 src=30.10.10.1 dst=20.10.10.3 prot=4
+     (ipv4 src=30.10.10.1 dst=20.10.10.1 prot=1
+      (icmp (payload pattern=0 length=666))))))))
+
diff --git a/samples/gtp_migration.pkt b/samples/gtp_migration.pkt
new file mode 100644
--- /dev/null
+++ b/samples/gtp_migration.pkt
@@ -0,0 +1,24 @@
+(eth type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0x1
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp src=1234 (payload pattern=0 length=8)))))))
+(eth type=0x0800
+ (ipv4 src=10.10.10.2 dst=10.10.10.1 prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0x101
+    (ipv4 src=20.10.10.2 dst=20.10.10.1 prot=17
+     (udp dst=1234 (payload pattern=0 length=8)))))))
+(eth type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0x2
+    (ipv4 src=20.10.10.1 dst=20.10.10.2 prot=17
+     (udp src=1234 (payload pattern=0 length=8)))))))
+(eth type=0x0800
+ (ipv4 src=10.10.10.2 dst=10.10.10.1 prot = 17
+  (udp src=2152 dst = 2152
+   (gtp teid=0x102
+    (ipv4 src=20.10.10.2 dst=20.10.10.1 prot=17
+     (udp dst=1234 (payload pattern=0 length=8)))))))
diff --git a/samples/hex.pkt b/samples/hex.pkt
new file mode 100644
--- /dev/null
+++ b/samples/hex.pkt
@@ -0,0 +1,1 @@
+(eth (ipv4 (udp (hex data=64313a7264323a696432))))
diff --git a/samples/hopbyhop.pkt b/samples/hopbyhop.pkt
new file mode 100644
--- /dev/null
+++ b/samples/hopbyhop.pkt
@@ -0,0 +1,3 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv6 nh =0
+  (hopbyhop nh=17 len=0 (padn len=4 (udp csum=0xdb4d fixcsum=false (payload))))))
diff --git a/samples/icmp.pkt b/samples/icmp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/icmp.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=0.0.0.0 dst=0.0.0.0 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 1 csum=0
+  (icmp (payload pattern=0 length=8))))
diff --git a/samples/icmp_nat.pkt b/samples/icmp_nat.pkt
new file mode 100644
--- /dev/null
+++ b/samples/icmp_nat.pkt
@@ -0,0 +1,14 @@
+(eth type=0x0800
+ (ipv4 src=10.255.255.2 dst=192.168.1.1 prot=1
+  (icmp type=8 code=0 seq=1 (payload pattern=0 length=8))))
+(eth type=0x0800
+ (ipv4 dst=100.100.100.2 src=192.168.1.1 prot=1
+  (icmp type=0 code=0 seq=1 id=0 (payload pattern=0 length=8))))
+(eth type=0x0800
+ (ipv4 src=10.255.255.2 dst=192.168.1.1 prot=1
+  (icmp type=8 code=0 seq=2 (payload pattern=0 length=8))))
+(eth type=0x0800
+ (ipv4 dst=100.100.100.2 src=192.168.1.1 prot=1
+  (icmp type=0 code=0 seq=2 id= 0 (payload pattern=0 length=8))))
+
+
diff --git a/samples/icmp_tcp.pkt b/samples/icmp_tcp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/icmp_tcp.pkt
@@ -0,0 +1,8 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 id=2 prot = 6 csum=0
+    (tcp src=1234 ack seqno=11 ackno=1010 (payload length=1100))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=9.9.9.1 dst=1.1.1.1 ver=4 hlen=5 tos=0x11 id=2 prot = 1 csum=0
+  (icmp type=3 code=9
+   (ipv4 src=1.1.1.1 dst=1.1.1.2 id=2 prot = 6 csum=0 off=1234
+    (tcp src=1234 ack seqno=11 ackno=1010 (payload length=1100))))))
diff --git a/samples/icmpv6.pkt b/samples/icmpv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/icmpv6.pkt
@@ -0,0 +1,6 @@
+(eth type=0x86dd
+ (ipv6 nh=58 src=20:0:0:0:0:0:0:1 dst=20:0:0:0:0:0:0:2
+  (icmpv6 type=128 code=0 pad=0xcafebabe (payload pattern=0x42) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 nh=58 src=20:0:0:0:0:0:0:2 dst=20:0:0:0:0:0:0:1
+  (icmpv6 type=129 code=0 pad=0xcafebabe (payload pattern=0x42) fixcsum=true)))
diff --git a/samples/icmpv6_short.pkt b/samples/icmpv6_short.pkt
new file mode 100644
--- /dev/null
+++ b/samples/icmpv6_short.pkt
@@ -0,0 +1,3 @@
+(eth type=0x86dd
+ (ipv6 nh=58 src=20:0:0:0:0:0:0:1 dst=20:0:0:0:0:0:0:2
+  (payload pattern=0x42 length=2)))
diff --git a/samples/ip4ipv6.pkt b/samples/ip4ipv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ip4ipv6.pkt
@@ -0,0 +1,1 @@
+(eth (ipv4 prot=41 (ipv6 (udp (payload )))))
diff --git a/samples/ipv4_frag_ipv4.m4 b/samples/ipv4_frag_ipv4.m4
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_frag_ipv4.m4
@@ -0,0 +1,17 @@
+define(_frag,`
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=$1
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=$1
+   (payload pattern=1 length=1024)))
+')
+
+_frag(1)
+_frag(2)
+_frag(3)
+_frag(5)
+_frag(6)
+_frag(7)
+_frag(8)
+
diff --git a/samples/ipv4_frag_ipv4.pkt b/samples/ipv4_frag_ipv4.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_frag_ipv4.pkt
@@ -0,0 +1,59 @@
+
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=1
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=1
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=2
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=2
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=3
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=3
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=5
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=5
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=6
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=6
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=7
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=7
+   (payload pattern=1 length=1024)))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000 prot=17 id=8
+   (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1040))))
+(eth type=0x0800
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0083  prot=17 id=8
+   (payload pattern=1 length=1024)))
+
+
diff --git a/samples/ipv4_gre_udp.pkt b/samples/ipv4_gre_udp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_gre_udp.pkt
@@ -0,0 +1,21 @@
+(eth
+ (ipv4 dst=10.0.0.2 src=20.0.0.2 
+  id=2 prot = 47 csum=0
+  (gre key=0xcafecafe seq=0xaaaaaaaa
+   (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+    id=2 prot = 17 csum=0
+    (udp (payload pattern=0 length=638))))))
+(eth type = 0x86dd
+ (ipv6 nh=47
+  (gre key=0x12345678 seq=0xaaaaaaaa
+   (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+    id=2 prot = 47 csum=0
+    (gre key=0 seq = 0
+     (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+      id=2 prot = 17 csum=0
+      (udp (payload pattern=0 length=638))))))))
+(eth
+ (ipv4 dst=10.0.0.1 src=20.0.0.2 tos=0x03
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=638))))
+
diff --git a/samples/ipv4_ipv4.pkt b/samples/ipv4_ipv4.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4.pkt
@@ -0,0 +1,12 @@
+(eth
+ (ipv4 src=9.9.9.1 dst=9.9.9.2  prot=4
+  (ipv4 src=19.19.19.1 dst=19.19.19.2 (udp (payload)))))
+(eth
+ (ipv4 src=9.9.9.2 dst=9.9.9.1  prot=4
+  (ipv4 src=19.19.19.2 dst=19.19.19.1 (udp (payload)))))
+(eth
+ (ipv4 src=9.9.9.1 dst=9.9.9.2  prot=4
+  (ipv4 src=19.19.19.1 dst=19.19.19.2 (udp (payload)))))
+(eth
+ (ipv4 src=9.9.9.2 dst=9.9.9.1  prot=4
+  (ipv4 src=19.19.19.2 dst=19.19.19.1 (udp (payload)))))
diff --git a/samples/ipv4_ipv4_1280.pkt b/samples/ipv4_ipv4_1280.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4_1280.pkt
@@ -0,0 +1,3 @@
+(eth src=00:11:22:33:44:55
+ (ipv4 src=9.9.9.1 dst=9.9.9.2  prot=4
+  (ipv4 src=19.19.19.1 dst=19.19.19.2 (udp (payload pattern=0 length=1280)))))
diff --git a/samples/ipv4_ipv4_666.pkt b/samples/ipv4_ipv4_666.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4_666.pkt
@@ -0,0 +1,6 @@
+(eth src=00:11:22:33:44:55
+ (ipv4 src=9.9.9.1 dst=9.9.9.2  prot=4
+  (ipv4 src=19.19.19.1 dst=19.19.19.2 (udp (payload pattern=0 length=638)))))
+(eth dst=00:11:22:33:44:55
+ (ipv4 src=9.9.9.2 dst=9.9.9.1  prot=4
+  (ipv4 src=19.19.19.2 dst=19.19.19.1 (udp (payload pattern=0 length=638)))))
diff --git a/samples/ipv4_ipv4_overlapping.m4 b/samples/ipv4_ipv4_overlapping.m4
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4_overlapping.m4
@@ -0,0 +1,21 @@
+define(_frag,`
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=$1 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=$1 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+')
+
+_frag(1)
+_frag(2)
+_frag(3)
+_frag(5)
+_frag(6)
+_frag(7)
+_frag(8)
+
diff --git a/samples/ipv4_ipv4_overlapping.pkt b/samples/ipv4_ipv4_overlapping.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4_overlapping.pkt
@@ -0,0 +1,87 @@
+
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=1 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=1 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=2 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=2 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=3 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=3 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=5 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=5 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=6 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=6 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=7 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=7 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+   id=8 prot = 17 csum=0
+   (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024)))))
+(eth type=0x0800
+ (ipv4 src=11.0.0.1 dst=11.0.0.2 prot=4
+  (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+   id=8 prot = 17 csum=0
+   (udp (payload pattern=0 length=1024)))))
+
+
diff --git a/samples/ipv4_ipv4_udp.pkt b/samples/ipv4_ipv4_udp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_ipv4_udp.pkt
@@ -0,0 +1,19 @@
+(eth
+ (ipv4 dst=10.0.0.2 src=20.0.0.2 
+  id=2 prot = 4 csum=0
+  (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+   id=2 prot = 17 csum=0
+   (udp (payload pattern=0 length=638)))))
+(eth type=0x86dd
+ (ipv4 dst=10.0.0.3 src=20.0.0.2 
+  id=2 prot = 4 csum=0
+  (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+   id=2 prot = 4 csum=0
+   (ipv4 ttl=64 dst=10.0.0.1 src=20.0.0.2 tos=0x02
+    id=2 prot = 17 csum=0
+    (udp (payload pattern=0 length=638))))))
+(eth
+ (ipv4 dst=10.0.0.1 src=20.0.0.2 tos=0x03
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=638))))
+
diff --git a/samples/ipv4_overlapping.m4 b/samples/ipv4_overlapping.m4
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_overlapping.m4
@@ -0,0 +1,19 @@
+define(_frag,`
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=$1 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=$1 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+')
+
+_frag(1)
+_frag(2)
+_frag(3)
+_frag(5)
+_frag(6)
+_frag(7)
+_frag(8)
+
diff --git a/samples/ipv4_overlapping.pkt b/samples/ipv4_overlapping.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv4_overlapping.pkt
@@ -0,0 +1,73 @@
+
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=1 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=1 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=2 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=3 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=3 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=5 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=5 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=6 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=6 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=7 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=7 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x2000
+  id=8 prot = 17 csum=0
+  (udp csum=0 fixcsum=false len=1040 (payload pattern=0 length=1024))))
+(eth type=0x0800
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 off=0x0001
+  id=8 prot = 17 csum=0
+  (udp (payload pattern=0 length=1024))))
+
+
diff --git a/samples/ipv6_frag_ipv6.m4 b/samples/ipv6_frag_ipv6.m4
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_frag_ipv6.m4
@@ -0,0 +1,20 @@
+define(_frag,`
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=$1 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+')
+
+_frag(1)
+_frag(2)
+_frag(3)
+_frag(5)
+_frag(6)
+_frag(7)
+_frag(8)
+
diff --git a/samples/ipv6_frag_ipv6.pkt b/samples/ipv6_frag_ipv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_frag_ipv6.pkt
@@ -0,0 +1,80 @@
+
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=1 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=2 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=3 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=5 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=6 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=7 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off =1 id=0x1234
+   (ipv4 src=10.0.0.1 dst=10.0.0.2 prot=17 id=8 len=2072
+    (udp csum=0 fixcsum=false len=2024 (payload pattern=0 length=1020))))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=44
+  (fragv6 nh=4 off = 1048 id=0x1234
+   (payload pattern=1 length=1024))))
+
+
diff --git a/samples/ipv6_gtp_ipv4_teredo.pkt b/samples/ipv6_gtp_ipv4_teredo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_gtp_ipv4_teredo.pkt
@@ -0,0 +1,54 @@
+(eth type=0x86dd
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xcafebabe
+    (ipv4 src=20.10.10.1 dst=99.99.99.99 prot=17
+     (udp src=1234 dst=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp src=2222 (payload length=128))))))))))
+(eth type=0x86dd
+ (ipv6 dst=2001:0:0:0:0:0:0:1 src=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xbabecafe
+    (ipv4 dst=20.10.10.1 src=99.99.99.99 prot=17
+     (udp dst=1234 src=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp dst=2222 (payload length=128))))))))))
+(eth type=0x86dd
+ (ipv6 dst=2001:0:0:0:0:0:0:1 src=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xbabecafe
+    (ipv4 dst=20.10.10.1 src=99.99.99.99 prot=17
+     (udp dst=1234 src=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp dst=2223 (payload length=128))))))))))
+(eth type=0x86dd
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xcafebabf
+    (ipv4 src=20.10.10.2 dst=99.99.99.99 prot=17
+     (udp src=1234 dst=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp src=2222 (payload length=128))))))))))
+(eth type=0x86dd
+ (ipv6 dst=2001:0:0:0:0:0:0:1 src=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xbabfcafe
+    (ipv4 dst=20.10.10.2 src=99.99.99.99 prot=17
+     (udp dst=1234 src=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp dst=2222 (payload length=128))))))))))
+(eth type=0x86dd
+ (ipv6 dst=2001:0:0:0:0:0:0:1 src=2001:0:0:0:0:0:0:2
+  (udp src=2152 dst=2152
+   (gtp teid=0xbabfcafe
+    (ipv4 dst=20.10.10.2 src=99.99.99.99 prot=17
+     (udp dst=1234 src=5678
+      (teredo fixsrc=true fixdst=true
+       (ipv6
+        (udp dst=2223 (payload length=128))))))))))
diff --git a/samples/ipv6_ipv4.pkt b/samples/ipv6_ipv4.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_ipv4.pkt
@@ -0,0 +1,8 @@
+(eth (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 nh=4
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 (udp (payload length=1400)))))
+(eth (ipv6 src=2001:0:0:0:0:0:0:2 dst=2001:0:0:0:0:0:0:1 nh=4
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 (udp (payload length=1400)))))
+(eth (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 nh=4
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 (udp (payload length=1400)))))
+(eth (ipv6 src=2001:0:0:0:0:0:0:2 dst=2001:0:0:0:0:0:0:1 nh=4
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 (udp (payload length=1400)))))
diff --git a/samples/ipv6_ipv4_666.pkt b/samples/ipv6_ipv4_666.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_ipv4_666.pkt
@@ -0,0 +1,3 @@
+(eth type=0x86dd (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 nh=4
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 (udp (payload length=638)))))
+
diff --git a/samples/ipv6_multicast.pkt b/samples/ipv6_multicast.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ipv6_multicast.pkt
@@ -0,0 +1,3 @@
+(eth src=00:11:22:33:44:55 type=0x86dd
+ (ipv6 dst=0xff01:0:0:0:0:0:0:1
+  (udp src=0 dst = 0 (payload pattern=64) fixcsum=true)))
diff --git a/samples/l2tp.pkt b/samples/l2tp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp.pkt
@@ -0,0 +1,8 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp
+    (ppp address=0xff protocol=0xcafe
+     (ipv4  src=20.10.10.1 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
diff --git a/samples/l2tp_invalid_len.pkt b/samples/l2tp_invalid_len.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_invalid_len.pkt
@@ -0,0 +1,9 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=4 length=1200
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+
diff --git a/samples/l2tp_ipv4_ipv6.pkt b/samples/l2tp_ipv4_ipv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_ipv4_ipv6.pkt
@@ -0,0 +1,16 @@
+(eth
+ (ipv4 src=10.10.10.10 dst=10.10.10.11
+  (udp src=1701 dst = 1701
+   (l2tp
+    (ppp address=0xff protocol=0x0057
+     (ipv6 nh=17
+      (udp (payload pattern=0 length=8))))))))
+(eth 
+ (ipv4 src=10.10.10.10 dst=10.10.10.11
+  (udp src=1701 dst = 1701
+   (l2tp
+    (ppp address=0xff protocol=0x0057
+     (ipv6 ver = 5 nh=17
+      (udp (payload pattern=0 length=8))))))))
+
+
diff --git a/samples/l2tp_ns_nr.pkt b/samples/l2tp_ns_nr.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_ns_nr.pkt
@@ -0,0 +1,56 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=3
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=2
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=0
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=32
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=16
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=4
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x0a02 ns=12 nr=1 offset=4
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
diff --git a/samples/l2tp_off_no_len.pkt b/samples/l2tp_off_no_len.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_off_no_len.pkt
@@ -0,0 +1,8 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x0a02 ns=12 nr=1 offset=4
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
diff --git a/samples/l2tp_teredo.pkt b/samples/l2tp_teredo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_teredo.pkt
@@ -0,0 +1,18 @@
+(eth type=0x0800
+ (ipv4 src=1.1.1.1 dst=2.2.2.2 prot = 17
+  (udp src=1234 dst = 1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 src=20.10.10.10 dst=40.40.40.1 prot = 17
+      (udp dst=1235 src=1024 (teredo fixsrc=true fixdst=true
+       (ipv6 nh=41
+        (ipv6
+         (udp (payload pattern=0 length=8))))))))))))
+(eth type=0x0800
+ (ipv4 src=1.1.1.1 dst=2.2.2.2 prot = 17
+  (udp src=1234 dst = 1701
+   (l2tp tid=2 sid=2
+    (ppp protocol=0x0057
+	 (ipv6
+         (udp (payload pattern=0 length=8))))))))
+
diff --git a/samples/l2tp_too_large_off.pkt b/samples/l2tp_too_large_off.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tp_too_large_off.pkt
@@ -0,0 +1,9 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 src=10.10.10.1 dst=10.10.10.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=1234 dst = 1701
+   (l2tp flags=0x4a02 ns=12 nr=1 offset=400 addoffset=false
+    (ppp address=0xff
+     (ipv4  src=20.10.10.2 dst=20.10.10.1 prot=17
+      (udp (payload pattern=0 length=8))))))))
+
diff --git a/samples/l2tpv6.pkt b/samples/l2tpv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/l2tpv6.pkt
@@ -0,0 +1,16 @@
+(eth src=00:11:22:33:44:55 type=0x86dd
+ (ipv6 nh = 17
+  (udp src=1701 dst = 1701
+   (l2tp
+    (ppp address=0xff protocol=0x0057
+     (ipv6 nh=17
+      (udp (payload pattern=0 length=8))))))))
+(eth src=00:11:22:33:44:55 type=0x86dd
+ (ipv6 nh = 17
+  (udp src=1701 dst = 1701
+   (l2tp
+    (ppp address=0xff protocol=0x0057
+     (ipv6 ver = 5 nh=17
+      (udp (payload pattern=0 length=8))))))))
+
+
diff --git a/samples/multi_payload.pkt b/samples/multi_payload.pkt
new file mode 100644
--- /dev/null
+++ b/samples/multi_payload.pkt
@@ -0,0 +1,2 @@
+(eth type=0x800 {(ipv4 (udp {(payload pattern=0xbb),(payload pattern=0xaa)})), (payload pattern=0xab)})
+(eth type=0x800 (ipv4 (udp)))
diff --git a/samples/nat.pkt b/samples/nat.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat.pkt
@@ -0,0 +1,6 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6665)))
diff --git a/samples/nat4.pkt b/samples/nat4.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat4.pkt
@@ -0,0 +1,25 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6667)))
+(eth
+ (ipv4 src=10.10.10.2 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6669)))
+(eth
+ (ipv4 src=10.10.10.3 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6671)))
+(eth
+ (ipv4 src=10.10.10.4 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6673)))
+
diff --git a/samples/nat_col.pkt b/samples/nat_col.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat_col.pkt
@@ -0,0 +1,18 @@
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6665)))
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6665)))
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6665)))
diff --git a/samples/nat_l2tp.pkt b/samples/nat_l2tp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat_l2tp.pkt
@@ -0,0 +1,46 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=2048 dst=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 src=20.20.20.1 dst=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6666 src=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 dst=20.20.20.1 src=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6666 src=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 dst=20.20.20.1 src=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+(eth
+ (ipv4 src=10.10.10.2 dst=99.99.99.99 prot = 17
+  (udp src=2049 dst=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 src=20.20.20.1 dst=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6667 src=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 dst=20.20.20.1 src=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6667 src=1701
+   (l2tp tid=1 sid=1
+    (ppp
+     (ipv4 dst=20.20.20.1 src=222.222.222.222
+      (udp (payload pattern=0 length=8))))))))
+
+
+
+
diff --git a/samples/nat_pb.pkt b/samples/nat_pb.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat_pb.pkt
@@ -0,0 +1,12 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=34561 dst=7)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp src=7 dst=6667)))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.98 prot = 17
+  (udp src=7 dst=6667)))
+
+
+
diff --git a/samples/nat_teredo.pkt b/samples/nat_teredo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/nat_teredo.pkt
@@ -0,0 +1,23 @@
+(eth
+ (ipv4 src=10.10.10.1 dst=99.99.99.99 prot = 17
+  (udp src=2048 dst=1234
+   (teredo fixsrc=false fixdst=false
+    (ipv6 src=0x2001:0x0:0xcafe:0xbabe:0x0:0xe5f5:0x9b9b:0x9bfd
+          dst=0x2001:0x0:0xcafe:0xbabe:0x0:0xfb2d:0x9c9c:0x9c9c
+     (udp (payload pattern=0 length=8)))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6666 src=1234
+   (teredo fixsrc=true fixdst=true
+    (ipv6 
+     (udp (payload pattern=0 length=8)))))))
+(eth
+ (ipv4 dst=100.100.100.2 src=99.99.99.99 prot = 17
+  (udp dst=6666 src=1234
+   (teredo fixsrc=true fixdst=true
+    (ipv6 
+     (udp src=777 dst=777 (payload pattern=0 length=8)))))))
+
+
+
+
diff --git a/samples/ppp.pkt b/samples/ppp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/ppp.pkt
@@ -0,0 +1,2 @@
+(ppp  )
+
diff --git a/samples/rewrites.pkt b/samples/rewrites.pkt
new file mode 100644
--- /dev/null
+++ b/samples/rewrites.pkt
@@ -0,0 +1,17 @@
+(eth type=0x0800
+ (ipv4 src=10.10.10.1 tos=0x28 dst=10.10.10.2 prot = 17
+  (udp src=1234 (payload pattern=0 length=8))))
+(eth type=0x0800
+ (ipv4 src=100.100.100.2 tos=0x28 dst=10.10.10.1 prot = 17
+  (udp dst=1234 (payload pattern=0 length=8))))
+(eth type=0x0800
+ (ipv4 src=10.10.10.1 tos=0 dst= 10.10.10.2 prot = 6
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800
+ (ipv4 tos=0x28 src=100.100.100.2 dst=10.10.10.1 prot = 6
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+
+
+  
+
+
diff --git a/samples/rewrites_ipv6.pkt b/samples/rewrites_ipv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/rewrites_ipv6.pkt
@@ -0,0 +1,7 @@
+(eth type=0x86dd
+ (ipv6  tcl = 10 nh = 17 (udp src=1234 (payload pattern=0 length=8))))
+
+
+  
+
+
diff --git a/samples/tcp.pkt b/samples/tcp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp.pkt
@@ -0,0 +1,34 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=10 ackno=1009)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=11 seqno=1009)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=11 ackno=1010)))
+
+
diff --git a/samples/tcp_moar.m4 b/samples/tcp_moar.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_moar.m4
@@ -0,0 +1,60 @@
+define(_base_seqA, 0x1)
+define(_base_seqB, 0xf00000)
+define(_plen, 1480)
+define(_seqA, _base_seqA)
+define(_seqB, _base_seqB)
+
+define(_tcp_sndA,
+`(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=_seqA ackno=_seqB $1)))')
+define(_tcp_sndB,
+`(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=_seqB ackno=_seqA $1)))')
+
+define(_tcp_sndDataA,
+`(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=_seqA ackno=_seqB (payload length=$1 pattern=$2))))
+    define(`_seqA', eval(_seqA + $1))')
+
+define(_tcp_sndDataB,
+`(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=_seqB ackno=_seqA (payload length=$1 pattern=$2))))
+    define(`_seqB', eval(_seqB + $1))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=_seqA ackno=0 syn)))
+define(`_seqA', eval(_seqA + 1))
+_tcp_sndB(`syn ack') define(`_seqB', eval(_seqB + 1))
+_tcp_sndA(`ack')
+_tcp_sndDataA(1480, 0)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataB(1480, 0)
+_tcp_sndDataB(1480, 1)
+_tcp_sndA(`fin ack') define(`_seqA', eval(_seqA + 1))
+_tcp_sndB(`fin ack') define(`_seqB', eval(_seqB + 1))
+_tcp_sndA(`ack')
+
+
+
+
+
diff --git a/samples/tcp_moar.pkt b/samples/tcp_moar.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_moar.pkt
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=0x1 ackno=0 syn)))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=0xf00000 ackno=2 syn ack))) 
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=2 ackno=15728641 ack)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=2 ackno=15728641 (payload length=1480 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=1482 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=2962 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=4442 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=5922 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=7402 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=8882 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=10362 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=11842 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=13322 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=14802 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=16282 ackno=15728641 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15728641 ackno=17762 (payload length=1480 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15730121 ackno=17762 (payload length=1480 pattern=1))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=17762 ackno=15731601 fin ack))) 
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=15731601 ackno=17763 fin ack))) 
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=17763 ackno=15731602 ack)))
+
+
+
+
+
diff --git a/samples/tcp_ooo.m4 b/samples/tcp_ooo.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo.m4
@@ -0,0 +1,27 @@
+define(_base_seq, 0x1)
+define(_plen, 1480)
+define(_tcp_snd, `(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(`2 + $1') ackno=2 (payload length=_plen))))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=_base_seq ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=eval(_base_seq+1) seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(_base_seq+1) ackno=1001)))
+_tcp_snd(eval(1 * _plen))
+_tcp_snd(eval(1 * _plen - 450))
+_tcp_snd(eval(2 * _plen))
+_tcp_snd(eval(2 * _plen))
+_tcp_snd(eval(0 * _plen))
+
+
+
diff --git a/samples/tcp_ooo.pkt b/samples/tcp_ooo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo.pkt
@@ -0,0 +1,39 @@
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=0x1 ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=1482 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=1032 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2962 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2962 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=2 (payload length=1480))))
+
+
+
diff --git a/samples/tcp_ooo2.m4 b/samples/tcp_ooo2.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo2.m4
@@ -0,0 +1,47 @@
+define(_base_seq, 0x1)
+define(_plen, 1480)
+define(_tcp_snd, `(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(`2 + $1') ackno=2 (payload length=_plen))))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=_base_seq ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=eval(_base_seq+1) seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(_base_seq+1) ackno=1001)))
+_tcp_snd(eval(1 * _plen))
+_tcp_snd(eval(3 * _plen))
+_tcp_snd(eval(5 * _plen))
+_tcp_snd(eval(7 * _plen))
+_tcp_snd(eval(9 * _plen))
+_tcp_snd(eval(8 * _plen))
+_tcp_snd(eval(6 * _plen))
+_tcp_snd(eval(4 * _plen))
+_tcp_snd(eval(2 * _plen))
+_tcp_snd(eval(0 * _plen))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=eval(_base_seq+1 + 10*_plen) seqno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=eval(_base_seq+1 + 10*_plen) ackno=1002)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=eval(_base_seq+2 + 10*_plen) seqno=1002)))
+
+
+
+
+
diff --git a/samples/tcp_ooo2.pkt b/samples/tcp_ooo2.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo2.pkt
@@ -0,0 +1,74 @@
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=0x1 ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=1482 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=4442 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=7402 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=10362 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=13322 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=11842 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=8882 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=5922 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2962 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=2 (payload length=1480))))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=14802 seqno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=14802 ackno=1002)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=14803 seqno=1002)))
+
+
+
+
+
diff --git a/samples/tcp_ooo3.m4 b/samples/tcp_ooo3.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo3.m4
@@ -0,0 +1,43 @@
+define(_base_seq, 0x1)
+define(_plen, 1480)
+define(_tcp_snd, `(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=eval(`2 + $1') ackno=2
+   (payload length=_plen pattern=$2))))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn wsc=2 offset=24 seqno=_base_seq ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 wsc=2 offset=24  syn ack ackno=eval(_base_seq+1) seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(_base_seq+1) ackno=1001)))
+_tcp_snd(eval(2 * _plen), 2)
+_tcp_snd(eval(4 * _plen), 4)
+_tcp_snd(eval(0 * _plen), 0)
+_tcp_snd(eval(3 * _plen), 3)
+_tcp_snd(eval(1 * _plen), 1)
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=eval(_base_seq+1 + 4*_plen) seqno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=eval(_base_seq+1 + 4*_plen) ackno=1002)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=eval(_base_seq+2 + 4*_plen) seqno=1002)))
+
+
+
+
+
diff --git a/samples/tcp_ooo3.pkt b/samples/tcp_ooo3.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo3.pkt
@@ -0,0 +1,59 @@
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn wsc=2 offset=24 seqno=0x1 ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 wsc=2 offset=24  syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=2962 ackno=2
+   (payload length=1480 pattern=2))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=5922 ackno=2
+   (payload length=1480 pattern=4))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=2 ackno=2
+   (payload length=1480 pattern=0))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=4442 ackno=2
+   (payload length=1480 pattern=3))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=1482 ackno=2
+   (payload length=1480 pattern=1))))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=5922 seqno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=5922 ackno=1002)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=5923 seqno=1002)))
+
+
+
+
+
diff --git a/samples/tcp_ooo4.m4 b/samples/tcp_ooo4.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo4.m4
@@ -0,0 +1,43 @@
+define(_base_seq, 0x1)
+define(_plen, 1480)
+define(_tcp_snd, `(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack wsc=2 offset=24 seqno=eval(`2 + $1') ackno=2
+   (payload length=_plen pattern=$2))))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn wsc=2 offset=24 seqno=_base_seq ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 wsc=2 offset=24  syn ack ackno=eval(_base_seq+1) seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(_base_seq+1) ackno=1001)))
+_tcp_snd(eval(2 * _plen), 2)
+_tcp_snd(eval(4 * _plen), 4)
+_tcp_snd(eval(0 * _plen), 0)
+_tcp_snd(eval(3 * _plen), 3)
+_tcp_snd(eval(1 * _plen), 1)
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=eval(_base_seq+1 + 4*_plen) seqno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=eval(_base_seq+1 + 4*_plen) ackno=1002)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=eval(_base_seq+2 + 4*_plen) seqno=1002)))
+
+
+
+
+
diff --git a/samples/tcp_ooo_wrap.pkt b/samples/tcp_ooo_wrap.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ooo_wrap.pkt
@@ -0,0 +1,35 @@
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=0xfffffa23 ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=0xfffffa24 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=0xfffffa24 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2940 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=1460 ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=0xffffffec ackno=2 (payload length=1480))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=0xfffffa24 ackno=2 (payload length=1480))))
+
+
+
diff --git a/samples/tcp_reset0.pkt b/samples/tcp_reset0.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_reset0.pkt
@@ -0,0 +1,22 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack rst ackno=10 seqno=1001)))
+
+
diff --git a/samples/tcp_reset1.pkt b/samples/tcp_reset1.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_reset1.pkt
@@ -0,0 +1,9 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 rst ackno=2 seqno=1000)))
+
diff --git a/samples/tcp_resyn.m4 b/samples/tcp_resyn.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_resyn.m4
@@ -0,0 +1,34 @@
+define(_base_seqA, 0x1)
+define(_base_seqB, 0xf00000)
+define(_plen, 1480)
+define(_tcp_snd, `(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(`2 + $1') ackno=eval(2 + _base_seqB) (payload length=_plen))))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=_base_seqA ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=_base_seqA ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack seqno=eval(_base_seqB + 1) ackno=eval(_base_seqA+1))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=eval(_base_seqA+1) ackno=eval(_base_seqB + 2))))
+
+_tcp_snd(eval(0 * _plen))
+_tcp_snd(eval(1 * _plen))
+_tcp_snd(eval(2 * _plen))
+_tcp_snd(eval(3 * _plen))
+
+
+
+
+
diff --git a/samples/tcp_retransmission.pkt b/samples/tcp_retransmission.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_retransmission.pkt
@@ -0,0 +1,30 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+
diff --git a/samples/tcp_retransmission2.pkt b/samples/tcp_retransmission2.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_retransmission2.pkt
@@ -0,0 +1,39 @@
+#1
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+#2
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+#3
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+#4
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+#5 dropped by pre
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+#6 retransmission of 4
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+#7
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+
+
+
+
diff --git a/samples/tcp_retransmission_with_drops.pkt b/samples/tcp_retransmission_with_drops.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_retransmission_with_drops.pkt
@@ -0,0 +1,46 @@
+#1
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+#2
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+#3
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+#4
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=10 ackno=1001 (payload length=8))))
+#5
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=2 seqno=1001)))
+#6
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+#7
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=10 ackno=1001 (payload length=8))))
+#8
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=18 seqno=1001 (payload length=8))))
+#9
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+ (ipv4 src=1.1.1.2 dst=1.1.1.1
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=18 seqno=1009 (payload length=8))))
+
diff --git a/samples/tcp_simopen.m4 b/samples/tcp_simopen.m4
new file mode 100644
--- /dev/null
+++ b/samples/tcp_simopen.m4
@@ -0,0 +1,55 @@
+define(_base_seqA, 0x1)
+define(_base_seqB, 0xf00000)
+define(_plen, 1480)
+define(_seqA, _base_seqA)
+define(_seqB, _base_seqB)
+
+define(_tcp_sndA,
+`(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=_seqA ackno=_seqB $1)))')
+define(_tcp_sndB,
+`(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=_seqB ackno=_seqA $1)))')
+
+define(_tcp_sndDataA,
+`(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=_seqA ackno=_seqB (payload length=$1 pattern=$2))))
+    define(`_seqA', eval(_seqA + $1))')
+
+define(_tcp_sndDataB,
+`(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=_seqB ackno=_seqA (payload length=$1 pattern=$2))))
+    define(`_seqB', eval(_seqB + $1))')
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=_seqA ackno=0 syn)))
+define(`_seqA', eval(_seqA + 1))
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=_seqB ackno=0 syn)))
+define(`_seqB', eval(_seqB + 1))
+_tcp_sndA(`syn ack') define(`_seqA', eval(_seqA + 1))
+_tcp_sndB(`syn ack') define(`_seqB', eval(_seqB + 1))
+_tcp_sndDataA(1480, 0)
+_tcp_sndDataA(1480, 1)
+_tcp_sndDataB(1480, 0)
+_tcp_sndDataB(1480, 1)
+_tcp_sndA(`fin ack') define(`_seqA', eval(_seqA + 1))
+_tcp_sndB(`fin ack') define(`_seqB', eval(_seqB + 1))
+_tcp_sndA(`ack')
+
+
+
+
+
diff --git a/samples/tcp_simopen.pkt b/samples/tcp_simopen.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_simopen.pkt
@@ -0,0 +1,2168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=0x1 ackno=0 syn)))
+
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=0xf00000 ackno=0 syn)))
+
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=2 ackno=15728641 syn ack))) 
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=15728641 ackno=3 syn ack))) 
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=3 ackno=15728642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=1403 ackno=15728642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15728642 ackno=2803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15730042 ackno=2803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=2803 ackno=15731442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=4203 ackno=15731442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15731442 ackno=5603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15732842 ackno=5603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=5603 ackno=15734242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=7003 ackno=15734242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15734242 ackno=8403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15735642 ackno=8403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=8403 ackno=15737042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=9803 ackno=15737042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15737042 ackno=11203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15738442 ackno=11203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=11203 ackno=15739842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=12603 ackno=15739842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15739842 ackno=14003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15741242 ackno=14003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=14003 ackno=15742642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=15403 ackno=15742642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15742642 ackno=16803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15744042 ackno=16803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=16803 ackno=15745442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=18203 ackno=15745442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15745442 ackno=19603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15746842 ackno=19603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=19603 ackno=15748242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=21003 ackno=15748242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15748242 ackno=22403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15749642 ackno=22403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=22403 ackno=15751042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=23803 ackno=15751042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15751042 ackno=25203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15752442 ackno=25203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=25203 ackno=15753842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=26603 ackno=15753842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15753842 ackno=28003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15755242 ackno=28003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=28003 ackno=15756642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=29403 ackno=15756642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15756642 ackno=30803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15758042 ackno=30803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=30803 ackno=15759442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=32203 ackno=15759442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15759442 ackno=33603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15760842 ackno=33603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=33603 ackno=15762242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=35003 ackno=15762242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15762242 ackno=36403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15763642 ackno=36403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=36403 ackno=15765042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=37803 ackno=15765042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15765042 ackno=39203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15766442 ackno=39203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=39203 ackno=15767842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=40603 ackno=15767842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15767842 ackno=42003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15769242 ackno=42003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=42003 ackno=15770642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=43403 ackno=15770642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15770642 ackno=44803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15772042 ackno=44803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=44803 ackno=15773442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=46203 ackno=15773442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15773442 ackno=47603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15774842 ackno=47603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=47603 ackno=15776242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=49003 ackno=15776242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15776242 ackno=50403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15777642 ackno=50403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=50403 ackno=15779042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=51803 ackno=15779042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15779042 ackno=53203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15780442 ackno=53203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=53203 ackno=15781842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=54603 ackno=15781842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15781842 ackno=56003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15783242 ackno=56003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=56003 ackno=15784642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=57403 ackno=15784642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15784642 ackno=58803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15786042 ackno=58803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=58803 ackno=15787442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=60203 ackno=15787442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15787442 ackno=61603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15788842 ackno=61603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=61603 ackno=15790242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=63003 ackno=15790242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15790242 ackno=64403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15791642 ackno=64403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=64403 ackno=15793042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=65803 ackno=15793042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15793042 ackno=67203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15794442 ackno=67203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=67203 ackno=15795842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=68603 ackno=15795842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15795842 ackno=70003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15797242 ackno=70003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=70003 ackno=15798642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=71403 ackno=15798642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15798642 ackno=72803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15800042 ackno=72803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=72803 ackno=15801442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=74203 ackno=15801442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15801442 ackno=75603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15802842 ackno=75603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=75603 ackno=15804242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=77003 ackno=15804242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15804242 ackno=78403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15805642 ackno=78403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=78403 ackno=15807042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=79803 ackno=15807042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15807042 ackno=81203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15808442 ackno=81203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=81203 ackno=15809842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=82603 ackno=15809842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15809842 ackno=84003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15811242 ackno=84003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=84003 ackno=15812642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=85403 ackno=15812642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15812642 ackno=86803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15814042 ackno=86803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=86803 ackno=15815442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=88203 ackno=15815442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15815442 ackno=89603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15816842 ackno=89603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=89603 ackno=15818242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=91003 ackno=15818242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15818242 ackno=92403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15819642 ackno=92403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=92403 ackno=15821042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=93803 ackno=15821042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15821042 ackno=95203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15822442 ackno=95203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=95203 ackno=15823842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=96603 ackno=15823842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15823842 ackno=98003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15825242 ackno=98003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=98003 ackno=15826642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=99403 ackno=15826642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15826642 ackno=100803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15828042 ackno=100803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=100803 ackno=15829442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=102203 ackno=15829442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15829442 ackno=103603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15830842 ackno=103603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=103603 ackno=15832242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=105003 ackno=15832242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15832242 ackno=106403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15833642 ackno=106403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=106403 ackno=15835042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=107803 ackno=15835042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15835042 ackno=109203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15836442 ackno=109203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=109203 ackno=15837842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=110603 ackno=15837842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15837842 ackno=112003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15839242 ackno=112003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=112003 ackno=15840642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=113403 ackno=15840642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15840642 ackno=114803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15842042 ackno=114803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=114803 ackno=15843442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=116203 ackno=15843442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15843442 ackno=117603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15844842 ackno=117603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=117603 ackno=15846242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=119003 ackno=15846242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15846242 ackno=120403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15847642 ackno=120403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=120403 ackno=15849042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=121803 ackno=15849042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15849042 ackno=123203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15850442 ackno=123203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=123203 ackno=15851842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=124603 ackno=15851842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15851842 ackno=126003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15853242 ackno=126003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=126003 ackno=15854642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=127403 ackno=15854642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15854642 ackno=128803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15856042 ackno=128803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=128803 ackno=15857442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=130203 ackno=15857442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15857442 ackno=131603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15858842 ackno=131603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=131603 ackno=15860242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=133003 ackno=15860242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15860242 ackno=134403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15861642 ackno=134403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=134403 ackno=15863042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=135803 ackno=15863042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15863042 ackno=137203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15864442 ackno=137203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=137203 ackno=15865842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=138603 ackno=15865842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15865842 ackno=140003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15867242 ackno=140003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=140003 ackno=15868642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=141403 ackno=15868642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15868642 ackno=142803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15870042 ackno=142803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=142803 ackno=15871442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=144203 ackno=15871442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15871442 ackno=145603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15872842 ackno=145603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=145603 ackno=15874242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=147003 ackno=15874242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15874242 ackno=148403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15875642 ackno=148403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=148403 ackno=15877042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=149803 ackno=15877042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15877042 ackno=151203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15878442 ackno=151203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=151203 ackno=15879842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=152603 ackno=15879842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15879842 ackno=154003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15881242 ackno=154003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=154003 ackno=15882642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=155403 ackno=15882642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15882642 ackno=156803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15884042 ackno=156803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=156803 ackno=15885442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=158203 ackno=15885442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15885442 ackno=159603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15886842 ackno=159603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=159603 ackno=15888242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=161003 ackno=15888242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15888242 ackno=162403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15889642 ackno=162403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=162403 ackno=15891042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=163803 ackno=15891042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15891042 ackno=165203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15892442 ackno=165203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=165203 ackno=15893842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=166603 ackno=15893842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15893842 ackno=168003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15895242 ackno=168003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=168003 ackno=15896642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=169403 ackno=15896642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15896642 ackno=170803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15898042 ackno=170803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=170803 ackno=15899442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=172203 ackno=15899442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15899442 ackno=173603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15900842 ackno=173603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=173603 ackno=15902242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=175003 ackno=15902242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15902242 ackno=176403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15903642 ackno=176403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=176403 ackno=15905042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=177803 ackno=15905042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15905042 ackno=179203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15906442 ackno=179203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=179203 ackno=15907842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=180603 ackno=15907842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15907842 ackno=182003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15909242 ackno=182003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=182003 ackno=15910642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=183403 ackno=15910642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15910642 ackno=184803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15912042 ackno=184803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=184803 ackno=15913442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=186203 ackno=15913442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15913442 ackno=187603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15914842 ackno=187603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=187603 ackno=15916242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=189003 ackno=15916242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15916242 ackno=190403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15917642 ackno=190403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=190403 ackno=15919042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=191803 ackno=15919042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15919042 ackno=193203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15920442 ackno=193203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=193203 ackno=15921842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=194603 ackno=15921842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15921842 ackno=196003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15923242 ackno=196003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=196003 ackno=15924642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=197403 ackno=15924642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15924642 ackno=198803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15926042 ackno=198803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=198803 ackno=15927442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=200203 ackno=15927442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15927442 ackno=201603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15928842 ackno=201603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=201603 ackno=15930242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=203003 ackno=15930242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15930242 ackno=204403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15931642 ackno=204403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=204403 ackno=15933042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=205803 ackno=15933042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15933042 ackno=207203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15934442 ackno=207203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=207203 ackno=15935842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=208603 ackno=15935842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15935842 ackno=210003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15937242 ackno=210003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=210003 ackno=15938642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=211403 ackno=15938642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15938642 ackno=212803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15940042 ackno=212803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=212803 ackno=15941442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=214203 ackno=15941442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15941442 ackno=215603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15942842 ackno=215603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=215603 ackno=15944242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=217003 ackno=15944242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15944242 ackno=218403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15945642 ackno=218403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=218403 ackno=15947042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=219803 ackno=15947042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15947042 ackno=221203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15948442 ackno=221203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=221203 ackno=15949842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=222603 ackno=15949842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15949842 ackno=224003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15951242 ackno=224003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=224003 ackno=15952642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=225403 ackno=15952642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15952642 ackno=226803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15954042 ackno=226803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=226803 ackno=15955442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=228203 ackno=15955442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15955442 ackno=229603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15956842 ackno=229603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=229603 ackno=15958242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=231003 ackno=15958242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15958242 ackno=232403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15959642 ackno=232403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=232403 ackno=15961042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=233803 ackno=15961042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15961042 ackno=235203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15962442 ackno=235203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=235203 ackno=15963842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=236603 ackno=15963842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15963842 ackno=238003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15965242 ackno=238003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=238003 ackno=15966642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=239403 ackno=15966642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15966642 ackno=240803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15968042 ackno=240803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=240803 ackno=15969442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=242203 ackno=15969442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15969442 ackno=243603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15970842 ackno=243603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=243603 ackno=15972242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=245003 ackno=15972242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15972242 ackno=246403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15973642 ackno=246403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=246403 ackno=15975042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=247803 ackno=15975042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15975042 ackno=249203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15976442 ackno=249203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=249203 ackno=15977842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=250603 ackno=15977842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15977842 ackno=252003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15979242 ackno=252003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=252003 ackno=15980642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=253403 ackno=15980642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15980642 ackno=254803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15982042 ackno=254803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=254803 ackno=15983442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=256203 ackno=15983442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15983442 ackno=257603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15984842 ackno=257603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=257603 ackno=15986242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=259003 ackno=15986242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15986242 ackno=260403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15987642 ackno=260403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=260403 ackno=15989042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=261803 ackno=15989042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15989042 ackno=263203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15990442 ackno=263203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=263203 ackno=15991842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=264603 ackno=15991842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15991842 ackno=266003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15993242 ackno=266003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=266003 ackno=15994642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=267403 ackno=15994642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15994642 ackno=268803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15996042 ackno=268803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=268803 ackno=15997442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=270203 ackno=15997442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15997442 ackno=271603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=15998842 ackno=271603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=271603 ackno=16000242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=273003 ackno=16000242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16000242 ackno=274403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16001642 ackno=274403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=274403 ackno=16003042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=275803 ackno=16003042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16003042 ackno=277203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16004442 ackno=277203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=277203 ackno=16005842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=278603 ackno=16005842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16005842 ackno=280003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16007242 ackno=280003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=280003 ackno=16008642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=281403 ackno=16008642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16008642 ackno=282803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16010042 ackno=282803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=282803 ackno=16011442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=284203 ackno=16011442 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16011442 ackno=285603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16012842 ackno=285603 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=285603 ackno=16014242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=287003 ackno=16014242 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16014242 ackno=288403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16015642 ackno=288403 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=288403 ackno=16017042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=289803 ackno=16017042 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16017042 ackno=291203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16018442 ackno=291203 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=291203 ackno=16019842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=292603 ackno=16019842 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16019842 ackno=294003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16021242 ackno=294003 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=294003 ackno=16022642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 ack seqno=295403 ackno=16022642 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16022642 ackno=296803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 ack seqno=16024042 ackno=296803 (payload length=1400 pattern=0))))
+    
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=296803 ackno=16025442 fin ack))) 
+(eth type=0x0800 src=00:00:00:00:00:02 dst=00:00:00:00:00:01
+  (ipv4 src=1.1.1.2 dst=1.1.1.1
+   id=2 prot = 6 csum=0
+   (tcp dst=1234 seqno=16025442 ackno=296804 fin ack))) 
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+  (ipv4 src=1.1.1.1 dst=1.1.1.2 
+   id=2 prot = 6 csum=0
+   (tcp src=1234 seqno=296804 ackno=16025443 ack)))
+
+
+
+
+
diff --git a/samples/tcp_single.pkt b/samples/tcp_single.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_single.pkt
@@ -0,0 +1,5 @@
+(eth type=0x0800
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0)))
+
diff --git a/samples/tcp_ts.pkt b/samples/tcp_ts.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_ts.pkt
@@ -0,0 +1,34 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn seqno=1 ackno=0 offset=32 ts=0xdeadbeefcafebabe )))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=10 ackno=1009)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=11 seqno=1009)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=11 ackno=1010)))
+
+
diff --git a/samples/tcp_wsc.pkt b/samples/tcp_wsc.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcp_wsc.pkt
@@ -0,0 +1,34 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 syn wsc=2 offset=24 seqno=1 ackno=0)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 syn ack wsc = 2 offset=24 ackno=2 seqno=1000)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 fin ack seqno=10 ackno=1009)))
+(eth type=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=1.1.1.2 dst=1.1.1.1 
+  id=2 prot = 6 csum=0
+  (tcp dst=1234 fin ack ackno=11 seqno=1009)))
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=1.1.1.1 dst=1.1.1.2 
+  id=2 prot = 6 csum=0
+  (tcp src=1234 ack seqno=11 ackno=1010)))
+
+
diff --git a/samples/tcpv6.pkt b/samples/tcpv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tcpv6.pkt
@@ -0,0 +1,34 @@
+(eth type=0x86dd src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 
+   nh = 6 
+  (tcp src=1234 syn seqno=1 ackno=0)))
+(eth type=0x86dd dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:2 dst=2001:0:0:0:0:0:0:1 
+   nh = 6 
+  (tcp dst=1234 syn ack ackno=2 seqno=1000)))
+(eth type=0x86dd src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 
+   nh = 6 
+  (tcp src=1234 ack seqno=2 ackno=1001)))
+(eth type=0x86dd src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 
+   nh = 6 
+  (tcp src=1234 ack seqno=2 ackno=1001 (payload length=8))))
+(eth type=0x86dd dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:2 dst=2001:0:0:0:0:0:0:1 
+   nh = 6 
+  (tcp dst=1234 ack ackno=10 seqno=1001 (payload length=8))))
+(eth type=0x86dd src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 
+   nh = 6 
+  (tcp src=1234 fin ack seqno=10 ackno=1009)))
+(eth type=0x86dd dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:2 dst=2001:0:0:0:0:0:0:1 
+   nh = 6 
+  (tcp dst=1234 fin ack ackno=11 seqno=1009)))
+(eth type=0x86dd src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv6 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 
+   nh = 6 
+  (tcp src=1234 ack seqno=11 ackno=1010)))
+
+
diff --git a/samples/teredo.pkt b/samples/teredo.pkt
new file mode 100644
--- /dev/null
+++ b/samples/teredo.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=20.10.10.10 dst=40.40.40.1 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp dst=1234 src=1024 (teredo fixsrc=true fixdst=true (ipv6 (udp (payload pattern=0 length=8)))))))
diff --git a/samples/teredo2.pkt b/samples/teredo2.pkt
new file mode 100644
--- /dev/null
+++ b/samples/teredo2.pkt
@@ -0,0 +1,6 @@
+(eth type=0x0800
+ (ipv4 id = 1 src=20.10.10.10 dst=40.40.40.1 prot = 17
+  (udp dst=1234 src=1024 (teredo fixsrc=true fixdst=true (ipv6 (udp (payload pattern=0 length=1280)))))))
+(eth type=0x0800
+ (ipv4 id = 2 src=20.10.10.10 dst=40.40.40.1 prot = 17
+  (udp dst=1234 src=1024 (teredo fixsrc=true fixdst=true (ipv6 (udp (payload pattern=0 length=1280)))))))
diff --git a/samples/tipc2.pkt b/samples/tipc2.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tipc2.pkt
@@ -0,0 +1,2 @@
+(eth type=0x88CA (tipc hsize=8 mtype=3 onode=0x010203 dnode=0x040506 (payload length= 0)))
+
diff --git a/samples/tunnel_madness.pkt b/samples/tunnel_madness.pkt
new file mode 100644
--- /dev/null
+++ b/samples/tunnel_madness.pkt
@@ -0,0 +1,105 @@
+
+
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+(eth type=0x86dd (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 nh=41 (ipv6 (udp (payload length=8))))))))))))))))))))))))))))))))))
+
+
diff --git a/samples/udp.pkt b/samples/udp.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=0.0.0.0 dst=0.0.0.0 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=8))))
diff --git a/samples/udp_666.pkt b/samples/udp_666.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=3 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=638))))
diff --git a/samples/udp_666_1280.pkt b/samples/udp_666_1280.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_1280.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=64 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x02
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=1280))))
diff --git a/samples/udp_666_4_cons.pkt b/samples/udp_666_4_cons.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_4_cons.pkt
@@ -0,0 +1,17 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=99 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=89 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=79 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=69 (payload pattern=0 length=638))))
+
diff --git a/samples/udp_666_4_hosts.pkt b/samples/udp_666_4_hosts.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_4_hosts.pkt
@@ -0,0 +1,17 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=99 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.3 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=89 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.4 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=79 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.5 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=69 (payload pattern=0 length=638))))
+
diff --git a/samples/udp_666_4_hosts_2_nets.pkt b/samples/udp_666_4_hosts_2_nets.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_4_hosts_2_nets.pkt
@@ -0,0 +1,17 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=99 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.0.3 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=89 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.1.4 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=79 (payload pattern=0 length=638))))
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv4 ttl=32 src=10.0.0.1 dst=10.0.1.5 ver=4 hlen=5 tos=0x11 
+  id=2 prot = 17 csum=0
+  (udp src=69 (payload pattern=0 length=638))))
+
diff --git a/samples/udp_666_ecn.pkt b/samples/udp_666_ecn.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_ecn.pkt
@@ -0,0 +1,4 @@
+(eth src=00:11:22:33:44:55 type=0x86dd
+ (ipv4 ttl=64 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x02
+  id=2 prot = 17 csum=0
+  (udp (payload pattern=0 length=638))))
diff --git a/samples/udp_666_ecn_ipv6.pkt b/samples/udp_666_ecn_ipv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666_ecn_ipv6.pkt
@@ -0,0 +1,7 @@
+(eth type=0x86dd
+ (ipv6  tcl = 0x12 nh = 17 (udp src=1234 (payload pattern=0 length=8))))
+
+
+  
+
+
diff --git a/samples/udp_666b.pkt b/samples/udp_666b.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_666b.pkt
@@ -0,0 +1,8 @@
+(eth type=0x0800 src=00:00:00:00:00:01 dst=00:00:00:00:00:02
+ (ipv4 src=10.0.0.1 dst=10.0.0.2 ver=4 hlen=5 tos=0x11
+  prot = 17 csum=0
+  (udp src=1234 dst=7 (payload pattern=0 length=638))))
+(ethtype=0x0800 dst=00:00:00:00:00:01 src=00:00:00:00:00:02
+ (ipv4 src=10.0.0.2 dst=10.0.0.1 ver=4 hlen=5
+  id=2 prot = 17 csum=0
+  (udp src=7 dst=1234 (payload pattern=0 length=638))))
diff --git a/samples/udp_esp_sha1.pkt b/samples/udp_esp_sha1.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udp_esp_sha1.pkt
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=1
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=1)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=1
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=1)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=2
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=2)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=2
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=2)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=3
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=3)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=3
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=3)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=4
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=4)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=4
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=4)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=5
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=5)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=5
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=5)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=6
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=6)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=6
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=6)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=7
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=7)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=7
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=7)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=8
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=8)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=8
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=8)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=9
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=9)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=9
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=9)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=10
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=10)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=10
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=10)))))))
+(eth type=0x0800
+ (ipv4 src=9.9.9.1 dst=9.9.9.2 prot = 17 csum=0
+  (udp src = 2223 dst = 4500
+   (esp aalg=sha1 spi=0xcafebabe nh=4 seq=11
+    (ipv4 src=11.11.11.1 dst=11.11.11.2 prot = 17 csum=0
+     (udp src=12345 (payload pattern=0 length=11)))))))
+ (eth type=0x0800
+ (ipv4 src=9.9.9.2 dst=9.9.9.1 prot = 17 csum=0
+  (udp src = 4500 dst = 2223
+   (esp aalg=sha1 spi=0xdeadbeef nh=4 seq=11
+    (ipv4 src=11.11.11.2 dst=11.11.11.1 prot = 17 csum=0
+     (udp dst = 12345 (payload pattern=0 length=11)))))))
diff --git a/samples/udpv6.pkt b/samples/udpv6.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udpv6.pkt
@@ -0,0 +1,3 @@
+(eth src=00:11:22:33:44:55 type=0x0800
+ (ipv6
+  (udp src=0 dst = 0 (payload pattern=64) fixcsum=true)))
diff --git a/samples/udpv6_666_4_hosts_2_nets.pkt b/samples/udpv6_666_4_hosts_2_nets.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udpv6_666_4_hosts_2_nets.pkt
@@ -0,0 +1,13 @@
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:1 nh=17
+  (udp (payload pattern=0 length=618))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:0:0:0:0:0:2 nh=17
+  (udp (payload pattern=0 length=618))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:1:0:0:0:0:1 nh=17
+  (udp (payload pattern=0 length=618))))
+(eth type=0x86dd
+ (ipv6 hl=32 src=20:0:0:0:0:0:0:2 dst=30:0:1:0:0:0:0:2 nh=17
+  (udp (payload pattern=0 length=618))))
+
diff --git a/samples/udpv6_multicast.pkt b/samples/udpv6_multicast.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udpv6_multicast.pkt
@@ -0,0 +1,19 @@
+(eth type=0x86dd
+ (ipv6 src=0xff00:0:0:0:0:0:0:2 dst=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 src=0:0:0:0:0:0:0:0 dst=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 src=0:0:0:0:0:0:0:1 dst=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 dst=0xff00:0:0:0:0:0:0:2 src=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 dst=0:0:0:0:0:0:0:0 src=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+(eth type=0x86dd
+ (ipv6 dst=0:0:0:0:0:0:0:1 src=20:0:0:0:0:0:0:1
+  (udp src=7 dst = 77 (payload pattern=64) fixcsum=true)))
+
diff --git a/samples/udpv6b.pkt b/samples/udpv6b.pkt
new file mode 100644
--- /dev/null
+++ b/samples/udpv6b.pkt
@@ -0,0 +1,6 @@
+(eth type=0x86dd
+ (ipv6
+  (udp (payload pattern=0x42) fixcsum=true)))
+(ethtype=0x86dd
+ (ipv6
+  (udp (payload pattern=0x42 length=1400) fixcsum=true)))
diff --git a/src/Ethernet.hs b/src/Ethernet.hs
new file mode 100644
--- /dev/null
+++ b/src/Ethernet.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE CPP #-}
+module Ethernet where
+
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Data.Char
+import Data.Word
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Packet
+import Lexer
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+macAddressPart :: Parser Word8
+macAddressPart = do
+  h1 <- hexDigit
+  h2 <- hexDigit
+  char ':'
+  let w = digitToInt h1 `shiftL` 4 .|. digitToInt h2
+  return (fromIntegral w)
+
+macAddressPart' :: Parser Word8
+macAddressPart' = do
+  h1 <- hexDigit
+  h2 <- hexDigit
+  let w = digitToInt h1 `shiftL` 4 .|. digitToInt h2
+  return (fromIntegral w)
+
+macAddressDecl :: Parser MacAddress
+macAddressDecl = do
+  h0 <- macAddressPart
+  h1 <- macAddressPart
+  h2 <- macAddressPart
+  h3 <- macAddressPart
+  h4 <- macAddressPart
+  h5 <- macAddressPart'
+  return (MacAddress h0 h1 h2 h3 h4 h5)
+
+parseMacAddress :: String -> Parser MacAddress
+parseMacAddress s = do
+  symbol s
+  symbol "="
+  a <- macAddressDecl
+  whiteSpace
+  return a
+
+parseEthFrame :: Parser Packet -> Parser EthernetFrame
+parseEthFrame f = permute
+  (tuple <$?> (MacAddress 0 0 0 0 0 1, parseMacAddress "dst" )
+         <|?> (MacAddress 0 0 0 0 0 2, parseMacAddress "src" )
+         <|?> (0x800, parseIntAttribute "type")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple a b c = EthernetFrame (Ethernet a b c)
+
+ethDecl :: Parser Packet -> Parser Packet
+ethDecl f = do
+ symbol "eth"
+ ef <- parseEthFrame f
+ return $ PEth ef
+
+macAddressWrite :: MacAddress -> Put
+macAddressWrite a = do
+    putWord8 (macAddress0 a)
+    putWord8 (macAddress1 a)
+    putWord8 (macAddress2 a)
+    putWord8 (macAddress3 a)
+    putWord8 (macAddress4 a)
+    putWord8 (macAddress5 a)
+
+ethernetWriteHdr :: Ethernet -> Put
+ethernetWriteHdr f = do
+    macAddressWrite (ethernetDst f)
+    macAddressWrite (ethernetSrc f)
+    putWord16be (ethernetType f)
+
+ethernetWrite :: Ethernet -> Maybe Packet -> B.ByteString -> Put
+ethernetWrite h _ bs = do
+    ethernetWriteHdr h
+    putLazyByteString bs
+
+instance PacketWriteable EthernetFrame where packetWrite f = ethernetWrite (ethernFrameHeader f)
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary MacAddress where
+  arbitrary = do
+    w0 <- arbitrary
+    w1 <- arbitrary
+    w2 <- arbitrary
+    w3 <- arbitrary
+    w4 <- arbitrary
+    w5 <- arbitrary
+    return (MacAddress w0 w1 w2 w3 w4 w5)
+
+instance Arbitrary Ethernet where
+  arbitrary = do
+    dst <- arbitrary
+    src <- arbitrary
+    t <- arbitrary
+    return (Ethernet dst src t)
+
+testValidParse :: String -> (Ethernet -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket ethDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testEthFrame val
+
+testInvalidParse :: String -> Bool
+testInvalidParse str =
+  case parse (dummyParsePacket ethDecl) "packet parse" str of
+       Left  _ -> True
+       Right _ -> False
+
+testEthDefault :: () -> Bool
+testEthDefault _ = let cmp f = defaultEthernet == f in
+  testValidParse "(eth)" cmp
+
+testEthFrame :: Packet -> Ethernet
+testEthFrame (PEth f) = ethernFrameHeader f
+testEthFrame _ = error "Unexpected packet type"
+
+testEthType :: Word16 -> Bool
+testEthType t = let cmp f = defaultEthernet {ethernetType = t} == f in
+  testValidParse ("(eth type=" ++ show t ++ ")") cmp
+
+testEthDst :: MacAddress -> Bool
+testEthDst a =
+  let cmp f = defaultEthernet {ethernetDst = a} == f in
+  testValidParse ("(eth dst=" ++ show a ++ ")") cmp
+
+testEthSrc :: MacAddress -> Bool
+testEthSrc a =
+  let cmp f = defaultEthernet {ethernetSrc = a} == f in
+  testValidParse ("(eth src=" ++ show a ++ ")") cmp
+
+testEthFrame0 :: Ethernet -> Bool
+testEthFrame0 f =
+  let cmp a = f == a in
+  testValidParse ("(eth dst=" ++ show (ethernetDst f) ++ " src=" ++ show (ethernetSrc f) ++
+                  " type=" ++ show (ethernetType f) ++ ")") cmp
+
+testEthInvFrame0 :: () -> Bool
+testEthInvFrame0 _ = testInvalidParse "(eth src=asdf)"
+
+testEthInvFrame1 :: () -> Bool
+testEthInvFrame1 _ = testInvalidParse "(eth dst=1:2:2 )"
+
+testEthInvFrame2 :: () -> Bool
+testEthInvFrame2 _ = testInvalidParse "(eth type=src=banan )"
+
+testEthWrite :: () -> Bool
+testEthWrite _ =
+  let expFrame = B.pack [0x00, 0x11, 0x22, 0x33, 0x44, 0x55, -- dst
+                         0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, -- src
+                         0xca, 0xfe] in                      -- type 
+  let cmp f = runPut (ethernetWrite f Nothing B.empty) == expFrame in
+  testValidParse "(eth dst=00:11:22:33:44:55 src=66:77:88:99:aa:bb type=0xcafe)" cmp
+
+ethTests :: [Test]
+ethTests = [
+  testProperty "Ethernet: Default Packet" testEthDefault,
+  testProperty "Ethernet: Type" testEthType,
+  testProperty "Ethernet: Destination" testEthDst,
+  testProperty "Ethernet: Source" testEthSrc,
+  testProperty "Ethernet: valid frame" testEthFrame0,
+  testProperty "Ethernet: invalid frame 0" testEthInvFrame0,
+  testProperty "Ethernet: invalid frame 1" testEthInvFrame1,
+  testProperty "Ethernet: invalid frame 2" testEthInvFrame2,
+  testProperty "Ethernet: Write" testEthWrite
+  ]
+
+#endif
diff --git a/src/Fragv6.hs b/src/Fragv6.hs
new file mode 100644
--- /dev/null
+++ b/src/Fragv6.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE CPP #-}
+module Fragv6 where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+
+parseFragv6Pkt :: Parser Packet -> Parser Fragv6Pkt
+parseFragv6Pkt f = permute
+  (tuple <$?> (17, parseIntAttribute "nh")
+         <|?> (0, try (parseIntAttribute "res"))
+         <|?> (0, try (parseIntAttribute "off"))
+         <|?> (0, try (parseIntAttribute "id"))
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple nh r o i =
+        Fragv6Pkt (Fragv6 nh r o i)
+
+fragv6Decl :: Parser Packet -> Parser Packet
+fragv6Decl f = do
+  symbol "fragv6"
+  g <- parseFragv6Pkt f
+  return (PFragv6 g)
+
+fragv6WriteHdr :: Fragv6 -> Put
+fragv6WriteHdr p = do
+    putWord8 $ fragv6Nh p
+    putWord8 $ fragv6Res p
+    putWord16be $ fragv6Off p
+    putWord32be $ fragv6Id p
+
+fragv6Write :: Fragv6 -> Maybe Packet -> B.ByteString -> Put
+fragv6Write h _ bs = do
+  fragv6WriteHdr h
+  putLazyByteString bs
+
+instance PacketWriteable Fragv6Pkt where packetWrite p = fragv6Write $ fragv6PktHeader p
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Fragv6 where
+  arbitrary = do
+    nh  <- arbitrary
+    res <- arbitrary
+    off <- arbitrary
+    i   <- arbitrary
+    return (Fragv6 nh res off i)
+
+testValidParse :: String -> (Fragv6 -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket fragv6Decl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testFragv6Pkt val
+
+testFragv6Pkt :: Packet -> Fragv6
+testFragv6Pkt (PFragv6 p) = fragv6PktHeader p
+testFragv6Pkt _ = error "Unexpected packet type"
+
+testFragv6Default :: () -> Bool
+testFragv6Default _ = let cmp f = defaultFragv6 == f in
+  testValidParse "(fragv6)" cmp
+
+testFragv6Pkt0 :: Fragv6 -> Bool
+testFragv6Pkt0 f = let cmp a = f == a in
+   testValidParse ("(fragv6 nh=" ++ show (fragv6Nh f) ++ " res=" ++ show (fragv6Res f) ++
+                  " off=" ++ show (fragv6Off f) ++ " id=" ++ show (fragv6Id f) ++ ")") cmp
+
+testFragv6Write :: () -> Bool
+testFragv6Write  _ =
+  let expFrag = B.pack [0x11, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff] in
+  let cmp f = runPut (fragv6Write f Nothing B.empty) == expFrag in
+  testValidParse "(fragv6 nh=17 off =64 id=0xffffffff)" cmp
+
+fragv6Tests :: [Test]
+fragv6Tests = [
+  testProperty "Fragv6: Default" testFragv6Default,
+  testProperty "Fragv6: Frag0" testFragv6Pkt0,
+  testProperty "Fragv6: Write" testFragv6Write
+  ]
+#endif
+
diff --git a/src/Gre.hs b/src/Gre.hs
new file mode 100644
--- /dev/null
+++ b/src/Gre.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE CPP #-}
+module Gre where
+
+import Control.Monad
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseGrePkt :: Parser Packet -> Parser GrePkt
+parseGrePkt f = permute
+  (tuple <$?> (0x3000, parseIntAttribute "flags")
+         <|?> (0x0800, parseIntAttribute "protocol")
+         <|?> (0xcafecafe, parseIntAttribute "key")
+         <|?> (0, try (parseIntAttribute "seq"))
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple fl prot k s =
+        GrePkt (Gre fl prot k s)
+
+
+greDecl :: Parser Packet -> Parser Packet
+greDecl f = do
+  symbol "gre"
+  g <- parseGrePkt f
+  return (PGre g)
+
+greWriteHdr :: Gre -> Put
+greWriteHdr p = do
+    putWord16be (greFlags p)
+    putWord16be (greProtocol p)
+    -- Optional Key Field
+    when (greFlags p .&. 0x2000 == 0x2000) $
+      putWord32be $ greKey p
+    when (greFlags p .&. 0x1000 == 0x1000) $
+      putWord32be $ greSeq p
+
+greWrite :: Gre -> Maybe Packet -> B.ByteString -> Put
+greWrite h _ bs = do
+    greWriteHdr h
+    putLazyByteString bs
+
+instance PacketWriteable GrePkt where packetWrite p = greWrite (grePktHeader p)
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Gre where
+  arbitrary = do
+    f <- arbitrary
+    p <- arbitrary
+    k <- arbitrary
+    s <- arbitrary
+    return (Gre f p k s)
+
+testValidParse :: String -> (Gre -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket greDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testGrePkt val
+
+testGreDefault :: () -> Bool
+testGreDefault _ = let cmp f = defaultGre == f in
+  testValidParse "(gre)" cmp
+
+testGrePkt :: Packet -> Gre
+testGrePkt (PGre f) = grePktHeader f
+testGrePkt _ = error "Unexpected packet type"
+
+testGrePacket :: Gre -> Bool
+testGrePacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(gre flags=%d protocol=%d key=%d seq=%d)" (greFlags pkt)
+                  (greProtocol pkt) (greKey pkt) (greSeq pkt)) cmp
+
+testGreWrite :: () -> Bool
+testGreWrite _ =
+  let expPkt = B.pack [0x30, 0x00, 0x08, 0x00, 0x12, 0x34, 0x56, 0x78, 0xaa, 0xaa, 0xaa, 0xaa] in
+  let cmp p = runPut (greWrite p Nothing B.empty) == expPkt in
+  testValidParse "(gre flags=0x3000 protocol=0x0800 key=0x12345678 seq=0xaaaaaaaa)" cmp
+
+greTests :: [Test]
+greTests = [
+  testProperty "GRE: Default Packet" testGreDefault,
+  testProperty "GRE: Packet" testGrePacket,
+  testProperty "GRE: Write" testGreWrite
+  ]
+#endif
+
diff --git a/src/Gtp.hs b/src/Gtp.hs
new file mode 100644
--- /dev/null
+++ b/src/Gtp.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE CPP #-}
+
+module Gtp where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseGtpPkt :: Parser Packet -> Parser GtpPkt
+parseGtpPkt f = permute
+  (tuple <$?> (0x32, parseIntAttribute "flags")
+         <|?> (0xff, try $ parseIntAttribute "type")
+         <|?> (0, parseIntAttribute "len")
+         <|?> (0x012345678, try $ parseIntAttribute "teid")
+         <|?> (0, parseIntAttribute "seq")
+         <|?> (0, try $ parseIntAttribute "npdu")
+         <|?> (0, try $ parseIntAttribute "nh")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple fl t l teid s np nh = GtpPkt (Gtp fl t l teid s np nh)
+
+
+gtpDecl :: Parser Packet -> Parser Packet
+gtpDecl f = do
+  symbol "gtp"
+  g <- parseGtpPkt f
+  return (PGtp g)
+
+gtpWriteHdr :: Gtp -> Put
+gtpWriteHdr p = do
+    putWord8 (gtpFlags p)
+    putWord8 (gtpType p)
+    putWord16be (gtpLen p)
+    putWord32be (gtpTeid p)
+    putWord16be (gtpSeq p)
+    putWord8 (gtpNpdu p)
+    putWord8 (gtpNh p)
+
+gtpWrite :: Gtp -> Maybe Packet -> B.ByteString -> Put
+gtpWrite h _ bs = do
+    gtpWriteHdr h {gtpLen = fromIntegral $ B.length bs}
+    putLazyByteString bs
+
+instance PacketWriteable GtpPkt where packetWrite p = gtpWrite (gtpPktHeader p)
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Gtp where
+  arbitrary = do
+    f    <- arbitrary
+    t    <- arbitrary
+    l    <- arbitrary
+    teid <- arbitrary
+    s    <- arbitrary
+    np   <- arbitrary
+    nh   <- arbitrary
+    return (Gtp f t l teid s np nh)
+
+testValidParse :: String -> (Gtp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket gtpDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testGtpPkt val
+
+testGtpPkt :: Packet -> Gtp
+testGtpPkt (PGtp p) = gtpPktHeader p
+testGtpPkt _ = error "Unexpected packet type"
+
+testGtpDefault :: () -> Bool
+testGtpDefault _ =
+  let cmp p = defaultGtp == p in
+  testValidParse "(gtp)" cmp
+
+testGtpPacket :: Gtp -> Bool
+testGtpPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(gtp flags=%d type=%d len=%d teid=%d seq=%d npdu=%d nh=%d)"
+                  (gtpFlags pkt) (gtpType pkt) (gtpLen pkt) (gtpTeid pkt) (gtpSeq pkt)
+                  (gtpNpdu pkt) (gtpNh pkt)) cmp
+
+testGtpWrite :: () -> Bool
+testGtpWrite _ =
+  let expPkt = B.pack [0x32, 0xff, 0x00, 0x0, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x03, 0x02, 0x00] in
+  let cmp p = runPut (gtpWrite p Nothing B.empty) == expPkt in
+  testValidParse "(gtp flags=0x32 type=0xff len=0 teid=0xcccccccc seq=3 npdu=2 nh=0)" cmp
+
+gtpTests :: [Test]
+gtpTests = [
+  testProperty "GTP: Default" testGtpDefault,
+  testProperty "GTP: Packet" testGtpPacket,
+  testProperty "GTP: Write" testGtpWrite
+  ]
+
+#endif
diff --git a/src/HexPayload.hs b/src/HexPayload.hs
new file mode 100644
--- /dev/null
+++ b/src/HexPayload.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE CPP #-}
+
+module HexPayload where
+
+import Data.Binary.Put
+import Data.Bits
+import Data.Char
+import Data.Word
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import qualified Data.ByteString.Lazy as B
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+import Util
+#endif
+
+hexByte :: Parser Word8
+hexByte = do
+  h1 <- hexDigit
+  h2 <- hexDigit
+  let w = digitToInt h1 `shiftL` 4 .|. digitToInt h2
+  return (fromIntegral w)
+
+
+parseHexData :: Parser [Word8]
+parseHexData = do
+  symbol "data"
+  symbol "="
+  many hexByte
+
+hexPayloadPkt :: Parser Packet -> Parser HexPayload
+hexPayloadPkt _ = permute
+  (tuple <$?> (replicate 64 0, parseHexData))
+  where
+    tuple = HexPayload
+
+hexPayloadDecl :: Parser Packet -> Parser Packet
+hexPayloadDecl f = do
+  symbol "hex"
+  p <- hexPayloadPkt f
+  return (PHexPayload p)
+
+hexPayloadWrite :: HexPayload -> Put
+hexPayloadWrite p =
+  mapM_ putWord8 (hexPayloadData p)
+
+instance PacketWriteable HexPayload where packetWrite p _ _= hexPayloadWrite p
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary HexPayload where
+  arbitrary = do
+    d <- arbitrary
+    l <- choose (1, 16)
+    return (HexPayload (replicate (2*l) d))
+
+testHexPayloadString :: HexPayload -> String
+testHexPayloadString h =
+  concatMap (printf "%02x") (hexPayloadData h)
+
+testValidParse :: String -> (HexPayload -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket hexPayloadDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testHexPayloadPkt val
+
+testHexPayloadPkt :: Packet -> HexPayload
+testHexPayloadPkt (PHexPayload p) = p
+testHexPayloadPkt _ = error "Unexpected packet type"
+
+testHexPayloadDefault :: () -> Bool
+testHexPayloadDefault _ =
+  let cmp p = defaultHexPayload == p in
+  testValidParse "(hex)" cmp
+
+testHexPayloadPacket :: HexPayload -> Bool
+testHexPayloadPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(hex data=%s)" (testHexPayloadString pkt)) cmp
+
+testHexPayloadWrite :: () -> Bool
+testHexPayloadWrite _ =
+  let expPkt = B.pack [0x80, 0x00, 0xb1, 0x4c, 0xca, 0xfe, 0xba, 0xbe] in
+  let cmp p = runPut (hexPayloadWrite p) == expPkt in
+  testValidParse "(hex data=8000b14ccafebabe)" cmp
+
+hexPayloadTests :: [Test]
+hexPayloadTests = [
+  testProperty "HexPayload: Default" testHexPayloadDefault,
+  testProperty "HexPayload: Packet" testHexPayloadPacket,
+  testProperty "HexPayload: Write" testHexPayloadWrite
+  ]
+#endif
+
diff --git a/src/HopByHop.hs b/src/HopByHop.hs
new file mode 100644
--- /dev/null
+++ b/src/HopByHop.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE CPP #-}
+module HopByHop where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+
+parseHopByHopPkt :: Parser Packet -> Parser HopByHopPkt
+parseHopByHopPkt f = permute
+  (tuple <$?> (17, parseIntAttribute "nh")
+         <|?> (0, try (parseIntAttribute "len"))
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple nh l = HopByHopPkt (HopByHop nh l)
+
+
+hopByHopDecl :: Parser Packet -> Parser Packet
+hopByHopDecl f = do
+  symbol "hopbyhop"
+  g <- parseHopByHopPkt f
+  return (PHopByHop g)
+
+hopByHopWriteHdr :: HopByHop -> Put
+hopByHopWriteHdr p = do
+    putWord8 $ hopByHopNh p
+    putWord8 $ hopByHopLen p
+
+hopByHopWrite :: HopByHop -> Maybe Packet -> B.ByteString -> Put
+hopByHopWrite h _ bs = do
+  hopByHopWriteHdr h
+  putLazyByteString bs
+
+instance PacketWriteable HopByHopPkt where packetWrite p = hopByHopWrite $ hopByHopPktHeader p
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary HopByHop where
+  arbitrary = do
+    nh   <- arbitrary
+    l    <- arbitrary
+    return (HopByHop nh l)
+
+testValidParse :: String -> (HopByHop -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket hopByHopDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testHopByHopPkt val
+
+testHopByHopPkt :: Packet -> HopByHop
+testHopByHopPkt (PHopByHop p) = hopByHopPktHeader p
+testHopByHopPkt _ = error "Unexpected packet type"
+
+testHopByHopDefault :: () -> Bool
+testHopByHopDefault _ =
+  let cmp p = defaultHopByHop == p in
+  testValidParse "(hopbyhop)" cmp
+
+testHopByHopPacket :: HopByHop -> Bool
+testHopByHopPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(hopbyhop nh=%d len=%d)" (hopByHopNh pkt)
+                  (hopByHopLen pkt)) cmp
+
+testHopByHopWrite :: () -> Bool
+testHopByHopWrite _ =
+  let expPkt = B.pack [0x11, 0x00] in
+  let cmp p = runPut (hopByHopWrite p Nothing B.empty) == expPkt in
+  testValidParse "(hopbyhop nh=17 len=0)" cmp
+
+hopByHopTests :: [Test]
+hopByHopTests = [
+  testProperty "HopByHop: Default" testHopByHopDefault,
+  testProperty "HopByHop: Packet" testHopByHopPacket,
+  testProperty "HopByHop: Write" testHopByHopWrite
+  ]
+
+#endif
diff --git a/src/IPv4.hs b/src/IPv4.hs
new file mode 100644
--- /dev/null
+++ b/src/IPv4.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE CPP #-}
+module IPv4 where
+
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Data.Word
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+
+parseIPv4Ver :: Parser Word8 
+parseIPv4Ver = parseIntAttribute "ver"
+
+parseIPv4Hlen :: Parser Word8
+parseIPv4Hlen = parseIntAttribute "hlen"
+
+parseIPv4Tos :: Parser Word8
+parseIPv4Tos = parseIntAttribute "tos"
+
+parseIPv4Len :: Parser Word16
+parseIPv4Len = parseIntAttribute "len"
+
+parseIPv4Id :: Parser Word16
+parseIPv4Id = parseIntAttribute "id"
+
+parseIPv4Ttl :: Parser Word8
+parseIPv4Ttl = parseIntAttribute "ttl"
+
+parseIPv4Prot :: Parser Word8
+parseIPv4Prot = parseIntAttribute "prot"
+
+parseIPv4Csum :: Parser Word16
+parseIPv4Csum = parseIntAttribute "csum"
+
+parseIPv4Offset :: Parser Word16
+parseIPv4Offset = parseIntAttribute "off"
+
+parseIPv4Pkt :: Parser Packet -> Parser IPv4Pkt
+parseIPv4Pkt f = permute
+  (tuple <$?> (0xa0a0a0a1, parseIPv4Address "src")
+         <|?> (0xa0a0a0a2, parseIPv4Address "dst")
+         <|?> (4, parseIPv4Ver)
+         <|?> (5, parseIPv4Hlen)
+         <|?> (0, parseIPv4Len)
+         <|?> (0x1234, parseIPv4Id)
+         <|?> (17, parseIPv4Prot)
+         <|?> (0, try parseIPv4Tos)
+         <|?> (64, try parseIPv4Ttl)
+         <|?> (0, parseIPv4Csum)
+         <|?> (0, parseIPv4Offset)
+         <|?> ([PPayload defaultPayload], parsePayload f)
+         <|?> (True, parseBoolAttribute "fixcsum"))
+  where
+    tuple s d v hl l id_ p tos ttl csum off pl cc =
+      IPv4Pkt (IPv4 v hl tos l id_ off ttl p csum s d cc) pl
+
+ipv4Decl :: Parser Packet -> Parser Packet
+ipv4Decl f = do
+ symbol "ipv4"
+ p <- parseIPv4Pkt f
+ return (PIPv4 p)
+
+pseudoIpv4Write :: IPv4 -> Word16 -> Put
+pseudoIpv4Write p l = do
+    putWord32be (ipv4Src p)
+    putWord32be (ipv4Dst p)
+    putWord8    0
+    putWord8    (ipv4Prot p)
+    putWord16be l
+
+ipv4WriteHdr :: IPv4 -> Put
+ipv4WriteHdr p = do
+    putWord8    ((ipv4Ver p `shiftL` 4) .|. ipv4Hlen p)
+    putWord8    (ipv4Tos p)
+    putWord16be (ipv4Len p)
+    putWord16be (ipv4Id p)
+    putWord16be (ipv4Offset p)
+    putWord8    (ipv4Ttl p)
+    putWord8    (ipv4Prot p)
+    putWord16be (ipv4Csum p)
+    putWord32be    (ipv4Src p)
+    putWord32be    (ipv4Dst p)
+
+instance PacketWriteable IPv4Pkt where packetWrite p = ipv4Write $ ipv4PktHeader p
+
+ipv4Write :: IPv4 -> Maybe Packet -> B.ByteString -> Put
+ipv4Write h _ bs = do
+    let hdr = h {ipv4Len = fromIntegral $ 20 + B.length bs}
+    let sum32 = if ipv4CorrectCsum hdr
+                   then csumFin $ csumAdd (B.unpack $ runPut $
+                                           ipv4WriteHdr hdr) 0
+                   else ipv4Csum hdr
+    ipv4WriteHdr hdr {ipv4Csum = sum32}
+    putLazyByteString bs
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary IPv4 where
+  arbitrary = do
+    v   <- choose (0, 15)
+    hl  <- choose (0, 15)
+    tos <- arbitrary
+    len <- arbitrary
+    i   <- arbitrary
+    off <- arbitrary
+    ttl <- arbitrary
+    p   <- arbitrary
+    cs  <- arbitrary
+    src <- arbitrary
+    dst <- arbitrary
+    return (IPv4 v hl tos len i off ttl p cs src dst True)
+
+testValidParse :: String -> (IPv4 -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket ipv4Decl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testIPv4Frame val
+
+testIPv4Frame :: Packet -> IPv4
+testIPv4Frame (PIPv4 p) = ipv4PktHeader p
+testIPv4Frame _ = error "Unexpected packet type"
+
+testIPv4Default :: () -> Bool
+testIPv4Default _ = let cmp f = defaultIPv4 == f in
+  testValidParse "(ipv4)" cmp
+
+testIPv4Version :: Word8 -> Bool
+testIPv4Version v = let cmp f = defaultIPv4 {ipv4Ver = v} == f in
+  testValidParse ("(ipv4 ver=" ++ show v ++ ")") cmp
+
+testIPv4Hlen :: Word8 -> Bool
+testIPv4Hlen hl = let cmp f = defaultIPv4 {ipv4Hlen = hl} == f in
+  testValidParse  ("(ipv4 hlen=" ++ show hl ++ ")") cmp
+
+testIPv4Tos :: Word8 -> Bool
+testIPv4Tos t = let cmp f = defaultIPv4 {ipv4Tos = t} == f in
+  testValidParse ("(ipv4 tos=" ++ show t ++ ")") cmp
+
+testIPv4Len :: Word16 -> Bool
+testIPv4Len l = let cmp f = defaultIPv4 {ipv4Len = l} == f in
+  testValidParse ("(ipv4 len=" ++ show l ++ ")") cmp
+
+testIPv4Id :: Word16 -> Bool
+testIPv4Id i = let cmp f = defaultIPv4 {ipv4Id =i} == f in
+  testValidParse ("(ipv4 id=" ++ show i ++ ")") cmp
+
+testIPv4Offset :: Word16 -> Bool
+testIPv4Offset o = let cmp f = defaultIPv4 {ipv4Offset = o} == f in
+  testValidParse ("(ipv4 off=" ++ show o ++ ")") cmp
+
+testIPv4Ttl :: Word8 -> Bool
+testIPv4Ttl ttl = let cmp f = defaultIPv4 {ipv4Ttl = ttl} == f in
+  testValidParse ("(ipv4 ttl=" ++ show ttl ++ ")") cmp
+
+testIPv4Prot :: Word8 -> Bool
+testIPv4Prot p = let cmp f = defaultIPv4 {ipv4Prot = p} == f in
+  testValidParse ("(ipv4 prot=" ++ show p ++ ")") cmp
+
+testIPv4Csum :: Word16 -> Bool
+testIPv4Csum c = let cmp f = defaultIPv4 {ipv4Csum = c} == f in
+  testValidParse ("(ipv4 csum=" ++ show c ++ ")") cmp
+
+testIPv4Src :: Word32 -> Bool
+testIPv4Src ip = let cmp f = defaultIPv4 {ipv4Src = ip} == f in
+  testValidParse ("(ipv4 src=" ++ showIPv4Address ip ++ ")") cmp
+
+testIPv4Dst :: Word32 -> Bool
+testIPv4Dst ip = let cmp f = defaultIPv4 {ipv4Dst = ip} == f in
+  testValidParse ("(ipv4 dst=" ++ showIPv4Address ip ++ ")") cmp
+
+testIPv4FixCsum :: () -> Bool
+testIPv4FixCsum _ = let cmp p = defaultIPv4 {ipv4CorrectCsum = False} == p in
+  testValidParse "(ipv4 fixcsum=false)" cmp
+
+testIPv4Pkt0 :: IPv4 -> Bool
+testIPv4Pkt0 ip = let cmp p = ip == p in
+  testValidParse ("(ipv4 ver=" ++ show (ipv4Ver ip) ++ " hlen=" ++ show (ipv4Hlen ip) ++
+                  " tos=" ++ show (ipv4Tos ip) ++ " len=" ++ show (ipv4Len ip) ++
+                  " id=" ++ show (ipv4Id ip) ++ " off=" ++ show (ipv4Offset ip) ++
+                  " ttl=" ++ show (ipv4Ttl ip) ++ " prot=" ++ show (ipv4Prot ip) ++
+                  " csum=" ++ show (ipv4Csum ip) ++ "src=" ++ showIPv4Address (ipv4Src ip) ++
+                  " dst=" ++ showIPv4Address (ipv4Dst ip) ++ "fixcsum=true)") cmp
+
+testIPv4Write :: () -> Bool
+testIPv4Write _ =
+  let expPkt = B.pack [0x45, 0x0c, 0x00, 0x14, 0xbe, 0xef, 0x00, 0x00,
+                       0x0a, 0x07, 0xdd, 0x9d, 0x0a, 0x00, 0x00, 0x01,
+                       0x0a, 0x00, 0x00, 0x02] in
+  let cmp p = runPut (ipv4Write p Nothing B.empty) == expPkt in
+  testValidParse "(ipv4 ver=4 hlen=5 tos=12 len=20 id=0xbeef off=0 ttl=0xa prot=7 csum=0xdd9d src=10.0.0.1 dst=10.0.0.2 fixcsum=false)" cmp
+
+testIPv4PseudoWrite :: () -> Bool
+testIPv4PseudoWrite _ =
+  let expPh = B.pack [0x0a, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x5c] in
+  let cmp p = runPut (pseudoIpv4Write p 92) == expPh in
+  testValidParse "(ipv4 ver=4 hlen=5 tos=12 len=92 id=0xbeef off=0 ttl=0xa prot=7 csum=0xdd9d src=10.0.0.1 dst=10.0.0.2)" cmp
+
+  
+ipv4Tests :: [Test]
+ipv4Tests = [
+  testProperty "IPv4: Default Packet" testIPv4Default,
+  testProperty "IPv4: Version" testIPv4Version,
+  testProperty "IPv4: Header Length" testIPv4Hlen,
+  testProperty "IPv4: Type of Service" testIPv4Tos,
+  testProperty "IPv4: Length" testIPv4Len,
+  testProperty "IPv4: ID" testIPv4Id,
+  testProperty "IPv4: Offset" testIPv4Offset,
+  testProperty "IPv4: TTL" testIPv4Ttl,
+  testProperty "IPv4: Protocol" testIPv4Prot,
+  testProperty "IPv4: Checksum" testIPv4Csum,
+  testProperty "IPv4: Source" testIPv4Src,
+  testProperty "IPv4: Dest" testIPv4Dst,
+  testProperty "IPv4: Correct Checksum" testIPv4FixCsum,
+  testProperty "IPv4: Packet 0" testIPv4Pkt0,
+  testProperty "IPv4: Write" testIPv4Write,
+  testProperty "IPv4: Write Pseudo Header" testIPv4PseudoWrite
+  ]
+
+#endif
+
+
diff --git a/src/IPv6.hs b/src/IPv6.hs
new file mode 100644
--- /dev/null
+++ b/src/IPv6.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE CPP #-}
+module IPv6 where
+
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Data.Word
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Lexer
+import Packet
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+parseIPv6Ver :: Parser Word8 
+parseIPv6Ver = parseIntAttribute "ver"
+
+parseIPv6Flow :: Parser Word32
+parseIPv6Flow = parseIntAttribute "flow"
+
+parseIPv6Tcl :: Parser Word8
+parseIPv6Tcl = parseIntAttribute "tcl"
+
+parseIPv6Len :: Parser Word16
+parseIPv6Len = parseIntAttribute "len"
+
+parseIPv6Hl :: Parser Word8
+parseIPv6Hl = parseIntAttribute "hl"
+
+parseIPv6Nh :: Parser Word8
+parseIPv6Nh = parseIntAttribute "nh"
+
+ipv6AddressDecl :: Parser IPv6Addr 
+ipv6AddressDecl = do
+    a0 <- integer
+    char ':'
+    a1 <- integer
+    char ':'
+    a2 <- integer
+    char ':'
+    a3 <- integer
+    char ':'
+    a4 <- integer
+    char ':'
+    a5 <- integer
+    char ':'
+    a6 <- integer
+    char ':'
+    a7 <- integer
+
+    let fix a b = fromIntegral a `shiftL` 16 .|. b
+
+    return (IPv6Addr (fromIntegral (fix a0 a1))
+                     (fromIntegral (fix a2 a3))
+                     (fromIntegral (fix a4 a5))
+                     (fromIntegral (fix a6 a7)))
+
+parseIPv6Address :: String -> Parser IPv6Addr
+parseIPv6Address s = do
+  symbol s
+  symbol "="
+  a <- ipv6AddressDecl
+  whiteSpace
+  return a
+
+parseIPv6Pkt :: Parser Packet -> Parser IPv6Pkt
+parseIPv6Pkt f = permute
+  (tuple <$?> (IPv6Addr 0x2001000 0 0 1, parseIPv6Address "src")
+         <|?> (IPv6Addr 0x2001000 0 0 2, parseIPv6Address "dst")
+         <|?> (6, parseIPv6Ver)
+         <|?> (0, try parseIPv6Tcl)
+         <|?> (0, try parseIPv6Flow)
+         <|?> (0, parseIPv6Len)
+         <|?> (17, parseIPv6Nh)
+         <|?> (64, parseIPv6Hl)
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple s d v tcl fl l nh hl =
+      IPv6Pkt (IPv6 v tcl fl l nh hl s d)
+
+ipv6Decl :: Parser Packet -> Parser Packet
+ipv6Decl f = do
+ symbol "ipv6"
+ p <- parseIPv6Pkt f
+ return (PIPv6 p)
+
+ipv6AddrWrite :: IPv6Addr -> Put
+ipv6AddrWrite a = do
+  putWord32be $ ipv6Addr0 a
+  putWord32be $ ipv6Addr1 a
+  putWord32be $ ipv6Addr2 a
+  putWord32be $ ipv6Addr3 a
+
+ipv6WriteHdr :: IPv6 -> Put
+ipv6WriteHdr p = do
+    -- pl_uint8_t vertcl
+    putWord8 $ ipv6Ver p `shiftL` 4 .|. ipv6Tcl p `shiftR` 4
+    -- pl_uint8_t tclflow XXX byte order of ipv6Flow!!!
+    putWord8 $ ipv6Tcl p `shiftL` 4 .|. fromIntegral (ipv6Flow p `shiftR` 16)
+    -- pl_uint16_t flow_id
+    putWord16be $ fromIntegral $ ipv6Flow p .&. 0xffff
+    putWord16be $ ipv6Length p
+    putWord8 $ ipv6Nh p
+    putWord8 $ ipv6Hl p
+    ipv6AddrWrite $ ipv6Src p 
+    ipv6AddrWrite $ ipv6Dst p
+
+ipv6Write :: IPv6 -> Maybe Packet -> B.ByteString -> Put
+ipv6Write h _ bs = do
+  ipv6WriteHdr h {ipv6Length = fromIntegral $ B.length bs}
+  putLazyByteString bs
+
+pseudoIpv6Write :: IPv6 -> Word16 -> Put
+pseudoIpv6Write p l = do
+    ipv6AddrWrite $ ipv6Src p 
+    ipv6AddrWrite $ ipv6Dst p
+    putWord16be l
+    putWord8 0
+    putWord8 0
+    putWord8 0
+    putWord8 $ ipv6Nh p
+
+instance PacketWriteable IPv6Pkt where packetWrite p = ipv6Write (ipv6PktHeader p)
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary IPv6Addr where
+  arbitrary = do
+    a0 <- arbitrary
+    a1 <- arbitrary
+    a2 <- arbitrary
+    a3 <- arbitrary
+    return (IPv6Addr a0 a1 a2 a3)
+
+instance Arbitrary IPv6 where
+  arbitrary = do
+    v    <- arbitrary
+    tcl  <- arbitrary
+    flow <- arbitrary
+    len  <- arbitrary
+    nh   <- arbitrary
+    hl   <- arbitrary
+    src  <- arbitrary
+    dst  <- arbitrary
+    return (IPv6 v tcl flow len nh hl src dst)
+
+testValidParse :: String -> (IPv6 -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket ipv6Decl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testIPv6Pkt val
+
+testIPv6Pkt :: Packet -> IPv6
+testIPv6Pkt (PIPv6 p) = ipv6PktHeader p
+testIPv6Pkt _ = error "Unexpected packet type"
+
+testIPv6Default :: () -> Bool
+testIPv6Default _ = let cmp f = defaultIPv6 == f in
+  testValidParse "(ipv6)" cmp
+
+ipv6ToPktStr :: IPv6 -> String
+ipv6ToPktStr ip = "ipv6 ver=" ++ show (ipv6Ver ip) ++ " tcl=" ++ show (ipv6Tcl ip) ++
+                  " flow=" ++ show (ipv6Flow ip) ++ " len=" ++ show (ipv6Length ip) ++
+                  " nh=" ++ show (ipv6Nh ip) ++ " hl=" ++ show (ipv6Hl ip) ++
+                  " src=" ++ show (ipv6Src ip) ++ " dst=" ++ show (ipv6Dst ip)
+
+
+testIPv6Pkt0 :: IPv6 -> Bool
+testIPv6Pkt0 ip = let cmp p = ip == p in
+  testValidParse ("(" ++ ipv6ToPktStr ip ++ ")") cmp
+
+testIPv6InIPv6 :: IPv6 -> Bool
+testIPv6InIPv6 inner =
+  let outer = inner {ipv6Nh = 41} in
+  let cmp p = p == outer in
+  testValidParse ("(" ++ ipv6ToPktStr outer ++ "(" ++ ipv6ToPktStr inner ++ "))") cmp
+  
+
+testIPv6Write :: () -> Bool
+testIPv6Write _ =
+  let expPkt = B.pack [0x60, 0xf0, 0xbe, 0xef, 0x00, 0x00, 0x04, 0x40,
+                       0x07, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+                       0x07, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02] in
+   let cmp p = runPut (ipv6Write p Nothing B.empty) == expPkt in
+   testValidParse "(ipv6 ver=6 tcl=0xf flow=0xbeef len=0 hl=64 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 nh=4)" cmp
+
+testIPv6PseudoWrite :: () -> Bool
+testIPv6PseudoWrite _ =
+  let expPkt = B.pack [0x07, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+                       0x07, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+                       0x00, 0x54, 0x00, 0x00, 0x00, 0x04] in
+   let cmp p = runPut (pseudoIpv6Write p 84) == expPkt in
+   testValidParse "(ipv6 ver=6 tcl=0xf flow=0xbeef len=84 hl=64 src=2001:0:0:0:0:0:0:1 dst=2001:0:0:0:0:0:0:2 nh=4)" cmp
+
+  
+
+
+ipv6Tests :: [Test]
+ipv6Tests = [
+  testProperty "IPv6: Default" testIPv6Default,
+  testProperty "IPv6 Packet 0" testIPv6Pkt0,
+  testProperty "IPv6 in IPv6" testIPv6InIPv6,
+  testProperty "IPv6 Write" testIPv6Write,
+  testProperty "IPv6 Pesudo Write" testIPv6PseudoWrite
+  ]
+
+#endif
+
+
+
diff --git a/src/Icmp.hs b/src/Icmp.hs
new file mode 100644
--- /dev/null
+++ b/src/Icmp.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE CPP #-}
+module Icmp where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseIcmpPkt :: Parser Packet -> Parser IcmpPkt
+parseIcmpPkt f = permute
+  (tuple <$?> (8, parseIntAttribute "type")
+         <|?> (0, try (parseIntAttribute "code"))
+         <|?> (0, try (parseIntAttribute "csum"))
+         <|?> (0xcafe, parseIntAttribute "id")
+         <|?> (0x1, parseIntAttribute "seq")
+         <|?> (True, parseBoolAttribute "fixcsum")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple t c cs i s fc = IcmpPkt (Icmp t c cs i s fc)
+
+
+icmpDecl :: Parser Packet -> Parser Packet
+icmpDecl f = do
+  symbol "icmp"
+  g <- parseIcmpPkt f
+  return (PIcmp g)
+
+icmpWriteHdr :: Icmp -> Put
+icmpWriteHdr p = do
+    putWord8 $ icmpType p
+    putWord8 $ icmpCode p
+    putWord16be $ icmpCsum p
+    putWord16be $ icmpId p
+    putWord16be $ icmpSeq p
+
+icmpWrite :: Icmp -> Maybe Packet -> B.ByteString -> Put
+icmpWrite h _ bs = do
+  icmpWriteHdr h
+  putLazyByteString bs
+
+instance PacketWriteable IcmpPkt where packetWrite p = icmpWrite (icmpPktHeader p)
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Icmp where
+  arbitrary = do
+    t   <- arbitrary
+    c   <- arbitrary
+    cs  <- arbitrary
+    i   <- arbitrary
+    s   <- arbitrary
+    return (Icmp t c cs i s True)
+
+testValidParse :: String -> (Icmp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket icmpDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testIcmpPkt val
+
+testIcmpPkt :: Packet -> Icmp
+testIcmpPkt (PIcmp p) = icmpPktHeader p
+testIcmpPkt _ = error "Unexpected packet type"
+
+testIcmpDefault :: () -> Bool
+testIcmpDefault _ =
+  let cmp p = defaultIcmp == p in
+  testValidParse "(icmp)" cmp
+
+testIcmpPacket :: Icmp -> Bool
+testIcmpPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(icmp type=%d code=%d csum=%d id=%d seq=%d fixcsum=true)" (icmpType pkt)
+                  (icmpCode pkt) (icmpCsum pkt) (icmpId pkt) (icmpSeq pkt)) cmp
+
+testIcmpWrite :: () -> Bool
+testIcmpWrite _ =
+  let expPkt = B.pack [0x08, 0x00, 0xab, 0xcd, 0x04, 0xd2, 0x16, 0x2e] in
+  let cmp p = runPut (icmpWrite p Nothing B.empty) == expPkt in
+  testValidParse "(icmp id=1234 seq=5678 csum=0xabcd)" cmp
+
+icmpTests :: [Test]
+icmpTests = [
+  testProperty "ICMP: Default" testIcmpDefault,
+  testProperty "ICMP: Packet" testIcmpPacket,
+  testProperty "ICMP: Write" testIcmpWrite
+  ]
+
+#endif
+
diff --git a/src/IcmpV6.hs b/src/IcmpV6.hs
new file mode 100644
--- /dev/null
+++ b/src/IcmpV6.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE CPP #-}
+module IcmpV6 where
+
+import Control.Monad
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Lexer
+import Packet
+import PseudoSum
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseIcmpV6Pkt :: Parser Packet -> Parser IcmpV6Pkt
+parseIcmpV6Pkt f = permute
+  (tuple <$?> (8, parseIntAttribute "type")
+         <|?> (0, try (parseIntAttribute "code"))
+         <|?> (0, try (parseIntAttribute "csum"))
+         <|?> (0xffffffff, try (parseIntAttribute "pad"))
+         <|?> (True, parseBoolAttribute "fixcsum")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple t c cs pad fc = IcmpV6Pkt (IcmpV6 t c cs pad fc)
+
+
+icmpV6Decl :: Parser Packet -> Parser Packet
+icmpV6Decl f = do
+  symbol "icmpv6"
+  g <- parseIcmpV6Pkt f
+  return (PIcmpV6 g)
+
+icmpV6WriteHdr :: IcmpV6 -> Put
+icmpV6WriteHdr p = do
+    putWord8 $ icmpV6Type p
+    putWord8 $ icmpV6Code p
+    putWord16be $ icmpV6Csum p
+    when (icmpV6Pad p /= 0xffffffff) $ putWord32be $ icmpV6Pad p
+
+icmpV6Write :: IcmpV6 -> Maybe Packet -> B.ByteString -> Put
+icmpV6Write h mp bs = do
+  let hdrLen = if icmpV6Pad h /= 0xffffffff
+                  then 8
+                  else 4
+  let len = hdrLen + fromIntegral (B.length bs)
+  let csum = if icmpV6CorrectCsum h
+                then let sum32 = csumAdd (B.unpack $ runPut $ icmpV6WriteHdr h) $ genPseudoSum mp len in
+                     csumFin $ csumAdd (B.unpack bs) sum32
+                else icmpV6Csum h
+
+  icmpV6WriteHdr h {icmpV6Csum = csum}
+  putLazyByteString bs
+
+instance PacketWriteable IcmpV6Pkt where packetWrite p = icmpV6Write $ icmpV6PktHeader p
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary IcmpV6 where
+  arbitrary = do
+    t   <- arbitrary
+    c   <- arbitrary
+    cs  <- arbitrary
+    pad <- arbitrary
+    return (IcmpV6 t c cs pad True)
+
+testValidParse :: String -> (IcmpV6 -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket icmpV6Decl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testIcmpV6Pkt val
+
+testIcmpV6Pkt :: Packet -> IcmpV6
+testIcmpV6Pkt (PIcmpV6 p) = icmpV6PktHeader p
+testIcmpV6Pkt _ = error "Unexpected packet type"
+
+testIcmpV6Default :: () -> Bool
+testIcmpV6Default _ =
+  let cmp p = defaultIcmpV6 == p in
+  testValidParse "(icmpv6)" cmp
+
+testIcmpV6Packet :: IcmpV6 -> Bool
+testIcmpV6Packet pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(icmpv6 type=%d code=%d csum=%d pad=%d)" (icmpV6Type pkt)
+                  (icmpV6Code pkt) (icmpV6Csum pkt) (icmpV6Pad pkt)) cmp
+
+testIcmpV6Write :: () -> Bool
+testIcmpV6Write _ =
+  let expPkt = B.pack [0x80, 0x00, 0xb1, 0x4c, 0xca, 0xfe, 0xba, 0xbe] in
+  let cmp p = runPut (icmpV6Write p Nothing B.empty) == expPkt in
+  testValidParse "(icmpv6 type=128 code=0 pad=0xcafebabe csum=0xb14c fixcsum=false)" cmp
+
+icmpV6Tests :: [Test]
+icmpV6Tests = [
+  testProperty "ICMPv6: Default" testIcmpV6Default,
+  testProperty "ICMPv6: Packet" testIcmpV6Packet,
+  testProperty "ICMPv6: Write" testIcmpV6Write
+  ]
+#endif
diff --git a/src/L2tp.hs b/src/L2tp.hs
new file mode 100644
--- /dev/null
+++ b/src/L2tp.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE CPP #-}
+module L2tp where
+
+import Control.Monad
+import Data.Binary.Put
+import Data.Bits
+import Text.ParserCombinators.Parsec
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec.Perm
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseL2tpPkt :: Parser Packet -> Parser L2tpPkt
+parseL2tpPkt f = permute
+  (tuple <$?> (0x0002, parseIntAttribute "flags")
+         <|?> (0, parseIntAttribute "length")
+         <|?> (0x1234, parseIntAttribute "tid")
+         <|?> (0x5678, parseIntAttribute "sid")
+         <|?> (0, try (parseIntAttribute "ns"))
+         <|?> (0, try (parseIntAttribute "nr"))
+         <|?> (0, parseIntAttribute "offset")
+         <|?> (True, parseBoolAttribute "addoffset")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple fl l tid sid ns nr offset ao =
+        L2tpPkt (L2tp fl l tid sid ns nr offset ao)
+
+
+l2tpDecl :: Parser Packet -> Parser Packet
+l2tpDecl f = do
+  symbol "l2tp"
+  g <- parseL2tpPkt f
+  return (PL2tp g)
+
+l2tpWriteHdr :: L2tp -> Put
+l2tpWriteHdr p = do
+    putWord16be (l2tpFlags p)
+    -- Optional Length Field
+    when (l2tpFlags p .&. 0x4000 == 0x4000) $
+      putWord16be $ l2tpLength p
+    putWord16be (l2tpTid p)
+    putWord16be (l2tpSid p)
+    -- Optional Ns and Nr Field
+    when (l2tpFlags p .&. 0x0800 == 0x0800) $
+      do
+        putWord16be (l2tpNs p)
+        putWord16be (l2tpNr p)
+    -- Optional Offset Size Field XXX add actual offset
+    when (l2tpFlags p .&. 0x0200 == 0x0200) $
+      do
+        putWord16be (l2tpOffset p)
+        when (l2tpCorrectOffset p) $
+          putLazyByteString $ B.replicate (fromIntegral (l2tpOffset p)) 0x0
+
+l2tpWrite :: L2tp -> Maybe Packet -> B.ByteString -> Put
+l2tpWrite h _ bs = do
+  l2tpWriteHdr h {l2tpLength = fromIntegral $ B.length bs}
+  putLazyByteString bs
+
+instance PacketWriteable L2tpPkt where packetWrite p = l2tpWrite (l2tpPktHeader p)
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary L2tp where
+  arbitrary = do
+    f  <- arbitrary
+    l  <- arbitrary
+    t  <- arbitrary
+    s  <- arbitrary
+    ns <- arbitrary
+    nr <- arbitrary
+    o  <- arbitrary
+    return (L2tp f l t s ns nr o True)
+
+testValidParse :: String -> (L2tp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket l2tpDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testL2tpPkt val
+
+testL2tpDefault :: () -> Bool
+testL2tpDefault _ = let cmp f = defaultL2tp == f in
+  testValidParse "(l2tp)" cmp
+
+testL2tpPkt :: Packet -> L2tp
+testL2tpPkt (PL2tp f) = l2tpPktHeader f
+testL2tpPkt _ = error "Unexpected packet type"
+
+testL2tpPacket :: L2tp -> Bool
+testL2tpPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(l2tp flags=%d length=%d tid=%d sid=%d ns=%d nr=%d offset=%d)"
+                  (l2tpFlags pkt) (l2tpLength pkt) (l2tpTid pkt) (l2tpSid pkt)
+                  (l2tpNs pkt) (l2tpNr pkt) (l2tpOffset pkt)) cmp
+
+testL2tpWrite :: () -> Bool
+testL2tpWrite _ =
+  let expPkt = B.pack [0x00, 0x02, 0xb0, 0xb1, 0xc1, 0xc2] in
+  let cmp p = runPut (l2tpWrite p Nothing B.empty) == expPkt in
+  testValidParse "(l2tp flags=0x2 tid=0xb0b1 sid=0xc1c2)" cmp
+
+l2tpTests :: [Test]
+l2tpTests = [
+  testProperty "L2TP: Default Packet" testL2tpDefault,
+  testProperty "L2TP: Packet" testL2tpPacket,
+  testProperty "L2TP: Write" testL2tpWrite
+  ]
+#endif
+
diff --git a/src/Lexer.hs b/src/Lexer.hs
new file mode 100644
--- /dev/null
+++ b/src/Lexer.hs
@@ -0,0 +1,63 @@
+module Lexer (parens, braces, semiSep, semiSep1, commaSep, commaSep1, brackets,
+              whiteSpace, symbol, identifier, reserved, reservedOp, integer,
+              hexadecimal, float, charLiteral, stringLiteral,
+              naturalOrFloat) where
+
+import Text.ParserCombinators.Parsec
+import qualified Text.ParserCombinators.Parsec.Token as P
+import Text.ParserCombinators.Parsec.Language( javaStyle )
+
+
+lexer = P.makeTokenParser techlDef
+
+techlDef = javaStyle
+    {
+        P.commentLine       = "#",
+        P.reservedNames     = [
+          "ipv6", "ipv4", "eth", "src", "dst", "type" , "ack", "ackno",
+          "urg", "urgno", "syn", "ecne", "cwr", "psh", "rst", "fin"
+        ],
+        P.reservedOpNames   = ["=", "+", "-", ":", ">>", "<<", "&", "|"],
+        P.opLetter          = oneOf (concat (P.reservedOpNames techlDef)),
+        P.caseSensitive     = False,
+        P.identLetter       = alphaNum <|> oneOf "_'."
+    }
+
+parens          :: Parser a -> Parser a
+parens          = P.parens lexer
+braces          :: Parser a -> Parser a
+braces          = P.braces lexer
+semiSep         :: Parser a -> Parser [a]
+semiSep         = P.semiSep lexer
+semiSep1        :: Parser a -> Parser [a]
+semiSep1        = P.semiSep1 lexer
+commaSep        :: Parser a -> Parser [a]
+commaSep        = P.commaSep lexer
+commaSep1       :: Parser a -> Parser [a]
+commaSep1       = P.commaSep1 lexer
+brackets        :: Parser a -> Parser a
+brackets        = P.brackets lexer
+whiteSpace      :: Parser ()
+whiteSpace      = P.whiteSpace lexer
+symbol          :: String -> Parser String
+symbol          = P.symbol lexer
+identifier      :: Parser String
+identifier      = P.identifier lexer
+reserved        :: String -> Parser ()
+reserved        = P.reserved lexer
+reservedOp      :: String -> Parser ()
+reservedOp      = P.reservedOp lexer
+integer         :: Parser Integer
+integer         = P.integer lexer
+hexadecimal     :: Parser Integer
+hexadecimal     = P.hexadecimal lexer
+float           :: Parser Double
+float           = P.float lexer
+charLiteral     :: Parser Char
+charLiteral     = P.charLiteral lexer
+stringLiteral   :: Parser String
+stringLiteral   = P.stringLiteral lexer
+naturalOrFloat  :: Parser (Either Integer Double)
+naturalOrFloat  = P.naturalOrFloat lexer
+
+
diff --git a/src/Packet.hs b/src/Packet.hs
new file mode 100644
--- /dev/null
+++ b/src/Packet.hs
@@ -0,0 +1,478 @@
+module Packet where
+
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Data.Word
+import Text.Printf
+
+class PayloadCarrier a where
+  payloadCarried :: a -> [Packet]
+
+class PacketWriteable a where
+  packetWrite :: a -> Maybe Packet -> B.ByteString -> Put
+
+data MacAddress = MacAddress {
+  macAddress0 :: Word8,
+  macAddress1 :: Word8,
+  macAddress2 :: Word8,
+  macAddress3 :: Word8,
+  macAddress4 :: Word8,
+  macAddress5 :: Word8
+} deriving Eq
+
+instance Show MacAddress where show = showMacAddress
+showMacAddress :: MacAddress -> String
+showMacAddress a = printf "%02x:%02x:%02x:%02x:%02x:%02x" (macAddress0 a) (macAddress1 a)
+  (macAddress2 a) (macAddress3 a) (macAddress4 a) (macAddress5 a)  
+
+data Ethernet = Ethernet {
+  ethernetDst :: MacAddress,
+  ethernetSrc :: MacAddress,
+  ethernetType :: Word16
+} deriving (Show,Eq)
+
+data EthernetFrame = EthernetFrame {
+ ethernFrameHeader :: Ethernet,
+ ethernPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier EthernetFrame where payloadCarried = ethernPayload
+
+defaultEthernet :: Ethernet
+defaultEthernet = Ethernet (MacAddress 0 0 0 0 0 1) 
+                            (MacAddress 0 0 0 0 0 2)
+                            0x800
+defaultEthernetFrame :: EthernetFrame
+defaultEthernetFrame = EthernetFrame defaultEthernet
+                        [PPayload defaultPayload]
+
+data IPv6Addr = IPv6Addr {
+             ipv6Addr0 :: !Word32,
+             ipv6Addr1 :: !Word32,
+             ipv6Addr2 :: !Word32,
+             ipv6Addr3 :: !Word32
+} deriving Eq
+
+instance Show IPv6Addr where show = showIPv6Addr
+showIPv6Addr :: IPv6Addr -> String
+showIPv6Addr a = printf "0x%04x:0x%04x:0x%04x:0x%04x:0x%04x:0x%04x:0x%04x:0x%04x"
+  (ipv6Addr0 a `shiftR` 16) (ipv6Addr0 a .&. 0xffff)
+  (ipv6Addr1 a `shiftR` 16) (ipv6Addr1 a .&. 0xffff)
+  (ipv6Addr2 a `shiftR` 16) (ipv6Addr2 a .&. 0xffff)
+  (ipv6Addr3 a `shiftR` 16) (ipv6Addr3 a .&. 0xffff)
+
+data IPv6 = IPv6 {
+    ipv6Ver          :: !Word8,
+    ipv6Tcl          :: !Word8,
+    ipv6Flow         :: !Word32,
+    ipv6Length       :: !Word16,
+    ipv6Nh           :: !Word8,
+    ipv6Hl           :: !Word8,
+    ipv6Src          :: !IPv6Addr,
+    ipv6Dst          :: !IPv6Addr
+} deriving (Show,Eq)
+
+data IPv6Pkt = IPv6Pkt {
+  ipv6PktHeader :: IPv6,
+  ipv6PktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier IPv6Pkt where payloadCarried = ipv6PktPayload
+
+defaultIPv6 :: IPv6
+defaultIPv6 = IPv6 6 0 0 0 17 64 (IPv6Addr 0x2001000 0 0 1) (IPv6Addr 0x2001000 0 0 2)
+defaultIPv6Packet :: IPv6Pkt
+defaultIPv6Packet = IPv6Pkt defaultIPv6 [PPayload $ Payload 0 0]
+
+
+
+data IPv4 = IPv4 {
+  ipv4Ver    :: !Word8,
+  ipv4Hlen   :: !Word8,
+  ipv4Tos    :: !Word8,
+  ipv4Len    :: !Word16,
+  ipv4Id     :: !Word16,
+  ipv4Offset :: !Word16,
+  ipv4Ttl    :: !Word8,
+  ipv4Prot   :: !Word8,
+  ipv4Csum   :: !Word16,
+  ipv4Src    :: !Word32,
+  ipv4Dst    :: !Word32,
+  ipv4CorrectCsum :: Bool
+} deriving (Show,Eq)
+
+defaultIPv4 :: IPv4
+defaultIPv4 = IPv4 4 5 0 0 0x1234 0 64 17 0 0xa0a0a0a1 0xa0a0a0a2 True
+defaultIPv4Packet :: IPv4Pkt
+defaultIPv4Packet = IPv4Pkt defaultIPv4 [PPayload defaultPayload]
+
+data IPv4Pkt = IPv4Pkt {
+  ipv4PktHeader :: IPv4,
+  ipv4PktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier IPv4Pkt where payloadCarried = ipv4PktPayload
+
+data Udp = Udp {
+  udpSrc :: !Word16,
+  udpDst :: !Word16,
+  udpLen :: !Word16,
+  udpCsum :: !Word16,
+  udpCorrectCsum :: Bool
+} deriving (Show,Eq)
+
+data UdpPkt = UdpPkt {
+  udpPktHeader :: Udp,
+  udpPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier UdpPkt where payloadCarried = udpPktPayload
+
+defaultUdp :: Udp
+defaultUdp = Udp 7 7 8 0 True
+defaultUdpPacket :: UdpPkt
+defaultUdpPacket = UdpPkt defaultUdp [PPayload defaultPayload]
+
+data Tcp = Tcp {
+    tcpSrc :: !Word16,
+    tcpDst :: !Word16,
+    tcpSeqNo :: !Word32,
+    tcpAckNo :: !Word32,
+    tcpFlags :: !Word16,
+    tcpWin :: !Word16,
+    tcpCsum :: !Word16,
+    tcpUrg :: !Word16,
+    tcpOffset :: !Word8,
+    tcpCorrectCsum :: Bool,
+    tcpWindowScale :: !Word8,
+    tcpTimeStamp :: !Word64
+    -- options
+} deriving (Show,Eq)
+
+defaultTcp :: Tcp
+defaultTcp = Tcp 7 7 0 0 0x5000 0xffff 0 0 20 True 0 0
+defaultTcpPacket :: TcpPkt
+defaultTcpPacket = TcpPkt defaultTcp [PPayload $ Payload 0 0]
+
+
+
+data TcpPkt = TcpPkt {
+    tcpPktHeader :: Tcp,
+    tcpPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier TcpPkt where payloadCarried = tcpPktPayload
+
+data Gtp = Gtp {
+  gtpFlags :: !Word8,
+  gtpType :: !Word8,
+  gtpLen :: !Word16,
+  gtpTeid :: !Word32,
+  gtpSeq :: !Word16,
+  gtpNpdu :: !Word8,
+  gtpNh :: !Word8
+} deriving (Show,Eq)
+
+defaultGtp :: Gtp
+defaultGtp = Gtp 0x32 0xff 0 0x012345678 0 0 0
+defaultGtpPacket :: GtpPkt
+defaultGtpPacket = GtpPkt defaultGtp [PPayload defaultPayload]
+
+
+data GtpPkt = GtpPkt {
+  gtpPktHeader :: Gtp,
+  gtpPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier GtpPkt where payloadCarried = gtpPktPayload
+
+data Ppp = Ppp {
+    pppAddress :: !Word8,
+    pppControl :: !Word8,
+    pppProtocol :: !Word16
+} deriving (Show,Eq)
+
+data PppPkt = PppPkt {
+  pppPktHeader :: Ppp,
+  pppPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier PppPkt where payloadCarried = pppPktPayload
+
+defaultPpp :: Ppp
+defaultPpp = Ppp 0xff 0x03 0x0021
+defaultPppPacket :: PppPkt
+defaultPppPacket = PppPkt defaultPpp [PPayload $ Payload 0 0]
+
+data L2tp = L2tp {
+    l2tpFlags :: !Word16,
+    l2tpLength :: !Word16,
+    l2tpTid :: !Word16,
+    l2tpSid :: !Word16,
+    l2tpNs :: !Word16,
+    l2tpNr :: !Word16,
+    l2tpOffset :: !Word16,
+    l2tpCorrectOffset :: Bool
+} deriving (Show,Eq)
+
+data L2tpPkt = L2tpPkt {
+  l2tpPktHeader :: L2tp,
+  l2tpPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+defaultL2tp :: L2tp
+defaultL2tp = L2tp 0x2 0 0x1234 0x5678 0 0 0 True
+defaultL2tpPacket :: L2tpPkt
+defaultL2tpPacket = L2tpPkt defaultL2tp [PPayload $ Payload 0 0]
+
+instance PayloadCarrier L2tpPkt where payloadCarried = l2tpPktPayload
+
+data Gre = Gre {
+    greFlags :: !Word16,
+    greProtocol :: !Word16,
+    greKey :: !Word32,
+    greSeq :: !Word32
+} deriving (Show,Eq)
+
+data GrePkt = GrePkt {
+    grePktHeader :: Gre,
+    grePktPayload :: [Packet]
+} deriving (Show,Eq)
+
+defaultGre :: Gre
+defaultGre = Gre 0x3000 0x0800 0xcafecafe 0
+defaultGrePacket :: GrePkt
+defaultGrePacket = GrePkt defaultGre [PPayload $ Payload 0 0]
+
+instance PayloadCarrier GrePkt where payloadCarried = grePktPayload
+
+data Icmp = Icmp {
+    icmpType :: !Word8,
+    icmpCode :: !Word8,
+    icmpCsum :: !Word16,
+    icmpId :: !Word16,
+    icmpSeq :: !Word16,
+    icmpCorrectCsum :: Bool
+} deriving (Show,Eq)
+
+defaultIcmp :: Icmp
+defaultIcmp = Icmp 8 0 0 0xcafe 1 True
+defaultIcmpPacket :: IcmpPkt
+defaultIcmpPacket = IcmpPkt defaultIcmp [PPayload $ Payload 0 0]
+
+data IcmpPkt = IcmpPkt {
+    icmpPktHeader :: Icmp,
+    icmpPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier IcmpPkt where payloadCarried = icmpPktPayload
+
+data IcmpV6 = IcmpV6 {
+    icmpV6Type :: !Word8,
+    icmpV6Code :: !Word8,
+    icmpV6Csum :: !Word16,
+    icmpV6Pad  :: !Word32,
+    icmpV6CorrectCsum :: Bool
+} deriving (Show,Eq)
+
+defaultIcmpV6 :: IcmpV6
+defaultIcmpV6 = IcmpV6 8 0 0 0xffffffff True
+defaultIcmpV6Packet :: IcmpV6Pkt
+defaultIcmpV6Packet = IcmpV6Pkt defaultIcmpV6 [PPayload $ Payload 0 0]
+
+data IcmpV6Pkt = IcmpV6Pkt {
+    icmpV6PktHeader :: IcmpV6,
+    icmpV6PktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier IcmpV6Pkt where payloadCarried = icmpV6PktPayload
+
+data Teredo = Teredo {
+    teredoOrgTag :: !Word16,
+    teredoOrgPort :: !Word16,
+    teredoAddr :: !Word32,
+    teredoAuthTag :: !Word16,
+    teredoAuthIdLen :: !Word8,
+    teredoAuthAuLen :: !Word8,
+    teredoHaveOrg :: Bool,
+    teredoHaveAuth :: Bool,
+    teredoFixSrc :: Bool,
+    teredoFixDst :: Bool
+} deriving (Show,Eq)
+
+defaultTeredo :: Teredo
+defaultTeredo = Teredo 0 0 0 0 0 0 False False True True
+defaultTeredoPacket :: TeredoPkt
+defaultTeredoPacket = TeredoPkt defaultTeredo $ PPayload $ Payload 0 0
+
+data TeredoPkt = TeredoPkt {
+    teredoPktHeader :: Teredo,
+    teredoPktPayload :: Packet
+} deriving (Show,Eq)
+
+data EngineId = EngineId {
+  eid0 :: Word8,
+  eid1 :: Word8,
+  eid2 :: Word8,
+  eid3 :: Word8,
+  eid4 :: Word8,
+  eid5 :: Word8
+} deriving (Show,Eq)
+
+data ConnSync = ConnSync {
+    connSyncVer :: !Word32,
+    connSyncArmcs :: !Word32,
+    connSyncDst :: !Word32,
+    connSyncSrc :: !Word32,
+    connSyncType :: !Word8,
+    connSyncExtVer :: !Word8,
+    connSyncExtEid :: !EngineId,
+    connSyncId :: !Word32
+} deriving (Show,Eq)
+
+data ConnSyncPkt = ConnSyncPkt {
+    connSyncPktHeader :: ConnSync,
+    connSyncPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier ConnSyncPkt where payloadCarried = connSyncPktPayload
+
+data ConnSyncSeen = ConnSyncSeen {
+    connSyncSeenPcid :: !Word32,
+    connSyncSeenPeid :: !EngineId,
+    connSyncSeenHasFsService :: !Word8,
+    connSyncSeenCtype :: !Word8,
+    connSyncSeenBaseService :: !Word32,
+    connSyncSeenFsService :: !Word32
+} deriving (Show,Eq)
+
+data ConnSyncSeenPkt = ConnSyncSeenPkt {
+    connSyncSeenPktHeader :: ConnSyncSeen,
+    connSyncSeenPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier ConnSyncSeenPkt where payloadCarried = connSyncSeenPktPayload
+
+data ConnSyncIpv4 = ConnSyncIpv4 {
+    connSyncIpv4Int :: !Word32,
+    connSyncIpv4Ext :: !Word32,
+    connSyncIpv4IntPort :: !Word16,
+    connSyncIpv4ExtPort :: !Word16,
+    connSyncIpv4Prot :: !Word32
+} deriving (Show,Eq)
+
+data ConnSyncIpv4Pkt = ConnSyncIpv4Pkt {
+    connSyncIpv4PktHeader :: ConnSyncIpv4,
+    connSyncIpv4PktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier ConnSyncIpv4Pkt where payloadCarried = connSyncIpv4PktPayload
+
+data ConnSyncUpdate = ConnSyncUpdate {
+    connSyncUpdateSeq :: !Word16,
+    connSyncUpdateFlags :: !Word8,
+    connSyncUpdateService :: !Word32,
+    connSyncUpdateCid :: !Word32,
+    connSyncUpdateEid :: !EngineId,
+    connSyncUpdateIn :: !Word16,
+    connSyncUpdateOut :: !Word16
+} deriving (Show,Eq)
+
+data ConnSyncUpdatePkt = ConnSyncUpdatePkt {
+    connSyncUpdatePktHeader :: ConnSyncUpdate,
+    connSyncUpdatePktPayload :: [Packet]
+} deriving (Show,Eq)
+
+instance PayloadCarrier ConnSyncUpdatePkt where payloadCarried = connSyncUpdatePktPayload
+
+data Fragv6 = Fragv6 {
+    fragv6Nh :: !Word8,
+    fragv6Res :: !Word8,
+    fragv6Off :: !Word16,
+    fragv6Id :: !Word32
+} deriving (Show,Eq)
+
+data Fragv6Pkt = Fragv6Pkt {
+    fragv6PktHeader :: Fragv6,
+    fragv6PktPayload :: [Packet]
+} deriving (Show,Eq)
+
+defaultFragv6 :: Fragv6
+defaultFragv6 = Fragv6 17 0 0 0
+defaultFragv6Packet :: Fragv6Pkt
+defaultFragv6Packet = Fragv6Pkt defaultFragv6 [PPayload $ Payload 0 0]
+
+instance PayloadCarrier Fragv6Pkt where payloadCarried = fragv6PktPayload
+
+data HopByHop = HopByHop {
+    hopByHopNh :: !Word8,
+    hopByHopLen :: !Word8
+} deriving (Show,Eq)
+
+data HopByHopPkt = HopByHopPkt {
+    hopByHopPktHeader :: HopByHop,
+    hopByHopPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+defaultHopByHop :: HopByHop
+defaultHopByHop = HopByHop 17 0
+defaultHopByHopPacket :: HopByHopPkt
+defaultHopByHopPacket = HopByHopPkt defaultHopByHop [PPayload $ Payload 0 0]
+
+instance PayloadCarrier HopByHopPkt where payloadCarried = hopByHopPktPayload
+
+data PadN = PadN {
+    padNCode :: !Word8,
+    padNLen :: !Word8
+} deriving (Show,Eq)
+
+data PadNPkt = PadNPkt {
+    padNPktHeader :: PadN,
+    padNPktPayload :: [Packet]
+} deriving (Show,Eq)
+
+defaultPadN :: PadN
+defaultPadN = PadN 1 0
+defaultPadNPacket :: PadNPkt
+defaultPadNPacket = PadNPkt defaultPadN [PPayload $ Payload 0 0]
+
+instance PayloadCarrier PadNPkt where payloadCarried = padNPktPayload
+
+data Payload = Payload {
+    payloadPattern :: Word32,
+    payloadLength  :: Word16
+} deriving (Show,Eq)
+
+defaultPayload :: Payload
+defaultPayload = Payload 0 64
+
+data HexPayload = HexPayload {
+    hexPayloadData :: [Word8]
+} deriving (Show,Eq)
+
+defaultHexPayload  :: HexPayload
+defaultHexPayload = HexPayload (replicate 64 0)
+
+data Packet =
+    PEth  EthernetFrame
+  | PIPv4 IPv4Pkt
+  | PUdp UdpPkt
+  | PPayload Payload
+  | PHexPayload HexPayload
+  | PGtp GtpPkt
+  | PL2tp L2tpPkt
+  | PPpp PppPkt
+  | PIPv6 IPv6Pkt
+  | PTcp TcpPkt
+  | PTeredo TeredoPkt
+  | PGre GrePkt
+  | PIcmp IcmpPkt
+  | PIcmpV6 IcmpV6Pkt
+  | PFragv6 Fragv6Pkt
+  | PHopByHop HopByHopPkt
+  | PPadN PadNPkt
+  deriving (Show,Eq)
+
+
+
diff --git a/src/PadN.hs b/src/PadN.hs
new file mode 100644
--- /dev/null
+++ b/src/PadN.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE CPP #-}
+module PadN where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parsePadNPkt :: Parser Packet -> Parser PadNPkt
+parsePadNPkt f = permute
+  (tuple <$?> (1, parseIntAttribute "code")
+         <|?> (0, try (parseIntAttribute "len"))
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple nh l = PadNPkt (PadN nh l)
+
+
+padNDecl :: Parser Packet -> Parser Packet
+padNDecl f = do
+  symbol "padn"
+  g <- parsePadNPkt f
+  return (PPadN g)
+
+padNWriteHdr :: PadN -> Put
+padNWriteHdr p = do
+    putWord8 $ padNCode p
+    putWord8 $ padNLen p
+    let bs = B.replicate (fromIntegral $ padNLen p) 0
+    putLazyByteString bs
+
+padNWrite :: PadN -> Maybe Packet -> B.ByteString -> Put
+padNWrite h _ bs = do
+  padNWriteHdr h
+  putLazyByteString bs
+
+instance PacketWriteable PadNPkt where packetWrite p = padNWrite $ padNPktHeader p
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary PadN where
+  arbitrary = do
+    c <- arbitrary
+    l <- arbitrary
+    return (PadN c l)
+
+testValidParse :: String -> (PadN -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket padNDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testPadNPkt val
+
+testPadNDefault :: () -> Bool
+testPadNDefault _ = let cmp f = defaultPadN == f in
+  testValidParse "(padn)" cmp
+
+testPadNPkt :: Packet -> PadN
+testPadNPkt (PPadN f) = padNPktHeader f
+testPadNPkt _ = error "Unexpected packet type"
+
+testPadNPacket :: PadN -> Bool
+testPadNPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(padn code=%d len=%d)" (padNCode pkt) (padNLen pkt)) cmp
+
+testPadNWrite :: () -> Bool
+testPadNWrite _ =
+  let expPkt = B.pack [0x01, 0x04, 0x00, 0x00, 0x00, 0x00] in
+  let cmp p = runPut (padNWrite p Nothing B.empty) == expPkt in
+  testValidParse "(padn len=4)" cmp
+
+padNTests :: [Test]
+padNTests = [
+  testProperty "GRE: Default Packet" testPadNDefault,
+  testProperty "GRE: Packet" testPadNPacket,
+  testProperty "GRE: Write" testPadNWrite
+  ]
+#endif
+
+
diff --git a/src/Parser.hs b/src/Parser.hs
new file mode 100644
--- /dev/null
+++ b/src/Parser.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE CPP #-}
+module Parser where
+
+import Text.ParserCombinators.Parsec
+
+import Packet
+import IPv4
+import IPv6
+import Ethernet
+import Udp
+import Gtp
+import L2tp
+import Ppp
+import Payload
+import Lexer
+import Tcp
+import Teredo
+import Gre
+import Icmp
+import IcmpV6
+import Fragv6
+import HopByHop
+import PadN
+import HexPayload
+
+#ifdef HRWS_TEST
+--import Debug.Trace
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+parsePacket :: Parser [Packet]
+parsePacket = do
+    whiteSpace
+    many1 packetDecl
+
+packetDeclH :: Parser Packet
+packetDeclH = choice [
+    try $ ipv4Decl packetDecl,
+    try $ ipv6Decl packetDecl,
+    try $ icmpV6Decl packetDecl,
+    try $ icmpDecl packetDecl,
+    udpDecl packetDecl,
+    try $ tcpDecl packetDecl,
+    ethDecl packetDecl,
+    try $ gtpDecl packetDecl,
+    try $ greDecl packetDecl,
+    l2tpDecl packetDecl,
+    try $ payloadDecl packetDecl,
+    try $ pppDecl packetDecl,
+    try $ padNDecl packetDecl,
+    try $ teredoDecl packetDecl,
+    try $ fragv6Decl packetDecl,
+    try $ hopByHopDecl packetDecl,
+    try $ hexPayloadDecl packetDecl
+    ]
+
+packetDecl :: Parser Packet
+packetDecl = do
+  char '('
+  p <- packetDeclH
+  char ')'
+  whiteSpace
+  return p
+
+readPacket :: String -> [Packet]
+readPacket input = case parse parsePacket "packet parse" input of
+                         Left err -> error $ show err
+                         Right val -> val
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+testParserIPv4Udp :: () -> Bool
+testParserIPv4Udp _ =
+  let expPkt = PEth defaultEthernetFrame {ethernPayload = [PIPv4 defaultIPv4Packet {
+                    ipv4PktPayload = [PUdp defaultUdpPacket]}]} in
+  let pkts = readPacket "(eth (ipv4 (udp)))" in
+  (length pkts == 1) && (head pkts == expPkt)
+
+testParserIPv6Tcp :: () -> Bool
+testParserIPv6Tcp _ =
+  let expPkt = PEth defaultEthernetFrame {ethernPayload = [PIPv6 defaultIPv6Packet {
+                    ipv6PktPayload = [PTcp defaultTcpPacket]}]} in
+  let pkts = readPacket "(eth (ipv6 (tcp)))" in
+  (length pkts == 1) && (head pkts == expPkt)
+
+testParserIPv6Gtp :: () -> Bool
+testParserIPv6Gtp _ =
+  let expPkt = PEth defaultEthernetFrame {ethernPayload = [PIPv6 defaultIPv6Packet {
+                    ipv6PktPayload = [PUdp defaultUdpPacket {
+                    udpPktPayload  = [PGtp defaultGtpPacket {
+                    gtpPktPayload = [PIPv4 defaultIPv4Packet {
+                    ipv4PktPayload = [PUdp defaultUdpPacket]}]}]}]}]} in
+  let pkts = readPacket "(eth (ipv6 (udp (gtp (ipv4 (udp))))))" in
+  (length pkts == 1) && (head pkts == expPkt)
+
+
+
+parserTests :: [Test]
+parserTests = [
+  testProperty "Parser: Eth IPv4 Udp " testParserIPv4Udp,
+  testProperty "Parser: Eth IPv6 Tcp" testParserIPv6Tcp,
+  testProperty "Parser: Eth IPv6 Gtp" testParserIPv6Gtp
+  ]
+
+#endif
+
diff --git a/src/Payload.hs b/src/Payload.hs
new file mode 100644
--- /dev/null
+++ b/src/Payload.hs
@@ -0,0 +1,32 @@
+module Payload where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Packet
+import Lexer
+import Util
+
+payloadPkt :: Parser Packet -> Parser Payload
+payloadPkt _ = permute
+  (tuple <$?> (0, parseIntAttribute "pattern")
+         <|?> (64, parseIntAttribute "length"))
+  where
+    tuple = Payload
+
+payloadDecl :: Parser Packet -> Parser Packet
+payloadDecl f = do
+  symbol "payload"
+  p <- payloadPkt f
+  return (PPayload p)
+
+payloadWrite :: Payload -> Put
+payloadWrite p = do
+  let bs = B.replicate (fromIntegral $ payloadLength p)
+                        (fromIntegral $ payloadPattern p)
+  putLazyByteString bs
+
+instance PacketWriteable Payload where packetWrite p _ _ = payloadWrite p
+
diff --git a/src/Ppp.hs b/src/Ppp.hs
new file mode 100644
--- /dev/null
+++ b/src/Ppp.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE CPP #-}
+module Ppp where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Util
+import Packet
+import Lexer
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parsePppPkt :: Parser Packet -> Parser PppPkt
+parsePppPkt f = permute
+  (tuple <$?> (0xff, parseIntAttribute "address")
+         <|?> (0x03, parseIntAttribute "control")
+         <|?> (0x0021, parseIntAttribute "protocol")
+         <|?> ([PPayload defaultPayload], parsePayload f))
+  where
+    tuple a c prot = PppPkt (Ppp a c prot)
+
+
+pppDecl :: Parser Packet -> Parser Packet
+pppDecl f = do
+  symbol "ppp"
+  g <- parsePppPkt f
+  return (PPpp g)
+
+pppWriteHdr :: Ppp -> Put
+pppWriteHdr p = do
+    putWord8 (pppAddress p)
+    putWord8 (pppControl p)
+    putWord16be (pppProtocol p)
+
+pppWrite :: Ppp -> Maybe Packet -> B.ByteString -> Put
+pppWrite h _ bs = do
+    pppWriteHdr h
+    putLazyByteString bs
+
+instance PacketWriteable PppPkt where packetWrite p = pppWrite (pppPktHeader p)
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Ppp where
+  arbitrary = do
+    a <- arbitrary
+    c <- arbitrary
+    p <- arbitrary
+    return (Ppp a c p)
+
+testValidParse :: String -> (Ppp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket pppDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testPppPkt val
+
+testPppDefault :: () -> Bool
+testPppDefault _ = let cmp f = defaultPpp == f in
+  testValidParse "(ppp)" cmp
+
+testPppPkt :: Packet -> Ppp
+testPppPkt (PPpp f) = pppPktHeader f
+testPppPkt _ = error "Unexpected packet type"
+
+testPppPacket :: Ppp -> Bool
+testPppPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(ppp address=%d control=%d protocol=%d)" (pppAddress pkt)
+                  (pppControl pkt) (pppProtocol pkt)) cmp
+
+testPppWrite :: () -> Bool
+testPppWrite _ =
+  let expPkt = B.pack [0xff, 0x03, 0xca, 0xfe] in
+  let cmp p = runPut (pppWrite p Nothing B.empty) == expPkt in
+  testValidParse "(ppp address=0xff protocol=0xcafe)" cmp
+
+pppTests :: [Test]
+pppTests = [
+  testProperty "PPP: Default Packet" testPppDefault,
+  testProperty "PPP: Packet" testPppPacket,
+  testProperty "PPP: Write" testPppWrite
+  ]
+#endif
+
diff --git a/src/PseudoSum.hs b/src/PseudoSum.hs
new file mode 100644
--- /dev/null
+++ b/src/PseudoSum.hs
@@ -0,0 +1,23 @@
+module PseudoSum where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as BL
+import Data.Maybe
+import Data.Word
+
+import IPv4
+import IPv6
+import Packet
+import Util
+
+genPseudoSum :: Maybe Packet -> Word16 -> Word32
+genPseudoSum mp _ | isNothing mp = 0
+genPseudoSum mp l                =
+  case fromJust mp of
+       (PIPv4 ipv4) -> csumAdd (BL.unpack $ runPut $
+                                pseudoIpv4Write (ipv4PktHeader ipv4) l) 0
+       (PIPv6 ipv6) -> csumAdd (BL.unpack $ runPut $
+                                pseudoIpv6Write (ipv6PktHeader ipv6) l) 0
+       _            -> 0
+
+
diff --git a/src/Run.hs b/src/Run.hs
new file mode 100644
--- /dev/null
+++ b/src/Run.hs
@@ -0,0 +1,42 @@
+
+import System.Environment
+import qualified Data.ByteString.Lazy as BL
+import Data.Binary.Put
+import System.Console.GetOpt
+
+import Parser
+import SerializePcap
+
+data Flag = Input String | Output String deriving Show
+
+options :: [OptDescr Flag]
+options = [
+    Option "i"["input"]   (ReqArg Input "FILE")  "Input File name , e.g. example.pkt",
+    Option "o" ["output"]  (ReqArg Output "FILE") "Output File name, e.g out.pcap"
+  ]
+
+getInput :: [Flag] -> String
+getInput [] = error "Specify input file with '-i <file name>'"
+getInput (Input i:_) = i
+getInput (_:xs) = getInput xs
+
+getOutput :: [Flag] -> String
+getOutput [] = error "Specify output file with '-o <file name>'"
+getOutput (Output o:_) = o
+getOutput (_:xs) = getOutput xs
+
+main :: IO ()
+main = do
+
+    args <- getArgs
+    let ( actions, _, _ ) = getOpt RequireOrder options args
+    let input = getInput actions
+    let output = getOutput actions
+
+    pktfile <- readFile input
+    let pkts = readPacket pktfile
+ 
+    --sequence_  (map (BL.putStr . runPut . packetWrite) pkts)
+    (BL.writeFile output . runPut . pcapWrite) pkts
+   -- print pkts
+  
diff --git a/src/SerializePcap.hs b/src/SerializePcap.hs
new file mode 100644
--- /dev/null
+++ b/src/SerializePcap.hs
@@ -0,0 +1,114 @@
+module SerializePcap (pcapWrite) where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as BL
+import Data.Word
+
+import Ethernet()
+import Fragv6()
+import Gre()
+import Gtp()
+import HexPayload()
+import HopByHop()
+import Icmp()
+import IcmpV6()
+import IPv4()
+import IPv6()
+import L2tp()
+import Packet
+import PadN()
+import Ppp()
+import Payload()
+import Tcp()
+import Teredo
+import Udp()
+
+data PcapFileHdr = PcapFileHdr {
+  pcapFileHdrMagic   :: !Word32,
+  pcapFileHdrMajVer  :: !Word16,
+  pcapFileHdrMinVer  :: !Word16,
+  pcapFileHdrTsZone  :: !Word32,
+  pcapFileHdrSigFigs :: !Word32,
+  pcapFileHdrSnapLen :: !Word32,
+  pcapFileHdrLink    :: !Word32
+}
+
+data PcapPktHdr = PcapPktHdr {
+  pcapPktHdrTsSec  :: !Word32,
+  pcapPktHdrTsUsec :: !Word32,
+  pcapPktHdrIncLen :: !Word32,
+  pcapPktHdrOrgLen :: !Word32
+}
+
+
+pcapFileWrite :: PcapFileHdr -> Put
+pcapFileWrite f = do
+  putWord32host $ pcapFileHdrMagic f
+  putWord16host $ pcapFileHdrMajVer f
+  putWord16host $ pcapFileHdrMinVer f
+  putWord32host $ pcapFileHdrTsZone f
+  putWord32host $ pcapFileHdrSigFigs f
+  putWord32host $ pcapFileHdrSnapLen f
+  putWord32host $ pcapFileHdrLink f
+
+mkPcapFile :: PcapFileHdr
+mkPcapFile = PcapFileHdr {
+  pcapFileHdrMagic  = 0xa1b2c3d4,
+  pcapFileHdrMajVer = 2,
+  pcapFileHdrMinVer = 4,
+  pcapFileHdrTsZone = 0,
+  pcapFileHdrSigFigs = 0,
+  pcapFileHdrSnapLen = 1600,
+  pcapFileHdrLink = 1 }
+
+
+packPayloadCarried :: PayloadCarrier a => a -> Maybe Packet -> BL.ByteString
+packPayloadCarried a mp = let ps = payloadCarried a in
+  if ps == [] then BL.empty
+              else BL.concat $ map (\ pl -> runPut (pcapPacketWrite pl mp)) ps
+
+pcapPktHeaderWrite :: PcapPktHdr -> Put
+pcapPktHeaderWrite p = do
+  putWord32host $ pcapPktHdrTsSec p
+  putWord32host $ pcapPktHdrTsUsec p
+  putWord32host $ pcapPktHdrIncLen p
+  putWord32host $ pcapPktHdrOrgLen p
+
+pcapWriteEntry :: Packet -> Word32 -> Word32 -> Put
+pcapWriteEntry pkt s us = do
+  let bs = runPut $ pcapPacketWrite pkt Nothing
+  let l = fromIntegral $ BL.length bs
+  let ph = PcapPktHdr s us l l
+  pcapPktHeaderWrite ph
+  putLazyByteString bs
+
+pcapPacketWrite :: Packet -> Maybe Packet -> Put
+pcapPacketWrite (PEth p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PFragv6 p) mp         = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PGtp p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PGre p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PHexPayload p) mp     = packetWrite p mp BL.empty
+pcapPacketWrite (PHopByHop p) mp       = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PIcmp p) mp           = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PIcmpV6 p) mp         = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PIPv4 p) _      = packetWrite p Nothing $ packPayloadCarried p $ Just (PIPv4 p)
+pcapPacketWrite (PIPv6 p) _      = packetWrite p Nothing $ packPayloadCarried p $ Just (PIPv6 p)
+pcapPacketWrite (PL2tp p) mp           = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PPayload p) mp        = packetWrite p mp BL.empty
+pcapPacketWrite (PPadN p) mp           = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PPpp p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PTcp p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PUdp p) mp            = packetWrite p mp $ packPayloadCarried p mp
+pcapPacketWrite (PTeredo p) mp = do -- no auth and org support yet
+  let ph = teredoPktHeader p
+  let pl = maybe (teredoPktPayload p)
+                 (fixTeredoAddresses (teredoFixSrc ph) (teredoFixDst ph)
+                                     (teredoPktPayload p)) mp
+  let bs = runPut (pcapPacketWrite pl mp)
+  putLazyByteString bs
+
+pcapWrite :: [Packet] -> Put
+pcapWrite pkts = do
+  pcapFileWrite mkPcapFile
+  mapM_ (\ p -> pcapWriteEntry p 0 1) pkts
+
diff --git a/src/Tcp.hs b/src/Tcp.hs
new file mode 100644
--- /dev/null
+++ b/src/Tcp.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE CPP #-}
+module Tcp where
+
+import Control.Monad
+import Data.Binary.Put
+import Data.Bits
+import qualified Data.ByteString.Lazy as B
+import Data.Word
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Packet
+import Lexer
+import PseudoSum
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+finFlag :: Word16
+finFlag = 0x0001 :: Word16
+synFlag :: Word16
+synFlag = 0x0002 :: Word16
+rstFlag :: Word16
+rstFlag = 0x0004 :: Word16
+pshFlag :: Word16
+pshFlag = 0x0008 :: Word16
+ackFlag :: Word16
+ackFlag = 0x0010 :: Word16
+urgFlag :: Word16
+urgFlag = 0x0020 :: Word16
+ecneFlag :: Word16
+ecneFlag = 0x0040 :: Word16
+cwrFlag :: Word16
+cwrFlag = 0x0080 :: Word16
+
+parseTcpFlag :: String -> Word16 -> Parser Word16
+parseTcpFlag s f = do
+    reserved s
+    return f
+
+
+parseTcpPkt :: Parser Packet -> Parser TcpPkt
+parseTcpPkt f = permute
+  (tuple <$?> (7, try $ parseIntAttribute "src")
+         <|?> (7, parseIntAttribute "dst")
+         <|?> (0, try $ parseIntAttribute "seqno")
+         <|?> (0, try $ parseIntAttribute "ackno")
+         <|?> (0, try $ parseIntAttribute "flags")
+         <|?> (0xffff, parseIntAttribute "win")
+         <|?> (0, try $ parseIntAttribute "csum")
+         <|?> (0, try $ parseIntAttribute "urgno")
+         <|?> (20, parseIntAttribute "offset") -- in bytes
+         <|?> (0x0, try $ parseTcpFlag "fin" finFlag)
+         <|?> (0x0, try $ parseTcpFlag "syn" synFlag)
+         <|?> (0x0, parseTcpFlag "rst" rstFlag)
+         <|?> (0x0, parseTcpFlag "psh" pshFlag)
+         <|?> (0x0, try $ parseTcpFlag "ack" ackFlag)
+         <|?> (0x0, try $ parseTcpFlag "urg" urgFlag)
+         <|?> (0x0, parseTcpFlag "ecne" ecneFlag)
+         <|?> (0x0, try $ parseTcpFlag "cwr" cwrFlag)
+         <|?> (True, try $ parseBoolAttribute "fixcsum")
+         <|?> (0x0, try $ parseIntAttribute "wsc")
+         <|?> (0x0, try $ parseIntAttribute "ts")
+         <|?> ([PPayload (Payload 0 0)], parsePayload f))
+  where
+    tuple s d sq ack fl win c u hl ff sf rf pf af uf ef cf fc wsc ts =
+        TcpPkt (Tcp s d sq ack
+                 (fl .|. ff .|. sf .|. rf .|. af .|. pf .|. uf .|. ef .|.
+                  cf .|. (fromIntegral hl `shiftL` 10))
+                 win c u hl fc wsc ts)
+
+tcpDecl :: Parser Packet -> Parser Packet
+tcpDecl f = do
+ symbol "tcp"
+ u <- parseTcpPkt f
+ return (PTcp u)
+
+tcpWriteHdr :: Tcp -> Put
+tcpWriteHdr p = do
+    putWord16be (tcpSrc p)
+    putWord16be (tcpDst p)
+    putWord32be (tcpSeqNo p)
+    putWord32be (tcpAckNo p)
+    putWord16be (tcpFlags p)
+    putWord16be (tcpWin p)
+    putWord16be (tcpCsum p)
+    putWord16be (tcpUrg p)
+    when (tcpWindowScale p /= 0) $
+      do
+        putWord8 3; -- Kind = Window Scale
+        putWord8 3; -- Len = 3
+        putWord8 (tcpWindowScale p); -- Shift Count
+        putWord8 0; -- End of Option List
+
+    when (tcpTimeStamp p /= 0) $
+       do
+         putWord8 8  -- Kind = timestamp
+         putWord8 10 -- len = 10
+         putWord64be (tcpTimeStamp p)
+         putWord8 1  -- no option
+         putWord8 0  -- end of option list
+
+tcpWrite :: Tcp -> Maybe Packet -> B.ByteString -> Put
+tcpWrite h mp bs = do
+  let len = shiftR (tcpFlags h)  12 * 4 + fromIntegral (B.length bs)
+  let csum = if tcpCorrectCsum h
+                then let sum32 = csumAdd (B.unpack $ runPut $ tcpWriteHdr h) $ genPseudoSum mp len in
+                     csumFin $ csumAdd (B.unpack bs) sum32
+                else tcpCsum h
+  tcpWriteHdr h {tcpCsum = csum}
+  putLazyByteString bs
+
+instance PacketWriteable TcpPkt where packetWrite p = tcpWrite (tcpPktHeader p)
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+
+instance Arbitrary Tcp where
+  arbitrary = do
+    src   <- arbitrary
+    dst   <- arbitrary
+    sq    <- arbitrary
+    ack   <- arbitrary
+    flags <- arbitrary
+    win   <- arbitrary
+    csum  <- arbitrary
+    urg   <- arbitrary
+    return (Tcp src dst sq ack flags win csum urg 0 True 0 0)
+
+testValidParse :: String -> (Tcp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket tcpDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testTcpPkt val
+
+testTcpPkt :: Packet -> Tcp
+testTcpPkt (PTcp p) = tcpPktHeader p
+testTcpPkt _ = error "Unexpected packet type"
+
+testTcpDefault :: () -> Bool
+testTcpDefault _ = let cmp f = defaultTcp == f in
+  testValidParse "(tcp)" cmp
+
+testTcpPkt0 :: Tcp -> Bool
+testTcpPkt0 p = let cmp f = p == f in
+  testValidParse ("(tcp offset=0 src=" ++ show (tcpSrc p) ++ " dst=" ++ show (tcpDst p) ++
+                  " seqno=" ++ show (tcpSeqNo p) ++ " ackno=" ++ show (tcpAckNo p) ++
+                  " flags=" ++ show (tcpFlags p) ++ " win=" ++ show (tcpWin p) ++ " csum=" ++
+                  show (tcpCsum p) ++ " urgno=" ++ show (tcpUrg p) ++ ")") cmp
+
+testTcpWrite :: () -> Bool
+testTcpWrite _ =
+  let expPkt = B.pack [0x04, 0xd2, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a,
+                       0x00, 0x00, 0x03, 0xf1, 0x50, 0x11, 0xff, 0xff,
+                       0x24, 0x7b, 0x00, 0x00] in
+  let cmp p = runPut (tcpWrite p Nothing B.empty) == expPkt in
+  testValidParse "(tcp src=1234 fin ack seqno=10 ackno=1009 csum=0x247b fixcsum=false)" cmp
+
+
+tcpTests :: [Test]
+tcpTests = [
+  testProperty "TCP: Default Packet" testTcpDefault,
+  testProperty "TCP: Packet 0" testTcpPkt0,
+  testProperty "TCP: Write" testTcpWrite
+  ]
+
+#endif
+
+
+
+
diff --git a/src/Teredo.hs b/src/Teredo.hs
new file mode 100644
--- /dev/null
+++ b/src/Teredo.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE CPP #-}
+module Teredo where
+
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+import Data.Word
+import Data.Bits
+
+import Lexer
+import Packet
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Text.Printf
+#endif
+
+parseTeredoPkt :: Parser Packet -> Parser TeredoPkt
+parseTeredoPkt f = permute
+  (tuple <$?> (True, try $ parseBoolAttribute "fixsrc")
+         <|?> (True, try $ parseBoolAttribute "fixdst")
+         <|?> (PPayload (Payload 0 0), f))
+  where
+    tuple fs fd =
+        TeredoPkt (Teredo 0 0 0 0 0 0 False False fs fd)
+
+teredoDecl :: Parser Packet -> Parser Packet
+teredoDecl f = do
+ symbol "teredo"
+ u <- parseTeredoPkt f
+ return (PTeredo u)
+
+mkTeredoAddress :: Word32 -> Word16 -> IPv6Addr
+mkTeredoAddress host port =
+  let host' = complement host in
+  let port' = fromIntegral $ complement port in
+  IPv6Addr 0x20010000 0xcafebabe port' host'
+
+fixTeredoAddresses :: Bool -> Bool -> Packet -> Packet -> Packet
+fixTeredoAddresses False False p _ = p
+fixTeredoAddresses s d (PIPv6 v6) (PIPv4 v4) =
+  let (sp, dp) = case head (ipv4PktPayload v4) of
+                      PUdp u -> (udpSrc $ udpPktHeader u, udpDst $ udpPktHeader u)
+                      _      -> error "Need a UDP header to generate teredo addresses" in
+  PIPv6 v6 {ipv6PktHeader =
+    (ipv6PktHeader v6) {ipv6Src = if s then mkTeredoAddress (ipv4Src $ ipv4PktHeader v4) sp
+                                       else ipv6Src $ ipv6PktHeader v6,
+                        ipv6Dst = if d then mkTeredoAddress (ipv4Dst $ ipv4PktHeader v4) dp
+                                       else ipv6Dst $ ipv6PktHeader v6}}
+fixTeredoAddresses _ _ p _ = p
+
+
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Teredo where
+  arbitrary = do
+    fs <- arbitrary
+    fd <- arbitrary
+    return (Teredo 0 0 0 0 0 0 False False fs fd)
+
+testValidParse :: String -> (Teredo -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket teredoDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testTeredoPkt val
+
+testTeredoDefault :: () -> Bool
+testTeredoDefault _ = let cmp f = defaultTeredo == f in
+  testValidParse "(teredo)" cmp
+
+testTeredoPkt :: Packet -> Teredo
+testTeredoPkt (PTeredo f) = teredoPktHeader f
+testTeredoPkt _ = error "Unexpected packet type"
+
+testTeredoPacket :: Teredo -> Bool
+testTeredoPacket pkt =
+  let cmp p = pkt == p in
+  testValidParse (printf "(teredo fixsrc=%s fixdst=%s)"
+                  (showBool (teredoFixSrc pkt))
+                  (showBool (teredoFixDst pkt))) cmp
+
+teredoTests :: [Test]
+teredoTests = [
+  testProperty "Teredo: Default Packet" testTeredoDefault,
+  testProperty "Teredo: Packet" testTeredoPacket
+  ]
+#endif
+
+
+
diff --git a/src/Udp.hs b/src/Udp.hs
new file mode 100644
--- /dev/null
+++ b/src/Udp.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE CPP #-}
+module Udp where
+
+import Data.Binary.Put
+import qualified Data.ByteString.Lazy as B
+import Data.Word
+
+import Text.ParserCombinators.Parsec
+import Text.ParserCombinators.Parsec.Perm
+
+import Lexer
+import Packet
+import PseudoSum
+import Util
+
+#ifdef HRWS_TEST
+import Debug.Trace
+import Test.QuickCheck hiding ((.&.))
+import Test.Framework (Test)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+#endif
+
+parseUdpSrc :: Parser Word16
+parseUdpSrc = parseIntAttribute "src"
+
+parseUdpDst :: Parser Word16
+parseUdpDst = parseIntAttribute "dst"
+
+parseUdpLen :: Parser Word16
+parseUdpLen = parseIntAttribute "len"
+
+parseUdpCsum :: Parser Word16
+parseUdpCsum = parseIntAttribute "csum"
+
+parseUdpFixCsum :: Parser Bool
+parseUdpFixCsum = parseBoolAttribute "fixcsum"
+
+parseUdpPkt :: Parser Packet -> Parser UdpPkt
+parseUdpPkt f = permute
+  (tuple <$?> (7, parseUdpSrc)
+         <|?> (7, parseUdpDst)
+         <|?> (8, parseUdpLen)
+         <|?> (0, parseUdpCsum)
+         <|?> ([PPayload defaultPayload], parsePayload f)
+         <|?> (True, parseUdpFixCsum))
+  where
+    tuple s d l c p fc = UdpPkt (Udp s d l c fc) p
+
+udpDecl :: Parser Packet -> Parser Packet
+udpDecl f = do
+ symbol "udp"
+ u <- parseUdpPkt f
+ return (PUdp u)
+
+udpWriteHdr :: Udp -> Put
+udpWriteHdr p = do
+    putWord16be (udpSrc p)
+    putWord16be (udpDst p)
+    putWord16be (udpLen p)
+    putWord16be (udpCsum p)
+
+udpWrite :: Udp -> Maybe Packet -> B.ByteString -> Put
+udpWrite h mp bs = do
+    let ulen = fromIntegral $ 8 + B.length bs
+    let hdr = h {udpLen = ulen}
+    let csum = if udpCorrectCsum hdr
+                  then
+                    let sum32 = csumAdd (B.unpack $ runPut $ udpWriteHdr hdr) $ genPseudoSum mp ulen in
+                    csumFin $ csumAdd (B.unpack bs) sum32
+                  else udpCsum hdr
+    udpWriteHdr hdr {udpCsum = csum}
+    putLazyByteString bs
+
+instance PacketWriteable UdpPkt where packetWrite p = udpWrite (udpPktHeader p)
+
+#ifdef HRWS_TEST
+{- Unit Tests -}
+
+instance Arbitrary Udp where
+  arbitrary = do
+    src <- arbitrary
+    dst <- arbitrary
+    len <- arbitrary
+    csum <- arbitrary
+    return (Udp src dst len csum True)
+
+testValidParse :: String -> (Udp -> Bool) -> Bool
+testValidParse str fn =
+  case parse (dummyParsePacket udpDecl) "packet parse" str of
+       Left  err -> trace (show err) False
+       Right val -> fn $ testUdpPkt val
+
+testUdpPkt :: Packet -> Udp
+testUdpPkt (PUdp p) = udpPktHeader p
+testUdpPkt _ = error "Unexpected packet type"
+
+testUdpDefault :: () -> Bool
+testUdpDefault _ = let cmp f = defaultUdp == f in
+  testValidParse "(udp)" cmp
+
+
+testUdpPkt0 :: Udp -> Bool
+testUdpPkt0 u = let cmp p = u == p in
+  testValidParse ("(udp src=" ++ show (udpSrc u) ++ " dst=" ++ show (udpDst u) ++ " len=" ++
+                  show (udpLen u) ++ " csum=" ++ show (udpCsum u) ++ " fixcsum=true)") cmp
+
+testUdpWrite :: () -> Bool
+testUdpWrite _ =
+  let expPkt = B.pack [0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0xff, 0xc0] in
+  let cmp p = runPut (udpWrite p Nothing B.empty) == expPkt in
+   testValidParse "(udp dst=7 src=8 len=8 csum=0xffc0 fixcsum=false)" cmp
+
+udpTests :: [Test]
+udpTests = [
+  testProperty "UDP: default" testUdpDefault,
+  testProperty "UDP: Pkt0" testUdpPkt0,
+  testProperty "UDP: Write" testUdpWrite
+  ]
+
+#endif
+
+
+
diff --git a/src/Util.hs b/src/Util.hs
new file mode 100644
--- /dev/null
+++ b/src/Util.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE CPP #-}
+
+module Util where
+import Data.Word
+import Data.Bits
+import Packet
+import Text.ParserCombinators.Parsec
+
+import Lexer
+
+csumAdd :: [Word8] -> Word32 -> Word32
+csumAdd [] s = s
+csumAdd [a] s = s + fromIntegral a
+csumAdd (a:b:as) s =
+  let s' = s + shiftL (fromIntegral b) 8 + fromIntegral a in
+  csumAdd as s'
+
+csumFin :: Word32 -> Word16
+csumFin s =
+  let s' = shiftR s 16 + (.&.) s 0xffff in
+  let s'' = fromIntegral (complement $ shiftR s' 16 + s') in
+  shiftL s'' 8 .|. shiftR s'' 8
+
+
+parseBoolAttribute :: String -> Parser Bool
+parseBoolAttribute s = do
+  symbol s
+  symbol "="
+  do { symbol "true"; return True} <|> do { symbol "false"; return False}
+
+parseIntAttribute :: Num b => String -> Parser b
+parseIntAttribute s = do
+  symbol s
+  symbol "="
+  a <- integer
+  whiteSpace
+  return (fromIntegral a)
+
+ipv4AddressDecl :: Parser Word32
+ipv4AddressDecl = do
+  a0 <- integer
+  char '.'
+  a1 <- integer
+  char '.'
+  a2 <- integer
+  char '.'
+  a3 <- integer
+  let a = a0 `shiftL` 24 .|. a1 `shiftL` 16 .|. a2 `shiftL` 8 .|. a3
+  return (fromIntegral a)
+
+parseIPv4Address :: String -> Parser Word32
+parseIPv4Address s = do
+  symbol s
+  symbol "="
+  a <- ipv4AddressDecl
+  whiteSpace
+  return a
+
+showIPv4Address :: Word32 -> String
+showIPv4Address ip =
+  let a0 = ip `shiftR` 24 in
+  let a1 = ip `shiftR` 16 .&. 0xff in
+  let a2 = ip `shiftR` 8 .&. 0xff in
+  let a3 = ip .&. 0xff in
+  show a0 ++ "." ++ show a1 ++ "." ++ show a2 ++ "." ++ show a3
+
+parsePacketList :: Parser Packet -> Parser [Packet]
+parsePacketList f = do
+  whiteSpace
+  char '{'
+  pls <- commaSep f
+  char '}'
+  whiteSpace
+  return pls
+
+parsePayload :: Parser Packet -> Parser [Packet]
+parsePayload f =
+  try (parsePacketList f) <|> do { p <- f; return [p]}
+
+#ifdef HRWS_TEST
+
+dummyParsePacket :: (Parser Packet -> Parser Packet) -> Parser Packet
+dummyParsePacket f= do
+  char '('
+  p <- f (dummyParsePacket f)
+  char ')'
+  return p
+
+showBool :: Bool -> String
+showBool True = "true"
+showBool False = "false"
+
+#endif
diff --git a/tests/Qt.hs b/tests/Qt.hs
new file mode 100644
--- /dev/null
+++ b/tests/Qt.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE CPP#-}
+
+
+import Test.Framework (Test, defaultMain)
+
+import Ethernet
+import Fragv6
+import Gre
+import Gtp
+import HexPayload
+import HopByHop
+import Icmp
+import IcmpV6
+import IPv4
+import IPv6
+import L2tp
+import PadN
+import Parser
+import Ppp
+import Tcp
+import Teredo
+import Udp
+
+main :: IO ()
+main = defaultMain tests
+
+tests ::[Test]
+tests =
+  ethTests ++
+  fragv6Tests ++
+  greTests ++
+  gtpTests ++
+  hexPayloadTests ++
+  hopByHopTests ++
+  icmpTests ++
+  icmpV6Tests ++
+  ipv4Tests ++
+  ipv6Tests ++
+  l2tpTests ++
+  padNTests ++
+  parserTests ++
+  pppTests ++
+  tcpTests ++
+  teredoTests ++
+  udpTests
+
+
