packages feed

rws (empty) → 0.1.1.2

raw patch · 127 files changed

+7825/−0 lines, 127 filesdep +QuickCheckdep +basedep +binarysetup-changed

Dependencies added: QuickCheck, base, binary, bytestring, parsec, test-framework, test-framework-quickcheck2

Files

+ LICENSE view
@@ -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.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ rws.cabal view
@@ -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
+ samples/fragv4.pkt view
@@ -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)))+
+ samples/fragv4_ooo.pkt view
@@ -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)))+
+ samples/fragv6.pkt view
@@ -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))))
+ samples/fragv6_awsome.m4 view
@@ -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))))++
+ samples/fragv6_awsome.pkt view
@@ -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))))++
+ samples/fragv6_awsome_hbh.m4 view
@@ -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))))++
+ samples/fragv6_dst.pkt view
@@ -0,0 +1,4 @@+(eth type=0x86dd+ (ipv6 nh = 60+  (hopbyhop nh=17 len=13 (padn len=4+   (payload pattern=0x1)))))
+ samples/fragv6_hbh.pkt view
@@ -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))))
+ samples/gre.pkt view
@@ -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))))))
+ samples/gtp.pkt view
@@ -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)))))))
+ samples/gtp2.pkt view
@@ -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)))))))))))
+ samples/gtp3.pkt view
@@ -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)))))))
+ samples/gtp_3.pkt view
@@ -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)))))))+
+ samples/gtp_33.pkt view
@@ -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))))))))+
+ samples/gtp_migration.pkt view
@@ -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)))))))
+ samples/hex.pkt view
@@ -0,0 +1,1 @@+(eth (ipv4 (udp (hex data=64313a7264323a696432))))
+ samples/hopbyhop.pkt view
@@ -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))))))
+ samples/icmp.pkt view
@@ -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))))
+ samples/icmp_nat.pkt view
@@ -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))))++
+ samples/icmp_tcp.pkt view
@@ -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))))))
+ samples/icmpv6.pkt view
@@ -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)))
+ samples/icmpv6_short.pkt view
@@ -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)))
+ samples/ip4ipv6.pkt view
@@ -0,0 +1,1 @@+(eth (ipv4 prot=41 (ipv6 (udp (payload )))))
+ samples/ipv4_frag_ipv4.m4 view
@@ -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)+
+ samples/ipv4_frag_ipv4.pkt view
@@ -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)))++
+ samples/ipv4_gre_udp.pkt view
@@ -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))))+
+ samples/ipv4_ipv4.pkt view
@@ -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)))))
+ samples/ipv4_ipv4_1280.pkt view
@@ -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)))))
+ samples/ipv4_ipv4_666.pkt view
@@ -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)))))
+ samples/ipv4_ipv4_overlapping.m4 view
@@ -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)+
+ samples/ipv4_ipv4_overlapping.pkt view
@@ -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)))))++
+ samples/ipv4_ipv4_udp.pkt view
@@ -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))))+
+ samples/ipv4_overlapping.m4 view
@@ -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)+
+ samples/ipv4_overlapping.pkt view
@@ -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))))++
+ samples/ipv6_frag_ipv6.m4 view
@@ -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)+
+ samples/ipv6_frag_ipv6.pkt view
@@ -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))))++
+ samples/ipv6_gtp_ipv4_teredo.pkt view
@@ -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))))))))))
+ samples/ipv6_ipv4.pkt view
@@ -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)))))
+ samples/ipv6_ipv4_666.pkt view
@@ -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)))))+
+ samples/ipv6_multicast.pkt view
@@ -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)))
+ samples/l2tp.pkt view
@@ -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))))))))
+ samples/l2tp_invalid_len.pkt view
@@ -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))))))))+
+ samples/l2tp_ipv4_ipv6.pkt view
@@ -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))))))))++
+ samples/l2tp_ns_nr.pkt view
@@ -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))))))))
+ samples/l2tp_off_no_len.pkt view
@@ -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))))))))
+ samples/l2tp_teredo.pkt view
@@ -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))))))))+
+ samples/l2tp_too_large_off.pkt view
@@ -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))))))))+
+ samples/l2tpv6.pkt view
@@ -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))))))))++
+ samples/multi_payload.pkt view
@@ -0,0 +1,2 @@+(eth type=0x800 {(ipv4 (udp {(payload pattern=0xbb),(payload pattern=0xaa)})), (payload pattern=0xab)})+(eth type=0x800 (ipv4 (udp)))
+ samples/nat.pkt view
@@ -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)))
+ samples/nat4.pkt view
@@ -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)))+
+ samples/nat_col.pkt view
@@ -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)))
+ samples/nat_l2tp.pkt view
@@ -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))))))))++++
+ samples/nat_pb.pkt view
@@ -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)))+++
+ samples/nat_teredo.pkt view
@@ -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)))))))++++
+ samples/ppp.pkt view
@@ -0,0 +1,2 @@+(ppp  )+
+ samples/rewrites.pkt view
@@ -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))))+++  ++
+ samples/rewrites_ipv6.pkt view
@@ -0,0 +1,7 @@+(eth type=0x86dd+ (ipv6  tcl = 10 nh = 17 (udp src=1234 (payload pattern=0 length=8))))+++  ++
+ samples/tcp.pkt view
@@ -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)))++
+ samples/tcp_moar.m4 view
@@ -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')+++++
+ samples/tcp_moar.pkt view
@@ -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)))+++++
+ samples/tcp_ooo.m4 view
@@ -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))+++
+ samples/tcp_ooo.pkt view
@@ -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))))+++
+ samples/tcp_ooo2.m4 view
@@ -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)))+++++
+ samples/tcp_ooo2.pkt view
@@ -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)))+++++
+ samples/tcp_ooo3.m4 view
@@ -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)))+++++
+ samples/tcp_ooo3.pkt view
@@ -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)))+++++
+ samples/tcp_ooo4.m4 view
@@ -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)))+++++
+ samples/tcp_ooo_wrap.pkt view
@@ -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))))+++
+ samples/tcp_reset0.pkt view
@@ -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)))++
+ samples/tcp_reset1.pkt view
@@ -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)))+
+ samples/tcp_resyn.m4 view
@@ -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))+++++
+ samples/tcp_retransmission.pkt view
@@ -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))))+
+ samples/tcp_retransmission2.pkt view
@@ -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))))++++
+ samples/tcp_retransmission_with_drops.pkt view
@@ -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))))+
+ samples/tcp_simopen.m4 view
@@ -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')+++++
+ samples/tcp_simopen.pkt view
@@ -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)))+++++
+ samples/tcp_single.pkt view
@@ -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)))+
+ samples/tcp_ts.pkt view
@@ -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)))++
+ samples/tcp_wsc.pkt view
@@ -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)))++
+ samples/tcpv6.pkt view
@@ -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)))++
+ samples/teredo.pkt view
@@ -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)))))))
+ samples/teredo2.pkt view
@@ -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)))))))
+ samples/tipc2.pkt view
@@ -0,0 +1,2 @@+(eth type=0x88CA (tipc hsize=8 mtype=3 onode=0x010203 dnode=0x040506 (payload length= 0)))+
+ samples/tunnel_madness.pkt view
@@ -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))))))))))))))))))))))))))))))))))++
+ samples/udp.pkt view
@@ -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))))
+ samples/udp_666.pkt view
@@ -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))))
+ samples/udp_666_1280.pkt view
@@ -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))))
+ samples/udp_666_4_cons.pkt view
@@ -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))))+
+ samples/udp_666_4_hosts.pkt view
@@ -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))))+
+ samples/udp_666_4_hosts_2_nets.pkt view
@@ -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))))+
+ samples/udp_666_ecn.pkt view
@@ -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))))
+ samples/udp_666_ecn_ipv6.pkt view
@@ -0,0 +1,7 @@+(eth type=0x86dd+ (ipv6  tcl = 0x12 nh = 17 (udp src=1234 (payload pattern=0 length=8))))+++  ++
+ samples/udp_666b.pkt view
@@ -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))))
+ samples/udp_esp_sha1.pkt view
@@ -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)))))))
+ samples/udpv6.pkt view
@@ -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)))
+ samples/udpv6_666_4_hosts_2_nets.pkt view
@@ -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))))+
+ samples/udpv6_multicast.pkt view
@@ -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)))+
+ samples/udpv6b.pkt view
@@ -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)))
+ src/Ethernet.hs view
@@ -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
+ src/Fragv6.hs view
@@ -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+
+ src/Gre.hs view
@@ -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+
+ src/Gtp.hs view
@@ -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
+ src/HexPayload.hs view
@@ -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+
+ src/HopByHop.hs view
@@ -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
+ src/IPv4.hs view
@@ -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++
+ src/IPv6.hs view
@@ -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+++
+ src/Icmp.hs view
@@ -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+
+ src/IcmpV6.hs view
@@ -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
+ src/L2tp.hs view
@@ -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+
+ src/Lexer.hs view
@@ -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++
+ src/Packet.hs view
@@ -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)+++
+ src/PadN.hs view
@@ -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++
+ src/Parser.hs view
@@ -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+
+ src/Payload.hs view
@@ -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+
+ src/Ppp.hs view
@@ -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+
+ src/PseudoSum.hs view
@@ -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++
+ src/Run.hs view
@@ -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+  
+ src/SerializePcap.hs view
@@ -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+
+ src/Tcp.hs view
@@ -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++++
+ src/Teredo.hs view
@@ -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+++
+ src/Udp.hs view
@@ -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+++
+ src/Util.hs view
@@ -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
+ tests/Qt.hs view
@@ -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++