I: pbuilder: network access will be disabled during build I: Current time: Fri Jul 12 21:09:15 +14 2024 I: pbuilder-time-stamp: 1720768155 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: using eatmydata during job I: Copying source file I: copying [gopacket_1.1.19-3.dsc] I: copying [./gopacket_1.1.19.orig.tar.gz] I: copying [./gopacket_1.1.19-3.debian.tar.xz] I: Extracting source gpgv: Signature made Wed Feb 8 21:31:06 2023 +14 gpgv: using EDDSA key 9185D4F57767AEEE6C55D41E7F44FA25EA5514CB gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./gopacket_1.1.19-3.dsc: no acceptable signature found dpkg-source: info: extracting gopacket in gopacket-1.1.19 dpkg-source: info: unpacking gopacket_1.1.19.orig.tar.gz dpkg-source: info: unpacking gopacket_1.1.19-3.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 0001-Skip-comparing-libpcap-output-in-TestBPFInstruction.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/14772/tmp/hooks/D01_modify_environment starting debug: Running on ionos16-i386. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Jul 12 21:09 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/14772/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/14772/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") BASH_VERSION='5.2.15(1)-release' BUILDDIR=/build BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=i386 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=15 ' DIRSTACK=() DISTRIBUTION=bookworm EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=i686 HOST_ARCH=i386 IFS=' ' INVOCATION_ID=d20bb3cee7cf4892abbb5d131fb173f2 LANG=C LANGUAGE=de_CH:de LC_ALL=C LD_LIBRARY_PATH=/usr/lib/libeatmydata LD_PRELOAD=libeatmydata.so MACHTYPE=i686-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=14772 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.ACfhvs3y/pbuilderrc_nR8o --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ACfhvs3y/b2 --logfile b2/build.log --extrapackages usrmerge gopacket_1.1.19-3.dsc' SUDO_GID=112 SUDO_UID=107 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://85.184.249.68:3128 I: uname -a Linux i-capture-the-hostname 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux I: ls -l /bin total 6036 -rwxr-xr-x 1 root root 1408088 Apr 24 2023 bash -rwxr-xr-x 3 root root 38404 Sep 19 2022 bunzip2 -rwxr-xr-x 3 root root 38404 Sep 19 2022 bzcat lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4893 Nov 28 2021 bzexe lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep -rwxr-xr-x 3 root root 38404 Sep 19 2022 bzip2 -rwxr-xr-x 1 root root 17892 Sep 19 2022 bzip2recover lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore -rwxr-xr-x 1 root root 42920 Sep 21 2022 cat -rwxr-xr-x 1 root root 79816 Sep 21 2022 chgrp -rwxr-xr-x 1 root root 67496 Sep 21 2022 chmod -rwxr-xr-x 1 root root 79816 Sep 21 2022 chown -rwxr-xr-x 1 root root 162024 Sep 21 2022 cp -rwxr-xr-x 1 root root 136916 Jan 6 2023 dash -rwxr-xr-x 1 root root 137160 Sep 21 2022 date -rwxr-xr-x 1 root root 100364 Sep 21 2022 dd -rwxr-xr-x 1 root root 108940 Sep 21 2022 df -rwxr-xr-x 1 root root 162152 Sep 21 2022 dir -rwxr-xr-x 1 root root 87760 Mar 24 2023 dmesg lrwxrwxrwx 1 root root 8 Dec 20 2022 dnsdomainname -> hostname lrwxrwxrwx 1 root root 8 Dec 20 2022 domainname -> hostname -rwxr-xr-x 1 root root 38760 Sep 21 2022 echo -rwxr-xr-x 1 root root 41 Jan 25 2023 egrep -rwxr-xr-x 1 root root 34664 Sep 21 2022 false -rwxr-xr-x 1 root root 41 Jan 25 2023 fgrep -rwxr-xr-x 1 root root 84272 Mar 24 2023 findmnt -rwsr-xr-x 1 root root 30240 Mar 23 2023 fusermount -rwxr-xr-x 1 root root 218680 Jan 25 2023 grep -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe -rwxr-xr-x 1 root root 100952 Apr 10 2022 gzip -rwxr-xr-x 1 root root 21916 Dec 20 2022 hostname -rwxr-xr-x 1 root root 75756 Sep 21 2022 ln -rwxr-xr-x 1 root root 55600 Mar 24 2023 login -rwxr-xr-x 1 root root 162152 Sep 21 2022 ls -rwxr-xr-x 1 root root 214568 Mar 24 2023 lsblk -rwxr-xr-x 1 root root 96328 Sep 21 2022 mkdir -rwxr-xr-x 1 root root 84008 Sep 21 2022 mknod -rwxr-xr-x 1 root root 38792 Sep 21 2022 mktemp -rwxr-xr-x 1 root root 63016 Mar 24 2023 more -rwsr-xr-x 1 root root 58912 Mar 24 2023 mount -rwxr-xr-x 1 root root 13856 Mar 24 2023 mountpoint -rwxr-xr-x 1 root root 157932 Sep 21 2022 mv lrwxrwxrwx 1 root root 8 Dec 20 2022 nisdomainname -> hostname lrwxrwxrwx 1 root root 14 Apr 3 2023 pidof -> /sbin/killall5 -rwxr-xr-x 1 root root 38792 Sep 21 2022 pwd lrwxrwxrwx 1 root root 4 Apr 24 2023 rbash -> bash -rwxr-xr-x 1 root root 51080 Sep 21 2022 readlink -rwxr-xr-x 1 root root 75720 Sep 21 2022 rm -rwxr-xr-x 1 root root 51080 Sep 21 2022 rmdir -rwxr-xr-x 1 root root 22308 Nov 3 2022 run-parts -rwxr-xr-x 1 root root 133224 Jan 6 2023 sed lrwxrwxrwx 1 root root 9 Jul 12 21:09 sh -> /bin/bash -rwxr-xr-x 1 root root 38760 Sep 21 2022 sleep -rwxr-xr-x 1 root root 87976 Sep 21 2022 stty -rwsr-xr-x 1 root root 83492 Mar 24 2023 su -rwxr-xr-x 1 root root 38792 Sep 21 2022 sync -rwxr-xr-x 1 root root 598456 Apr 7 2023 tar -rwxr-xr-x 1 root root 13860 Nov 3 2022 tempfile -rwxr-xr-x 1 root root 120776 Sep 21 2022 touch -rwxr-xr-x 1 root root 34664 Sep 21 2022 true -rwxr-xr-x 1 root root 17892 Mar 23 2023 ulockmgr_server -rwsr-xr-x 1 root root 30236 Mar 24 2023 umount -rwxr-xr-x 1 root root 38760 Sep 21 2022 uname -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress -rwxr-xr-x 1 root root 162152 Sep 21 2022 vdir -rwxr-xr-x 1 root root 71216 Mar 24 2023 wdctl lrwxrwxrwx 1 root root 8 Dec 20 2022 ypdomainname -> hostname -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew I: user script /srv/workspace/pbuilder/14772/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: i386 Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org> Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-sequence-golang, golang-go, golang-golang-x-net-dev, golang-golang-x-sys-dev, libpcap0.8-dev, linux-libc-dev dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19599 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-golang; however: Package dh-sequence-golang is not installed. pbuilder-satisfydepends-dummy depends on golang-go; however: Package golang-go is not installed. pbuilder-satisfydepends-dummy depends on golang-golang-x-net-dev; however: Package golang-golang-x-net-dev is not installed. pbuilder-satisfydepends-dummy depends on golang-golang-x-sys-dev; however: Package golang-golang-x-sys-dev is not installed. pbuilder-satisfydepends-dummy depends on libpcap0.8-dev; however: Package libpcap0.8-dev is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-golang{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} golang-1.19-go{a} golang-1.19-src{a} golang-go{a} golang-golang-x-net-dev{a} golang-golang-x-sys-dev{a} golang-golang-x-text-dev{a} golang-src{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdbus-1-3{a} libdbus-1-dev{a} libdebhelper-perl{a} libelf1{a} libfile-stripnondeterminism-perl{a} libicu72{a} libmagic-mgc{a} libmagic1{a} libpcap0.8{a} libpcap0.8-dev{a} libpipeline1{a} libpkgconf3{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} m4{a} man-db{a} pkg-config{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} sensible-utils{a} sgml-base{a} xml-core{a} The following packages are RECOMMENDED but will NOT be installed: curl dbus libarchive-cpio-perl libltdl-dev libmail-sendmail-perl lynx wget 0 packages upgraded, 48 newly installed, 0 to remove and 0 not upgraded. Need to get 105 MB of archives. After unpacking 565 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian bookworm/main i386 sgml-base all 1.31 [15.4 kB] Get: 2 http://deb.debian.org/debian bookworm/main i386 sensible-utils all 0.0.17+nmu1 [19.0 kB] Get: 3 http://deb.debian.org/debian bookworm/main i386 libmagic-mgc i386 1:5.44-3 [305 kB] Get: 4 http://deb.debian.org/debian bookworm/main i386 libmagic1 i386 1:5.44-3 [114 kB] Get: 5 http://deb.debian.org/debian bookworm/main i386 file i386 1:5.44-3 [42.5 kB] Get: 6 http://deb.debian.org/debian bookworm/main i386 gettext-base i386 0.21-12 [162 kB] Get: 7 http://deb.debian.org/debian bookworm/main i386 libuchardet0 i386 0.0.7-1 [67.9 kB] Get: 8 http://deb.debian.org/debian bookworm/main i386 groff-base i386 1.22.4-10 [932 kB] Get: 9 http://deb.debian.org/debian bookworm/main i386 bsdextrautils i386 2.38.1-5+b1 [90.3 kB] Get: 10 http://deb.debian.org/debian bookworm/main i386 libpipeline1 i386 1.5.7-1 [40.0 kB] Get: 11 http://deb.debian.org/debian bookworm/main i386 man-db i386 2.11.2-2 [1397 kB] Get: 12 http://deb.debian.org/debian bookworm/main i386 m4 i386 1.4.19-3 [294 kB] Get: 13 http://deb.debian.org/debian bookworm/main i386 autoconf all 2.71-3 [332 kB] Get: 14 http://deb.debian.org/debian bookworm/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 15 http://deb.debian.org/debian bookworm/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 16 http://deb.debian.org/debian bookworm/main i386 autopoint all 0.21-12 [495 kB] Get: 17 http://deb.debian.org/debian bookworm/main i386 libdebhelper-perl all 13.11.4 [81.2 kB] Get: 18 http://deb.debian.org/debian bookworm/main i386 libtool all 2.4.7-5 [517 kB] Get: 19 http://deb.debian.org/debian bookworm/main i386 dh-autoreconf all 20 [17.1 kB] Get: 20 http://deb.debian.org/debian bookworm/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 21 http://deb.debian.org/debian bookworm/main i386 libsub-override-perl all 0.09-4 [9304 B] Get: 22 http://deb.debian.org/debian bookworm/main i386 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 23 http://deb.debian.org/debian bookworm/main i386 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 24 http://deb.debian.org/debian bookworm/main i386 libelf1 i386 0.188-2.1 [179 kB] Get: 25 http://deb.debian.org/debian bookworm/main i386 dwz i386 0.15-1 [118 kB] Get: 26 http://deb.debian.org/debian bookworm/main i386 libicu72 i386 72.1-3 [9541 kB] Get: 27 http://deb.debian.org/debian bookworm/main i386 libxml2 i386 2.9.14+dfsg-1.2 [720 kB] Get: 28 http://deb.debian.org/debian bookworm/main i386 gettext i386 0.21-12 [1311 kB] Get: 29 http://deb.debian.org/debian bookworm/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 30 http://deb.debian.org/debian bookworm/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 31 http://deb.debian.org/debian bookworm/main i386 debhelper all 13.11.4 [942 kB] Get: 32 http://deb.debian.org/debian bookworm/main i386 dh-golang all 1.59 [27.8 kB] Get: 33 http://deb.debian.org/debian bookworm/main i386 golang-1.19-src all 1.19.8-2 [18.3 MB] Get: 34 http://deb.debian.org/debian bookworm/main i386 golang-1.19-go i386 1.19.8-2 [61.2 MB] Get: 35 http://deb.debian.org/debian bookworm/main i386 golang-src all 2:1.19~1 [5756 B] Get: 36 http://deb.debian.org/debian bookworm/main i386 golang-go i386 2:1.19~1 [45.0 kB] Get: 37 http://deb.debian.org/debian bookworm/main i386 golang-golang-x-sys-dev all 0.3.0-1 [393 kB] Get: 38 http://deb.debian.org/debian bookworm/main i386 golang-golang-x-text-dev all 0.7.0-1 [3863 kB] Get: 39 http://deb.debian.org/debian bookworm/main i386 golang-golang-x-net-dev all 1:0.7.0+dfsg-1 [731 kB] Get: 40 http://deb.debian.org/debian bookworm/main i386 libdbus-1-3 i386 1.14.6-1 [213 kB] Get: 41 http://deb.debian.org/debian bookworm/main i386 libpkgconf3 i386 1.8.1-1 [38.3 kB] Get: 42 http://deb.debian.org/debian bookworm/main i386 pkgconf-bin i386 1.8.1-1 [29.8 kB] Get: 43 http://deb.debian.org/debian bookworm/main i386 pkgconf i386 1.8.1-1 [25.9 kB] Get: 44 http://deb.debian.org/debian bookworm/main i386 pkg-config i386 1.8.1-1 [13.7 kB] Get: 45 http://deb.debian.org/debian bookworm/main i386 xml-core all 0.18+nmu1 [23.8 kB] Get: 46 http://deb.debian.org/debian bookworm/main i386 libdbus-1-dev i386 1.14.6-1 [257 kB] Get: 47 http://deb.debian.org/debian bookworm/main i386 libpcap0.8 i386 1.10.3-1 [164 kB] Get: 48 http://deb.debian.org/debian bookworm/main i386 libpcap0.8-dev i386 1.10.3-1 [291 kB] Fetched 105 MB in 1s (98.4 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sgml-base. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19599 files and directories currently installed.) Preparing to unpack .../00-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.17+nmu1_all.deb ... Unpacking sensible-utils (0.0.17+nmu1) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.44-3_i386.deb ... Unpacking libmagic-mgc (1:5.44-3) ... Selecting previously unselected package libmagic1:i386. Preparing to unpack .../03-libmagic1_1%3a5.44-3_i386.deb ... Unpacking libmagic1:i386 (1:5.44-3) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.44-3_i386.deb ... Unpacking file (1:5.44-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.21-12_i386.deb ... Unpacking gettext-base (0.21-12) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../06-libuchardet0_0.0.7-1_i386.deb ... Unpacking libuchardet0:i386 (0.0.7-1) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.22.4-10_i386.deb ... Unpacking groff-base (1.22.4-10) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.38.1-5+b1_i386.deb ... Unpacking bsdextrautils (2.38.1-5+b1) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../09-libpipeline1_1.5.7-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.7-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.11.2-2_i386.deb ... Unpacking man-db (2.11.2-2) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-3_i386.deb ... Unpacking m4 (1.4.19-3) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.21-12_all.deb ... Unpacking autopoint (0.21-12) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.11.4_all.deb ... Unpacking libdebhelper-perl (13.11.4) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.4.7-5_all.deb ... Unpacking libtool (2.4.7-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../18-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../19-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../20-libsub-override-perl_0.09-4_all.deb ... Unpacking libsub-override-perl (0.09-4) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../21-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../22-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1:i386. Preparing to unpack .../23-libelf1_0.188-2.1_i386.deb ... Unpacking libelf1:i386 (0.188-2.1) ... Selecting previously unselected package dwz. Preparing to unpack .../24-dwz_0.15-1_i386.deb ... Unpacking dwz (0.15-1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../25-libicu72_72.1-3_i386.deb ... Unpacking libicu72:i386 (72.1-3) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../26-libxml2_2.9.14+dfsg-1.2_i386.deb ... Unpacking libxml2:i386 (2.9.14+dfsg-1.2) ... Selecting previously unselected package gettext. Preparing to unpack .../27-gettext_0.21-12_i386.deb ... Unpacking gettext (0.21-12) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../28-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../29-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../30-debhelper_13.11.4_all.deb ... Unpacking debhelper (13.11.4) ... Selecting previously unselected package dh-golang. Preparing to unpack .../31-dh-golang_1.59_all.deb ... Unpacking dh-golang (1.59) ... Selecting previously unselected package golang-1.19-src. Preparing to unpack .../32-golang-1.19-src_1.19.8-2_all.deb ... Unpacking golang-1.19-src (1.19.8-2) ... Selecting previously unselected package golang-1.19-go. Preparing to unpack .../33-golang-1.19-go_1.19.8-2_i386.deb ... Unpacking golang-1.19-go (1.19.8-2) ... Selecting previously unselected package golang-src. Preparing to unpack .../34-golang-src_2%3a1.19~1_all.deb ... Unpacking golang-src (2:1.19~1) ... Selecting previously unselected package golang-go:i386. Preparing to unpack .../35-golang-go_2%3a1.19~1_i386.deb ... Unpacking golang-go:i386 (2:1.19~1) ... Selecting previously unselected package golang-golang-x-sys-dev. Preparing to unpack .../36-golang-golang-x-sys-dev_0.3.0-1_all.deb ... Unpacking golang-golang-x-sys-dev (0.3.0-1) ... Selecting previously unselected package golang-golang-x-text-dev. Preparing to unpack .../37-golang-golang-x-text-dev_0.7.0-1_all.deb ... Unpacking golang-golang-x-text-dev (0.7.0-1) ... Selecting previously unselected package golang-golang-x-net-dev. Preparing to unpack .../38-golang-golang-x-net-dev_1%3a0.7.0+dfsg-1_all.deb ... Unpacking golang-golang-x-net-dev (1:0.7.0+dfsg-1) ... Selecting previously unselected package libdbus-1-3:i386. Preparing to unpack .../39-libdbus-1-3_1.14.6-1_i386.deb ... Unpacking libdbus-1-3:i386 (1.14.6-1) ... Selecting previously unselected package libpkgconf3:i386. Preparing to unpack .../40-libpkgconf3_1.8.1-1_i386.deb ... Unpacking libpkgconf3:i386 (1.8.1-1) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../41-pkgconf-bin_1.8.1-1_i386.deb ... Unpacking pkgconf-bin (1.8.1-1) ... Selecting previously unselected package pkgconf:i386. Preparing to unpack .../42-pkgconf_1.8.1-1_i386.deb ... Unpacking pkgconf:i386 (1.8.1-1) ... Selecting previously unselected package pkg-config:i386. Preparing to unpack .../43-pkg-config_1.8.1-1_i386.deb ... Unpacking pkg-config:i386 (1.8.1-1) ... Selecting previously unselected package xml-core. Preparing to unpack .../44-xml-core_0.18+nmu1_all.deb ... Unpacking xml-core (0.18+nmu1) ... Selecting previously unselected package libdbus-1-dev:i386. Preparing to unpack .../45-libdbus-1-dev_1.14.6-1_i386.deb ... Unpacking libdbus-1-dev:i386 (1.14.6-1) ... Selecting previously unselected package libpcap0.8:i386. Preparing to unpack .../46-libpcap0.8_1.10.3-1_i386.deb ... Unpacking libpcap0.8:i386 (1.10.3-1) ... Selecting previously unselected package libpcap0.8-dev:i386. Preparing to unpack .../47-libpcap0.8-dev_1.10.3-1_i386.deb ... Unpacking libpcap0.8-dev:i386 (1.10.3-1) ... Setting up libpipeline1:i386 (1.5.7-1) ... Setting up libicu72:i386 (72.1-3) ... Setting up bsdextrautils (2.38.1-5+b1) ... Setting up libmagic-mgc (1:5.44-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.11.4) ... Setting up golang-golang-x-sys-dev (0.3.0-1) ... Setting up libmagic1:i386 (1:5.44-3) ... Setting up gettext-base (0.21-12) ... Setting up golang-1.19-src (1.19.8-2) ... Setting up m4 (1.4.19-3) ... Setting up file (1:5.44-3) ... Setting up autotools-dev (20220109.1) ... Setting up libpkgconf3:i386 (1.8.1-1) ... Setting up libdbus-1-3:i386 (1.14.6-1) ... Setting up autopoint (0.21-12) ... Setting up pkgconf-bin (1.8.1-1) ... Setting up autoconf (2.71-3) ... Setting up sensible-utils (0.0.17+nmu1) ... Setting up golang-golang-x-text-dev (0.7.0-1) ... Setting up libuchardet0:i386 (0.0.7-1) ... Setting up libsub-override-perl (0.09-4) ... Setting up sgml-base (1.31) ... Setting up golang-src (2:1.19~1) ... Setting up libelf1:i386 (0.188-2.1) ... Setting up libxml2:i386 (2.9.14+dfsg-1.2) ... Setting up golang-1.19-go (1.19.8-2) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up gettext (0.21-12) ... Setting up libtool (2.4.7-5) ... Setting up golang-go:i386 (2:1.19~1) ... Setting up pkgconf:i386 (1.8.1-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libpcap0.8:i386 (1.10.3-1) ... Setting up pkg-config:i386 (1.8.1-1) ... Setting up golang-golang-x-net-dev (1:0.7.0+dfsg-1) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up dwz (0.15-1) ... Setting up groff-base (1.22.4-10) ... Setting up xml-core (0.18+nmu1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.11.2-2) ... Not building database; man-db/auto-update is not 'true'. Setting up debhelper (13.11.4) ... Setting up dh-golang (1.59) ... Processing triggers for libc-bin (2.36-9) ... Processing triggers for sgml-base (1.31) ... Setting up libdbus-1-dev:i386 (1.14.6-1) ... Setting up libpcap0.8-dev:i386 (1.10.3-1) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps Reading package lists... Building dependency tree... Reading state information... usrmerge is already the newest version (35). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package I: user script /srv/workspace/pbuilder/14772/tmp/hooks/A99_set_merged_usr starting Re-configuring usrmerge... removed '/etc/unsupported-skip-usrmerge-conversion' The system has been successfully converted. I: user script /srv/workspace/pbuilder/14772/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/gopacket-1.1.19/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../gopacket_1.1.19-3_source.changes dpkg-buildpackage: info: source package gopacket dpkg-buildpackage: info: source version 1.1.19-3 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Shengjing Zhu <zhsj@debian.org> dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 debian/rules clean dh clean --buildsystem=golang dh_auto_clean -O--buildsystem=golang dh_autoreconf_clean -O--buildsystem=golang dh_clean -O--buildsystem=golang debian/rules binary dh binary --buildsystem=golang dh_update_autotools_config -O--buildsystem=golang dh_autoreconf -O--buildsystem=golang dh_auto_configure -O--buildsystem=golang dh_auto_build -O--buildsystem=golang cd obj-i686-linux-gnu && go install -trimpath -v -p 15 github.com/google/gopacket github.com/google/gopacket/afpacket github.com/google/gopacket/bytediff github.com/google/gopacket/defrag/lcmdefrag github.com/google/gopacket/dumpcommand github.com/google/gopacket/ip4defrag github.com/google/gopacket/layers github.com/google/gopacket/macs github.com/google/gopacket/pcap github.com/google/gopacket/pcapgo github.com/google/gopacket/reassembly github.com/google/gopacket/routing github.com/google/gopacket/tcpassembly github.com/google/gopacket/tcpassembly/tcpreader internal/unsafeheader internal/goexperiment unicode/utf8 internal/itoa internal/race encoding internal/nettrace internal/goarch sync/atomic runtime/internal/atomic math/bits internal/goos unicode runtime/internal/syscall internal/cpu container/list internal/abi runtime/internal/math runtime/internal/sys github.com/google/gopacket/macs math internal/bytealg runtime internal/reflectlite sync internal/testlog internal/singleflight runtime/cgo errors sort internal/oserror internal/safefilepath io path vendor/golang.org/x/net/dns/dnsmessage strconv syscall bytes hash strings hash/crc32 reflect bufio internal/syscall/execenv internal/syscall/unix time io/fs context internal/poll os internal/fmtsort encoding/binary golang.org/x/sys/unix internal/godebug fmt internal/intern net/netip net encoding/hex runtime/debug github.com/google/gopacket/bytediff log flag compress/flate golang.org/x/net/bpf compress/gzip github.com/google/gopacket/routing github.com/google/gopacket github.com/google/gopacket/afpacket github.com/google/gopacket/layers github.com/google/gopacket/defrag/lcmdefrag github.com/google/gopacket/ip4defrag github.com/google/gopacket/pcap github.com/google/gopacket/tcpassembly github.com/google/gopacket/pcapgo github.com/google/gopacket/reassembly github.com/google/gopacket/dumpcommand github.com/google/gopacket/tcpassembly/tcpreader dh_auto_test -O--buildsystem=golang cd obj-i686-linux-gnu && go test -vet=off -v -p 15 github.com/google/gopacket github.com/google/gopacket/afpacket github.com/google/gopacket/bytediff github.com/google/gopacket/defrag/lcmdefrag github.com/google/gopacket/dumpcommand github.com/google/gopacket/ip4defrag github.com/google/gopacket/layers github.com/google/gopacket/macs github.com/google/gopacket/pcap github.com/google/gopacket/pcapgo github.com/google/gopacket/reassembly github.com/google/gopacket/routing github.com/google/gopacket/tcpassembly github.com/google/gopacket/tcpassembly/tcpreader === RUN TestDumpEmbedded --- PASS: TestDumpEmbedded (0.00s) === RUN TestConcatPacketSources --- PASS: TestConcatPacketSources (0.00s) === RUN TestToDuration --- PASS: TestToDuration (0.00s) === RUN TestExponentialSizeIncreasePrepend --- PASS: TestExponentialSizeIncreasePrepend (0.00s) === RUN TestExponentialSizeIncreaseAppend --- PASS: TestExponentialSizeIncreaseAppend (0.00s) === RUN ExampleSerializeBuffer --- PASS: ExampleSerializeBuffer (0.00s) PASS ok github.com/google/gopacket 0.003s === RUN TestParseOptions afpacket_test.go:32: got: afpacket.options{frameSize:4096, framesPerBlock:0, blockSize:2, numBlocks:128, addVLANHeader:false, blockTimeout:64000000, pollTimeout:-1000000, version:-1, socktype:3, iface:""} err: block size 2 must be divisible by page size 4096 afpacket_test.go:32: got: afpacket.options{frameSize:333, framesPerBlock:0, blockSize:524288, numBlocks:128, addVLANHeader:false, blockTimeout:64000000, pollTimeout:-1000000, version:-1, socktype:3, iface:""} err: block size 524288 must be divisible by frame size 333 afpacket_test.go:32: got: afpacket.options{frameSize:4096, framesPerBlock:0, blockSize:524288, numBlocks:128, addVLANHeader:false, blockTimeout:64000000, pollTimeout:-1000000, version:-3, socktype:3, iface:""} err: tpacket version InvalidVersion is invalid afpacket_test.go:32: got: afpacket.options{frameSize:4096, framesPerBlock:0, blockSize:524288, numBlocks:128, addVLANHeader:false, blockTimeout:64000000, pollTimeout:-1000000, version:5, socktype:3, iface:""} err: tpacket version InvalidVersion is invalid afpacket_test.go:32: got: afpacket.options{frameSize:1024, framesPerBlock:512, blockSize:524288, numBlocks:128, addVLANHeader:false, blockTimeout:64000000, pollTimeout:-1000000, version:-1, socktype:3, iface:""} err: <nil> --- PASS: TestParseOptions (0.00s) PASS ok github.com/google/gopacket/afpacket 0.005s === RUN TestLCS --- PASS: TestLCS (0.00s) === RUN TestDiff --- PASS: TestDiff (0.00s) PASS ok github.com/google/gopacket/bytediff 0.002s === RUN TestOrderedLCMDefrag --- PASS: TestOrderedLCMDefrag (0.00s) === RUN TestUnorderedLCMDefrag --- PASS: TestUnorderedLCMDefrag (0.00s) === RUN TestNonLCMDefrag --- PASS: TestNonLCMDefrag (0.00s) PASS ok github.com/google/gopacket/defrag/lcmdefrag 0.007s ? github.com/google/gopacket/dumpcommand [no test files] === RUN TestNotFrag --- PASS: TestNotFrag (0.00s) === RUN TestDefragPingMultipleFrags --- PASS: TestDefragPingMultipleFrags (0.00s) === RUN TestDefragPing1 --- PASS: TestDefragPing1 (0.00s) === RUN TestDefragPing1and2 --- PASS: TestDefragPing1and2 (0.00s) === RUN TestDefragTooSmall --- PASS: TestDefragTooSmall (0.00s) === RUN TestDefragFragmentOffset --- PASS: TestDefragFragmentOffset (0.00s) === RUN TestDefragDiscard --- PASS: TestDefragDiscard (0.00s) === RUN TestDefragMaxSize --- PASS: TestDefragMaxSize (0.00s) === RUN TestDefragIDField --- PASS: TestDefragIDField (0.00s) PASS ok github.com/google/gopacket/ip4defrag 0.008s === RUN TestASFPresencePongDecodeFromBytes --- PASS: TestASFPresencePongDecodeFromBytes (0.00s) === RUN TestASFPresencePongSupportsDCMI --- PASS: TestASFPresencePongSupportsDCMI (0.00s) === RUN TestASFPresencePongSerializeTo --- PASS: TestASFPresencePongSerializeTo (0.00s) === RUN TestASFDecodeFromBytes --- PASS: TestASFDecodeFromBytes (0.00s) === RUN TestASFSerializeTo --- PASS: TestASFSerializeTo (0.00s) === RUN TestBFDNoAuth base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP BFD] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 57 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 37 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 24 bytes base_test.go:21: Got layer BFD, 24 bytes, payload of 0 bytes base_test.go:24: PACKET: 71 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..57..] SrcMAC=00:10:94:00:00:02 DstMAC=00:00:01:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..37..] Version=4 IHL=5 TOS=0 Length=61 Id=0 Flags= FragOffset=0 TTL=10 Protocol=UDP Checksum=12120 SrcIP=192.85.1.2 DstIP=192.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..24..] SrcPort=49152 DstPort=3784(bfd-control) Length=32 Checksum=29233} - Layer 4 (24 bytes) = BFD {Contents=[..24..] Payload=[] Version=1 Diagnostic=None State=Down Poll=false Final=false ControlPlaneIndependent=false AuthPresent=false Demand=false Multipoint=false DetectMultiplier=5 MyDiscriminator=1 YourDiscriminator=0 DesiredMinTxInterval=1000000 RequiredMinRxInterval=1000000 RequiredMinEchoRxInterval=0 AuthHeader=nil} --- PASS: TestBFDNoAuth (0.00s) === RUN TestBFDAuthTypePassword base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP BFD] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 65 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 41 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 33 bytes base_test.go:21: Got layer BFD, 33 bytes, payload of 0 bytes base_test.go:24: PACKET: 79 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..65..] SrcMAC=00:10:94:00:00:02 DstMAC=00:00:01:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..41..] Version=4 IHL=5 TOS=0 Length=61 Id=0 Flags= FragOffset=0 TTL=10 Protocol=UDP Checksum=12120 SrcIP=192.85.1.2 DstIP=192.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..33..] SrcPort=49152 DstPort=3784(bfd-control) Length=41 Checksum=29233} - Layer 4 (33 bytes) = BFD {Contents=[..33..] Payload=[] Version=1 Diagnostic=None State=Down Poll=false Final=false ControlPlaneIndependent=false AuthPresent=true Demand=false Multipoint=false DetectMultiplier=5 MyDiscriminator=1 YourDiscriminator=0 DesiredMinTxInterval=1000000 RequiredMinRxInterval=1000000 RequiredMinEchoRxInterval=0 AuthHeader={ AuthType=Simple Password KeyID=2 SequenceNumber=0 Data=[..6..]}} --- PASS: TestBFDAuthTypePassword (0.00s) === RUN TestBFDAuthTypeKeyedMD5 base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP BFD] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 80 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 56 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 48 bytes base_test.go:21: Got layer BFD, 48 bytes, payload of 0 bytes base_test.go:24: PACKET: 94 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..80..] SrcMAC=00:10:94:00:00:02 DstMAC=00:00:01:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..56..] Version=4 IHL=5 TOS=0 Length=76 Id=1 Flags= FragOffset=0 TTL=10 Protocol=UDP Checksum=12104 SrcIP=192.85.1.2 DstIP=192.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..48..] SrcPort=1024 DstPort=3784(bfd-control) Length=56 Checksum=27340} - Layer 4 (48 bytes) = BFD {Contents=[..48..] Payload=[] Version=1 Diagnostic=None State=Down Poll=false Final=false ControlPlaneIndependent=false AuthPresent=true Demand=false Multipoint=false DetectMultiplier=5 MyDiscriminator=1 YourDiscriminator=0 DesiredMinTxInterval=1000000 RequiredMinRxInterval=1000000 RequiredMinEchoRxInterval=0 AuthHeader={ AuthType=Keyed MD5 KeyID=2 SequenceNumber=5 Data=[..16..]}} --- PASS: TestBFDAuthTypeKeyedMD5 (0.00s) === RUN TestBFDAuthTypeMeticulousKeyedSHA1 base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP BFD] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 60 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 52 bytes base_test.go:21: Got layer BFD, 52 bytes, payload of 0 bytes base_test.go:24: PACKET: 98 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=00:10:94:00:00:02 DstMAC=00:00:01:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..60..] Version=4 IHL=5 TOS=0 Length=80 Id=0 Flags= FragOffset=0 TTL=10 Protocol=UDP Checksum=12101 SrcIP=192.85.1.2 DstIP=192.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..52..] SrcPort=1024 DstPort=3784(bfd-control) Length=60 Checksum=14218} - Layer 4 (52 bytes) = BFD {Contents=[..52..] Payload=[] Version=1 Diagnostic=None State=Down Poll=false Final=false ControlPlaneIndependent=false AuthPresent=true Demand=false Multipoint=false DetectMultiplier=5 MyDiscriminator=1 YourDiscriminator=0 DesiredMinTxInterval=1000000 RequiredMinRxInterval=1000000 RequiredMinEchoRxInterval=0 AuthHeader={ AuthType=Meticulous Keyed SHA1 KeyID=2 SequenceNumber=5 Data=[..20..]}} --- PASS: TestBFDAuthTypeMeticulousKeyedSHA1 (0.00s) === RUN TestFlowMapKey --- PASS: TestFlowMapKey (0.00s) === RUN TestDecodeSimpleTCPPacket --- PASS: TestDecodeSimpleTCPPacket (0.00s) === RUN TestDecodeSmallTCPPacketHasEmptyPayload --- PASS: TestDecodeSmallTCPPacketHasEmptyPayload (0.00s) === RUN TestDecodeVLANPacket decode_test.go:568: Layer 0: &layers.Ethernet{BaseLayer:layers.BaseLayer{Contents:[]uint8{0x0, 0x10, 0xdb, 0xff, 0x10, 0x0, 0x0, 0x15, 0x2c, 0x9d, 0xcc, 0x0, 0x81, 0x0}, Payload:[]uint8{0x1, 0xf7, 0x8, 0x0, 0x45, 0x0, 0x0, 0x28, 0x29, 0x8d, 0x40, 0x0, 0x7d, 0x6, 0x83, 0xa0, 0xac, 0x1b, 0xca, 0x8e, 0x45, 0x16, 0x94, 0xe2, 0xd4, 0xa, 0x0, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e, 0xe5, 0xd1, 0x50, 0x10, 0x1, 0x0, 0x5a, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, SrcMAC:net.HardwareAddr{0x0, 0x15, 0x2c, 0x9d, 0xcc, 0x0}, DstMAC:net.HardwareAddr{0x0, 0x10, 0xdb, 0xff, 0x10, 0x0}, EthernetType:0x8100, Length:0x0} decode_test.go:568: Layer 1: &layers.Dot1Q{BaseLayer:layers.BaseLayer{Contents:[]uint8{0x1, 0xf7, 0x8, 0x0}, Payload:[]uint8{0x45, 0x0, 0x0, 0x28, 0x29, 0x8d, 0x40, 0x0, 0x7d, 0x6, 0x83, 0xa0, 0xac, 0x1b, 0xca, 0x8e, 0x45, 0x16, 0x94, 0xe2, 0xd4, 0xa, 0x0, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e, 0xe5, 0xd1, 0x50, 0x10, 0x1, 0x0, 0x5a, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, Priority:0x0, DropEligible:false, VLANIdentifier:0x1f7, Type:0x800} decode_test.go:568: Layer 2: &layers.IPv4{BaseLayer:layers.BaseLayer{Contents:[]uint8{0x45, 0x0, 0x0, 0x28, 0x29, 0x8d, 0x40, 0x0, 0x7d, 0x6, 0x83, 0xa0, 0xac, 0x1b, 0xca, 0x8e, 0x45, 0x16, 0x94, 0xe2}, Payload:[]uint8{0xd4, 0xa, 0x0, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e, 0xe5, 0xd1, 0x50, 0x10, 0x1, 0x0, 0x5a, 0x74, 0x0, 0x0}}, Version:0x4, IHL:0x5, TOS:0x0, Length:0x28, Id:0x298d, Flags:0x2, FragOffset:0x0, TTL:0x7d, Protocol:0x6, Checksum:0x83a0, SrcIP:net.IP{0xac, 0x1b, 0xca, 0x8e}, DstIP:net.IP{0x45, 0x16, 0x94, 0xe2}, Options:[]layers.IPv4Option(nil), Padding:[]uint8(nil)} decode_test.go:568: Layer 3: &layers.TCP{BaseLayer:layers.BaseLayer{Contents:[]uint8{0xd4, 0xa, 0x0, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e, 0xe5, 0xd1, 0x50, 0x10, 0x1, 0x0, 0x5a, 0x74, 0x0, 0x0}, Payload:[]uint8{}}, SrcPort:0xd40a, DstPort:0x50, Seq:0xdfab9cc6, Ack:0xcd1ee5d1, DataOffset:0x5, FIN:false, SYN:false, RST:false, PSH:false, ACK:true, URG:false, ECE:false, CWR:false, NS:false, Window:0x100, Checksum:0x5a74, Urgent:0x0, sPort:[]uint8{0xd4, 0xa}, dPort:[]uint8{0x0, 0x50}, Options:[]layers.TCPOption{}, Padding:[]uint8(nil), opts:[4]layers.TCPOption{layers.TCPOption{OptionType:0x0, OptionLength:0x0, OptionData:[]uint8(nil)}, layers.TCPOption{OptionType:0x0, OptionLength:0x0, OptionData:[]uint8(nil)}, layers.TCPOption{OptionType:0x0, OptionLength:0x0, OptionData:[]uint8(nil)}, layers.TCPOption{OptionType:0x0, OptionLength:0x0, OptionData:[]uint8(nil)}}, tcpipchecksum:layers.tcpipchecksum{pseudoheader:layers.tcpipPseudoHeader(nil)}} base_test.go:19: Checking packet layers, want [Ethernet Dot1Q IPv4 TCP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 50 bytes base_test.go:21: Got layer Dot1Q, 4 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 20 bytes base_test.go:21: Got layer TCP, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 64 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..50..] SrcMAC=00:15:2c:9d:cc:00 DstMAC=00:10:db:ff:10:00 EthernetType=Dot1Q Length=0} - Layer 2 (04 bytes) = Dot1Q {Contents=[1, 247, 8, 0] Payload=[..46..] Priority=0 DropEligible=false VLANIdentifier=503 Type=IPv4} - Layer 3 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..20..] Version=4 IHL=5 TOS=0 Length=40 Id=10637 Flags=DF FragOffset=0 TTL=125 Protocol=TCP Checksum=33696 SrcIP=172.27.202.142 DstIP=69.22.148.226 Options=[] Padding=[]} - Layer 4 (20 bytes) = TCP {Contents=[..20..] Payload=[] SrcPort=54282 DstPort=80(http) Seq=3752565958 Ack=3441354193 DataOffset=5 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=256 Checksum=23156 Urgent=0 Options=[] Padding=[]} --- PASS: TestDecodeVLANPacket (0.00s) === RUN TestDecodeSCTPPackets --- PASS: TestDecodeSCTPPackets (0.00s) === RUN TestDecodeCiscoDiscovery base_test.go:19: Checking packet layers, want [Ethernet LLC SNAP CiscoDiscovery CiscoDiscoveryInfo] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 451 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 448 bytes base_test.go:21: Got layer SNAP, 5 bytes, payload of 443 bytes base_test.go:21: Got layer CiscoDiscovery, 4 bytes, payload of 439 bytes base_test.go:21: Got layer CiscoDiscoveryInfo, 439 bytes, payload of 0 bytes base_test.go:24: PACKET: 465 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..451..] SrcMAC=00:0b:be:18:9a:41 DstMAC=01:00:0c:cc:cc:cc EthernetType=LLC Length=451} - Layer 2 (03 bytes) = LLC {Contents=[170, 170, 3] Payload=[..448..] DSAP=170 IG=false SSAP=170 CR=false Control=3} - Layer 3 (05 bytes) = SNAP {Contents=[..5..] Payload=[..443..] OrganizationalCode=[0, 0, 12] Type=CiscoDiscovery} - Layer 4 (04 bytes) = CiscoDiscovery {Contents=[2, 180, 9, 160] Payload=[..439..] Version=2 TTL=180 Checksum=2464 Values=[..13..]} - Layer 5 (439 bytes) = CiscoDiscoveryInfo {Contents=[..439..] Payload=[] OUI=[0, 0, 12] ProtocolID=274 ClusterMaster=0.0.0.0 Unknown1=255.255.255.255 Version=1 SubVersion=2 Status=32 Unknown2=255 ClusterCommander=00:00:00:00:00:00 SwitchMAC=00:0b:be:18:9a:40 Unknown3=255 ManagementVLAN=0 DeviceID=myswitch Addresses=[192.168.0.253] PortID=FastEthernet0/1 Capabilities={ L3Router=false TBBridge=false SPBridge=false L2Switch=true IsHost=false IGMPFilter=true L1Repeater=false IsPhone=false RemotelyManaged=false} Version=Cisco Internetwork Operating System Software IOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2010 by cisco Systems, Inc. Compiled Tue 26-Oct-10 10:35 by nburra Platform=cisco WS-C2950-12 IPPrefixes=[] VTPDomain=MYDOMAIN NativeVLAN=1 FullDuplex=true VLANReply={ ID=0 VLAN=0} VLANQuery={ ID=0 VLAN=0} PowerConsumption=0 MTU=0 ExtendedTrust=0 UntrustedCOS=0 SysName= SysOID= MgmtAddresses=[192.168.0.253] Location={ Type=0 Location=} PowerRequest={ ID=0 MgmtID=0 Values=[]} PowerAvailable={ ID=0 MgmtID=0 Values=[]} SparePairPoe={ PSEFourWire=false PDArchShared=false PDRequestOn=false PSEOn=false} EnergyWise={ EncryptedData=[] Unknown1=0 SequenceNumber=0 ModelNumber= Unknown2=0 HardwareID= SerialNum= Unknown3=[] Role= Domain= Name= ReplyUnknown1=[] ReplyPort=[] ReplyAddress=[] ReplyUnknown2=[] ReplyUnknown3=[]} Unknown=[]} --- PASS: TestDecodeCiscoDiscovery (0.00s) === RUN TestDecodeLinkLayerDiscovery base_test.go:19: Checking packet layers, want [Ethernet LinkLayerDiscovery LinkLayerDiscoveryInfo] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 249 bytes base_test.go:21: Got layer LinkLayerDiscovery, 249 bytes, payload of 0 bytes base_test.go:21: Got layer LinkLayerDiscoveryInfo, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 263 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..249..] SrcMAC=00:01:30:f9:ad:a0 DstMAC=01:80:c2:00:00:0e EthernetType=LinkLayerDiscovery Length=0} - Layer 2 (249 bytes) = LinkLayerDiscovery {Contents=[..249..] Payload=[] ChassisID={ Subtype=MAC Address ID=[..6..]} PortID={ Subtype=Interface Name ID=[49, 47, 49]} TTL=120 Values=[..13..]} - Layer 3 (00 bytes) = LinkLayerDiscoveryInfo {Contents=[] Payload=[] PortDescription=Summit300-48-Port 1001� SysName=Summit300-48� SysDescription=Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11� SysCapabilities={ SystemCap={ Other=false Repeater=false Bridge=true WLANAP=false Router=true Phone=false DocSis=false StationOnly=false CVLAN=false SVLAN=false TMPR=false} EnabledCap={ Other=false Repeater=false Bridge=true WLANAP=false Router=true Phone=false DocSis=false StationOnly=false CVLAN=false SVLAN=false TMPR=false}} MgmtAddress={ Subtype=802 media plus Ethernet 'canonical format' Address=[..6..] InterfaceSubtype=IfIndex InterfaceNumber=1001 OID=} OrgTLVs=[..8..] Unknown=[]} base_test.go:19: Checking packet layers, want [Ethernet LinkLayerDiscovery LinkLayerDiscoveryInfo] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 254 bytes base_test.go:21: Got layer LinkLayerDiscovery, 254 bytes, payload of 0 bytes base_test.go:21: Got layer LinkLayerDiscoveryInfo, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 268 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..254..] SrcMAC=00:13:21:57:ca:7f DstMAC=01:80:c2:00:00:0e EthernetType=LinkLayerDiscovery Length=0} - Layer 2 (254 bytes) = LinkLayerDiscovery {Contents=[..254..] Payload=[] ChassisID={ Subtype=MAC Address ID=[..6..]} PortID={ Subtype=Local ID=[49]} TTL=120 Values=[..10..]} - Layer 3 (00 bytes) = LinkLayerDiscoveryInfo {Contents=[] Payload=[] PortDescription=1 SysName=ProCurve Switch 2600-8-PWR SysDescription=ProCurve J8762A Switch 2600-8-PWR, revision H.08.89, ROM H.08.5X (/sw/code/build/fish(ts_08_5)) SysCapabilities={ SystemCap={ Other=false Repeater=false Bridge=true WLANAP=false Router=true Phone=false DocSis=false StationOnly=false CVLAN=false SVLAN=false TMPR=false} EnabledCap={ Other=false Repeater=false Bridge=true WLANAP=false Router=false Phone=false DocSis=false StationOnly=false CVLAN=false SVLAN=false TMPR=false}} MgmtAddress={ Subtype=IPv4 Address=[15, 255, 122, 148] InterfaceSubtype=IfIndex InterfaceNumber=0 OID=} OrgTLVs=[..5..] Unknown=[]} --- PASS: TestDecodeLinkLayerDiscovery (0.00s) === RUN TestDecodeNortelDiscovery base_test.go:19: Checking packet layers, want [Ethernet LLC SNAP NortelDiscovery] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 19 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 16 bytes base_test.go:21: Got layer SNAP, 5 bytes, payload of 11 bytes base_test.go:21: Got layer NortelDiscovery, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..19..] SrcMAC=00:04:38:e0:cc:de DstMAC=01:00:81:00:01:00 EthernetType=LLC Length=19} - Layer 2 (03 bytes) = LLC {Contents=[170, 170, 3] Payload=[..16..] DSAP=170 IG=false SSAP=170 CR=false Control=3} - Layer 3 (05 bytes) = SNAP {Contents=[..5..] Payload=[..11..] OrganizationalCode=[0, 0, 129] Type=NortelDiscovery} - Layer 4 (00 bytes) = NortelDiscovery {Contents=[] Payload=[] IPAddress=172.19.88.3 SegmentID=[0, 4, 21] Chassis=BayStack 450 10/100/1000 Switches Backplane=Ethernet, Fast Ethernet and Gigabit Ethernet State=Heartbeat NumLinks=0} --- PASS: TestDecodeNortelDiscovery (0.00s) === RUN TestDecodeIPv6Jumbogram base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop TCP Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 70040 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 70000 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 69992 bytes base_test.go:21: Got layer TCP, 20 bytes, payload of 69972 bytes base_test.go:21: Got layer Payload, 69972 bytes, payload of 0 bytes base_test.go:24: PACKET: 70054 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..70040..] SrcMAC=24:be:05:27:0b:17 DstMAC=00:1f:ca:b3:76:40 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..70000..] Version=6 TrafficClass=0 FlowLabel=0 Length=0 NextHeader=IPv6HopByHop HopLimit=64 SrcIP=::1 DstIP=::2 HopByHop={ Contents=[..8..] Payload=[..69992..] NextHeader=TCP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 17, 112] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..69992..] NextHeader=TCP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 17, 112] OptionAlignment=[0 0]}]} - Layer 4 (20 bytes) = TCP {Contents=[..20..] Payload=[..69972..] SrcPort=8888(ddi-tcp-1) DstPort=80(http) Seq=0 Ack=0 DataOffset=5 FIN=false SYN=true RST=false PSH=false ACK=false URG=false ECE=false CWR=false NS=false Window=8192 Checksum=27864 Urgent=0 Options=[] Padding=[]} - Layer 5 (69972 bytes) = Payload 69972 byte(s) base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop TCP Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 70039 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 69999 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 69991 bytes base_test.go:21: Got layer TCP, 20 bytes, payload of 69971 bytes base_test.go:21: Got layer Payload, 69971 bytes, payload of 0 bytes base_test.go:24: PACKET: 70053 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..70039..] SrcMAC=24:be:05:27:0b:17 DstMAC=00:1f:ca:b3:76:40 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..69999..] Version=6 TrafficClass=0 FlowLabel=0 Length=0 NextHeader=IPv6HopByHop HopLimit=64 SrcIP=::1 DstIP=::2 HopByHop={ Contents=[..8..] Payload=[..69991..] NextHeader=TCP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 17, 112] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..69991..] NextHeader=TCP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 17, 112] OptionAlignment=[0 0]}]} - Layer 4 (20 bytes) = TCP {Contents=[..20..] Payload=[..69971..] SrcPort=8888(ddi-tcp-1) DstPort=80(http) Seq=0 Ack=0 DataOffset=5 FIN=false SYN=true RST=false PSH=false ACK=false URG=false ECE=false CWR=false NS=false Window=8192 Checksum=27864 Urgent=0 Options=[] Padding=[]} - Layer 5 (69971 bytes) = Payload 69971 byte(s) --- PASS: TestDecodeIPv6Jumbogram (0.00s) === RUN TestDecodeUDPPacketTooSmall base_test.go:19: Checking packet layers, want [Ethernet Dot1Q IPv4 UDP Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 56 bytes base_test.go:21: Got layer Dot1Q, 4 bytes, payload of 52 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 32 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 24 bytes base_test.go:21: Got layer Payload, 24 bytes, payload of 0 bytes base_test.go:24: PACKET: 70 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..56..] SrcMAC=00:10:db:ff:10:00 DstMAC=00:15:2c:9d:cc:00 EthernetType=Dot1Q Length=0} - Layer 2 (04 bytes) = Dot1Q {Contents=[1, 247, 8, 0] Payload=[..52..] Priority=0 DropEligible=false VLANIdentifier=503 Type=IPv4} - Layer 3 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=96 Length=60 Id=4009 Flags= FragOffset=0 TTL=110 Protocol=UDP Checksum=266 SrcIP=71.230.238.46 DstIP=172.22.89.115 Options=[] Padding=[]} - Layer 4 (08 bytes) = UDP {Contents=[..8..] Payload=[..24..] SrcPort=80(http) DstPort=80(http) Length=40 Checksum=19885} - Layer 5 (24 bytes) = Payload 24 byte(s) --- PASS: TestDecodeUDPPacketTooSmall (0.00s) === RUN TestDecodingLayerParserFullTCPPacket --- PASS: TestDecodingLayerParserFullTCPPacket (0.00s) === RUN TestDecodingLayerMap --- PASS: TestDecodingLayerMap (0.00s) === RUN TestDecodingLayerSparse --- PASS: TestDecodingLayerSparse (0.00s) === RUN TestDecodingLayerArray --- PASS: TestDecodingLayerArray (0.00s) === RUN TestICMP base_test.go:19: Checking packet layers, want [Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 56 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 36 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 28 bytes base_test.go:21: Got layer Payload, 28 bytes, payload of 0 bytes base_test.go:24: PACKET: 70 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..56..] SrcMAC=00:1f:ca:b3:75:c0 DstMAC=24:be:05:27:0b:17 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..36..] Version=4 IHL=5 TOS=0 Length=56 Id=0 Flags= FragOffset=0 TTL=252 Protocol=ICMPv4 Checksum=55207 SrcIP=72.14.222.226 DstIP=172.29.20.15 Options=[] Padding=[]} - Layer 3 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..28..] TypeCode=DestinationUnreachable(CommAdminProhibited) Checksum=37998 Id=0 Seq=0} - Layer 4 (28 bytes) = Payload 28 byte(s) --- PASS: TestICMP (0.00s) === RUN TestICMP6 base_test.go:19: Checking packet layers, want [Ethernet IPv6 ICMPv6 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 72 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 32 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 28 bytes base_test.go:21: Got layer ICMPv6NeighborSolicitation, 28 bytes, payload of 0 bytes base_test.go:24: PACKET: 86 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..72..] SrcMAC=00:1f:ca:b3:75:c0 DstMAC=24:be:05:27:0b:17 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=224 FlowLabel=0 Length=32 NextHeader=ICMPv6 HopLimit=255 SrcIP=fe80::21f:caff:feb3:75c0 DstIP=2620:0:1005:0:26be:5ff:fe27:b17 HopByHop=nil} - Layer 3 (04 bytes) = ICMPv6 {Contents=[135, 0, 30, 186] Payload=[..28..] TypeCode=NeighborSolicitation Checksum=7866 TypeBytes=[]} - Layer 4 (28 bytes) = ICMPv6NeighborSolicitation {Contents=[..28..] Payload=[] TargetAddress=2620:0:1005:0:26be:5ff:fe27:b17 Options=[ICMPv6Option(SourceAddress:00:1f:ca:b3:75:c0)]} --- PASS: TestICMP6 (0.00s) === RUN TestMPLS base_test.go:19: Checking packet layers, want [Ethernet MPLS IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 104 bytes base_test.go:21: Got layer MPLS, 4 bytes, payload of 100 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 80 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 72 bytes base_test.go:21: Got layer Payload, 72 bytes, payload of 0 bytes base_test.go:24: PACKET: 118 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..104..] SrcMAC=00:30:96:05:28:38 DstMAC=00:30:96:e6:fc:39 EthernetType=MPLSUnicast Length=0} - Layer 2 (04 bytes) = MPLS {Contents=[0, 1, 209, 255] Payload=[..100..] Label=29 TrafficClass=0 StackBottom=true TTL=255} - Layer 3 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..80..] Version=4 IHL=5 TOS=0 Length=100 Id=11 Flags= FragOffset=0 TTL=255 Protocol=ICMPv4 Checksum=42345 SrcIP=10.1.2.1 DstIP=10.34.0.1 Options=[] Padding=[]} - Layer 4 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..72..] TypeCode=EchoRequest Checksum=14966 Id=2618 Seq=1579} - Layer 5 (72 bytes) = Payload 72 byte(s) --- PASS: TestMPLS (0.00s) === RUN TestPPPGREIPv4IPv6VLAN base_test.go:19: Checking packet layers, want [Ethernet Dot1Q IPv6 IPv4 GRE PPP IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 183 bytes base_test.go:21: Got layer Dot1Q, 4 bytes, payload of 179 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 139 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 119 bytes base_test.go:21: Got layer GRE, 16 bytes, payload of 103 bytes base_test.go:21: Got layer PPP, 2 bytes, payload of 99 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 79 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 71 bytes base_test.go:21: Got layer DNS, 71 bytes, payload of 0 bytes base_test.go:24: PACKET: 197 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..183..] SrcMAC=00:12:1e:f2:61:3d DstMAC=c5:00:00:00:82:c4 EthernetType=Dot1Q Length=0} - Layer 2 (04 bytes) = Dot1Q {Contents=[0, 100, 134, 221] Payload=[..179..] Priority=0 DropEligible=false VLANIdentifier=100 Type=IPv6} - Layer 3 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..139..] Version=6 TrafficClass=0 FlowLabel=0 Length=139 NextHeader=IPv4 HopLimit=246 SrcIP=2402:f000:1:8e01::5555 DstIP=2607:fcd0:100:2300::b108:2a6b HopByHop=nil} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..119..] Version=4 IHL=5 TOS=0 Length=139 Id=36015 Flags= FragOffset=0 TTL=64 Protocol=GRE Checksum=30206 SrcIP=16.0.0.200 DstIP=192.52.166.154 Options=[] Padding=[]} - Layer 5 (16 bytes) = GRE {Contents=[..16..] Payload=[..103..] ChecksumPresent=false RoutingPresent=false KeyPresent=true SeqPresent=true StrictSourceRoute=false AckPresent=true RecursionControl=0 Flags=16 Version=1 Protocol=PPP Checksum=0 Offset=0 Key=6756224 Seq=430001 Ack=539254nil} - Layer 6 (02 bytes) = PPP {Contents=[0, 33] Payload=[..99..] PPPType=IPv4 HasPPTPHeader=true} - Layer 7 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..79..] Version=4 IHL=5 TOS=0 Length=99 Id=0 Flags=DF FragOffset=0 TTL=60 Protocol=UDP Checksum=22119 SrcIP=172.16.44.3 DstIP=8.8.8.8 Options=[] Padding=[]} - Layer 8 (08 bytes) = UDP {Contents=[..8..] Payload=[..71..] SrcPort=40768 DstPort=53(domain) Length=79 Checksum=64415} - Layer 9 (71 bytes) = DNS {Contents=[..71..] Payload=[] ID=42540 QR=false OpCode=Query AA=false TC=false RD=true RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..53..] Type=AAAA Class=IN}] Answers=[] Authorities=[] Additionals=[]} --- PASS: TestPPPGREIPv4IPv6VLAN (0.00s) === RUN TestPPPoEICMPv6 base_test.go:19: Checking packet layers, want [Ethernet PPPoE PPP IPv6 ICMPv6 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 72 bytes base_test.go:21: Got layer PPPoE, 6 bytes, payload of 66 bytes base_test.go:21: Got layer PPP, 2 bytes, payload of 64 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer ICMPv6NeighborAdvertisement, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 86 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..72..] SrcMAC=ca:01:0e:88:00:06 DstMAC=cc:05:0e:88:00:00 EthernetType=PPPoESession Length=0} - Layer 2 (06 bytes) = PPPoE {Contents=[..6..] Payload=[..66..] Version=1 Type=1 Code=PPP SessionId=17 Length=66} - Layer 3 (02 bytes) = PPP {Contents=[0, 87] Payload=[..64..] PPPType=IPv6 HasPPTPHeader=false} - Layer 4 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=224 FlowLabel=0 Length=24 NextHeader=ICMPv6 HopLimit=255 SrcIP=fe80::c801:eff:fe88:8 DstIP=ff02::1 HopByHop=nil} - Layer 5 (04 bytes) = ICMPv6 {Contents=[136, 0, 80, 131] Payload=[..20..] TypeCode=NeighborAdvertisement Checksum=20611 TypeBytes=[]} - Layer 6 (20 bytes) = ICMPv6NeighborAdvertisement {Contents=[..20..] Payload=[] Flags=128 TargetAddress=fe80::c801:eff:fe88:8 Options=[]} --- PASS: TestPPPoEICMPv6 (0.00s) === RUN TestPFLogUDP base_test.go:19: Checking packet layers, want [PFLog IPv4 UDP Payload] base_test.go:21: Got layer PFLog, 64 bytes, payload of 44 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 24 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 16 bytes base_test.go:21: Got layer Payload, 16 bytes, payload of 0 bytes base_test.go:24: PACKET: 108 bytes - Layer 1 (64 bytes) = PFLog {Contents=[..64..] Payload=[..44..] Length=61 Family=IPv4 Action=0 Reason=0 IFName=[..16..] Ruleset=[..16..] RuleNum=0 SubruleNum=174 UID=4294967167 PID=-1601830656 RuleUID=0 RulePID=-1061683200 Direction=2} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..24..] Version=4 IHL=5 TOS=0 Length=44 Id=534 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=20144 SrcIP=172.23.232.204 DstIP=172.23.232.255 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..16..] SrcPort=61695 DstPort=8612(canon-bjnp2) Length=24 Checksum=10789} - Layer 4 (16 bytes) = Payload 16 byte(s) --- PASS: TestPFLogUDP (0.00s) === RUN TestRegressionDot1QPriority --- PASS: TestRegressionDot1QPriority (0.00s) === RUN TestPacketMPLSInMPLS base_test.go:19: Checking packet layers, want [Ethernet MPLS MPLS IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 108 bytes base_test.go:21: Got layer MPLS, 4 bytes, payload of 104 bytes base_test.go:21: Got layer MPLS, 4 bytes, payload of 100 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 80 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 72 bytes base_test.go:21: Got layer Payload, 72 bytes, payload of 0 bytes base_test.go:24: PACKET: 122 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..108..] SrcMAC=00:30:96:05:28:38 DstMAC=00:30:96:e6:fc:39 EthernetType=MPLSUnicast Length=0} - Layer 2 (04 bytes) = MPLS {Contents=[0, 1, 32, 255] Payload=[..104..] Label=18 TrafficClass=0 StackBottom=false TTL=255} - Layer 3 (04 bytes) = MPLS {Contents=[0, 1, 1, 255] Payload=[..100..] Label=16 TrafficClass=0 StackBottom=true TTL=255} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..80..] Version=4 IHL=5 TOS=0 Length=100 Id=80 Flags= FragOffset=0 TTL=255 Protocol=ICMPv4 Checksum=42758 SrcIP=10.31.0.1 DstIP=10.34.0.1 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..72..] TypeCode=EchoRequest Checksum=48401 Id=3941 Seq=4768} - Layer 6 (72 bytes) = Payload 72 byte(s) --- PASS: TestPacketMPLSInMPLS (0.00s) === RUN TestPacketIPv4Fragmented base_test.go:19: Checking packet layers, want [Ethernet IPv4 Fragment] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 56 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 36 bytes base_test.go:21: Got layer Fragment, 36 bytes, payload of 0 bytes base_test.go:24: PACKET: 70 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..56..] SrcMAC=00:40:33:d9:7c:fd DstMAC=00:00:39:cf:d9:cd EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..36..] Version=4 IHL=5 TOS=0 Length=56 Id=242 Flags=MF FragOffset=0 TTL=64 Protocol=UDP Checksum=44855 SrcIP=10.1.1.1 DstIP=129.111.30.27 Options=[] Padding=[]} - Layer 3 (36 bytes) = Fragment 36 byte(s) --- PASS: TestPacketIPv4Fragmented (0.00s) === RUN TestSCTPChunkBadLength --- PASS: TestSCTPChunkBadLength (0.00s) === RUN TestSTP base_test.go:19: Checking packet layers, want [Ethernet LLC STP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 38 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 35 bytes base_test.go:21: Got layer STP, 35 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..38..] SrcMAC=00:1c:0e:87:85:04 DstMAC=01:80:c2:00:00:00 EthernetType=LLC Length=38} - Layer 2 (03 bytes) = LLC {Contents=[66, 66, 3] Payload=[..35..] DSAP=66 IG=false SSAP=66 CR=false Control=3} - Layer 3 (35 bytes) = STP {Contents=[..35..] Payload=[]} --- PASS: TestSTP (0.00s) === RUN TestDHCPv4EncodeRequest --- PASS: TestDHCPv4EncodeRequest (0.00s) === RUN TestDHCPv4EncodeResponse --- PASS: TestDHCPv4EncodeResponse (0.00s) === RUN TestDHCPv4DecodeOption --- PASS: TestDHCPv4DecodeOption (0.00s) === RUN TestDHCPv6EncodeRequest --- PASS: TestDHCPv6EncodeRequest (0.00s) === RUN TestDHCPv6EncodeReply --- PASS: TestDHCPv6EncodeReply (0.00s) === RUN TestPacketDNSRegression base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 68 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 48 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 40 bytes base_test.go:21: Got layer DNS, 40 bytes, payload of 0 bytes base_test.go:24: PACKET: 82 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..68..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..48..] Version=4 IHL=5 TOS=0 Length=68 Id=35268 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=12093 SrcIP=109.194.160.4 DstIP=95.211.92.14 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..40..] SrcPort=57766 DstPort=53(domain) Length=48 Checksum=42391} - Layer 4 (40 bytes) = DNS {Contents=[..40..] Payload=[] ID=63000 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..11..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestPacketDNSRegression (0.00s) === RUN TestParseDNSTypeTXT base_test.go:19: Checking packet layers, want [Loopback IPv4 UDP DNS] base_test.go:21: Got layer Loopback, 4 bytes, payload of 115 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 95 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 87 bytes base_test.go:21: Got layer DNS, 87 bytes, payload of 0 bytes base_test.go:24: PACKET: 119 bytes - Layer 1 (04 bytes) = Loopback {Contents=[2, 0, 0, 0] Payload=[..115..] Family=IPv4} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..95..] Version=4 IHL=5 TOS=0 Length=115 Id=0 Flags=DF FragOffset=0 TTL=57 Protocol=UDP Checksum=25752 SrcIP=208.67.222.222 DstIP=10.186.35.6 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..87..] SrcPort=53(domain) DstPort=33202 Length=95 Checksum=56501} - Layer 4 (87 bytes) = DNS {Contents=[..87..] Payload=[] ID=39025 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=1 NSCount=0 ARCount=1 Questions=[{Name=[..10..] Type=TXT Class=IN}] Answers=[{Name=[..10..] Type=TXT Class=IN TTL=3600 DataLength=36 Data=[..36..] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[[..35..]] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[..36..]}] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=0 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestParseDNSTypeTXT (0.00s) === RUN TestParseDNSBadVers base_test.go:19: Checking packet layers, want [Loopback IPv4 UDP DNS] base_test.go:21: Got layer Loopback, 4 bytes, payload of 56 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 36 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 28 bytes base_test.go:21: Got layer DNS, 28 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (04 bytes) = Loopback {Contents=[2, 0, 0, 0] Payload=[..56..] Family=IPv4} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..36..] Version=4 IHL=5 TOS=0 Length=56 Id=42400 Flags=DF FragOffset=0 TTL=56 Protocol=UDP Checksum=189 SrcIP=192.5.5.241 DstIP=172.30.42.67 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..28..] SrcPort=53(domain) DstPort=64888 Length=36 Checksum=16577} - Layer 4 (28 bytes) = DNS {Contents=[..28..] Payload=[] ID=36787 QR=true OpCode=Query AA=false TC=false RD=true RA=false Z=0 ResponseCode=Bad OPT Version QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[] Type=TXT Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=16777216 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestParseDNSBadVers (0.00s) === RUN TestParseDNSBadCookie base_test.go:19: Checking packet layers, want [Loopback IPv4 UDP DNS] base_test.go:21: Got layer Loopback, 4 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 56 bytes base_test.go:21: Got layer DNS, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 88 bytes - Layer 1 (04 bytes) = Loopback {Contents=[2, 0, 0, 0] Payload=[..84..] Family=IPv4} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=65194 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=0 SrcIP=127.0.0.1 DstIP=127.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..56..] SrcPort=53(domain) DstPort=54954 Length=64 Checksum=65107} - Layer 4 (56 bytes) = DNS {Contents=[..56..] Payload=[] ID=63147 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=Bad Cookie QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[] Type=SOA Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=16777216 DataLength=28 Data=[..28..] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[Cookie=36bf111fef2e01097d8ffe065c636ffb142d767494407a73] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestParseDNSBadCookie (0.00s) === RUN TestParseDNSTypeURI base_test.go:19: Checking packet layers, want [Loopback IPv4 UDP DNS] base_test.go:21: Got layer Loopback, 4 bytes, payload of 111 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 91 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 83 bytes base_test.go:21: Got layer DNS, 83 bytes, payload of 0 bytes base_test.go:24: PACKET: 115 bytes - Layer 1 (04 bytes) = Loopback {Contents=[2, 0, 0, 0] Payload=[..111..] Family=IPv4} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..91..] Version=4 IHL=5 TOS=0 Length=111 Id=15973 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=15895 SrcIP=127.0.0.1 DstIP=127.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..83..] SrcPort=53(domain) DstPort=59347 Length=91 Checksum=65134} - Layer 4 (83 bytes) = DNS {Contents=[..83..] Payload=[] ID=44845 QR=true OpCode=Query AA=true TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=1 NSCount=0 ARCount=1 Questions=[{Name=[..14..] Type=URI Class=IN}] Answers=[{Name=[..14..] Type=URI Class=IN TTL=10800 DataLength=28 Data=[..28..] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=10 Weight=5 Target=[..24..]} TXT=[]}] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=0 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestParseDNSTypeURI (0.00s) === RUN TestParseDNSTypeOPT base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 88 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 68 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 60 bytes base_test.go:21: Got layer DNS, 60 bytes, payload of 0 bytes base_test.go:24: PACKET: 102 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..88..] SrcMAC=00:1c:c0:93:33:fb DstMAC=00:90:0b:12:91:c1 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..68..] Version=4 IHL=5 TOS=0 Length=90 Id=52824 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=26594 SrcIP=172.16.1.199 DstIP=75.75.75.75 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..60..] SrcPort=54784 DstPort=53(domain) Length=70 Checksum=17584} - Layer 4 (60 bytes) = DNS {Contents=[..60..] Payload=[] ID=20498 QR=false OpCode=Query AA=false TC=false RD=true RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..12..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=19 Data=[..19..] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[DeviceID=4f70656e444e530123456789abcdef] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestParseDNSTypeOPT (0.00s) === RUN TestDNSEncodeQuery --- PASS: TestDNSEncodeQuery (0.00s) === RUN TestDNSEncodeQueryWithOPT --- PASS: TestDNSEncodeQueryWithOPT (0.00s) === RUN TestDNSEncodeResponse --- PASS: TestDNSEncodeResponse (0.00s) === RUN TestDNSMalformedPacket --- PASS: TestDNSMalformedPacket (0.00s) === RUN TestDNSMalformedPacket2 --- PASS: TestDNSMalformedPacket2 (0.00s) === RUN TestBlankNameRootQuery --- PASS: TestBlankNameRootQuery (0.00s) === RUN TestAnotherMalformedDNS --- PASS: TestAnotherMalformedDNS (0.00s) === RUN TestMalformedDNSAgain --- PASS: TestMalformedDNSAgain (0.00s) === RUN TestMalformedDNSOhGodMakeItStop --- PASS: TestMalformedDNSOhGodMakeItStop (0.00s) === RUN TestMalformedDNSOPT --- PASS: TestMalformedDNSOPT (0.00s) === RUN TestPacketDNSPanic7 --- PASS: TestPacketDNSPanic7 (0.00s) === RUN TestDNSPacketWriteAnswer dns_test.go:1126: DNS {Contents=[..86..] Payload=[] ID=4660 QR=true OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=0 ANCount=2 NSCount=0 ARCount=0 Questions=[] Answers=[{Name=[..15..] Type=A Class=IN TTL=0 DataLength=4 Data=[127, 0, 0, 1] IP=127.0.0.1 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..15..] Type=AAAA Class=IN TTL=0 DataLength=16 Data=[..16..] IP=::1 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}] Authorities=[] Additionals=[]} --- PASS: TestDNSPacketWriteAnswer (0.00s) === RUN TestPacketDot11CtrlCTS base_test.go:19: Checking packet layers, want [RadioTap Dot11] base_test.go:21: Got layer RadioTap, 25 bytes, payload of 14 bytes base_test.go:21: Got layer Dot11, 10 bytes, payload of 0 bytes base_test.go:24: PACKET: 39 bytes - Layer 1 (25 bytes) = RadioTap {Contents=[..25..] Payload=[..14..] Version=0 Length=25 Present=2159 TSFT=20604983 Flags=SHORT-PREAMBLE,FCS Rate=24 Mb/s ChannelFrequency=5240 MHz ChannelFlags=OFDM,Ghz5 FHSS=0 DBMAntennaSignal=-79 DBMAntennaNoise=-92 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=1 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (10 bytes) = Dot11 {Contents=[..10..] Payload=[] Type=CtrlCTS Proto=0 Flags= DurationID=148 Address1=d8:a2:5e:97:61:c1 Address2= Address3= Address4= SequenceNumber=0 FragmentNumber=0 Checksum=2392150070 QOS=nil HTControl=nil DataLayer=nil} --- PASS: TestPacketDot11CtrlCTS (0.00s) === RUN TestPacketDot11MgmtBeacon base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11MgmtBeacon Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement Dot11InformationElement] base_test.go:21: Got layer RadioTap, 18 bytes, payload of 221 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 193 bytes base_test.go:21: Got layer Dot11MgmtBeacon, 193 bytes, payload of 181 bytes base_test.go:21: Got layer Dot11InformationElement, 5 bytes, payload of 176 bytes base_test.go:21: Got layer Dot11InformationElement, 10 bytes, payload of 166 bytes base_test.go:21: Got layer Dot11InformationElement, 3 bytes, payload of 163 bytes base_test.go:21: Got layer Dot11InformationElement, 6 bytes, payload of 157 bytes base_test.go:21: Got layer Dot11InformationElement, 3 bytes, payload of 154 bytes base_test.go:21: Got layer Dot11InformationElement, 26 bytes, payload of 128 bytes base_test.go:21: Got layer Dot11InformationElement, 32 bytes, payload of 96 bytes base_test.go:21: Got layer Dot11InformationElement, 28 bytes, payload of 68 bytes base_test.go:21: Got layer Dot11InformationElement, 28 bytes, payload of 40 bytes base_test.go:21: Got layer Dot11InformationElement, 24 bytes, payload of 16 bytes base_test.go:21: Got layer Dot11InformationElement, 6 bytes, payload of 10 bytes base_test.go:21: Got layer Dot11InformationElement, 10 bytes, payload of 0 bytes base_test.go:24: PACKET: 239 bytes - Layer 1 (18 bytes) = RadioTap {Contents=[..18..] Payload=[..221..] Version=0 Length=18 Present=18478 TSFT=0 Flags=FCS Rate=6 Mb/s ChannelFrequency=2412 MHz ChannelFlags=OFDM,Ghz2 FHSS=0 DBMAntennaSignal=-81 DBMAntennaNoise=0 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=5 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[..193..] Type=MgmtBeacon Proto=0 Flags= DurationID=0 Address1=ff:ff:ff:ff:ff:ff Address2=c0:8a:de:01:11:b8 Address3=c0:8a:de:01:11:b8 Address4= SequenceNumber=2431 FragmentNumber=0 Checksum=361761684 QOS=nil HTControl=nil DataLayer=nil} - Layer 3 (193 bytes) = Dot11MgmtBeacon {Contents=[..193..] Payload=[..181..] Timestamp=84761702784 Interval=100 Flags=1057} - Layer 4 (05 bytes) = Dot11InformationElement 802.11 Information Element (ID: SSID parameter set, Length: 3, SSID: Wi2) - Layer 5 (10 bytes) = Dot11InformationElement 802.11 Information Element (ID: Supported Rates, Length: 8, Rates: 6.0* 9.0 12.0* 18.0 24.0* 36.0 48.0 54.0 Mbit) - Layer 6 (03 bytes) = Dot11InformationElement 802.11 Information Element (ID: DS Parameter set, Length: 1, Info: 01) - Layer 7 (06 bytes) = Dot11InformationElement 802.11 Information Element (ID: Traffic Indication Map (TIM), Length: 4, Info: 00010000) - Layer 8 (03 bytes) = Dot11InformationElement 802.11 Information Element (ID: ERP Information, Length: 1, Info: 00) - Layer 9 (26 bytes) = Dot11InformationElement 802.11 Information Element (ID: Vendor, Length: 24, OUI: 0050F202, Info: 0101810007A4000023A4000042435E0062322F00) - Layer 10 (32 bytes) = Dot11InformationElement 802.11 Information Element (ID: Vendor, Length: 30, OUI: 00904C33, Info: 8C011BFFFF000000000000000000001000000000000000000000) - Layer 11 (28 bytes) = Dot11InformationElement 802.11 Information Element (ID: HT Capabilities (802.11n D1.10), Length: 26, Info: 8C011BFFFF000000000000000000001000000000000000000000) - Layer 12 (28 bytes) = Dot11InformationElement 802.11 Information Element (ID: Vendor, Length: 26, OUI: 00904C34, Info: 01000000000000000000000000000000000000000000) - Layer 13 (24 bytes) = Dot11InformationElement 802.11 Information Element (ID: HT Information (802.11n D1.10), Length: 22, Info: 01000000000000000000000000000000000000000000) - Layer 14 (06 bytes) = Dot11InformationElement 802.11 Information Element (ID: Extended Capabilities, Length: 4, Info: 00000000) - Layer 15 (10 bytes) = Dot11InformationElement 802.11 Information Element (ID: Vendor, Length: 8, OUI: 00139201, Info: 00018500) --- PASS: TestPacketDot11MgmtBeacon (0.00s) === RUN TestPacketDot11DataQOSData base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11DataQOSData Dot11Data LLC SNAP ARP] base_test.go:21: Got layer RadioTap, 32 bytes, payload of 66 bytes base_test.go:21: Got layer Dot11, 26 bytes, payload of 36 bytes base_test.go:21: Got layer Dot11DataQOSData, 0 bytes, payload of 36 bytes base_test.go:21: Got layer Dot11Data, 0 bytes, payload of 36 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 33 bytes base_test.go:21: Got layer SNAP, 5 bytes, payload of 28 bytes base_test.go:21: Got layer ARP, 28 bytes, payload of 0 bytes base_test.go:24: PACKET: 96 bytes - Layer 1 (32 bytes) = RadioTap {Contents=[..32..] Payload=[..66..] Version=0 Length=32 Present=264295 TSFT=638790765 Flags=SHORT-PREAMBLE,DATAPAD Rate=54 Mb/s ChannelFrequency=0 MHz ChannelFlags= FHSS=0 DBMAntennaSignal=-51 DBMAntennaNoise=-96 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=2 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (26 bytes) = Dot11 {Contents=[..26..] Payload=[..36..] Type=DataQOSData Proto=0 Flags=TO-DS DurationID=44 Address1=06:03:7f:07:a0:16 Address2=00:19:e3:d3:53:52 Address3=ff:ff:ff:ff:ff:ff Address4= SequenceNumber=1605 FragmentNumber=0 Checksum=3879274892 QOS={ TID=0 EOSP=false AckPolicy=normal-ack TXOP=0} HTControl=nil DataLayer={ Contents=[] Payload=[..36..]}} - Layer 3 (00 bytes) = Dot11DataQOSData {Contents=[] Payload=[..36..]} - Layer 4 (00 bytes) = Dot11Data {Contents=[] Payload=[..36..]} - Layer 5 (03 bytes) = LLC {Contents=[170, 170, 3] Payload=[..33..] DSAP=170 IG=false SSAP=170 CR=false Control=3} - Layer 6 (05 bytes) = SNAP {Contents=[..5..] Payload=[..28..] OrganizationalCode=[0, 0, 0] Type=ARP} - Layer 7 (28 bytes) = ARP {Contents=[..28..] Payload=[] AddrType=Ethernet Protocol=IPv4 HwAddressSize=6 ProtAddressSize=4 Operation=1 SourceHwAddress=[..6..] SourceProtAddress=[169, 254, 247, 0] DstHwAddress=[..6..] DstProtAddress=[140, 180, 51, 68]} --- PASS: TestPacketDot11DataQOSData (0.00s) === RUN TestPacketDot11MgmtAction base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11MgmtAction] base_test.go:21: Got layer RadioTap, 18 bytes, payload of 35 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 7 bytes base_test.go:21: Got layer Dot11MgmtAction, 7 bytes, payload of 0 bytes base_test.go:24: PACKET: 53 bytes - Layer 1 (18 bytes) = RadioTap {Contents=[..18..] Payload=[..35..] Version=0 Length=18 Present=18478 TSFT=0 Flags=FCS Rate=1 Mb/s ChannelFrequency=2412 MHz ChannelFlags=CCK,Ghz2 FHSS=0 DBMAntennaSignal=-67 DBMAntennaNoise=0 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=5 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[..7..] Type=MgmtAction Proto=0 Flags= DurationID=0 Address1=ff:ff:ff:ff:ff:ff Address2=8e:3a:e3:44:ac:c6 Address3=8e:3a:e3:44:ac:c6 Address4= SequenceNumber=432 FragmentNumber=0 Checksum=871381333 QOS=nil HTControl=nil DataLayer=nil} - Layer 3 (07 bytes) = Dot11MgmtAction {Contents=[..7..] Payload=[]} --- PASS: TestPacketDot11MgmtAction (0.00s) === RUN TestPacketDot11CtrlAck base_test.go:19: Checking packet layers, want [RadioTap Dot11] base_test.go:21: Got layer RadioTap, 32 bytes, payload of 14 bytes base_test.go:21: Got layer Dot11, 10 bytes, payload of 0 bytes base_test.go:24: PACKET: 46 bytes - Layer 1 (32 bytes) = RadioTap {Contents=[..32..] Payload=[..14..] Version=0 Length=32 Present=264295 TSFT=638758038 Flags=SHORT-PREAMBLE,FCS,DATAPAD Rate=24 Mb/s ChannelFrequency=0 MHz ChannelFlags= FHSS=0 DBMAntennaSignal=-39 DBMAntennaNoise=-96 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=2 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (10 bytes) = Dot11 {Contents=[..10..] Payload=[] Type=CtrlAck Proto=0 Flags= DurationID=0 Address1=00:19:e3:d3:53:52 Address2= Address3= Address4= SequenceNumber=0 FragmentNumber=0 Checksum=2272717126 QOS=nil HTControl=nil DataLayer=nil} --- PASS: TestPacketDot11CtrlAck (0.00s) === RUN TestPacketDot11DataARP base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11Data LLC SNAP ARP] base_test.go:21: Got layer RadioTap, 32 bytes, payload of 64 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 36 bytes base_test.go:21: Got layer Dot11Data, 0 bytes, payload of 36 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 33 bytes base_test.go:21: Got layer SNAP, 5 bytes, payload of 28 bytes base_test.go:21: Got layer ARP, 28 bytes, payload of 0 bytes base_test.go:24: PACKET: 92 bytes - Layer 1 (32 bytes) = RadioTap {Contents=[..32..] Payload=[..64..] Version=0 Length=32 Present=264295 TSFT=622463798 Flags=SHORT-PREAMBLE,DATAPAD Rate=6 Mb/s ChannelFrequency=0 MHz ChannelFlags= FHSS=0 DBMAntennaSignal=-39 DBMAntennaNoise=-96 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=2 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[..36..] Type=Data Proto=0 Flags=FROM-DS DurationID=0 Address1=ff:ff:ff:ff:ff:ff Address2=06:03:7f:07:a0:16 Address3=00:19:e3:d3:53:52 Address4= SequenceNumber=2046 FragmentNumber=0 Checksum=2997778574 QOS=nil HTControl=nil DataLayer={ Contents=[] Payload=[..36..]}} - Layer 3 (00 bytes) = Dot11Data {Contents=[] Payload=[..36..]} - Layer 4 (03 bytes) = LLC {Contents=[170, 170, 3] Payload=[..33..] DSAP=170 IG=false SSAP=170 CR=false Control=3} - Layer 5 (05 bytes) = SNAP {Contents=[..5..] Payload=[..28..] OrganizationalCode=[0, 0, 0] Type=ARP} - Layer 6 (28 bytes) = ARP {Contents=[..28..] Payload=[] AddrType=Ethernet Protocol=IPv4 HwAddressSize=6 ProtAddressSize=4 Operation=1 SourceHwAddress=[..6..] SourceProtAddress=[169, 254, 247, 0] DstHwAddress=[..6..] DstProtAddress=[67, 8, 14, 54]} --- PASS: TestPacketDot11DataARP (0.00s) === RUN TestPacketDot11DataIP base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11Data LLC SNAP IPv4 UDP DHCPv4] base_test.go:21: Got layer RadioTap, 32 bytes, payload of 364 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 336 bytes base_test.go:21: Got layer Dot11Data, 0 bytes, payload of 336 bytes base_test.go:21: Got layer LLC, 3 bytes, payload of 333 bytes base_test.go:21: Got layer SNAP, 5 bytes, payload of 328 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 308 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 300 bytes base_test.go:21: Got layer DHCPv4, 300 bytes, payload of 0 bytes base_test.go:24: PACKET: 392 bytes - Layer 1 (32 bytes) = RadioTap {Contents=[..32..] Payload=[..364..] Version=0 Length=32 Present=264295 TSFT=632340487 Flags=SHORT-PREAMBLE,DATAPAD Rate=6 Mb/s ChannelFrequency=0 MHz ChannelFlags= FHSS=0 DBMAntennaSignal=-40 DBMAntennaNoise=-96 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=1 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[..336..] Type=Data Proto=0 Flags=FROM-DS DurationID=0 Address1=ff:ff:ff:ff:ff:ff Address2=06:03:7f:07:a0:16 Address3=00:19:e3:d3:53:52 Address4= SequenceNumber=2388 FragmentNumber=0 Checksum=206812417 QOS=nil HTControl=nil DataLayer={ Contents=[] Payload=[..336..]}} - Layer 3 (00 bytes) = Dot11Data {Contents=[] Payload=[..336..]} - Layer 4 (03 bytes) = LLC {Contents=[170, 170, 3] Payload=[..333..] DSAP=170 IG=false SSAP=170 CR=false Control=3} - Layer 5 (05 bytes) = SNAP {Contents=[..5..] Payload=[..328..] OrganizationalCode=[0, 0, 0] Type=IPv4} - Layer 6 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..308..] Version=4 IHL=5 TOS=0 Length=328 Id=50452 Flags= FragOffset=0 TTL=255 Protocol=UDP Checksum=62864 SrcIP=0.0.0.0 DstIP=255.255.255.255 Options=[] Padding=[]} - Layer 7 (08 bytes) = UDP {Contents=[..8..] Payload=[..300..] SrcPort=68(bootpc) DstPort=67(bootps) Length=308 Checksum=11065} - Layer 8 (300 bytes) = DHCPv4 {Contents=[..300..] Payload=[] Operation=Request HardwareType=Ethernet HardwareLen=6 HardwareOpts=0 Xid=320834627 Secs=60 Flags=0 ClientIP=0.0.0.0 YourClientIP=0.0.0.0 NextServerIP=0.0.0.0 RelayAgentIP=0.0.0.0 ClientHWAddr=00:19:e3:d3:53:52 ServerName=[..64..] File=[..128..] Options=[Option(MessageType:Discover), Option(ParamsRequest:SubnetMask,Router,DNS,DomainName,DomainSearch,Unknown,Unknown,NetBIOSOverTCPNS,NetBIOSOverTCPNodeType,NetBIOSOverTCPScope), Option(MaxDHCPSize:[5 220]), Option(ClientID:[1 0 25 227 211 83 82]), Option(LeaseTime:7776000), Option(Hostname:Macintosh-4)]} --- PASS: TestPacketDot11DataIP (0.00s) === RUN TestPacketP6196 base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11DataQOSData Dot11WEP] base_test.go:21: Got layer RadioTap, 48 bytes, payload of 143 bytes base_test.go:21: Got layer Dot11, 26 bytes, payload of 113 bytes base_test.go:21: Got layer Dot11DataQOSData, 0 bytes, payload of 113 bytes base_test.go:21: Got layer Dot11WEP, 113 bytes, payload of 0 bytes base_test.go:24: PACKET: 191 bytes - Layer 1 (48 bytes) = RadioTap {Contents=[..48..] Payload=[..143..] Version=0 Length=48 Present=1837163 TSFT=20605036 Flags=WEP,FCS Rate=0 Mb/s ChannelFrequency=5240 MHz ChannelFlags=OFDM,Ghz5 FHSS=0 DBMAntennaSignal=-69 DBMAntennaNoise=-92 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=1 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS=STBC#0,num-of-ESS#0 AMPDUStatus=ref#40140,delimiter CRC error,delimiter-CRC=30 VHT=} - Layer 2 (26 bytes) = Dot11 {Contents=[..26..] Payload=[..113..] Type=DataQOSData Proto=0 Flags=TO-DS,WEP DurationID=44 Address1=00:25:9c:42:c2:62 Address2=d8:a2:5e:97:61:c1 Address3=00:25:9c:42:c2:5f Address4= SequenceNumber=3505 FragmentNumber=0 Checksum=3402204673 QOS={ TID=0 EOSP=false AckPolicy=normal-ack TXOP=0} HTControl=nil DataLayer={ Contents=[] Payload=[..113..]}} - Layer 3 (00 bytes) = Dot11DataQOSData {Contents=[] Payload=[..113..]} - Layer 4 (113 bytes) = Dot11WEP {Contents=[..113..] Payload=[]} --- PASS: TestPacketP6196 (0.00s) === RUN TestPacketDot11HTControl base_test.go:19: Checking packet layers, want [RadioTap Dot11 Dot11DataQOSData Dot11WEP] base_test.go:21: Got layer RadioTap, 38 bytes, payload of 106 bytes base_test.go:21: Got layer Dot11, 30 bytes, payload of 72 bytes base_test.go:21: Got layer Dot11DataQOSData, 0 bytes, payload of 72 bytes base_test.go:21: Got layer Dot11WEP, 72 bytes, payload of 0 bytes base_test.go:24: PACKET: 140 bytes - Layer 1 (38 bytes) = RadioTap {Contents=[..38..] Payload=[..106..] Version=0 Length=38 Present=2115627 TSFT=33976511 Flags= Rate=0 Mb/s ChannelFrequency=5240 MHz ChannelFlags=OFDM,Ghz5 FHSS=0 DBMAntennaSignal=-72 DBMAntennaNoise=0 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=0 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=long GI,40,user0(NSS#3MCS#7,BCC)} - Layer 2 (30 bytes) = Dot11 {Contents=[..30..] Payload=[..72..] Type=DataQOSData Proto=0 Flags=TO-DS,Retry,WEP,Order DurationID=5168 Address1=01:02:03:04:05:06 Address2=11:12:13:14:15:16 Address3=21:22:23:24:25:26 Address4= SequenceNumber=3036 FragmentNumber=0 Checksum=2114147696 QOS={ TID=0 EOSP=false AckPolicy=normal-ack TXOP=20} HTControl={ ACConstraint=false RDGMorePPDU=true VHT=nil HT={ LinkAdapationControl={ TRQ=true MRQ=true MSI=1 MFSI=0 ASEL=nil MFB=20} CalibrationPosition=0 CalibrationSequence=0 CSISteering=0 NDPAnnouncement=false DEI=true}} DataLayer={ Contents=[] Payload=[..72..]}} - Layer 3 (00 bytes) = Dot11DataQOSData {Contents=[] Payload=[..72..]} - Layer 4 (72 bytes) = Dot11WEP {Contents=[..72..] Payload=[]} --- PASS: TestPacketDot11HTControl (0.00s) === RUN TestInformationElement --- PASS: TestInformationElement (0.00s) === RUN TestEncodeDecodeDot1Q --- PASS: TestEncodeDecodeDot1Q (0.00s) === RUN TestPacketEAPOLKey base_test.go:19: Checking packet layers, want [EAPOL EAPOLKey Dot11InformationElement] base_test.go:21: Got layer EAPOL, 4 bytes, payload of 117 bytes base_test.go:21: Got layer EAPOLKey, 95 bytes, payload of 22 bytes base_test.go:21: Got layer Dot11InformationElement, 22 bytes, payload of 0 bytes base_test.go:24: PACKET: 121 bytes - Layer 1 (04 bytes) = EAPOL {Contents=[2, 3, 0, 117] Payload=[..117..] Version=2 Type=EAPOLKey Length=117} - Layer 2 (95 bytes) = EAPOLKey {Contents=[..95..] Payload=[..22..] KeyDescriptorType=802.11 KeyDescriptorVersion=AES-HMAC-SHA1-128 KeyType=Pairwise KeyIndex=0 Install=false KeyACK=true KeyMIC=false Secure=false MICError=false Request=false HasEncryptedKeyData=false SMKMessage=false KeyLength=16 ReplayCounter=0 Nonce=[..32..] IV=[..16..] RSC=0 ID=0 MIC=[..16..] KeyDataLength=22 EncryptedKeyData=[]} - Layer 3 (22 bytes) = Dot11InformationElement 802.11 Information Element (ID: Vendor, Length: 20, OUI: 000FAC04, Info: 592DA88096C461DA246C69001E877F3D) --- PASS: TestPacketEAPOLKey (0.00s) === RUN TestNewIPEndpoint --- PASS: TestNewIPEndpoint (0.00s) === RUN TestDecodeAndEncode --- PASS: TestDecodeAndEncode (0.00s) === RUN TestDecodeGeneve1 base_test.go:19: Checking packet layers, want [Linux SLL IPv4 UDP Geneve Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Linux SLL, 16 bytes, payload of 134 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 114 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 106 bytes base_test.go:21: Got layer Geneve, 8 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 150 bytes - Layer 1 (16 bytes) = Linux SLL {Contents=[..16..] Payload=[..134..] PacketType=outgoing AddrLen=6 Addr=fa:16:3e:23:d3:42 EthernetType=IPv4 AddrType=1} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..114..] Version=4 IHL=5 TOS=0 Length=134 Id=34617 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=12597 SrcIP=192.168.0.83 DstIP=192.168.0.85 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..106..] SrcPort=12631 DstPort=6081(geneve) Length=114 Checksum=0} - Layer 4 (08 bytes) = Geneve {Contents=[..8..] Payload=[..98..] Version=0 OptionsLength=0 OAMPacket=false CriticalOption=false Protocol=TransparentEthernetBridging VNI=0 Options=[]} - Layer 5 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=a2:fe:54:48:88:51 DstMAC=ba:09:60:5f:a0:91 EthernetType=IPv4 Length=0} - Layer 6 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=502 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=46943 SrcIP=192.168.0.1 DstIP=192.168.0.2 Options=[] Padding=[]} - Layer 7 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=31199 Id=3322 Seq=25540} - Layer 8 (56 bytes) = Payload 56 byte(s) --- PASS: TestDecodeGeneve1 (0.00s) === RUN TestDecodeGeneve2 base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP Geneve Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 134 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 114 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 106 bytes base_test.go:21: Got layer Geneve, 8 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 148 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..134..] SrcMAC=02:88:0a:81:bd:6d DstMAC=12:be:4e:b6:a7:c7 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..114..] Version=4 IHL=5 TOS=0 Length=134 Id=8434 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=338 SrcIP=172.16.0.1 DstIP=172.16.0.2 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..106..] SrcPort=16550 DstPort=6081(geneve) Length=114 Checksum=0} - Layer 4 (08 bytes) = Geneve {Contents=[..8..] Payload=[..98..] Version=0 OptionsLength=0 OAMPacket=false CriticalOption=false Protocol=TransparentEthernetBridging VNI=10 Options=[]} - Layer 5 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=8e:ab:a2:a5:02:f7 DstMAC=d2:8c:db:12:53:d5 EthernetType=IPv4 Length=0} - Layer 6 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=14362 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=33083 SrcIP=192.168.0.1 DstIP=192.168.0.2 Options=[] Padding=[]} - Layer 7 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=56733 Id=32478 Seq=707} - Layer 8 (56 bytes) = Payload 56 byte(s) --- PASS: TestDecodeGeneve2 (0.00s) === RUN TestDecodeGeneve3 base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP Geneve Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 142 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 122 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 114 bytes base_test.go:21: Got layer Geneve, 16 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 156 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..142..] SrcMAC=00:1b:21:3c:ab:64 DstMAC=00:1b:21:3c:ac:30 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..122..] Version=4 IHL=5 TOS=0 Length=142 Id=57261 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=12975 SrcIP=20.0.0.1 DstIP=20.0.0.2 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..114..] SrcPort=12618 DstPort=6081(geneve) Length=122 Checksum=0} - Layer 4 (16 bytes) = Geneve {Contents=[..16..] Payload=[..98..] Version=0 OptionsLength=8 OAMPacket=false CriticalOption=true Protocol=TransparentEthernetBridging VNI=10 Options=[{Class=0 Type=128 Flags=0 Length=8 Data=[0, 0, 0, 12]}]} - Layer 5 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=b6:9e:d2:49:51:48 DstMAC=fe:71:d8:83:72:4f EthernetType=IPv4 Length=0} - Layer 6 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=48546 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=16644 SrcIP=30.0.0.1 DstIP=30.0.0.2 Options=[] Padding=[]} - Layer 7 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=11348 Id=10578 Seq=23} - Layer 8 (56 bytes) = Payload 56 byte(s) --- PASS: TestDecodeGeneve3 (0.00s) === RUN TestPacketGRE base_test.go:19: Checking packet layers, want [Ethernet IPv4 GRE IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 108 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 88 bytes base_test.go:21: Got layer GRE, 4 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 122 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..108..] SrcMAC=8e:7a:12:c3:a9:71 DstMAC=3a:56:6b:69:59:5e EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..88..] Version=4 IHL=5 TOS=0 Length=108 Id=33852 Flags=DF FragOffset=0 TTL=64 Protocol=GRE Checksum=13011 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (04 bytes) = GRE {Contents=[0, 0, 8, 0] Payload=[..84..] ChecksumPresent=false RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=IPv4 Checksum=0 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=1160 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=56062 SrcIP=172.16.1.1 DstIP=172.16.2.1 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=33476 Id=4724 Seq=1} - Layer 6 (56 bytes) = Payload 56 byte(s) --- PASS: TestPacketGRE (0.00s) === RUN TestIPv4OverGREEncode base_test.go:19: Checking packet layers, want [Ethernet IPv4 GRE IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 108 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 88 bytes base_test.go:21: Got layer GRE, 4 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 122 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..108..] SrcMAC=8e:7a:12:c3:a9:71 DstMAC=3a:56:6b:69:59:5e EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..88..] Version=4 IHL=5 TOS=0 Length=108 Id=33852 Flags=DF FragOffset=0 TTL=64 Protocol=GRE Checksum=13011 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (04 bytes) = GRE {Contents=[0, 0, 8, 0] Payload=[..84..] ChecksumPresent=false RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=IPv4 Checksum=0 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=1160 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=56062 SrcIP=172.16.1.1 DstIP=172.16.2.1 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=33476 Id=4724 Seq=1} - Layer 6 (56 bytes) = Payload 56 byte(s) --- PASS: TestIPv4OverGREEncode (0.00s) === RUN TestPacketEthernetOverGRE base_test.go:19: Checking packet layers, want [Ethernet IPv4 GRE Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 122 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 102 bytes base_test.go:21: Got layer GRE, 4 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 136 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..122..] SrcMAC=d6:b9:d8:80:56:ef DstMAC=ea:6b:4c:d3:55:13 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..102..] Version=4 IHL=5 TOS=0 Length=122 Id=2765 Flags=DF FragOffset=0 TTL=64 Protocol=GRE Checksum=44084 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (04 bytes) = GRE {Contents=[0, 0, 101, 88] Payload=[..98..] ChecksumPresent=false RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=TransparentEthernetBridging Checksum=0 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=6e:32:3e:c7:9d:ef DstMAC=aa:6a:36:e6:c6:30 EthernetType=IPv4 Length=0} - Layer 5 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=55664 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=1813 SrcIP=172.16.1.1 DstIP=172.16.1.2 Options=[] Padding=[]} - Layer 6 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=16149 Id=3842 Seq=1} - Layer 7 (56 bytes) = Payload 56 byte(s) --- PASS: TestPacketEthernetOverGRE (0.00s) === RUN TestEthernetOverGREEncode base_test.go:19: Checking packet layers, want [Ethernet IPv4 GRE Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 122 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 102 bytes base_test.go:21: Got layer GRE, 4 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 136 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..122..] SrcMAC=d6:b9:d8:80:56:ef DstMAC=ea:6b:4c:d3:55:13 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..102..] Version=4 IHL=5 TOS=0 Length=122 Id=2765 Flags=DF FragOffset=0 TTL=64 Protocol=GRE Checksum=44084 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (04 bytes) = GRE {Contents=[0, 0, 101, 88] Payload=[..98..] ChecksumPresent=false RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=TransparentEthernetBridging Checksum=0 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=6e:32:3e:c7:9d:ef DstMAC=aa:6a:36:e6:c6:30 EthernetType=IPv4 Length=0} - Layer 5 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=55664 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=1813 SrcIP=172.16.1.1 DstIP=172.16.1.2 Options=[] Padding=[]} - Layer 6 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=16149 Id=3842 Seq=1} - Layer 7 (56 bytes) = Payload 56 byte(s) --- PASS: TestEthernetOverGREEncode (0.00s) === RUN TestGREChecksum gre_test.go:357: PACKET: 142 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..128..] SrcMAC=c2:00:57:75:00:00 DstMAC=c2:01:57:75:00:00 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..108..] Version=4 IHL=5 TOS=0 Length=128 Id=10 Flags= FragOffset=0 TTL=255 Protocol=GRE Checksum=42818 SrcIP=10.0.0.1 DstIP=10.0.0.2 Options=[] Padding=[]} - Layer 3 (08 bytes) = GRE {Contents=[..8..] Payload=[..100..] ChecksumPresent=true RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=IPv4 Checksum=30719 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..80..] Version=4 IHL=5 TOS=0 Length=100 Id=10 Flags= FragOffset=0 TTL=255 Protocol=ICMPv4 Checksum=46473 SrcIP=1.1.1.1 DstIP=2.2.2.2 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..72..] TypeCode=EchoRequest Checksum=49108 Id=2 Seq=0} - Layer 6 (72 bytes) = Payload 72 byte(s) gre_test.go:357: PACKET: 102 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..88..] SrcMAC=c2:00:57:75:00:00 DstMAC=c2:01:57:75:00:00 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..68..] Version=4 IHL=5 TOS=0 Length=88 Id=10 Flags= FragOffset=0 TTL=255 Protocol=GRE Checksum=42858 SrcIP=10.0.0.1 DstIP=10.0.0.2 Options=[] Padding=[]} - Layer 3 (08 bytes) = GRE {Contents=[..8..] Payload=[..60..] ChecksumPresent=true RoutingPresent=false KeyPresent=false SeqPresent=false StrictSourceRoute=false AckPresent=false RecursionControl=0 Flags=0 Version=0 Protocol=IPv4 Checksum=33909 Offset=0 Key=0 Seq=0 Ack=0nil} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..40..] Version=4 IHL=5 TOS=0 Length=60 Id=964 Flags=DF FragOffset=0 TTL=1 Protocol=UDP Checksum=27057 SrcIP=2.3.4.5 DstIP=2.3.4.50 Options=[] Padding=[]} - Layer 5 (08 bytes) = UDP {Contents=[..8..] Payload=[..32..] SrcPort=41781 DstPort=33434(traceroute) Length=40 Checksum=55436} - Layer 6 (32 bytes) = Payload 32 byte(s) --- PASS: TestGREChecksum (0.00s) === RUN TestGTPPacket base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP GTPv1U IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 124 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 104 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 96 bytes base_test.go:21: Got layer GTPv1U, 12 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 138 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..124..] SrcMAC=00:0c:29:da:d1:de DstMAC=00:0c:29:e3:c6:4d EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..104..] Version=4 IHL=5 TOS=0 Length=124 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=26555 SrcIP=192.168.40.178 DstIP=192.168.40.179 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..96..] SrcPort=2152(gtp-user) DstPort=2152(gtp-user) Length=104 Checksum=49604} - Layer 4 (12 bytes) = GTPv1U {Contents=[..12..] Payload=[..84..] Version=1 ProtocolType=1 Reserved=0 ExtensionHeaderFlag=false SequenceNumberFlag=true NPDUFlag=false MessageType=255 MessageLength=88 TEID=1 SequenceNumber=9851 NPDU=0 GTPExtensionHeaders=[]} - Layer 5 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=1654 Flags= FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=38959 SrcIP=192.168.40.178 DstIP=202.11.40.158 Options=[] Padding=[]} - Layer 6 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoReply Checksum=14825 Id=0 Seq=10365} - Layer 7 (56 bytes) = Payload 56 byte(s) --- PASS: TestGTPPacket (0.00s) === RUN TestGTPPacketWithEH base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP GTPv1U IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 128 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 108 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 100 bytes base_test.go:21: Got layer GTPv1U, 16 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 142 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..128..] SrcMAC=00:0c:29:da:d1:de DstMAC=00:0c:29:e3:c6:4d EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..108..] Version=4 IHL=5 TOS=0 Length=128 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=26555 SrcIP=192.168.40.178 DstIP=192.168.40.179 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..100..] SrcPort=2152(gtp-user) DstPort=2152(gtp-user) Length=108 Checksum=49557} - Layer 4 (16 bytes) = GTPv1U {Contents=[..16..] Payload=[..84..] Version=1 ProtocolType=1 Reserved=0 ExtensionHeaderFlag=true SequenceNumberFlag=true NPDUFlag=false MessageType=255 MessageLength=88 TEID=1050199 SequenceNumber=5 NPDU=0 GTPExtensionHeaders=[{Type=192 Content=[9, 4]}]} - Layer 5 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=1701 Flags= FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=38912 SrcIP=192.168.40.178 DstIP=202.11.40.158 Options=[] Padding=[]} - Layer 6 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoReply Checksum=58294 Id=0 Seq=10412} - Layer 7 (56 bytes) = Payload 56 byte(s) --- PASS: TestGTPPacketWithEH (0.00s) === RUN TestPacketICMPv6NeighborAnnouncementFlags --- PASS: TestPacketICMPv6NeighborAnnouncementFlags (0.00s) === RUN TestPacketICMPv6RouterAnnouncementFlags --- PASS: TestPacketICMPv6RouterAnnouncementFlags (0.00s) === RUN TestPacketICMPv6 base_test.go:19: Checking packet layers, want [Ethernet IPv6 ICMPv6 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 64 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer ICMPv6NeighborAdvertisement, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 78 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=24:be:05:27:0b:17 DstMAC=00:1f:ca:b3:76:40 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=0 FlowLabel=0 Length=24 NextHeader=ICMPv6 HopLimit=255 SrcIP=2620:0:1005:0:26be:5ff:fe27:b17 DstIP=fe80::21f:caff:feb3:7640 HopByHop=nil} - Layer 3 (04 bytes) = ICMPv6 {Contents=[136, 0, 30, 214] Payload=[..20..] TypeCode=NeighborAdvertisement Checksum=7894 TypeBytes=[]} - Layer 4 (20 bytes) = ICMPv6NeighborAdvertisement {Contents=[..20..] Payload=[] Flags=64 TargetAddress=2620:0:1005:0:26be:5ff:fe27:b17 Options=[]} --- PASS: TestPacketICMPv6 (0.00s) === RUN TestPacketICMPv6WithHopByHop base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 176 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 128 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 128 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 124 bytes base_test.go:21: Got layer MLDv2MulticastListenerReport, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 190 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..176..] SrcMAC=1e:c3:e3:b7:c4:d5 DstMAC=33:33:00:00:00:16 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..128..] Version=6 TrafficClass=0 FlowLabel=0 Length=136 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=:: DstIP=ff02::16 HopByHop={ Contents=[..8..] Payload=[..128..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..128..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[143, 0, 158, 237] Payload=[..124..] TypeCode=143(0) Checksum=40685 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv2MulticastListenerReport Number of Mcast Addr Records: 6 (actual 6), Multicast Address Records: [{RecordType:CHANGE_TO_INCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ffb7:c4d5 SourceAddresses:[] AuxiliaryData:[]} {RecordType:CHANGE_TO_INCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ff00:0 SourceAddresses:[] AuxiliaryData:[]} {RecordType:CHANGE_TO_EXCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ff11:79 SourceAddresses:[] AuxiliaryData:[]} {RecordType:CHANGE_TO_EXCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ff00:1 SourceAddresses:[] AuxiliaryData:[]} {RecordType:CHANGE_TO_EXCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff05::2 SourceAddresses:[] AuxiliaryData:[]} {RecordType:CHANGE_TO_EXCLUDE_MODE AuxDataLen:0 N:0 MulticastAddress:ff02::2 SourceAddresses:[] AuxiliaryData:[]}] --- PASS: TestPacketICMPv6WithHopByHop (0.00s) === RUN TestPacketICMPv6RouterAdvertisement base_test.go:19: Checking packet layers, want [Ethernet IPv6 ICMPv6 ICMPv6RouterAdvertisement] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 104 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 60 bytes base_test.go:21: Got layer ICMPv6RouterAdvertisement, 60 bytes, payload of 0 bytes base_test.go:24: PACKET: 118 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..104..] SrcMAC=c2:00:54:f5:00:00 DstMAC=33:33:00:00:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..64..] Version=6 TrafficClass=224 FlowLabel=0 Length=64 NextHeader=ICMPv6 HopLimit=255 SrcIP=fe80::c000:54ff:fef5:0 DstIP=ff02::1 HopByHop=nil} - Layer 3 (04 bytes) = ICMPv6 {Contents=[134, 0, 196, 254] Payload=[..60..] TypeCode=RouterAdvertisement Checksum=50430 TypeBytes=[]} - Layer 4 (60 bytes) = ICMPv6RouterAdvertisement {Contents=[..60..] Payload=[] HopLimit=64 Flags=0 RouterLifetime=1800 ReachableTime=0 RetransTimer=0 Options=[ICMPv6Option(SourceAddress:c2:00:54:f5:00:00), ICMPv6Option(MTU:1500), ICMPv6Option(PrefixInfo:2001:db8:0:1::/64:true:true:720h0m0s:168h0m0s)]} --- PASS: TestPacketICMPv6RouterAdvertisement (0.00s) === RUN TestPacketICMPv6NeighborSolicitation base_test.go:19: Checking packet layers, want [Ethernet IPv6 ICMPv6 ICMPv6NeighborSolicitation] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 64 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer ICMPv6NeighborSolicitation, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 78 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=00:0c:29:0e:4c:67 DstMAC=33:33:ff:0e:4c:67 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=0 FlowLabel=0 Length=24 NextHeader=ICMPv6 HopLimit=255 SrcIP=:: DstIP=ff02::1:ff0e:4c67 HopByHop=nil} - Layer 3 (04 bytes) = ICMPv6 {Contents=[135, 0, 185, 48] Payload=[..20..] TypeCode=NeighborSolicitation Checksum=47408 TypeBytes=[]} - Layer 4 (20 bytes) = ICMPv6NeighborSolicitation {Contents=[..20..] Payload=[] TargetAddress=fe80::20c:29ff:fe0e:4c67 Options=[]} --- PASS: TestPacketICMPv6NeighborSolicitation (0.00s) === RUN TestIGMPv1MembershipReportPacket base_test.go:19: Checking packet layers, want [Ethernet IPv4 IGMP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 8 bytes base_test.go:21: Got layer IGMP, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..46..] SrcMAC=00:30:c1:bf:57:55 DstMAC=01:00:5e:00:01:3c EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..8..] Version=4 IHL=5 TOS=0 Length=28 Id=27263 Flags= FragOffset=0 TTL=1 Protocol=IGMP Checksum=25445 SrcIP=10.60.0.132 DstIP=224.0.1.60 Options=[] Padding=[]} - Layer 3 (00 bytes) = IGMP {Contents=[] Payload=[] Type=IGMPv1 Membership Report MaxResponseTime=0s Checksum=3267 GroupAddress=224.0.1.60 Version=1} --- PASS: TestIGMPv1MembershipReportPacket (0.00s) === RUN TestIGMPv2MembershipQuery base_test.go:19: Checking packet layers, want [Ethernet IPv4 IGMP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 8 bytes base_test.go:21: Got layer IGMP, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..46..] SrcMAC=00:01:63:6f:c8:00 DstMAC=01:00:5e:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..8..] Version=4 IHL=5 TOS=192 Length=28 Id=339 Flags= FragOffset=0 TTL=1 Protocol=IGMP Checksum=52435 SrcIP=10.60.0.189 DstIP=224.0.0.1 Options=[] Padding=[]} - Layer 3 (00 bytes) = IGMP {Contents=[] Payload=[] Type=IGMP Membership Query MaxResponseTime=10s Checksum=61083 GroupAddress=0.0.0.0 Version=2} --- PASS: TestIGMPv2MembershipQuery (0.00s) === RUN TestIGMPv2MembershipReport base_test.go:19: Checking packet layers, want [Ethernet IPv4 IGMP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 24 bytes, payload of 8 bytes base_test.go:21: Got layer IGMP, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..46..] SrcMAC=00:15:58:dc:d9:f6 DstMAC=01:00:5e:7f:ff:fd EthernetType=IPv4 Length=0} - Layer 2 (24 bytes) = IPv4 {Contents=[..24..] Payload=[..8..] Version=4 IHL=6 TOS=0 Length=32 Id=31216 Flags= FragOffset=0 TTL=1 Protocol=IGMP Checksum=43847 SrcIP=10.60.5.103 DstIP=239.255.255.253 Options=[IPv4Option(148:[0 0])] Padding=[]} - Layer 3 (00 bytes) = IGMP {Contents=[] Payload=[] Type=IGMPv2 Membership Report MaxResponseTime=0s Checksum=64001 GroupAddress=239.255.255.253 Version=2} --- PASS: TestIGMPv2MembershipReport (0.00s) === RUN TestIGMPv3MembershipQuery base_test.go:19: Checking packet layers, want [Ethernet IPv4 IGMP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 24 bytes, payload of 12 bytes base_test.go:21: Got layer IGMP, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..46..] SrcMAC=00:26:44:6c:1e:da DstMAC=01:00:5e:00:00:01 EthernetType=IPv4 Length=0} - Layer 2 (24 bytes) = IPv4 {Contents=[..24..] Payload=[..12..] Version=4 IHL=6 TOS=192 Length=36 Id=6129 Flags=DF FragOffset=0 TTL=1 Protocol=IGMP Checksum=10619 SrcIP=192.168.1.254 DstIP=224.0.0.1 Options=[IPv4Option(148:[0 0])] Padding=[]} - Layer 3 (00 bytes) = IGMP {Contents=[] Payload=[] Type=IGMP Membership Query MaxResponseTime=2.4s Checksum=60627 GroupAddress=0.0.0.0 SupressRouterProcessing=false RobustnessValue=2 IntervalTime=2s SourceAddresses=[] NumberOfGroupRecords=0 NumberOfSources=0 GroupRecords=[] Version=3} --- PASS: TestIGMPv3MembershipQuery (0.00s) === RUN TestIGMPv3MembershipReport2Records base_test.go:19: Checking packet layers, want [Ethernet IPv4 IGMP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 48 bytes base_test.go:21: Got layer IPv4, 24 bytes, payload of 24 bytes base_test.go:21: Got layer IGMP, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 62 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..48..] SrcMAC=00:25:2e:51:c3:81 DstMAC=01:00:5e:00:00:16 EthernetType=IPv4 Length=0} - Layer 2 (24 bytes) = IPv4 {Contents=[..24..] Payload=[..24..] Version=4 IHL=6 TOS=88 Length=48 Id=316 Flags= FragOffset=0 TTL=1 Protocol=IGMP Checksum=33075 SrcIP=192.168.1.66 DstIP=224.0.0.22 Options=[IPv4Option(148:[0 0])] Padding=[]} - Layer 3 (00 bytes) = IGMP {Contents=[] Payload=[] Type=IGMPv3 Membership Report MaxResponseTime=0s Checksum=62268 GroupAddress=<nil> SupressRouterProcessing=false RobustnessValue=0 IntervalTime=0s SourceAddresses=[] NumberOfGroupRecords=2 NumberOfSources=0 GroupRecords=[{Type=MODE_IS_EXCLUDE AuxDataLen=0 NumberOfSources=0 MulticastAddress=239.195.7.2 SourceAddresses=[] AuxData=0}, {Type=MODE_IS_EXCLUDE AuxDataLen=0 NumberOfSources=0 MulticastAddress=239.255.255.250 SourceAddresses=[] AuxData=0}] Version=3} --- PASS: TestIGMPv3MembershipReport2Records (0.00s) === RUN TestGetIPOptLengthNoOpt --- PASS: TestGetIPOptLengthNoOpt (0.00s) === RUN TestGetIPOptLengthEndOfList --- PASS: TestGetIPOptLengthEndOfList (0.00s) === RUN TestGetIPOptLengthPaddingEndOfList --- PASS: TestGetIPOptLengthPaddingEndOfList (0.00s) === RUN TestGetIPOptLengthOptionEndOfList --- PASS: TestGetIPOptLengthOptionEndOfList (0.00s) === RUN TestIPOptResetDuringDecoding --- PASS: TestIPOptResetDuringDecoding (0.00s) === RUN TestChecksum --- PASS: TestChecksum (0.00s) === RUN TestIPv4InvalidOptionLength --- PASS: TestIPv4InvalidOptionLength (0.00s) === RUN TestIPv4Options --- PASS: TestIPv4Options (0.00s) === RUN TestSerializeIPv6HeaderTLVOptions --- PASS: TestSerializeIPv6HeaderTLVOptions (0.00s) === RUN TestPacketIPv6HopByHop0Serialize --- PASS: TestPacketIPv6HopByHop0Serialize (0.00s) === RUN TestPacketIPv6HopByHop0Decode base_test.go:19: Checking packet layers, want [IPv6 IPv6HopByHop] base_test.go:21: Got layer IPv6, 40 bytes, payload of 0 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 0 bytes base_test.go:24: PACKET: 48 bytes, truncated - Layer 1 (40 bytes) = IPv6 {Contents=[..40..] Payload=[] Version=6 TrafficClass=0 FlowLabel=0 Length=8 NextHeader=IPv6HopByHop HopLimit=64 SrcIP=2001:db8::1 DstIP=2001:db8::2 HopByHop={ Contents=[..8..] Payload=[] NextHeader=NoNextHeader HeaderLength=0 ActualLength=8 Options=[{OptionType=1 OptionLength=4 ActualLength=6 OptionData=[0, 0, 0, 0] OptionAlignment=[0 0]}]}} - Layer 2 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[] NextHeader=NoNextHeader HeaderLength=0 ActualLength=8 Options=[{OptionType=1 OptionLength=4 ActualLength=6 OptionData=[0, 0, 0, 0] OptionAlignment=[0 0]}]} --- PASS: TestPacketIPv6HopByHop0Decode (0.00s) === RUN TestPacketIPv6Destination0Serialize --- PASS: TestPacketIPv6Destination0Serialize (0.00s) === RUN TestPacketIPv6Destination0Decode base_test.go:19: Checking packet layers, want [IPv6 IPv6Destination] base_test.go:21: Got layer IPv6, 40 bytes, payload of 8 bytes base_test.go:21: Got layer IPv6Destination, 8 bytes, payload of 0 bytes base_test.go:24: PACKET: 48 bytes - Layer 1 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..8..] Version=6 TrafficClass=0 FlowLabel=0 Length=8 NextHeader=IPv6Destination HopLimit=64 SrcIP=2001:db8::1 DstIP=2001:db8::2 HopByHop=nil} - Layer 2 (08 bytes) = IPv6Destination {Contents=[..8..] Payload=[] NextHeader=NoNextHeader HeaderLength=0 ActualLength=8 Options=[{OptionType=1 OptionLength=4 ActualLength=6 OptionData=[0, 0, 0, 0] OptionAlignment=[0 0]}]} --- PASS: TestPacketIPv6Destination0Decode (0.00s) === RUN TestIPv6JumbogramSerialize --- PASS: TestIPv6JumbogramSerialize (0.00s) === RUN TestIPv6JumbogramDecode base_test.go:19: Checking packet layers, want [IPv6 IPv6HopByHop Payload] base_test.go:21: Got layer IPv6, 40 bytes, payload of 65544 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 65536 bytes base_test.go:21: Got layer Payload, 65536 bytes, payload of 0 bytes base_test.go:24: PACKET: 65584 bytes - Layer 1 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..65544..] Version=6 TrafficClass=0 FlowLabel=0 Length=0 NextHeader=IPv6HopByHop HopLimit=64 SrcIP=2001:db8::1 DstIP=2001:db8::2 HopByHop={ Contents=[..8..] Payload=[..65536..] NextHeader=NoNextHeader HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 0, 8] OptionAlignment=[0 0]}]}} - Layer 2 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..65536..] NextHeader=NoNextHeader HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 0, 8] OptionAlignment=[0 0]}]} - Layer 3 (65536 bytes) = Payload 65536 byte(s) --- PASS: TestIPv6JumbogramDecode (0.00s) === RUN TestPacketIPSecAHTransport base_test.go:19: Checking packet layers, want [Ethernet IPv4 IPSecAH ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 108 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 88 bytes base_test.go:21: Got layer IPSecAH, 24 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 122 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..108..] SrcMAC=1a:0e:3c:4e:3b:3a DstMAC=7e:c0:ff:c6:48:f1 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..88..] Version=4 IHL=5 TOS=0 Length=108 Id=25866 Flags=DF FragOffset=0 TTL=64 Protocol=IPSecAH Checksum=20993 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (24 bytes) = IPSecAH {Contents=[..24..] Payload=[..64..] NextHeader=ICMPv4 HeaderLength=4 ActualLength=24 Reserved=0 SPI=257 Seq=1 AuthenticationData=[..12..]} - Layer 4 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=64485 Id=1560 Seq=1} - Layer 5 (56 bytes) = Payload 56 byte(s) --- PASS: TestPacketIPSecAHTransport (0.00s) === RUN TestPacketIPSecAHTunnel base_test.go:19: Checking packet layers, want [Ethernet IPv4 IPSecAH IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 128 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 108 bytes base_test.go:21: Got layer IPSecAH, 24 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 142 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..128..] SrcMAC=56:6c:ed:2d:73:cd DstMAC=72:20:4d:91:63:c9 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..108..] Version=4 IHL=5 TOS=0 Length=128 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=IPSecAH Checksum=46839 SrcIP=192.168.1.1 DstIP=192.168.1.2 Options=[] Padding=[]} - Layer 3 (24 bytes) = IPSecAH {Contents=[..24..] Payload=[..84..] NextHeader=IPv4 HeaderLength=4 ActualLength=24 Reserved=0 SPI=257 Seq=1 AuthenticationData=[..12..]} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=43375 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=13847 SrcIP=172.16.1.1 DstIP=172.16.2.1 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=55135 Id=31322 Seq=1} - Layer 6 (56 bytes) = Payload 56 byte(s) --- PASS: TestPacketIPSecAHTunnel (0.00s) === RUN TestPacketIPSecESP base_test.go:19: Checking packet layers, want [Ethernet IPv4 IPSecESP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 136 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 116 bytes base_test.go:21: Got layer IPSecESP, 116 bytes, payload of 0 bytes base_test.go:24: PACKET: 150 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..136..] SrcMAC=00:11:43:4a:d7:0a DstMAC=00:00:00:00:00:12 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..116..] Version=4 IHL=5 TOS=0 Length=136 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=IPSecESP Checksum=48704 SrcIP=190.0.0.1 DstIP=190.0.0.2 Options=[] Padding=[]} - Layer 3 (116 bytes) = IPSecESP {Contents=[..116..] Payload=[] SPI=110 Seq=19 Encrypted=[..108..]} --- PASS: TestPacketIPSecESP (0.00s) === RUN TestLCMDecode --- PASS: TestLCMDecode (0.00s) === RUN TestPacketLLDP base_test.go:19: Checking packet layers, want [Ethernet LinkLayerDiscovery LinkLayerDiscoveryInfo] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 222 bytes base_test.go:21: Got layer LinkLayerDiscovery, 222 bytes, payload of 0 bytes base_test.go:21: Got layer LinkLayerDiscoveryInfo, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 236 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..222..] SrcMAC=00:1b:1b:02:e6:1f DstMAC=01:80:c2:00:00:0e EthernetType=LinkLayerDiscovery Length=0} - Layer 2 (222 bytes) = LinkLayerDiscovery {Contents=[..222..] Payload=[] ChassisID={ Subtype=Local ID=[..7..]} PortID={ Subtype=Local ID=[..8..]} TTL=20 Values=[..8..]} - Layer 3 (00 bytes) = LinkLayerDiscoveryInfo {Contents=[] Payload=[] PortDescription=Siemens, SIMATIC NET, Ethernet Switch Port 01 SysName=Switch1 SysDescription=Siemens, SIMATIC NET, SCALANCE X212-2, 6GK5 212-2BB00-2AA3, HW: 7, FW: V4.02 SysCapabilities={ SystemCap={ Other=false Repeater=false Bridge=false WLANAP=false Router=false Phone=false DocSis=false StationOnly=true CVLAN=false SVLAN=false TMPR=false} EnabledCap={ Other=false Repeater=false Bridge=false WLANAP=false Router=false Phone=false DocSis=false StationOnly=true CVLAN=false SVLAN=false TMPR=false}} MgmtAddress={ Subtype=IPv4 Address=[141, 81, 0, 190] InterfaceSubtype=IfIndex InterfaceNumber=1 OID=+��n} OrgTLVs=[{OUI=3791 SubType=2 Info=[0, 0, 0, 0]}, {OUI=3791 SubType=5 Info=[..6..]}, {OUI=4623 SubType=1 Info=[..5..]}] Unknown=[]} --- PASS: TestPacketLLDP (0.00s) === RUN TestPacketMulticastListenerQueryMessageV1 base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6 MLDv1MulticastListenerQuery] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 72 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer MLDv1MulticastListenerQuery, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 86 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..72..] SrcMAC=b0:a8:6e:0c:d4:e8 DstMAC=33:33:00:00:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=0 FlowLabel=0 Length=36 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=fe80::b2a8:6eff:fe0c:d4e8 DstIP=ff02::1 HopByHop={ Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[130, 0, 98, 58] Payload=[..20..] TypeCode=130(0) Checksum=25146 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv1MulticastListenerQuery Maximum Response Delay: 10000ms, Multicast Address: :: --- PASS: TestPacketMulticastListenerQueryMessageV1 (0.00s) === RUN TestPacketMulticastListenerReportMessageV1 base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6 MLDv1MulticastListenerReport] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 72 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer MLDv1MulticastListenerReport, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 86 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..72..] SrcMAC=b0:a8:6e:0c:d4:e8 DstMAC=33:33:00:00:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=0 FlowLabel=0 Length=36 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=fe80::b2a8:6eff:fe0c:d4e8 DstIP=ff02::1 HopByHop={ Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[131, 0, 98, 58] Payload=[..20..] TypeCode=131(0) Checksum=25146 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv1MulticastListenerReport Maximum Response Delay: 10000ms, Multicast Address: ff02::db8:1122:3344 --- PASS: TestPacketMulticastListenerReportMessageV1 (0.00s) === RUN TestPacketMulticastListenerDoneMessageV1 base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6 MLDv1MulticastListenerDone] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 72 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 24 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 24 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 20 bytes base_test.go:21: Got layer MLDv1MulticastListenerDone, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 86 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..72..] SrcMAC=b0:a8:6e:0c:d4:e8 DstMAC=33:33:00:00:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..24..] Version=6 TrafficClass=0 FlowLabel=0 Length=36 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=fe80::b2a8:6eff:fe0c:d4e8 DstIP=ff02::1 HopByHop={ Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..24..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[132, 0, 98, 58] Payload=[..20..] TypeCode=132(0) Checksum=25146 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv1MulticastListenerDone Maximum Response Delay: 10000ms, Multicast Address: ff02::db8:1122:3344 --- PASS: TestPacketMulticastListenerDoneMessageV1 (0.00s) === RUN TestPacketMulticastListenerQueryMessageV2 base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6 MLDv2MulticastListenerQuery] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 76 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 28 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 28 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 24 bytes base_test.go:21: Got layer MLDv2MulticastListenerQuery, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 90 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..76..] SrcMAC=b0:a8:6e:0c:d4:e8 DstMAC=33:33:00:00:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..28..] Version=6 TrafficClass=0 FlowLabel=0 Length=36 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=fe80::b2a8:6eff:fe0c:d4e8 DstIP=ff02::1 HopByHop={ Contents=[..8..] Payload=[..28..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..28..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[130, 0, 98, 58] Payload=[..24..] TypeCode=130(0) Checksum=25146 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv2MulticastListenerQuery Maximum Response Code: 0x2710 (10000ms), Multicast Address: ::, Suppress Routerside Processing: false, QRV: 0x2, QQIC: 0x3c (60s), Number of Source Address: 0 (actual: 0), Source Addresses: [] --- PASS: TestPacketMulticastListenerQueryMessageV2 (0.00s) === RUN TestPacketMulticastListenerReportMessageV2 base_test.go:19: Checking packet layers, want [Ethernet IPv6 IPv6HopByHop ICMPv6 MLDv2MulticastListenerReport] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 136 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 88 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 88 bytes base_test.go:21: Got layer ICMPv6, 4 bytes, payload of 84 bytes base_test.go:21: Got layer MLDv2MulticastListenerReport, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 150 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..136..] SrcMAC=00:15:17:cc:e5:46 DstMAC=33:33:00:00:00:16 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..88..] Version=6 TrafficClass=0 FlowLabel=0 Length=96 NextHeader=IPv6HopByHop HopLimit=1 SrcIP=fe80::215:17ff:fecc:e546 DstIP=ff02::16 HopByHop={ Contents=[..8..] Payload=[..88..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]}} - Layer 3 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..88..] NextHeader=ICMPv6 HeaderLength=0 ActualLength=8 Options=[{OptionType=5 OptionLength=2 ActualLength=4 OptionData=[0, 0] OptionAlignment=[0 0]}, {OptionType=1 OptionLength=0 ActualLength=2 OptionData=[] OptionAlignment=[0 0]}]} - Layer 4 (04 bytes) = ICMPv6 {Contents=[143, 0, 42, 14] Payload=[..84..] TypeCode=143(0) Checksum=10766 TypeBytes=[]} - Layer 5 (00 bytes) = MLDv2MulticastListenerReport Number of Mcast Addr Records: 4 (actual 4), Multicast Address Records: [{RecordType:MODE_IS_EXCLUDE AuxDataLen:0 N:0 MulticastAddress:ff02::db8:1122:3344 SourceAddresses:[] AuxiliaryData:[]} {RecordType:MODE_IS_EXCLUDE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ffcc:e546 SourceAddresses:[] AuxiliaryData:[]} {RecordType:MODE_IS_EXCLUDE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ffa7:10ad SourceAddresses:[] AuxiliaryData:[]} {RecordType:MODE_IS_EXCLUDE AuxDataLen:0 N:0 MulticastAddress:ff02::1:ff00:2 SourceAddresses:[] AuxiliaryData:[]}] --- PASS: TestPacketMulticastListenerReportMessageV2 (0.00s) === RUN TestPacketMPLS base_test.go:19: Checking packet layers, want [Ethernet MPLS MPLS IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 108 bytes base_test.go:21: Got layer MPLS, 4 bytes, payload of 104 bytes base_test.go:21: Got layer MPLS, 4 bytes, payload of 100 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 80 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 72 bytes base_test.go:21: Got layer Payload, 72 bytes, payload of 0 bytes base_test.go:24: PACKET: 122 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..108..] SrcMAC=cc:15:14:64:00:00 DstMAC=cc:13:14:64:00:01 EthernetType=MPLSUnicast Length=0} - Layer 2 (04 bytes) = MPLS {Contents=[0, 1, 16, 254] Payload=[..104..] Label=17 TrafficClass=0 StackBottom=false TTL=254} - Layer 3 (04 bytes) = MPLS {Contents=[0, 1, 49, 254] Payload=[..100..] Label=19 TrafficClass=0 StackBottom=true TTL=254} - Layer 4 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..80..] Version=4 IHL=5 TOS=0 Length=100 Id=57 Flags= FragOffset=0 TTL=254 Protocol=ICMPv4 Checksum=44123 SrcIP=12.0.0.1 DstIP=2.2.2.2 Options=[] Padding=[]} - Layer 5 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..72..] TypeCode=EchoRequest Checksum=14955 Id=11 Seq=2} - Layer 6 (72 bytes) = Payload 72 byte(s) --- PASS: TestPacketMPLS (0.00s) === RUN TestNTPOne base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP NTP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 76 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 56 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 48 bytes base_test.go:21: Got layer NTP, 48 bytes, payload of 0 bytes base_test.go:24: PACKET: 90 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..76..] SrcMAC=00:d0:59:6c:40:4e DstMAC=00:0c:41:82:b2:53 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..56..] Version=4 IHL=5 TOS=0 Length=76 Id=2626 Flags= FragOffset=0 TTL=128 Protocol=UDP Checksum=46586 SrcIP=192.168.50.50 DstIP=67.129.68.9 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..48..] SrcPort=123(ntp) DstPort=123(ntp) Length=56 Checksum=63698} - Layer 4 (48 bytes) = NTP {Contents=[..48..] Payload=[] LeapIndicator=3 Version=3 Mode=1 Stratum=0 Poll=10 Precision=-6 RootDelay=0 RootDispersion=66192 ReferenceID=0 ReferenceTimestamp=0 OriginTimestamp=0 ReceiveTimestamp=0 TransmitTimestamp=14195914391047827090 ExtensionBytes=[]} --- PASS: TestNTPOne (0.00s) === RUN TestNTPTwo base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP NTP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 76 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 56 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 48 bytes base_test.go:21: Got layer NTP, 48 bytes, payload of 0 bytes base_test.go:24: PACKET: 90 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..76..] SrcMAC=00:0c:41:82:b2:53 DstMAC=00:d0:59:6c:40:4e EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..56..] Version=4 IHL=5 TOS=0 Length=76 Id=12870 Flags=DF FragOffset=0 TTL=47 Protocol=UDP Checksum=43032 SrcIP=69.44.57.60 DstIP=192.168.50.50 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..48..] SrcPort=123(ntp) DstPort=123(ntp) Length=56 Checksum=2392} - Layer 4 (48 bytes) = NTP {Contents=[..48..] Payload=[] LeapIndicator=0 Version=3 Mode=2 Stratum=3 Poll=10 Precision=-18 RootDelay=7159 RootDispersion=5356 ReferenceID=1370390711 ReferenceTimestamp=14195912602744153803 OriginTimestamp=14195914391047827090 ReceiveTimestamp=14195914386266741222 TransmitTimestamp=14195914386266943086 ExtensionBytes=[]} --- PASS: TestNTPTwo (0.00s) === RUN TestNTPThree base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP NTP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 76 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 56 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 48 bytes base_test.go:21: Got layer NTP, 48 bytes, payload of 0 bytes base_test.go:24: PACKET: 90 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..76..] SrcMAC=00:0c:41:82:b2:53 DstMAC=00:d0:59:6c:40:4e EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..56..] Version=4 IHL=5 TOS=0 Length=76 Id=0 Flags=DF FragOffset=0 TTL=48 Protocol=UDP Checksum=29797 SrcIP=24.123.202.230 DstIP=192.168.50.50 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..48..] SrcPort=123(ntp) DstPort=123(ntp) Length=56 Checksum=17413} - Layer 4 (48 bytes) = NTP {Contents=[..48..] Payload=[] LeapIndicator=0 Version=3 Mode=2 Stratum=2 Poll=10 Precision=-20 RootDelay=1987 RootDispersion=12160 ReferenceID=3323878402 ReferenceTimestamp=14195901919906529999 OriginTimestamp=14195914391047827090 ReceiveTimestamp=14195914386315751093 TransmitTimestamp=14195914386315794043 ExtensionBytes=[]} --- PASS: TestNTPThree (0.00s) === RUN TestNTPIsomorphism --- PASS: TestNTPIsomorphism (0.00s) === RUN TestPacketOSPF2Hello base_test.go:19: Checking packet layers, want [Ethernet IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 64 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 44 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 78 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=00:e0:18:b1:0c:ad DstMAC=01:00:5e:00:00:05 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..44..] Version=4 IHL=5 TOS=192 Length=64 Id=2066 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=26077 SrcIP=192.168.170.8 DstIP=224.0.0.5 Options=[] Padding=[]} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Hello PacketLength=44 RouterID=3232279048 AreaID=1 Checksum=10043 Content={ InterfaceID=0 RtrPriority=1 Options=2 HelloInterval=10 RouterDeadInterval=40 DesignatedRouterID=3232279048 BackupDesignatedRouterID=0 NeighborID=[] NetworkMask=4294967040} AuType=0 Authentication=0} --- PASS: TestPacketOSPF2Hello (0.00s) === RUN TestPacketOSPF3Hello base_test.go:19: Checking packet layers, want [Ethernet IPv6 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 76 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 36 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 90 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..76..] SrcMAC=c2:00:1f:fa:00:01 DstMAC=33:33:00:00:00:05 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..36..] Version=6 TrafficClass=224 FlowLabel=0 Length=36 NextHeader=OSPF HopLimit=1 SrcIP=fe80::1 DstIP=ff02::5 HopByHop=nil} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=3 Type=Hello PacketLength=36 RouterID=16843009 AreaID=1 Checksum=64390 Content={ InterfaceID=5 RtrPriority=1 Options=19 HelloInterval=10 RouterDeadInterval=40 DesignatedRouterID=0 BackupDesignatedRouterID=0 NeighborID=[]} Instance=0 Reserved=0} --- PASS: TestPacketOSPF3Hello (0.00s) === RUN TestPacketOSPF2DBDesc base_test.go:19: Checking packet layers, want [Ethernet IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 52 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 32 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 66 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=00:e0:18:b1:0c:ad DstMAC=00:60:08:81:7a:70 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=192 Length=52 Id=11237 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=46960 SrcIP=192.168.170.8 DstIP=192.168.170.2 Options=[] Padding=[]} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Database Description PacketLength=32 RouterID=3232279048 AreaID=1 Checksum=41042 Content={ Options=2 InterfaceMTU=1500 Flags=7 DDSeqNumber=1098361214 LSAinfo=[]} AuType=0 Authentication=0} --- PASS: TestPacketOSPF2DBDesc (0.00s) === RUN TestPacketOSPF3DBDesc base_test.go:19: Checking packet layers, want [Ethernet IPv6 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 68 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 28 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 82 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..68..] SrcMAC=c2:01:1f:fa:00:01 DstMAC=c2:00:1f:fa:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..28..] Version=6 TrafficClass=224 FlowLabel=0 Length=28 NextHeader=OSPF HopLimit=1 SrcIP=fe80::2 DstIP=fe80::1 HopByHop=nil} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=3 Type=Database Description PacketLength=28 RouterID=33686018 AreaID=1 Checksum=55334 Content={ Options=19 InterfaceMTU=1500 Flags=7 DDSeqNumber=7494 LSAinfo=[]} Instance=0 Reserved=0} --- PASS: TestPacketOSPF3DBDesc (0.00s) === RUN TestPacketOSPF2LSRequest base_test.go:19: Checking packet layers, want [Ethernet IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 56 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 36 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 70 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..56..] SrcMAC=00:60:08:81:7a:70 DstMAC=00:e0:18:b1:0c:ad EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..36..] Version=4 IHL=5 TOS=192 Length=56 Id=35014 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=23179 SrcIP=192.168.170.2 DstIP=192.168.170.8 Options=[] Padding=[]} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Link State Request PacketLength=36 RouterID=3232279043 AreaID=1 Checksum=48583 Content=[{LSType=1 LSID=3232279048 AdvRouter=3232279048}] AuType=0 Authentication=0} --- PASS: TestPacketOSPF2LSRequest (0.00s) === RUN TestPacketOSPF3LSRequest base_test.go:19: Checking packet layers, want [Ethernet IPv6 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 140 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 100 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 154 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..140..] SrcMAC=c2:01:1f:fa:00:01 DstMAC=c2:00:1f:fa:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..100..] Version=6 TrafficClass=224 FlowLabel=0 Length=100 NextHeader=OSPF HopLimit=1 SrcIP=fe80::2 DstIP=fe80::1 HopByHop=nil} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=3 Type=Link State Request PacketLength=100 RouterID=33686018 AreaID=1 Checksum=11418 Content=[..7..] Instance=0 Reserved=0} --- PASS: TestPacketOSPF3LSRequest (0.00s) === RUN TestPacketOSPF2LSUpdate base_test.go:19: Checking packet layers, want [Ethernet IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 312 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 292 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 326 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..312..] SrcMAC=00:60:08:81:7a:70 DstMAC=01:00:5e:00:00:06 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..292..] Version=4 IHL=5 TOS=192 Length=312 Id=12325 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=15575 SrcIP=192.168.170.2 DstIP=224.0.0.6 Options=[] Padding=[]} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Link State Update PacketLength=292 RouterID=3232279043 AreaID=1 Checksum=13931 Content={ NumOfLSAs=7 LSAs=[..7..]} AuType=0 Authentication=0} --- PASS: TestPacketOSPF2LSUpdate (0.00s) === RUN TestPacketOSPF2LSUpdateLSA2 base_test.go:19: Checking packet layers, want [Ethernet Dot1Q IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 128 bytes base_test.go:21: Got layer Dot1Q, 4 bytes, payload of 124 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 104 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 142 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..128..] SrcMAC=d4:e8:80:c2:b1:c9 DstMAC=01:00:5e:00:00:05 EthernetType=Dot1Q Length=0} - Layer 2 (04 bytes) = Dot1Q {Contents=[1, 127, 8, 0] Payload=[..124..] Priority=0 DropEligible=false VLANIdentifier=383 Type=IPv4} - Layer 3 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..104..] Version=4 IHL=5 TOS=192 Length=140 Id=63460 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=6401 SrcIP=172.24.27.86 DstIP=224.0.0.5 Options=[] Padding=[]} - Layer 4 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Link State Update PacketLength=88 RouterID=2887255110 AreaID=12 Checksum=0 Content={ NumOfLSAs=2 LSAs=[{LSAge=1 LSType=1 LinkStateID=2887255110 AdvRouter=2887255110 LSSeqNumber=2147484698 LSChecksum=24613 Length=36 LSOptions=40 Content={ Flags=0 Links=1 Routers=[{Type=2 LinkID=2887261014 LinkData=2887261014 Metric=1}]}}, {LSAge=1 LSType=2 LinkStateID=2887261014 AdvRouter=2887255110 LSSeqNumber=2147484703 LSChecksum=14606 Length=40 LSOptions=40 Content={ NetworkMask=4294967288 AttachedRouter=[2887255110, 2887255109, 2887261011, 2887261012]}}]} AuType=0 Authentication=0} --- PASS: TestPacketOSPF2LSUpdateLSA2 (0.00s) === RUN TestPacketOSPF2LSUpdateLSA7 base_test.go:19: Checking packet layers, want [Ethernet Dot1Q IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 124 bytes base_test.go:21: Got layer Dot1Q, 4 bytes, payload of 120 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 100 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 138 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..124..] SrcMAC=00:1a:1e:02:81:a8 DstMAC=01:00:5e:00:00:06 EthernetType=Dot1Q Length=0} - Layer 2 (04 bytes) = Dot1Q {Contents=[1, 127, 8, 0] Payload=[..120..] Priority=0 DropEligible=false VLANIdentifier=383 Type=IPv4} - Layer 3 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..100..] Version=4 IHL=5 TOS=192 Length=136 Id=0 Flags=DF FragOffset=0 TTL=1 Protocol=OSPF Checksum=53482 SrcIP=172.24.27.84 DstIP=224.0.0.6 Options=[] Padding=[]} - Layer 4 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Link State Update PacketLength=84 RouterID=2887261012 AreaID=12 Checksum=0 Content={ NumOfLSAs=2 LSAs=[{LSAge=1 LSType=7 LinkStateID=180899680 AdvRouter=2887261012 LSSeqNumber=2147484582 LSChecksum=19720 Length=36 LSOptions=8 Content={ NetworkMask=4294967264 ExternalBit=128 Metric=256 ForwardingAddress=2887261012 ExternalRouteTag=0}}, {LSAge=1 LSType=7 LinkStateID=176198400 AdvRouter=2887261012 LSSeqNumber=2147484582 LSChecksum=17366 Length=36 LSOptions=8 Content={ NetworkMask=4294967168 ExternalBit=128 Metric=256 ForwardingAddress=2887261012 ExternalRouteTag=0}}]} AuType=0 Authentication=0} --- PASS: TestPacketOSPF2LSUpdateLSA7 (0.00s) === RUN TestPacketOSPF3LSUpdate base_test.go:19: Checking packet layers, want [Ethernet IPv6 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 328 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 288 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 342 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..328..] SrcMAC=c2:00:1f:fa:00:01 DstMAC=c2:01:1f:fa:00:01 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..288..] Version=6 TrafficClass=224 FlowLabel=0 Length=288 NextHeader=OSPF HopLimit=1 SrcIP=fe80::1 DstIP=fe80::2 HopByHop=nil} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=3 Type=Link State Update PacketLength=288 RouterID=16843009 AreaID=1 Checksum=58710 Content={ NumOfLSAs=7 LSAs=[..7..]} Instance=0 Reserved=0} --- PASS: TestPacketOSPF3LSUpdate (0.00s) === RUN TestPacketOSPF2LSAck base_test.go:19: Checking packet layers, want [Ethernet IPv4 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 64 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 44 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 78 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=00:e0:18:b1:0c:ad DstMAC=00:60:08:81:7a:70 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..44..] Version=4 IHL=5 TOS=192 Length=64 Id=11242 Flags= FragOffset=0 TTL=1 Protocol=OSPF Checksum=46943 SrcIP=192.168.170.8 DstIP=192.168.170.2 Options=[] Padding=[]} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=2 Type=Link State Acknowledgment PacketLength=44 RouterID=3232279048 AreaID=1 Checksum=58100 Content=[{LSAge=3600 LSType=1 LinkStateID=3232279042 AdvRouter=3232279042 LSSeqNumber=2147483649 LSChecksum=19086 Length=48 LSOptions=2}] AuType=0 Authentication=0} --- PASS: TestPacketOSPF2LSAck (0.00s) === RUN TestPacketOSPF3LSAck base_test.go:19: Checking packet layers, want [Ethernet IPv6 OSPF] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 176 bytes base_test.go:21: Got layer IPv6, 40 bytes, payload of 136 bytes base_test.go:21: Got layer OSPF, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 190 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..176..] SrcMAC=c2:00:1f:fa:00:01 DstMAC=33:33:00:00:00:05 EthernetType=IPv6 Length=0} - Layer 2 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..136..] Version=6 TrafficClass=224 FlowLabel=0 Length=136 NextHeader=OSPF HopLimit=1 SrcIP=fe80::1 DstIP=ff02::5 HopByHop=nil} - Layer 3 (00 bytes) = OSPF {Contents=[] Payload=[] Version=3 Type=Link State Acknowledgment PacketLength=136 RouterID=16843009 AreaID=1 Checksum=40236 Content=[..6..] Instance=0 Reserved=0} --- PASS: TestPacketOSPF3LSAck (0.00s) === RUN TestPacketOSPFInvalidLSA base_test.go:19: Checking packet layers, want [Ethernet IPv4 DecodeFailure] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 83 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 63 bytes base_test.go:21: Got layer DecodeFailure, 63 bytes, payload of 0 bytes base_test.go:24: PACKET: 97 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..83..] SrcMAC=bd:e4:19:72:1d:1f DstMAC=5c:fa:00:00:fa:6c EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..63..] Version=4 IHL=5 TOS=0 Length=173 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=OSPF Checksum=28399 SrcIP=107.150.97.17 DstIP=180.150.192.168 Options=[] Padding=[]} - Layer 3 (63 bytes) = DecodeFailure Packet decoding error: Cannot parse Link State Update packet: Could not extract Link State type. --- PASS: TestPacketOSPFInvalidLSA (0.00s) === RUN TestPacketPrism base_test.go:19: Checking packet layers, want [Prism monitor mode header Dot11 Dot11MgmtProbeReq] base_test.go:21: Got layer Prism monitor mode header, 144 bytes, payload of 126 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 98 bytes base_test.go:21: Got layer Dot11MgmtProbeReq, 98 bytes, payload of 0 bytes base_test.go:24: PACKET: 270 bytes - Layer 1 (144 bytes) = Prism monitor mode header {Contents=[..144..] Payload=[..126..] Code=68 Length=144 DeviceName=ra0������������� Values=[..10..]} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[..98..] Type=MgmtProbeReq Proto=0 Flags= DurationID=0 Address1=ff:ff:ff:ff:ff:ff Address2=cc:fa:00:ad:79:e8 Address3=ff:ff:ff:ff:ff:ff Address4= SequenceNumber=1050 FragmentNumber=0 Checksum=0 QOS=nil HTControl=nil DataLayer=nil} - Layer 3 (98 bytes) = Dot11MgmtProbeReq {Contents=[..98..] Payload=[]} --- PASS: TestPacketPrism (0.00s) === RUN TestPacketRadiotap0 base_test.go:19: Checking packet layers, want [RadioTap Dot11] base_test.go:21: Got layer RadioTap, 18 bytes, payload of 14 bytes base_test.go:21: Got layer Dot11, 10 bytes, payload of 0 bytes base_test.go:24: PACKET: 32 bytes - Layer 1 (18 bytes) = RadioTap {Contents=[..18..] Payload=[..14..] Version=0 Length=18 Present=18478 TSFT=0 Flags=FCS Rate=1 Mb/s ChannelFrequency=2412 MHz ChannelFlags=CCK,Ghz2 FHSS=0 DBMAntennaSignal=-58 DBMAntennaNoise=0 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=7 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS= AMPDUStatus=ref#0 VHT=} - Layer 2 (10 bytes) = Dot11 {Contents=[..10..] Payload=[] Type=CtrlAck Proto=0 Flags= DurationID=0 Address1=88:1f:a1:ae:9d:cb Address2= Address3= Address4= SequenceNumber=0 FragmentNumber=0 Checksum=1263218886 QOS=nil HTControl=nil DataLayer=nil} --- PASS: TestPacketRadiotap0 (0.00s) === RUN TestPacketRadiotap1 base_test.go:19: Checking packet layers, want [RadioTap Dot11] base_test.go:21: Got layer RadioTap, 21 bytes, payload of 28 bytes base_test.go:21: Got layer Dot11, 24 bytes, payload of 0 bytes base_test.go:21: Got layer Dot11DataNull, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 49 bytes - Layer 1 (21 bytes) = RadioTap {Contents=[..21..] Payload=[..28..] Version=0 Length=21 Present=542762 TSFT=0 Flags=FCS Rate=0 Mb/s ChannelFrequency=2412 MHz ChannelFlags=Ghz2,Dynamic FHSS=0 DBMAntennaSignal=-36 DBMAntennaNoise=0 LockQuality=0 TxAttenuation=0 DBTxAttenuation=0 DBMTxPower=0 Antenna=5 DBAntennaSignal=0 DBAntennaNoise=0 RxFlags= TxFlags= RtsRetries=0 DataRetries=0 MCS=20,MCSIndex#7,longGI AMPDUStatus=ref#0 VHT=} - Layer 2 (24 bytes) = Dot11 {Contents=[..24..] Payload=[] Type=DataNull Proto=0 Flags=TO-DS,PowerManagement DurationID=44 Address1=00:3a:9d:aa:f0:19 Address2=1c:ab:a7:f2:13:9d Address3=00:3a:9d:aa:f0:19 Address4= SequenceNumber=2855 FragmentNumber=0 Checksum=384936430 QOS=nil HTControl=nil DataLayer={ Contents=[] Payload=[]}} - Layer 3 (00 bytes) = Dot11DataNull {Contents=[] Payload=[]} --- PASS: TestPacketRadiotap1 (0.00s) === RUN TestRADIUSCode === RUN TestRADIUSCode/Unknown(0) === RUN TestRADIUSCode/Access-Request === RUN TestRADIUSCode/Access-Accept === RUN TestRADIUSCode/Access-Reject === RUN TestRADIUSCode/Accounting-Request === RUN TestRADIUSCode/Accounting-Response === RUN TestRADIUSCode/Access-Challenge === RUN TestRADIUSCode/Status-Server === RUN TestRADIUSCode/Status-Client === RUN TestRADIUSCode/Reserved --- PASS: TestRADIUSCode (0.00s) --- PASS: TestRADIUSCode/Unknown(0) (0.00s) --- PASS: TestRADIUSCode/Access-Request (0.00s) --- PASS: TestRADIUSCode/Access-Accept (0.00s) --- PASS: TestRADIUSCode/Access-Reject (0.00s) --- PASS: TestRADIUSCode/Accounting-Request (0.00s) --- PASS: TestRADIUSCode/Accounting-Response (0.00s) --- PASS: TestRADIUSCode/Access-Challenge (0.00s) --- PASS: TestRADIUSCode/Status-Server (0.00s) --- PASS: TestRADIUSCode/Status-Client (0.00s) --- PASS: TestRADIUSCode/Reserved (0.00s) === RUN TestRADIUSAttributeType === RUN TestRADIUSAttributeType/Unknown(0) === RUN TestRADIUSAttributeType/User-Name === RUN TestRADIUSAttributeType/User-Password === RUN TestRADIUSAttributeType/CHAP-Password === RUN TestRADIUSAttributeType/NAS-IP-Address === RUN TestRADIUSAttributeType/NAS-Port === RUN TestRADIUSAttributeType/Service-Type === RUN TestRADIUSAttributeType/Framed-Protocol === RUN TestRADIUSAttributeType/Framed-IP-Address === RUN TestRADIUSAttributeType/Framed-IP-Netmask === RUN TestRADIUSAttributeType/Framed-Routing === RUN TestRADIUSAttributeType/Filter-Id === RUN TestRADIUSAttributeType/Framed-MTU === RUN TestRADIUSAttributeType/Framed-Compression === RUN TestRADIUSAttributeType/Login-IP-Host === RUN TestRADIUSAttributeType/Login-Service === RUN TestRADIUSAttributeType/Login-TCP-Port === RUN TestRADIUSAttributeType/Reply-Message === RUN TestRADIUSAttributeType/Callback-Number === RUN TestRADIUSAttributeType/Callback-Id === RUN TestRADIUSAttributeType/Framed-Route === RUN TestRADIUSAttributeType/Framed-IPX-Network === RUN TestRADIUSAttributeType/State === RUN TestRADIUSAttributeType/Class === RUN TestRADIUSAttributeType/Vendor-Specific === RUN TestRADIUSAttributeType/Session-Timeout === RUN TestRADIUSAttributeType/Idle-Timeout === RUN TestRADIUSAttributeType/Termination-Action === RUN TestRADIUSAttributeType/Called-Station-Id === RUN TestRADIUSAttributeType/Calling-Station-Id === RUN TestRADIUSAttributeType/NAS-Identifier === RUN TestRADIUSAttributeType/Proxy-State === RUN TestRADIUSAttributeType/Login-LAT-Service === RUN TestRADIUSAttributeType/Login-LAT-Node === RUN TestRADIUSAttributeType/Login-LAT-Group === RUN TestRADIUSAttributeType/Framed-AppleTalk-Link === RUN TestRADIUSAttributeType/Framed-AppleTalk-Network === RUN TestRADIUSAttributeType/Framed-AppleTalk-Zone === RUN TestRADIUSAttributeType/Acct-Status-Type === RUN TestRADIUSAttributeType/Acct-Delay-Time === RUN TestRADIUSAttributeType/Acct-Input-Octets === RUN TestRADIUSAttributeType/Acct-Output-Octets === RUN TestRADIUSAttributeType/Acct-Session-Id === RUN TestRADIUSAttributeType/Acct-Authentic === RUN TestRADIUSAttributeType/Acct-Session-Time === RUN TestRADIUSAttributeType/Acct-Input-Packets === RUN TestRADIUSAttributeType/Acct-Output-Packets === RUN TestRADIUSAttributeType/Acct-Terminate-Cause === RUN TestRADIUSAttributeType/Acct-Multi-Session-Id === RUN TestRADIUSAttributeType/Acct-Link-Count === RUN TestRADIUSAttributeType/Acct-Input-Gigawords === RUN TestRADIUSAttributeType/Acct-Output-Gigawords === RUN TestRADIUSAttributeType/Event-Timestamp === RUN TestRADIUSAttributeType/CHAP-Challenge === RUN TestRADIUSAttributeType/NAS-Port-Type === RUN TestRADIUSAttributeType/Port-Limit === RUN TestRADIUSAttributeType/Login-LAT-Port === RUN TestRADIUSAttributeType/Tunnel-Type === RUN TestRADIUSAttributeType/Tunnel-Medium-Type === RUN TestRADIUSAttributeType/Tunnel-Client-Endpoint === RUN TestRADIUSAttributeType/Tunnel-Server-Endpoint === RUN TestRADIUSAttributeType/Acct-Tunnel-Connection === RUN TestRADIUSAttributeType/Tunnel-Password === RUN TestRADIUSAttributeType/ARAP-Password === RUN TestRADIUSAttributeType/ARAP-Features === RUN TestRADIUSAttributeType/ARAP-Zone-Access === RUN TestRADIUSAttributeType/ARAP-Security === RUN TestRADIUSAttributeType/ARAP-Security-Data === RUN TestRADIUSAttributeType/Password-Retry === RUN TestRADIUSAttributeType/Prompt === RUN TestRADIUSAttributeType/Connect-Info === RUN TestRADIUSAttributeType/Configuration-Token === RUN TestRADIUSAttributeType/EAP-Message === RUN TestRADIUSAttributeType/Message-Authenticator === RUN TestRADIUSAttributeType/Tunnel-Private-Group-ID === RUN TestRADIUSAttributeType/Tunnel-Assignment-ID === RUN TestRADIUSAttributeType/Tunnel-Preference === RUN TestRADIUSAttributeType/ARAP-Challenge-Response === RUN TestRADIUSAttributeType/Acct-Interim-Interval === RUN TestRADIUSAttributeType/Acct-Tunnel-Packets-Lost === RUN TestRADIUSAttributeType/NAS-Port-Id === RUN TestRADIUSAttributeType/Framed-Pool === RUN TestRADIUSAttributeType/Tunnel-Client-Auth-ID === RUN TestRADIUSAttributeType/Tunnel-Server-Auth-ID --- PASS: TestRADIUSAttributeType (0.00s) --- PASS: TestRADIUSAttributeType/Unknown(0) (0.00s) --- PASS: TestRADIUSAttributeType/User-Name (0.00s) --- PASS: TestRADIUSAttributeType/User-Password (0.00s) --- PASS: TestRADIUSAttributeType/CHAP-Password (0.00s) --- PASS: TestRADIUSAttributeType/NAS-IP-Address (0.00s) --- PASS: TestRADIUSAttributeType/NAS-Port (0.00s) --- PASS: TestRADIUSAttributeType/Service-Type (0.00s) --- PASS: TestRADIUSAttributeType/Framed-Protocol (0.00s) --- PASS: TestRADIUSAttributeType/Framed-IP-Address (0.00s) --- PASS: TestRADIUSAttributeType/Framed-IP-Netmask (0.00s) --- PASS: TestRADIUSAttributeType/Framed-Routing (0.00s) --- PASS: TestRADIUSAttributeType/Filter-Id (0.00s) --- PASS: TestRADIUSAttributeType/Framed-MTU (0.00s) --- PASS: TestRADIUSAttributeType/Framed-Compression (0.00s) --- PASS: TestRADIUSAttributeType/Login-IP-Host (0.00s) --- PASS: TestRADIUSAttributeType/Login-Service (0.00s) --- PASS: TestRADIUSAttributeType/Login-TCP-Port (0.00s) --- PASS: TestRADIUSAttributeType/Reply-Message (0.00s) --- PASS: TestRADIUSAttributeType/Callback-Number (0.00s) --- PASS: TestRADIUSAttributeType/Callback-Id (0.00s) --- PASS: TestRADIUSAttributeType/Framed-Route (0.00s) --- PASS: TestRADIUSAttributeType/Framed-IPX-Network (0.00s) --- PASS: TestRADIUSAttributeType/State (0.00s) --- PASS: TestRADIUSAttributeType/Class (0.00s) --- PASS: TestRADIUSAttributeType/Vendor-Specific (0.00s) --- PASS: TestRADIUSAttributeType/Session-Timeout (0.00s) --- PASS: TestRADIUSAttributeType/Idle-Timeout (0.00s) --- PASS: TestRADIUSAttributeType/Termination-Action (0.00s) --- PASS: TestRADIUSAttributeType/Called-Station-Id (0.00s) --- PASS: TestRADIUSAttributeType/Calling-Station-Id (0.00s) --- PASS: TestRADIUSAttributeType/NAS-Identifier (0.00s) --- PASS: TestRADIUSAttributeType/Proxy-State (0.00s) --- PASS: TestRADIUSAttributeType/Login-LAT-Service (0.00s) --- PASS: TestRADIUSAttributeType/Login-LAT-Node (0.00s) --- PASS: TestRADIUSAttributeType/Login-LAT-Group (0.00s) --- PASS: TestRADIUSAttributeType/Framed-AppleTalk-Link (0.00s) --- PASS: TestRADIUSAttributeType/Framed-AppleTalk-Network (0.00s) --- PASS: TestRADIUSAttributeType/Framed-AppleTalk-Zone (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Status-Type (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Delay-Time (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Input-Octets (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Output-Octets (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Session-Id (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Authentic (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Session-Time (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Input-Packets (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Output-Packets (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Terminate-Cause (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Multi-Session-Id (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Link-Count (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Input-Gigawords (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Output-Gigawords (0.00s) --- PASS: TestRADIUSAttributeType/Event-Timestamp (0.00s) --- PASS: TestRADIUSAttributeType/CHAP-Challenge (0.00s) --- PASS: TestRADIUSAttributeType/NAS-Port-Type (0.00s) --- PASS: TestRADIUSAttributeType/Port-Limit (0.00s) --- PASS: TestRADIUSAttributeType/Login-LAT-Port (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Type (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Medium-Type (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Client-Endpoint (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Server-Endpoint (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Tunnel-Connection (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Password (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Password (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Features (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Zone-Access (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Security (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Security-Data (0.00s) --- PASS: TestRADIUSAttributeType/Password-Retry (0.00s) --- PASS: TestRADIUSAttributeType/Prompt (0.00s) --- PASS: TestRADIUSAttributeType/Connect-Info (0.00s) --- PASS: TestRADIUSAttributeType/Configuration-Token (0.00s) --- PASS: TestRADIUSAttributeType/EAP-Message (0.00s) --- PASS: TestRADIUSAttributeType/Message-Authenticator (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Private-Group-ID (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Assignment-ID (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Preference (0.00s) --- PASS: TestRADIUSAttributeType/ARAP-Challenge-Response (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Interim-Interval (0.00s) --- PASS: TestRADIUSAttributeType/Acct-Tunnel-Packets-Lost (0.00s) --- PASS: TestRADIUSAttributeType/NAS-Port-Id (0.00s) --- PASS: TestRADIUSAttributeType/Framed-Pool (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Client-Auth-ID (0.00s) --- PASS: TestRADIUSAttributeType/Tunnel-Server-Auth-ID (0.00s) === RUN TestRADIUSRecordSize === RUN TestRADIUSRecordSize/Minimum-1 === RUN TestRADIUSRecordSize/Maximum+1 --- PASS: TestRADIUSRecordSize (0.00s) --- PASS: TestRADIUSRecordSize/Minimum-1 (0.00s) --- PASS: TestRADIUSRecordSize/Maximum+1 (0.00s) === RUN TestRADIUSLengthField === RUN TestRADIUSLengthField/Minimum-1 === RUN TestRADIUSLengthField/Minimum+1 === RUN TestRADIUSLengthField/Maximum-1 === RUN TestRADIUSLengthField/Maximum+1 --- PASS: TestRADIUSLengthField (0.00s) --- PASS: TestRADIUSLengthField/Minimum-1 (0.00s) --- PASS: TestRADIUSLengthField/Minimum+1 (0.00s) --- PASS: TestRADIUSLengthField/Maximum-1 (0.00s) --- PASS: TestRADIUSLengthField/Maximum+1 (0.00s) === RUN TestRADIUSAttributesLengthField === RUN TestRADIUSAttributesLengthField/Minimum-1 === RUN TestRADIUSAttributesLengthField/Minimum-1#01 === RUN TestRADIUSAttributesLengthField/Minimum+1 === RUN TestRADIUSAttributesLengthField/Minimum+1#01 --- PASS: TestRADIUSAttributesLengthField (0.00s) --- PASS: TestRADIUSAttributesLengthField/Minimum-1 (0.00s) --- PASS: TestRADIUSAttributesLengthField/Minimum-1#01 (0.00s) --- PASS: TestRADIUSAttributesLengthField/Minimum+1 (0.00s) --- PASS: TestRADIUSAttributesLengthField/Minimum+1#01 (0.00s) === RUN TestRADIUSAccessRequest base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP RADIUS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 103 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 83 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 75 bytes base_test.go:21: Got layer RADIUS, 75 bytes, payload of 0 bytes base_test.go:24: PACKET: 117 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..103..] SrcMAC=02:42:06:4d:ad:bf DstMAC=02:42:ac:14:00:02 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..83..] Version=4 IHL=5 TOS=0 Length=103 Id=61162 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=62319 SrcIP=172.20.0.1 DstIP=172.20.0.2 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..75..] SrcPort=55337 DstPort=1812(radius) Length=83 Checksum=22672} - Layer 4 (75 bytes) = RADIUS {Contents=[..75..] Payload=[] Code=Access-Request Identifier=141 Length=75 Authenticator=[59 189 34 82 180 200 216 68 27 70 121 191 74 43 134 1] Attributes=[..5..]} --- PASS: TestRADIUSAccessRequest (0.00s) === RUN TestRADIUSAccessAccept base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP RADIUS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 48 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 28 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 20 bytes base_test.go:21: Got layer RADIUS, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 62 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..48..] SrcMAC=02:42:ac:14:00:02 DstMAC=02:42:06:4d:ad:bf EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..28..] Version=4 IHL=5 TOS=0 Length=48 Id=61181 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=13204 SrcIP=172.20.0.2 DstIP=172.20.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..20..] SrcPort=1812(radius) DstPort=55337 Length=28 Checksum=22617} - Layer 4 (20 bytes) = RADIUS {Contents=[..20..] Payload=[] Code=Access-Accept Identifier=141 Length=20 Authenticator=[134 168 213 205 105 60 7 94 158 24 162 45 221 95 43 255] Attributes=[]} --- PASS: TestRADIUSAccessAccept (0.00s) === RUN TestRMCPDecodeFromBytes --- PASS: TestRMCPDecodeFromBytes (0.00s) === RUN TestRMCPTestSerializeTo --- PASS: TestRMCPTestSerializeTo (0.00s) === RUN TestDecodeUDPSFlow base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP SFlow] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 1468 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 1448 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 1440 bytes base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 1482 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..1468..] SrcMAC=f0:50:56:85:3a:fd DstMAC=84:2b:2b:16:8b:62 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..1448..] Version=4 IHL=5 TOS=0 Length=1468 Id=39940 Flags=DF FragOffset=0 TTL=255 Protocol=UDP Checksum=50944 SrcIP=10.1.255.14 DstIP=10.1.0.27 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..1440..] SrcPort=51031 DstPort=6343(sflow) Length=1448 Checksum=8763} - Layer 4 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=10.1.248.22 SubAgentID=17 SequenceNumber=40443 AgentUptime=1078576845 SampleCount=7 FlowSamples=[..6..] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=168 SequenceNumber=8434 SourceIDClass=Single Interface SourceIDIndex=522 RecordCount=2 Records=[{EnterpriseID=Standard SFlow Format=Generic Interface Counters FlowDataLength=88 IfIndex=522 IfType=6 IfSpeed=10000000000 IfDirection=1 IfStatus=3 IfInOctets=327115139476491 IfInUcastPkts=3406683542 IfInMulticastPkts=436422 IfInBroadcastPkts=123 IfInDiscards=0 IfInErrors=0 IfInUnknownProtos=0 IfOutOctets=57184089570462 IfOutUcastPkts=1449403761 IfOutMulticastPkts=7363268 IfOutBroadcastPkts=592113 IfOutDiscards=0 IfOutErrors=0 IfPromiscuousMode=0}, {EnterpriseID=Standard SFlow Format=Ethernet Interface Counters FlowDataLength=52 AlignmentErrors=0 FCSErrors=0 SingleCollisionFrames=0 MultipleCollisionFrames=0 SQETestErrors=0 DeferredTransmissions=0 LateCollisions=0 ExcessiveCollisions=0 InternalMacTransmitErrors=0 CarrierSenseErrors=0 FrameTooLongs=0 InternalMacReceiveErrors=0 SymbolErrors=0}]}]} --- PASS: TestDecodeUDPSFlow (0.00s) === RUN TestDecodeSFlowDatagram base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP SFlow] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 1468 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 1448 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 1440 bytes base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 1482 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..1468..] SrcMAC=f0:50:56:85:3a:fd DstMAC=84:2b:2b:16:8b:62 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..1448..] Version=4 IHL=5 TOS=0 Length=1468 Id=39940 Flags=DF FragOffset=0 TTL=255 Protocol=UDP Checksum=50944 SrcIP=10.1.255.14 DstIP=10.1.0.27 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..1440..] SrcPort=51031 DstPort=6343(sflow) Length=1448 Checksum=8763} - Layer 4 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=10.1.248.22 SubAgentID=17 SequenceNumber=40443 AgentUptime=1078576845 SampleCount=7 FlowSamples=[..6..] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=168 SequenceNumber=8434 SourceIDClass=Single Interface SourceIDIndex=522 RecordCount=2 Records=[{EnterpriseID=Standard SFlow Format=Generic Interface Counters FlowDataLength=88 IfIndex=522 IfType=6 IfSpeed=10000000000 IfDirection=1 IfStatus=3 IfInOctets=327115139476491 IfInUcastPkts=3406683542 IfInMulticastPkts=436422 IfInBroadcastPkts=123 IfInDiscards=0 IfInErrors=0 IfInUnknownProtos=0 IfOutOctets=57184089570462 IfOutUcastPkts=1449403761 IfOutMulticastPkts=7363268 IfOutBroadcastPkts=592113 IfOutDiscards=0 IfOutErrors=0 IfPromiscuousMode=0}, {EnterpriseID=Standard SFlow Format=Ethernet Interface Counters FlowDataLength=52 AlignmentErrors=0 FCSErrors=0 SingleCollisionFrames=0 MultipleCollisionFrames=0 SQETestErrors=0 DeferredTransmissions=0 LateCollisions=0 ExcessiveCollisions=0 InternalMacTransmitErrors=0 CarrierSenseErrors=0 FrameTooLongs=0 InternalMacReceiveErrors=0 SymbolErrors=0}]}]} --- PASS: TestDecodeSFlowDatagram (0.00s) === RUN TestPacketPacket0 base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP SFlow] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 1160 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 1140 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 1132 bytes base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 1174 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..1160..] SrcMAC=00:00:00:00:00:00 DstMAC=00:00:00:00:00:00 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..1140..] Version=4 IHL=5 TOS=0 Length=1160 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=14435 SrcIP=127.0.0.1 DstIP=127.0.0.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..1132..] SrcPort=56504 DstPort=6343(sflow) Length=1140 Checksum=648} - Layer 4 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=192.168.91.17 SubAgentID=0 SequenceNumber=46394 AgentUptime=52000 SampleCount=3 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=340 SequenceNumber=139118 SourceIDClass=Single Interface SourceIDIndex=3 SamplingRate=1 SamplePool=139118 Dropped=0 InputInterfaceFormat=0 InputInterface=3 OutputInterfaceFormat=0 OutputInterface=1073741823 RecordCount=4 Records=[{EnterpriseID=Standard SFlow Format=Extended URL Flow Record FlowDataLength=48 Direction=Source address is the server URL=http://www.sflow.org Host=host1.sflow.org}, {EnterpriseID=Standard SFlow Format=Extended User Flow Record FlowDataLength=44 SourceCharSet=106 SourceUserID=source user DestinationCharSet=106 DestinationUserID=destination user}, {EnterpriseID=Standard SFlow Format=Extended Gateway Flow Record FlowDataLength=100 NextHop=13.12.11.10 AS=65001 SourceAS=123 PeerAS=999 ASPathCount=3 ASPath=[AS Sequence:[123 456 789], AS Set:[11111 22222 33333], AS Sequence:[777 888 999]] Communities=[12, 13] LocalPref=432}, {EnterpriseID=Standard SFlow Format=Raw Packet Flow Record FlowDataLength=84 HeaderProtocol=ETHERNET-ISO88023 FrameLength=70 PayloadRemoved=4 HeaderLength=66 Header=PACKET: 68 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..54..] SrcMAC=00:50:56:c0:00:09 DstMAC=00:0c:29:67:a0:e5 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=16 Length=52 Id=37571 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=28813 SrcIP=192.168.91.1 DstIP=192.168.91.17 Options=[] Padding=[]} - Layer 3 (32 bytes) = TCP {Contents=[..32..] Payload=[] SrcPort=54237 DstPort=22(ssh) Seq=3811476599 Ack=325961043 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8183 Checksum=59261 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:784756794/1016954 0x2ec6703a000f847a)] Padding=[]} }]}, {EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=400 SequenceNumber=139119 SourceIDClass=Single Interface SourceIDIndex=3 SamplingRate=1 SamplePool=139119 Dropped=0 InputInterfaceFormat=0 InputInterface=1073741823 OutputInterfaceFormat=0 OutputInterface=3 RecordCount=4 Records=[{EnterpriseID=Standard SFlow Format=Extended URL Flow Record FlowDataLength=48 Direction=Source address is the server URL=http://www.sflow.org Host=host1.sflow.org}, {EnterpriseID=Standard SFlow Format=Extended User Flow Record FlowDataLength=44 SourceCharSet=106 SourceUserID=source user DestinationCharSet=106 DestinationUserID=destination user}, {EnterpriseID=Standard SFlow Format=Extended Gateway Flow Record FlowDataLength=100 NextHop=13.12.11.10 AS=65001 SourceAS=123 PeerAS=999 ASPathCount=3 ASPath=[AS Sequence:[123 456 789], AS Set:[11111 22222 33333], AS Sequence:[777 888 999]] Communities=[12, 13] LocalPref=432}, {EnterpriseID=Standard SFlow Format=Raw Packet Flow Record FlowDataLength=144 HeaderProtocol=ETHERNET-ISO88023 FrameLength=390 PayloadRemoved=4 HeaderLength=128 Header=PACKET: 128 bytes, truncated - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..114..] SrcMAC=00:0c:29:67:a0:e5 DstMAC=00:50:56:c0:00:09 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..94..] Version=4 IHL=5 TOS=16 Length=372 Id=48122 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=17942 SrcIP=192.168.91.17 DstIP=192.168.91.1 Options=[] Padding=[]} - Layer 3 (32 bytes) = TCP {Contents=[..32..] Payload=[..62..] SrcPort=22(ssh) DstPort=54237 Seq=325961043 Ack=3811476599 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=272 Checksum=14538 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1016957/784756794 0x000f847d2ec6703a)] Padding=[]} - Layer 4 (62 bytes) = Payload 62 byte(s) }]}, {EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=340 SequenceNumber=139120 SourceIDClass=Single Interface SourceIDIndex=3 SamplingRate=1 SamplePool=139120 Dropped=0 InputInterfaceFormat=0 InputInterface=3 OutputInterfaceFormat=0 OutputInterface=1073741823 RecordCount=4 Records=[{EnterpriseID=Standard SFlow Format=Extended URL Flow Record FlowDataLength=48 Direction=Source address is the server URL=http://www.sflow.org Host=host1.sflow.org}, {EnterpriseID=Standard SFlow Format=Extended User Flow Record FlowDataLength=44 SourceCharSet=106 SourceUserID=source user DestinationCharSet=106 DestinationUserID=destination user}, {EnterpriseID=Standard SFlow Format=Extended Gateway Flow Record FlowDataLength=100 NextHop=13.12.11.10 AS=65001 SourceAS=123 PeerAS=999 ASPathCount=3 ASPath=[AS Sequence:[123 456 789], AS Set:[11111 22222 33333], AS Sequence:[777 888 999]] Communities=[12, 13] LocalPref=432}, {EnterpriseID=Standard SFlow Format=Raw Packet Flow Record FlowDataLength=84 HeaderProtocol=ETHERNET-ISO88023 FrameLength=70 PayloadRemoved=4 HeaderLength=66 Header=PACKET: 68 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..54..] SrcMAC=00:50:56:c0:00:09 DstMAC=00:0c:29:67:a0:e5 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=16 Length=52 Id=25981 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=40403 SrcIP=192.168.91.1 DstIP=192.168.91.17 Options=[] Padding=[]} - Layer 3 (32 bytes) = TCP {Contents=[..32..] Payload=[] SrcPort=54237 DstPort=22(ssh) Seq=3811476599 Ack=325961363 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8172 Checksum=58947 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:784756796/1016957 0x2ec6703c000f847d)] Padding=[]} }]}] CounterSamples=[]} --- PASS: TestPacketPacket0 (0.00s) === RUN TestDecodeProcessorCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 88 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=10.20.4.0 SubAgentID=100 SequenceNumber=96480 AgentUptime=1929595000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Expanded Counter Sample SampleLength=52 SequenceNumber=96480 SourceIDClass=Single Interface SourceIDIndex=1 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Processor Counters FlowDataLength=28 FiveSecCpu=1450 OneMinCpu=1370 FiveMinCpu=1330 TotalMemory=3884806144 FreeMemory=1441230848}]}]} --- PASS: TestDecodeProcessorCounter (0.00s) === RUN TestDecodeExtendedSwitchFlow base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 92 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=192.168.1.7 SubAgentID=0 SequenceNumber=638 AgentUptime=853599356 SampleCount=1 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=56 SequenceNumber=291 SourceIDClass=Single Interface SourceIDIndex=29 SamplingRate=256 SamplePool=823 Dropped=22051 InputInterfaceFormat=0 InputInterface=29 OutputInterfaceFormat=0 OutputInterface=4 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Extended Switch Flow Record FlowDataLength=16 IncomingVLAN=3 IncomingVLANPriority=2 OutgoingVLAN=5 OutgoingVLANPriority=4294967295}]}] CounterSamples=[]} --- PASS: TestDecodeExtendedSwitchFlow (0.00s) === RUN TestDecodeExtendedRouterFlow base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 92 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=192.168.1.18 SubAgentID=0 SequenceNumber=638 AgentUptime=853599356 SampleCount=1 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=52 SequenceNumber=291 SourceIDClass=Single Interface SourceIDIndex=29 SamplingRate=256 SamplePool=820 Dropped=22018 InputInterfaceFormat=0 InputInterface=29 OutputInterfaceFormat=0 OutputInterface=4 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Extended Router Flow Record FlowDataLength=16 NextHop=192.168.1.33 NextHopSourceMask=4294967295 NextHopDestinationMask=4294967168}]}] CounterSamples=[]} --- PASS: TestDecodeExtendedRouterFlow (0.00s) === RUN TestDecodeExtendedRouterFlowIPv6 base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 104 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=192.168.1.18 SubAgentID=0 SequenceNumber=638 AgentUptime=853599356 SampleCount=1 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=52 SequenceNumber=291 SourceIDClass=Single Interface SourceIDIndex=29 SamplingRate=256 SamplePool=820 Dropped=22018 InputInterfaceFormat=0 InputInterface=29 OutputInterfaceFormat=0 OutputInterface=4 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Extended Router Flow Record FlowDataLength=28 NextHop=2001:db8:: NextHopSourceMask=4294967295 NextHopDestinationMask=4294967168}]}] CounterSamples=[]} --- PASS: TestDecodeExtendedRouterFlowIPv6 (0.00s) === RUN TestDecodeExtendedIpv4TunnelIngressFlow base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 108 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=0 SequenceNumber=114 AgentUptime=114000 SampleCount=1 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=72 SequenceNumber=116 SourceIDClass=Single Interface SourceIDIndex=33555432 SamplingRate=1 SamplePool=116 Dropped=0 InputInterfaceFormat=0 InputInterface=0 OutputInterfaceFormat=0 OutputInterface=2147483649 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Extended IPv4 Tunnel Ingress Record FlowDataLength=32 SFlowIpv4Record={ Length=0 Protocol=47 IPSrc=192.168.0.84 IPDst=192.168.0.83 PortSrc=0 PortDst=0 TCPFlags=0 TOS=0}}]}] CounterSamples=[]} --- PASS: TestDecodeExtendedIpv4TunnelIngressFlow (0.00s) === RUN TestDecodeExtendedIpv4TunnelEgressFlow base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 108 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=1 SequenceNumber=18 AgentUptime=17000 SampleCount=1 FlowSamples=[{EnterpriseID=Standard SFlow Format=Flow Sample SampleLength=72 SequenceNumber=18 SourceIDClass=Single Interface SourceIDIndex=33555433 SamplingRate=1 SamplePool=18 Dropped=0 InputInterfaceFormat=0 InputInterface=108 OutputInterfaceFormat=0 OutputInterface=2147483649 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=Extended IPv4 Tunnel Egress Record FlowDataLength=32 SFlowIpv4Record={ Length=0 Protocol=0 IPSrc=0.0.0.0 IPDst=192.168.0.84 PortSrc=0 PortDst=0 TCPFlags=0 TOS=0}}]}] CounterSamples=[]} --- PASS: TestDecodeExtendedIpv4TunnelEgressFlow (0.00s) === RUN TestDecodeEthernetFrameFlow base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 532 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=185.120.22.246 SubAgentID=100000 SequenceNumber=11 AgentUptime=12951 SampleCount=7 FlowSamples=[..7..] CounterSamples=[]} --- PASS: TestDecodeEthernetFrameFlow (0.00s) === RUN TestDecodePortnameCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 252 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=0 SequenceNumber=111469 AgentUptime=235197000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=216 SequenceNumber=23520 SourceIDClass=Single Interface SourceIDIndex=14 RecordCount=4 Records=[{EnterpriseID=Standard SFlow Format=Ethernet Interface Counters FlowDataLength=52 AlignmentErrors=0 FCSErrors=0 SingleCollisionFrames=4294967295 MultipleCollisionFrames=4294967295 SQETestErrors=4294967295 DeferredTransmissions=4294967295 LateCollisions=4294967295 ExcessiveCollisions=4294967295 InternalMacTransmitErrors=4294967295 CarrierSenseErrors=4294967295 FrameTooLongs=4294967295 InternalMacReceiveErrors=4294967295 SymbolErrors=4294967295}, {EnterpriseID=Standard SFlow Format=Openflow Port Counters FlowDataLength=12 DatapathID=108659399421513 PortNo=3}, {EnterpriseID=Standard SFlow Format=PORT NAME Counters FlowDataLength=20 Len=16 Str=tapd98154f2-00}, {EnterpriseID=Standard SFlow Format=Generic Interface Counters FlowDataLength=88 IfIndex=14 IfType=6 IfSpeed=10000000000 IfDirection=1 IfStatus=3 IfInOctets=18249 IfInUcastPkts=181 IfInMulticastPkts=0 IfInBroadcastPkts=4294967295 IfInDiscards=0 IfInErrors=0 IfInUnknownProtos=4294967295 IfOutOctets=35339 IfOutUcastPkts=466 IfOutMulticastPkts=4294967295 IfOutBroadcastPkts=4294967295 IfOutDiscards=0 IfOutErrors=0 IfPromiscuousMode=0}]}]} --- PASS: TestDecodePortnameCounter (0.00s) === RUN TestDecodeVLANCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 88 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=10.20.4.0 SubAgentID=100 SequenceNumber=96480 AgentUptime=1929595000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Expanded Counter Sample SampleLength=52 SequenceNumber=96480 SourceIDClass=Single Interface SourceIDIndex=1 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=VLAN Counters FlowDataLength=28 VlanID=10 Octets=25963724 UcastPkts=38531 MulticastPkts=167958 BroadcastPkts=128627 Discards=0}]}]} --- PASS: TestDecodeVLANCounter (0.00s) === RUN TestDecodeLACPCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 112 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=0 SequenceNumber=14565 AgentUptime=95295000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=116 SequenceNumber=3376 SourceIDClass=Single Interface SourceIDIndex=1 RecordCount=1 Records=[{EnterpriseID=Standard SFlow Format=LACP Counters FlowDataLength=56 ActorSystemID=7e:60:69:73:8f:42 PartnerSystemID=00:00:00:00:00:00 AttachedAggID=1 LacpPortState={ PortStateAll=91553792} LACPDUsRx=0 MarkerPDUsRx=4294967295 MarkerResponsePDUsRx=4294967295 UnknownRx=4294967295 IllegalRx=0 LACPDUsTx=1173 MarkerPDUsTx=4294967295 MarkerResponsePDUsTx=4294967295}]}]} --- PASS: TestDecodeLACPCounter (0.00s) === RUN TestDecodeOpenflowCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 244 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=0 SequenceNumber=111450 AgentUptime=235148000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=208 SequenceNumber=23515 SourceIDClass=Single Interface SourceIDIndex=11 RecordCount=4 Records=[{EnterpriseID=Standard SFlow Format=Ethernet Interface Counters FlowDataLength=52 AlignmentErrors=0 FCSErrors=0 SingleCollisionFrames=4294967295 MultipleCollisionFrames=4294967295 SQETestErrors=4294967295 DeferredTransmissions=4294967295 LateCollisions=4294967295 ExcessiveCollisions=4294967295 InternalMacTransmitErrors=4294967295 CarrierSenseErrors=4294967295 FrameTooLongs=4294967295 InternalMacReceiveErrors=4294967295 SymbolErrors=4294967295}, {EnterpriseID=Standard SFlow Format=Openflow Port Counters FlowDataLength=12 DatapathID=108659399421513 PortNo=65534}, {EnterpriseID=Standard SFlow Format=PORT NAME Counters FlowDataLength=12 Len=8 Str=br-int}, {EnterpriseID=Standard SFlow Format=Generic Interface Counters FlowDataLength=88 IfIndex=11 IfType=6 IfSpeed=100000000 IfDirection=0 IfStatus=0 IfInOctets=0 IfInUcastPkts=0 IfInMulticastPkts=0 IfInBroadcastPkts=4294967295 IfInDiscards=0 IfInErrors=0 IfInUnknownProtos=4294967295 IfOutOctets=0 IfOutUcastPkts=0 IfOutMulticastPkts=4294967295 IfOutBroadcastPkts=4294967295 IfOutDiscards=0 IfOutErrors=0 IfPromiscuousMode=0}]}]} --- PASS: TestDecodeOpenflowCounter (0.00s) === RUN TestDecodeAppResourcesOvsdbCounter base_test.go:19: Checking packet layers, want [SFlow] base_test.go:21: Got layer SFlow, 0 bytes, payload of 0 bytes base_test.go:24: PACKET: 128 bytes - Layer 1 (00 bytes) = SFlow {Contents=[] Payload=[] DatagramVersion=5 AgentAddress=127.0.0.1 SubAgentID=0 SequenceNumber=111455 AgentUptime=235164000 SampleCount=1 FlowSamples=[] CounterSamples=[{EnterpriseID=Standard SFlow Format=Counter Sample SampleLength=92 SequenceNumber=23517 SourceIDClass=Single Interface SourceIDIndex=33555432 RecordCount=2 Records=[{EnterpriseID=Standard SFlow Format=App Resources Counters FlowDataLength=40 UserTime=726317 SystemTime=669497 MemUsed=5812224 MemMax=0 FdOpen=0 FdMax=0 ConnOpen=0 ConnMax=0}, {EnterpriseID=Standard SFlow Format=OVSDP Counters FlowDataLength=24 NHit=1015 NMissed=328 NLost=0 NMaskHit=2619 NFlows=0 NMasks=0}]}]} --- PASS: TestDecodeAppResourcesOvsdbCounter (0.00s) === RUN TestSIPMain --- PASS: TestSIPMain (0.00s) === RUN TestTCPOptionKindString --- PASS: TestTCPOptionKindString (0.00s) === RUN TestTCPSerializePadding --- PASS: TestTCPSerializePadding (0.00s) === RUN TestPacketTCPOptionDecode --- PASS: TestPacketTCPOptionDecode (0.00s) === RUN TestIPv4UDPChecksum base_test.go:19: Checking packet layers, want [IPv4 UDP] base_test.go:21: Got layer IPv4, 20 bytes, payload of 8 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 0 bytes base_test.go:24: PACKET: 28 bytes - Layer 1 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..8..] Version=4 IHL=5 TOS=0 Length=28 Id=0 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=36507 SrcIP=192.0.2.1 DstIP=198.51.100.1 Options=[] Padding=[]} - Layer 2 (08 bytes) = UDP {Contents=[..8..] Payload=[] SrcPort=12345(italk) DstPort=9999(distinct) Length=8 Checksum=48223} --- PASS: TestIPv4UDPChecksum (0.00s) === RUN TestIPv6UDPChecksumWithIPv6DstOpts base_test.go:19: Checking packet layers, want [IPv6 IPv6Destination UDP] base_test.go:21: Got layer IPv6, 40 bytes, payload of 16 bytes base_test.go:21: Got layer IPv6Destination, 8 bytes, payload of 8 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 0 bytes base_test.go:24: PACKET: 56 bytes - Layer 1 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..16..] Version=6 TrafficClass=0 FlowLabel=0 Length=16 NextHeader=IPv6Destination HopLimit=64 SrcIP=2001:db8::1 DstIP=2001:db8::2 HopByHop=nil} - Layer 2 (08 bytes) = IPv6Destination {Contents=[..8..] Payload=[..8..] NextHeader=UDP HeaderLength=0 ActualLength=8 Options=[{OptionType=1 OptionLength=4 ActualLength=6 OptionData=[0, 0, 0, 0] OptionAlignment=[0 0]}]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[] SrcPort=12345(italk) DstPort=9999(distinct) Length=8 Checksum=19745} --- PASS: TestIPv6UDPChecksumWithIPv6DstOpts (0.00s) === RUN TestIPv6JumbogramUDPChecksum base_test.go:19: Checking packet layers, want [IPv6 IPv6HopByHop UDP Payload] base_test.go:21: Got layer IPv6, 40 bytes, payload of 65552 bytes base_test.go:21: Got layer IPv6HopByHop, 8 bytes, payload of 65544 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 65536 bytes base_test.go:21: Got layer Payload, 65536 bytes, payload of 0 bytes base_test.go:24: PACKET: 65592 bytes - Layer 1 (40 bytes) = IPv6 {Contents=[..40..] Payload=[..65552..] Version=6 TrafficClass=0 FlowLabel=0 Length=0 NextHeader=IPv6HopByHop HopLimit=64 SrcIP=2001:db8::1 DstIP=2001:db8::2 HopByHop={ Contents=[..8..] Payload=[..65544..] NextHeader=UDP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 0, 16] OptionAlignment=[0 0]}]}} - Layer 2 (08 bytes) = IPv6HopByHop {Contents=[..8..] Payload=[..65544..] NextHeader=UDP HeaderLength=0 ActualLength=8 Options=[{OptionType=194 OptionLength=4 ActualLength=6 OptionData=[0, 1, 0, 16] OptionAlignment=[0 0]}]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..65536..] SrcPort=12345(italk) DstPort=9999(distinct) Length=0 Checksum=52648} - Layer 4 (65536 bytes) = Payload 65536 byte(s) --- PASS: TestIPv6JumbogramUDPChecksum (0.00s) === RUN TestParseTLSClientHello base_test.go:19: Checking packet layers, want [Ethernet IPv4 TCP TLS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 254 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 234 bytes base_test.go:21: Got layer TCP, 20 bytes, payload of 214 bytes base_test.go:21: Got layer TLS, 214 bytes, payload of 0 bytes base_test.go:24: PACKET: 268 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..254..] SrcMAC=00:50:56:c0:00:08 DstMAC=00:0c:29:1f:ab:17 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..234..] Version=4 IHL=5 TOS=0 Length=254 Id=28994 Flags=DF FragOffset=0 TTL=128 Protocol=TCP Checksum=20193 SrcIP=192.168.220.1 DstIP=192.168.220.131 Options=[] Padding=[]} - Layer 3 (20 bytes) = TCP {Contents=[..20..] Payload=[..214..] SrcPort=12046 DstPort=443(https) Seq=627883325 Ack=3436110327 DataOffset=5 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=65535 Checksum=31919 Urgent=0 Options=[] Padding=[]} - Layer 4 (214 bytes) = TLS {Contents=[..214..] Payload=[] ChangeCipherSpec=[] Handshake=[{ContentType=Handshake Version=TLS 1.0 Length=209}] AppData=[] Alert=[]} --- PASS: TestParseTLSClientHello (0.00s) === RUN TestTLSClientHelloDecodeFromBytes --- PASS: TestTLSClientHelloDecodeFromBytes (0.00s) === RUN TestParseTLSChangeCipherSpec base_test.go:19: Checking packet layers, want [TLS] base_test.go:21: Got layer TLS, 53 bytes, payload of 0 bytes base_test.go:24: PACKET: 134 bytes - Layer 1 (53 bytes) = TLS {Contents=[..53..] Payload=[] ChangeCipherSpec=[{ContentType=Change Cipher Spec Version=TLS 1.0 Length=1 Message=Change Cipher Spec Message}] Handshake=[{ContentType=Handshake Version=TLS 1.0 Length=70}, {ContentType=Handshake Version=TLS 1.0 Length=48}] AppData=[] Alert=[]} --- PASS: TestParseTLSChangeCipherSpec (0.00s) === RUN TestParseTLSAppData base_test.go:19: Checking packet layers, want [TLS] base_test.go:21: Got layer TLS, 37 bytes, payload of 0 bytes base_test.go:24: PACKET: 74 bytes - Layer 1 (37 bytes) = TLS {Contents=[..37..] Payload=[] ChangeCipherSpec=[] Handshake=[] AppData=[{ContentType=Application Data Version=TLS 1.0 Length=32 Payload=[..32..]}, {ContentType=Application Data Version=TLS 1.0 Length=32 Payload=[..32..]}] Alert=[]} --- PASS: TestParseTLSAppData (0.00s) === RUN TestSerializeTLSAppData base_test.go:19: Checking packet layers, want [TLS] base_test.go:21: Got layer TLS, 37 bytes, payload of 0 bytes base_test.go:24: PACKET: 74 bytes - Layer 1 (37 bytes) = TLS {Contents=[..37..] Payload=[] ChangeCipherSpec=[] Handshake=[] AppData=[{ContentType=Application Data Version=TLS 1.0 Length=32 Payload=[..32..]}, {ContentType=Application Data Version=TLS 1.0 Length=32 Payload=[..32..]}] Alert=[]} --- PASS: TestSerializeTLSAppData (0.00s) === RUN TestParseTLSMalformed --- PASS: TestParseTLSMalformed (0.00s) === RUN TestParseTLSTooShort --- PASS: TestParseTLSTooShort (0.00s) === RUN TestParseTLSLengthMismatch --- PASS: TestParseTLSLengthMismatch (0.00s) === RUN TestParseTLSAlertEncrypted base_test.go:19: Checking packet layers, want [TLS] base_test.go:21: Got layer TLS, 37 bytes, payload of 0 bytes base_test.go:24: PACKET: 37 bytes - Layer 1 (37 bytes) = TLS {Contents=[..37..] Payload=[] ChangeCipherSpec=[] Handshake=[] AppData=[] Alert=[{ContentType=Alert Version=TLS 1.2 Length=32 Level=Unknown(255) Description=Unknown EncryptedMsg=[..32..]}]} --- PASS: TestParseTLSAlertEncrypted (0.00s) === RUN TestSerializeTLSAlertEncrypted base_test.go:19: Checking packet layers, want [TLS] base_test.go:21: Got layer TLS, 37 bytes, payload of 0 bytes base_test.go:24: PACKET: 37 bytes - Layer 1 (37 bytes) = TLS {Contents=[..37..] Payload=[] ChangeCipherSpec=[] Handshake=[] AppData=[] Alert=[{ContentType=Alert Version=TLS 1.2 Length=32 Level=Unknown(255) Description=Unknown EncryptedMsg=[..32..]}]} --- PASS: TestSerializeTLSAlertEncrypted (0.00s) === RUN TestUDPPacketDNS base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 230 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 210 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 202 bytes base_test.go:21: Got layer DNS, 202 bytes, payload of 0 bytes base_test.go:24: PACKET: 244 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..230..] SrcMAC=00:1f:ca:b3:75:c0 DstMAC=24:be:05:27:0b:17 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..210..] Version=4 IHL=5 TOS=0 Length=230 Id=26831 Flags= FragOffset=0 TTL=63 Protocol=UDP Checksum=42745 SrcIP=172.16.255.1 DstIP=172.29.20.15 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..202..] SrcPort=53(domain) DstPort=35181 Length=210 Checksum=30026} - Layer 4 (202 bytes) = DNS {Contents=[..202..] Payload=[] ID=47320 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=7 NSCount=0 ARCount=0 Questions=[{Name=[..8..] Type=MX Class=IN}] Answers=[..7..] Authorities=[] Additionals=[]} --- PASS: TestUDPPacketDNS (0.00s) === RUN TestDNSQueryA base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 60 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 40 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 32 bytes base_test.go:21: Got layer DNS, 32 bytes, payload of 0 bytes base_test.go:24: PACKET: 74 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..60..] SrcMAC=52:54:00:bd:1c:70 DstMAC=fe:54:00:3e:00:96 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..40..] Version=4 IHL=5 TOS=0 Length=60 Id=8928 Flags= FragOffset=0 TTL=64 Protocol=UDP Checksum=57912 SrcIP=192.168.122.70 DstIP=192.168.122.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..32..] SrcPort=49973 DstPort=53(domain) Length=40 Checksum=30162} - Layer 4 (32 bytes) = DNS {Contents=[..32..] Payload=[] ID=21057 QR=false OpCode=Query AA=false TC=false RD=true RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..14..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[]} --- PASS: TestDNSQueryA (0.00s) === RUN TestDNSRRA base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 292 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 272 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 264 bytes base_test.go:21: Got layer DNS, 264 bytes, payload of 0 bytes base_test.go:24: PACKET: 306 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..292..] SrcMAC=fe:54:00:3e:00:96 DstMAC=52:54:00:bd:1c:70 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..272..] Version=4 IHL=5 TOS=0 Length=292 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=50224 SrcIP=192.168.122.1 DstIP=192.168.122.70 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..264..] SrcPort=53(domain) DstPort=49973 Length=272 Checksum=30394} - Layer 4 (264 bytes) = DNS {Contents=[..264..] Payload=[] ID=21057 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=6 NSCount=4 ARCount=4 Questions=[{Name=[..14..] Type=A Class=IN}] Answers=[..6..] Authorities=[{Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}] Additionals=[{Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 32, 10] IP=216.239.32.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 34, 10] IP=216.239.34.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 36, 10] IP=216.239.36.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 38, 10] IP=216.239.38.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestDNSRRA (0.00s) === RUN TestDNSAAAA base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 224 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 204 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 196 bytes base_test.go:21: Got layer DNS, 196 bytes, payload of 0 bytes base_test.go:24: PACKET: 238 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..224..] SrcMAC=fe:54:00:3e:00:96 DstMAC=52:54:00:bd:1c:70 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..204..] Version=4 IHL=5 TOS=0 Length=224 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=50292 SrcIP=192.168.122.1 DstIP=192.168.122.70 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..196..] SrcPort=53(domain) DstPort=56083 Length=204 Checksum=30326} - Layer 4 (196 bytes) = DNS {Contents=[..196..] Payload=[] ID=62211 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=1 NSCount=4 ARCount=4 Questions=[{Name=[..14..] Type=AAAA Class=IN}] Answers=[{Name=[..14..] Type=AAAA Class=IN TTL=300 DataLength=16 Data=[..16..] IP=2a00:1450:400c:c01::69 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}] Authorities=[{Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..10..] Type=NS Class=IN TTL=172800 DataLength=6 Data=[..6..] IP=<nil> NS=[..14..] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}] Additionals=[{Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 32, 10] IP=216.239.32.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 34, 10] IP=216.239.34.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 36, 10] IP=216.239.36.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}, {Name=[..14..] Type=A Class=IN TTL=172800 DataLength=4 Data=[216, 239, 38, 10] IP=216.239.38.10 NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} --- PASS: TestDNSAAAA (0.00s) === RUN TestDNSMXSOA base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP DNS] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 110 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 90 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 82 bytes base_test.go:21: Got layer DNS, 82 bytes, payload of 0 bytes base_test.go:24: PACKET: 124 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..110..] SrcMAC=fe:54:00:3e:00:96 DstMAC=52:54:00:bd:1c:70 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..90..] Version=4 IHL=5 TOS=0 Length=110 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=50406 SrcIP=192.168.122.1 DstIP=192.168.122.70 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..82..] SrcPort=53(domain) DstPort=40032 Length=90 Checksum=30212} - Layer 4 (82 bytes) = DNS {Contents=[..82..] Payload=[] ID=64634 QR=true OpCode=Query AA=false TC=false RD=true RA=true Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=1 ARCount=0 Questions=[{Name=[..14..] Type=MX Class=IN}] Answers=[] Authorities=[{Name=[..10..] Type=SOA Class=IN TTL=60 DataLength=38 Data=[..38..] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[..14..] RName=[..20..] Serial=1548132 Refresh=7200 Retry=1800 Expire=1209600 Minimum=300} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}] Additionals=[]} --- PASS: TestDNSMXSOA (0.00s) === RUN TestDNSDoesNotMalloc --- PASS: TestDNSDoesNotMalloc (0.00s) === RUN TestPacketUSB0 base_test.go:19: Checking packet layers, want [USB USBInterrupt] base_test.go:21: Got layer USB, 40 bytes, payload of 1 bytes base_test.go:21: Got layer USBInterrupt, 1 bytes, payload of 0 bytes base_test.go:24: PACKET: 65 bytes - Layer 1 (40 bytes) = USB {Contents=[..40..] Payload=[4] ID=18446612133308938240 EventType=COMPLETE TransferType=Interrupt Direction=In EndpointNumber=1 DeviceAddress=1 BusID=2 TimestampSec=1348195264 TimestampUsec=689546 Setup=false Data=true Status=0 UrbLength=1 UrbDataLength=1 UrbInterval=0 UrbStartFrame=0 UrbCopyOfTransferFlags=0 IsoNumDesc=0} - Layer 2 (01 bytes) = USBInterrupt {Contents=[4] Payload=[]} --- PASS: TestPacketUSB0 (0.00s) === RUN TestVRRPPacketPacket0 base_test.go:19: Checking packet layers, want [Ethernet IPv4 VRRP] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 46 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 20 bytes base_test.go:21: Got layer VRRP, 20 bytes, payload of 0 bytes base_test.go:24: PACKET: 60 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..46..] SrcMAC=00:00:5e:00:01:01 DstMAC=01:00:5e:00:00:12 EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..20..] Version=4 IHL=5 TOS=192 Length=40 Id=0 Flags= FragOffset=0 TTL=255 Protocol=VRRP Checksum=6605 SrcIP=192.168.0.30 DstIP=224.0.0.18 Options=[] Padding=[]} - Layer 3 (20 bytes) = VRRP {Contents=[..20..] Payload=[] Version=2 Type=VRRPv2 Advertisement VirtualRtrID=1 Priority=100 CountIPAddr=1 AuthType=No Authentication AdverInt=1 Checksum=47698 IPAddress=[192.168.0.1]} --- PASS: TestVRRPPacketPacket0 (0.00s) === RUN TestPacketVXLAN base_test.go:19: Checking packet layers, want [Ethernet IPv4 UDP VXLAN Ethernet IPv4 ICMPv4 Payload] base_test.go:21: Got layer Ethernet, 14 bytes, payload of 134 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 114 bytes base_test.go:21: Got layer UDP, 8 bytes, payload of 106 bytes base_test.go:21: Got layer VXLAN, 8 bytes, payload of 98 bytes base_test.go:21: Got layer Ethernet, 14 bytes, payload of 84 bytes base_test.go:21: Got layer IPv4, 20 bytes, payload of 64 bytes base_test.go:21: Got layer ICMPv4, 8 bytes, payload of 56 bytes base_test.go:21: Got layer Payload, 56 bytes, payload of 0 bytes base_test.go:24: PACKET: 148 bytes - Layer 1 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..134..] SrcMAC=36:dc:85:1e:b3:40 DstMAC=00:16:3e:08:71:cf EthernetType=IPv4 Length=0} - Layer 2 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..114..] Version=4 IHL=5 TOS=0 Length=134 Id=53952 Flags=DF FragOffset=0 TTL=64 Protocol=UDP Checksum=20818 SrcIP=192.168.203.1 DstIP=192.168.202.1 Options=[] Padding=[]} - Layer 3 (08 bytes) = UDP {Contents=[..8..] Payload=[..106..] SrcPort=45149 DstPort=4789(vxlan) Length=114 Checksum=0} - Layer 4 (08 bytes) = VXLAN {Contents=[..8..] Payload=[..98..] ValidIDFlag=true VNI=255 GBPExtension=false GBPDontLearn=false GBPApplied=false GBPGroupPolicyID=0} - Layer 5 (14 bytes) = Ethernet {Contents=[..14..] Payload=[..84..] SrcMAC=00:16:3e:37:f6:04 DstMAC=00:30:88:01:00:02 EthernetType=IPv4 Length=0} - Layer 6 (20 bytes) = IPv4 {Contents=[..20..] Payload=[..64..] Version=4 IHL=5 TOS=0 Length=84 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=ICMPv4 Checksum=9039 SrcIP=192.168.203.3 DstIP=192.168.203.5 Options=[] Padding=[]} - Layer 7 (08 bytes) = ICMPv4 {Contents=[..8..] Payload=[..56..] TypeCode=EchoRequest Checksum=63218 Id=1292 Seq=1} - Layer 8 (56 bytes) = Payload 56 byte(s) --- PASS: TestPacketVXLAN (0.00s) === RUN TestIsomorphicPacketVXLAN --- PASS: TestIsomorphicPacketVXLAN (0.00s) PASS ok github.com/google/gopacket/layers 0.035s testing: warning: no tests to run PASS ok github.com/google/gopacket/macs 0.005s [no tests to run] === RUN TestPcapNonexistentFile pcap_test.go:26: Error returned for nonexistent file: /path/to/nonexistent/file: No such file or directory --- PASS: TestPcapNonexistentFile (0.00s) === RUN TestPcapFileRead pcap_test.go:86: Processing file test_loopback.pcap pcap_test.go:110: -- FULL PACKET DATA (560 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 02 04 06 40 00 00 00 00 |....`......@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 16 66 0a 65 66 ef 80 18 28 e9 02 0c 00 00 |...f.ef...(.....| 00000040 01 01 08 0a 05 c0 8c fc 05 c0 38 8c 47 45 54 20 |..........8.GET | 00000050 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00000060 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00000070 74 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 |t/ HTTP/1.1..Hos| 00000080 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 38 |t: localhost:808| 00000090 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b |0..Connection: k| 000000a0 65 65 70 2d 61 6c 69 76 65 0d 0a 43 61 63 68 65 |eep-alive..Cache| 000000b0 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 2d 61 67 |-Control: max-ag| 000000c0 65 3d 30 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a |e=0..User-Agent:| 000000d0 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 30 20 28 4d 61 | Mozilla/5.0 (Ma| 000000e0 63 69 6e 74 6f 73 68 3b 20 49 6e 74 65 6c 20 4d |cintosh; Intel M| 000000f0 61 63 20 4f 53 20 58 20 31 30 5f 38 5f 32 29 20 |ac OS X 10_8_2) | 00000100 41 70 70 6c 65 57 65 62 4b 69 74 2f 35 33 37 2e |AppleWebKit/537.| 00000110 31 31 20 28 4b 48 54 4d 4c 2c 20 6c 69 6b 65 20 |11 (KHTML, like | 00000120 47 65 63 6b 6f 29 20 43 68 72 6f 6d 65 2f 32 33 |Gecko) Chrome/23| 00000130 2e 30 2e 31 32 37 31 2e 31 30 31 20 53 61 66 61 |.0.1271.101 Safa| 00000140 72 69 2f 35 33 37 2e 31 31 0d 0a 41 63 63 65 70 |ri/537.11..Accep| 00000150 74 3a 20 74 65 78 74 2f 68 74 6d 6c 2c 61 70 70 |t: text/html,app| 00000160 6c 69 63 61 74 69 6f 6e 2f 78 68 74 6d 6c 2b 78 |lication/xhtml+x| 00000170 6d 6c 2c 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 |ml,application/x| 00000180 6d 6c 3b 71 3d 30 2e 39 2c 2a 2f 2a 3b 71 3d 30 |ml;q=0.9,*/*;q=0| 00000190 2e 38 0d 0a 52 65 66 65 72 65 72 3a 20 68 74 74 |.8..Referer: htt| 000001a0 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 |p://localhost:80| 000001b0 38 30 2f 70 6b 67 2f 0d 0a 41 63 63 65 70 74 2d |80/pkg/..Accept-| 000001c0 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 2c 64 |Encoding: gzip,d| 000001d0 65 66 6c 61 74 65 2c 73 64 63 68 0d 0a 41 63 63 |eflate,sdch..Acc| 000001e0 65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 65 6e |ept-Language: en| 000001f0 2d 55 53 2c 65 6e 3b 71 3d 30 2e 38 0d 0a 41 63 |-US,en;q=0.8..Ac| 00000200 63 65 70 74 2d 43 68 61 72 73 65 74 3a 20 49 53 |cept-Charset: IS| 00000210 4f 2d 38 38 35 39 2d 31 2c 75 74 66 2d 38 3b 71 |O-8859-1,utf-8;q| 00000220 3d 30 2e 37 2c 2a 3b 71 3d 30 2e 33 0d 0a 0d 0a |=0.7,*;q=0.3....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..556..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..516..] Version=6 TrafficClass=0 FlowLabel=0 Length=516 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 02 04 06 40 00 00 00 00 00 00 00 00 |`......@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..484..] SrcPort=58799 DstPort=8080(http-alt) Seq=144119398 Ack=174417647 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=10473 Checksum=524 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505084/96483468 0x05c08cfc05c0388c)] Padding=[]} 00000000 e5 af 1f 90 08 97 16 66 0a 65 66 ef 80 18 28 e9 |.......f.ef...(.| 00000010 02 0c 00 00 01 01 08 0a 05 c0 8c fc 05 c0 38 8c |..............8.| --- Layer 4 --- Payload 484 byte(s) 00000000 47 45 54 20 2f 70 6b 67 2f 67 69 74 68 75 62 2e |GET /pkg/github.| 00000010 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00000020 61 63 6b 65 74 2f 20 48 54 54 50 2f 31 2e 31 0d |acket/ HTTP/1.1.| 00000030 0a 48 6f 73 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 |.Host: localhost| 00000040 3a 38 30 38 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f |:8080..Connectio| 00000050 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 |n: keep-alive..C| 00000060 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 |ache-Control: ma| 00000070 78 2d 61 67 65 3d 30 0d 0a 55 73 65 72 2d 41 67 |x-age=0..User-Ag| 00000080 65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 30 |ent: Mozilla/5.0| 00000090 20 28 4d 61 63 69 6e 74 6f 73 68 3b 20 49 6e 74 | (Macintosh; Int| 000000a0 65 6c 20 4d 61 63 20 4f 53 20 58 20 31 30 5f 38 |el Mac OS X 10_8| 000000b0 5f 32 29 20 41 70 70 6c 65 57 65 62 4b 69 74 2f |_2) AppleWebKit/| 000000c0 35 33 37 2e 31 31 20 28 4b 48 54 4d 4c 2c 20 6c |537.11 (KHTML, l| 000000d0 69 6b 65 20 47 65 63 6b 6f 29 20 43 68 72 6f 6d |ike Gecko) Chrom| 000000e0 65 2f 32 33 2e 30 2e 31 32 37 31 2e 31 30 31 20 |e/23.0.1271.101 | 000000f0 53 61 66 61 72 69 2f 35 33 37 2e 31 31 0d 0a 41 |Safari/537.11..A| 00000100 63 63 65 70 74 3a 20 74 65 78 74 2f 68 74 6d 6c |ccept: text/html| 00000110 2c 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 68 74 |,application/xht| 00000120 6d 6c 2b 78 6d 6c 2c 61 70 70 6c 69 63 61 74 69 |ml+xml,applicati| 00000130 6f 6e 2f 78 6d 6c 3b 71 3d 30 2e 39 2c 2a 2f 2a |on/xml;q=0.9,*/*| 00000140 3b 71 3d 30 2e 38 0d 0a 52 65 66 65 72 65 72 3a |;q=0.8..Referer:| 00000150 20 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 | http://localhos| 00000160 74 3a 38 30 38 30 2f 70 6b 67 2f 0d 0a 41 63 63 |t:8080/pkg/..Acc| 00000170 65 70 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a |ept-Encoding: gz| 00000180 69 70 2c 64 65 66 6c 61 74 65 2c 73 64 63 68 0d |ip,deflate,sdch.| 00000190 0a 41 63 63 65 70 74 2d 4c 61 6e 67 75 61 67 65 |.Accept-Language| 000001a0 3a 20 65 6e 2d 55 53 2c 65 6e 3b 71 3d 30 2e 38 |: en-US,en;q=0.8| 000001b0 0d 0a 41 63 63 65 70 74 2d 43 68 61 72 73 65 74 |..Accept-Charset| 000001c0 3a 20 49 53 4f 2d 38 38 35 39 2d 31 2c 75 74 66 |: ISO-8859-1,utf| 000001d0 2d 38 3b 71 3d 30 2e 37 2c 2a 3b 71 3d 30 2e 33 |-8;q=0.7,*;q=0.3| 000001e0 0d 0a 0d 0a |....| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 65 66 ef 08 97 18 4a 80 10 23 02 00 28 00 00 |.ef....J..#..(..| 00000040 01 01 08 0a 05 c0 8c fc 05 c0 8c fc |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=100497 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=8080(http-alt) DstPort=58799 Seq=174417647 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505084/96505084 0x05c08cfc05c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 65 66 ef 08 97 18 4a 80 10 23 02 |.....ef....J..#.| 00000010 00 28 00 00 01 01 08 0a 05 c0 8c fc 05 c0 8c fc |.(..............| pcap_test.go:110: -- FULL PACKET DATA (4172 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 10 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 65 66 ef 08 97 18 4a 80 18 23 02 10 28 00 00 |.ef....J..#..(..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 48 54 54 50 |............HTTP| 00000050 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 44 61 74 |/1.1 200 OK..Dat| 00000060 65 3a 20 53 75 6e 2c 20 30 36 20 4a 61 6e 20 32 |e: Sun, 06 Jan 2| 00000070 30 31 33 20 31 37 3a 32 32 3a 33 32 20 47 4d 54 |013 17:22:32 GMT| 00000080 0d 0a 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 |..Transfer-Encod| 00000090 69 6e 67 3a 20 63 68 75 6e 6b 65 64 0d 0a 43 6f |ing: chunked..Co| 000000a0 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 |ntent-Type: text| 000000b0 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 |/html; charset=u| 000000c0 74 66 2d 38 0d 0a 0d 0a 32 30 30 0d 0a 3c 21 44 |tf-8....200..<!D| 000000d0 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 |OCTYPE html>.<ht| 000000e0 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 |ml>.<head>.<meta| 000000f0 20 68 74 74 70 2d 65 71 75 69 76 3d 22 43 6f 6e | http-equiv="Con| 00000100 74 65 6e 74 2d 54 79 70 65 22 20 63 6f 6e 74 65 |tent-Type" conte| 00000110 6e 74 3d 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 |nt="text/html; c| 00000120 68 61 72 73 65 74 3d 75 74 66 2d 38 22 3e 0a 0a |harset=utf-8">..| 00000130 20 20 3c 74 69 74 6c 65 3e 67 6f 70 61 63 6b 65 | <title>gopacke| 00000140 74 20 2d 20 54 68 65 20 47 6f 20 50 72 6f 67 72 |t - The Go Progr| 00000150 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 67 65 3c |amming Language<| 00000160 2f 74 69 74 6c 65 3e 0a 0a 3c 6c 69 6e 6b 20 74 |/title>..<link t| 00000170 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20 72 |ype="text/css" r| 00000180 65 6c 3d 22 73 74 79 6c 65 73 68 65 65 74 22 20 |el="stylesheet" | 00000190 68 72 65 66 3d 22 2f 64 6f 63 2f 73 74 79 6c 65 |href="/doc/style| 000001a0 2e 63 73 73 22 3e 0a 3c 73 63 72 69 70 74 20 74 |.css">.<script t| 000001b0 79 70 65 3d 22 74 65 78 74 2f 6a 61 76 61 73 63 |ype="text/javasc| 000001c0 72 69 70 74 22 20 73 72 63 3d 22 2f 64 6f 63 2f |ript" src="/doc/| 000001d0 67 6f 64 6f 63 73 2e 6a 73 22 3e 3c 2f 73 63 72 |godocs.js"></scr| 000001e0 69 70 74 3e 0a 0a 3c 2f 68 65 61 64 3e 0a 3c 62 |ipt>..</head>.<b| 000001f0 6f 64 79 3e 0a 0a 3c 64 69 76 20 69 64 3d 22 74 |ody>..<div id="t| 00000200 6f 70 62 61 72 22 3e 3c 64 69 76 20 63 6c 61 73 |opbar"><div clas| 00000210 73 3d 22 63 6f 6e 74 61 69 6e 65 72 20 77 69 64 |s="container wid| 00000220 65 22 3e 0a 0a 3c 66 6f 72 6d 20 6d 65 74 68 6f |e">..<form metho| 00000230 64 3d 22 47 45 54 22 20 61 63 74 69 6f 6e 3d 22 |d="GET" action="| 00000240 2f 73 65 61 72 63 68 22 3e 0a 3c 64 69 76 20 69 |/search">.<div i| 00000250 64 3d 22 6d 65 6e 75 22 3e 0a 3c 61 20 68 72 65 |d="menu">.<a hre| 00000260 66 3d 22 2f 64 6f 63 2f 22 3e 44 6f 63 75 6d 65 |f="/doc/">Docume| 00000270 6e 74 73 3c 2f 61 3e 0a 3c 61 20 68 72 65 66 3d |nts</a>.<a href=| 00000280 22 2f 72 65 66 2f 22 3e 52 65 66 65 72 65 6e 63 |"/ref/">Referenc| 00000290 65 73 3c 2f 61 3e 0a 3c 61 20 68 72 65 66 3d 22 |es</a>.<a href="| 000002a0 2f 70 6b 67 2f 22 3e 50 61 63 6b 61 67 65 73 3c |/pkg/">Packages<| 000002b0 2f 61 3e 0a 3c 61 20 68 72 65 66 3d 22 2f 70 72 |/a>.<a href="/pr| 000002c0 6f 6a 65 63 74 2f 22 3e 54 68 65 20 50 0d 0a 64 |oject/">The P..d| 000002d0 65 0d 0a 72 6f 6a 65 63 74 3c 2f 61 3e 0a 3c 61 |e..roject</a>.<a| 000002e0 20 68 72 65 66 3d 22 2f 68 65 6c 70 2f 22 3e 48 | href="/help/">H| 000002f0 65 6c 70 3c 2f 61 3e 0a 3c 69 6e 70 75 74 20 74 |elp</a>.<input t| 00000300 79 70 65 3d 22 74 65 78 74 22 20 69 64 3d 22 73 |ype="text" id="s| 00000310 65 61 72 63 68 22 20 6e 61 6d 65 3d 22 71 22 20 |earch" name="q" | 00000320 63 6c 61 73 73 3d 22 69 6e 61 63 74 69 76 65 22 |class="inactive"| 00000330 20 76 61 6c 75 65 3d 22 53 65 61 72 63 68 22 3e | value="Search">| 00000340 0a 3c 2f 64 69 76 3e 0a 3c 64 69 76 20 69 64 3d |.</div>.<div id=| 00000350 22 68 65 61 64 69 6e 67 22 3e 3c 61 20 68 72 65 |"heading"><a hre| 00000360 66 3d 22 2f 22 3e 54 68 65 20 47 6f 20 50 72 6f |f="/">The Go Pro| 00000370 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 67 |gramming Languag| 00000380 65 3c 2f 61 3e 3c 2f 64 69 76 3e 0a 3c 2f 66 6f |e</a></div>.</fo| 00000390 72 6d 3e 0a 0a 3c 2f 64 69 76 3e 3c 2f 64 69 76 |rm>..</div></div| 000003a0 3e 0a 0a 3c 64 69 76 20 69 64 3d 22 70 61 67 65 |>..<div id="page| 000003b0 22 0d 0a 64 0d 0a 20 63 6c 61 73 73 3d 22 77 69 |"..d.. class="wi| 000003c0 64 65 22 0d 0a 33 0d 0a 3e 0a 0a 0d 0a 35 38 0d |de"..3..>....58.| 000003d0 0a 0a 20 20 3c 64 69 76 20 69 64 3d 22 70 6c 75 |.. <div id="plu| 000003e0 73 6f 6e 65 22 3e 3c 67 3a 70 6c 75 73 6f 6e 65 |sone"><g:plusone| 000003f0 20 73 69 7a 65 3d 22 73 6d 61 6c 6c 22 20 61 6e | size="small" an| 00000400 6e 6f 74 61 74 69 6f 6e 3d 22 6e 6f 6e 65 22 3e |notation="none">| 00000410 3c 2f 67 3a 70 6c 75 73 6f 6e 65 3e 3c 2f 64 69 |</g:plusone></di| 00000420 76 3e 0a 20 20 3c 68 31 3e 0d 0a 31 30 0d 0a 50 |v>. <h1>..10..P| 00000430 61 63 6b 61 67 65 20 67 6f 70 61 63 6b 65 74 0d |ackage gopacket.| 00000440 0a 36 0d 0a 3c 2f 68 31 3e 0a 0d 0a 31 0d 0a 0a |.6..</h1>...1...| 00000450 0d 0a 32 0d 0a 0a 0a 0d 0a 31 37 0d 0a 0a 3c 64 |..2......17...<d| 00000460 69 76 20 69 64 3d 22 6e 61 76 22 3e 3c 2f 64 69 |iv id="nav"></di| 00000470 76 3e 0a 0a 0d 0a 31 0d 0a 0a 0d 0a 63 65 39 34 |v>....1.....ce94| 00000480 0d 0a 3c 21 2d 2d 0a 09 43 6f 70 79 72 69 67 68 |..<!--..Copyrigh| 00000490 74 20 32 30 30 39 20 54 68 65 20 47 6f 20 41 75 |t 2009 The Go Au| 000004a0 74 68 6f 72 73 2e 20 41 6c 6c 20 72 69 67 68 74 |thors. All right| 000004b0 73 20 72 65 73 65 72 76 65 64 2e 0a 09 55 73 65 |s reserved...Use| 000004c0 20 6f 66 20 74 68 69 73 20 73 6f 75 72 63 65 20 | of this source | 000004d0 63 6f 64 65 20 69 73 20 67 6f 76 65 72 6e 65 64 |code is governed| 000004e0 20 62 79 20 61 20 42 53 44 2d 73 74 79 6c 65 0a | by a BSD-style.| 000004f0 09 6c 69 63 65 6e 73 65 20 74 68 61 74 20 63 61 |.license that ca| 00000500 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 74 68 |n be found in th| 00000510 65 20 4c 49 43 45 4e 53 45 20 66 69 6c 65 2e 0a |e LICENSE file..| 00000520 2d 2d 3e 0a 3c 21 2d 2d 0a 09 4e 6f 74 65 3a 20 |-->.<!--..Note: | 00000530 53 74 61 74 69 63 20 28 69 2e 65 2e 2c 20 6e 6f |Static (i.e., no| 00000540 74 20 74 65 6d 70 6c 61 74 65 2d 67 65 6e 65 72 |t template-gener| 00000550 61 74 65 64 29 20 68 72 65 66 20 61 6e 64 20 69 |ated) href and i| 00000560 64 0a 09 61 74 74 72 69 62 75 74 65 73 20 73 74 |d..attributes st| 00000570 61 72 74 20 77 69 74 68 20 22 70 6b 67 2d 22 20 |art with "pkg-" | 00000580 74 6f 20 6d 61 6b 65 20 69 74 20 69 6d 70 6f 73 |to make it impos| 00000590 73 69 62 6c 65 20 66 6f 72 0a 09 74 68 65 6d 20 |sible for..them | 000005a0 74 6f 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 |to conflict with| 000005b0 20 67 65 6e 65 72 61 74 65 64 20 61 74 74 72 69 | generated attri| 000005c0 62 75 74 65 73 20 28 73 6f 6d 65 20 6f 66 20 77 |butes (some of w| 000005d0 68 69 63 68 0a 09 63 6f 72 72 65 73 70 6f 6e 64 |hich..correspond| 000005e0 20 74 6f 20 47 6f 20 69 64 65 6e 74 69 66 69 65 | to Go identifie| 000005f0 72 73 29 2e 0a 2d 2d 3e 0a 0a 09 0a 09 09 3c 64 |rs)..-->......<d| 00000600 69 76 20 69 64 3d 22 73 68 6f 72 74 2d 6e 61 76 |iv id="short-nav| 00000610 22 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 09 3c 64 |">....<dl>....<d| 00000620 64 3e 3c 63 6f 64 65 3e 69 6d 70 6f 72 74 20 22 |d><code>import "| 00000630 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00000640 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 22 3c 2f 63 |ell/gopacket"</c| 00000650 6f 64 65 3e 3c 2f 64 64 3e 0a 09 09 09 3c 2f 64 |ode></dd>....</d| 00000660 6c 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 09 3c 64 |l>....<dl>....<d| 00000670 64 3e 3c 61 20 68 72 65 66 3d 22 23 70 6b 67 2d |d><a href="#pkg-| 00000680 6f 76 65 72 76 69 65 77 22 20 63 6c 61 73 73 3d |overview" class=| 00000690 22 6f 76 65 72 76 69 65 77 4c 69 6e 6b 22 3e 4f |"overviewLink">O| 000006a0 76 65 72 76 69 65 77 3c 2f 61 3e 3c 2f 64 64 3e |verview</a></dd>| 000006b0 0a 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d |....<dd><a href=| 000006c0 22 23 70 6b 67 2d 69 6e 64 65 78 22 3e 49 6e 64 |"#pkg-index">Ind| 000006d0 65 78 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 0a |ex</a></dd>.....| 000006e0 09 09 09 0a 09 09 09 0a 09 09 09 09 3c 64 64 3e |............<dd>| 000006f0 3c 61 20 68 72 65 66 3d 22 23 70 6b 67 2d 73 75 |<a href="#pkg-su| 00000700 62 64 69 72 65 63 74 6f 72 69 65 73 22 3e 53 75 |bdirectories">Su| 00000710 62 64 69 72 65 63 74 6f 72 69 65 73 3c 2f 61 3e |bdirectories</a>| 00000720 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 09 3c 2f 64 |</dd>........</d| 00000730 6c 3e 0a 09 09 3c 2f 64 69 76 3e 0a 09 09 3c 21 |l>...</div>...<!| 00000740 2d 2d 20 54 68 65 20 70 61 63 6b 61 67 65 27 73 |-- The package's| 00000750 20 4e 61 6d 65 20 69 73 20 70 72 69 6e 74 65 64 | Name is printed| 00000760 20 61 73 20 74 69 74 6c 65 20 62 79 20 74 68 65 | as title by the| 00000770 20 74 6f 70 2d 6c 65 76 65 6c 20 74 65 6d 70 6c | top-level templ| 00000780 61 74 65 20 2d 2d 3e 0a 09 09 3c 64 69 76 20 69 |ate -->...<div i| 00000790 64 3d 22 70 6b 67 2d 6f 76 65 72 76 69 65 77 22 |d="pkg-overview"| 000007a0 20 63 6c 61 73 73 3d 22 74 6f 67 67 6c 65 56 69 | class="toggleVi| 000007b0 73 69 62 6c 65 22 3e 0a 09 09 09 3c 64 69 76 20 |sible">....<div | 000007c0 63 6c 61 73 73 3d 22 63 6f 6c 6c 61 70 73 65 64 |class="collapsed| 000007d0 22 3e 0a 09 09 09 09 3c 68 32 20 63 6c 61 73 73 |">.....<h2 class| 000007e0 3d 22 74 6f 67 67 6c 65 42 75 74 74 6f 6e 22 20 |="toggleButton" | 000007f0 74 69 74 6c 65 3d 22 43 6c 69 63 6b 20 74 6f 20 |title="Click to | 00000800 73 68 6f 77 20 4f 76 65 72 76 69 65 77 20 73 65 |show Overview se| 00000810 63 74 69 6f 6e 22 3e 4f 76 65 72 76 69 65 77 20 |ction">Overview | 00000820 e2 96 b9 3c 2f 68 32 3e 0a 09 09 09 3c 2f 64 69 |...</h2>....</di| 00000830 76 3e 0a 09 09 09 3c 64 69 76 20 63 6c 61 73 73 |v>....<div class| 00000840 3d 22 65 78 70 61 6e 64 65 64 22 3e 0a 09 09 09 |="expanded">....| 00000850 09 3c 68 32 20 63 6c 61 73 73 3d 22 74 6f 67 67 |.<h2 class="togg| 00000860 6c 65 42 75 74 74 6f 6e 22 20 74 69 74 6c 65 3d |leButton" title=| 00000870 22 43 6c 69 63 6b 20 74 6f 20 68 69 64 65 20 4f |"Click to hide O| 00000880 76 65 72 76 69 65 77 20 73 65 63 74 69 6f 6e 22 |verview section"| 00000890 3e 4f 76 65 72 76 69 65 77 20 e2 96 be 3c 2f 68 |>Overview ...</h| 000008a0 32 3e 0a 09 09 09 09 3c 70 3e 0a 50 61 63 6b 61 |2>.....<p>.Packa| 000008b0 67 65 20 67 6f 70 61 63 6b 65 74 20 70 72 6f 76 |ge gopacket prov| 000008c0 69 64 65 73 20 70 61 63 6b 65 74 20 64 65 63 6f |ides packet deco| 000008d0 64 69 6e 67 20 66 6f 72 20 74 68 65 20 47 6f 20 |ding for the Go | 000008e0 6c 61 6e 67 75 61 67 65 2e 0a 3c 2f 70 3e 0a 3c |language..</p>.<| 000008f0 70 3e 0a 67 6f 70 61 63 6b 65 74 20 63 6f 6e 74 |p>.gopacket cont| 00000900 61 69 6e 73 20 33 20 73 75 62 2d 70 61 63 6b 61 |ains 3 sub-packa| 00000910 67 65 73 20 77 69 74 68 20 61 64 64 69 74 69 6f |ges with additio| 00000920 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 |nal functionalit| 00000930 79 20 79 6f 75 20 6d 61 79 20 66 69 6e 64 0a 75 |y you may find.u| 00000940 73 65 66 75 6c 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 |seful:.</p>.<pre| 00000950 3e 2a 20 6c 61 79 65 72 73 3a 20 59 6f 75 26 23 |>* layers: You&#| 00000960 33 39 3b 6c 6c 20 70 72 6f 62 61 62 6c 79 20 75 |39;ll probably u| 00000970 73 65 20 74 68 69 73 20 65 76 65 72 79 20 74 69 |se this every ti| 00000980 6d 65 2e 20 20 54 68 69 73 20 63 6f 6e 74 61 69 |me. This contai| 00000990 6e 73 20 6f 66 20 74 68 65 20 6c 6f 67 69 63 0a |ns of the logic.| 000009a0 20 20 20 20 62 75 69 6c 74 20 69 6e 74 6f 20 67 | built into g| 000009b0 6f 70 61 63 6b 65 74 20 66 6f 72 20 64 65 63 6f |opacket for deco| 000009c0 64 69 6e 67 20 70 61 63 6b 65 74 20 70 72 6f 74 |ding packet prot| 000009d0 6f 63 6f 6c 73 2e 20 20 4e 6f 74 65 20 74 68 61 |ocols. Note tha| 000009e0 74 20 61 6c 6c 20 65 78 61 6d 70 6c 65 0a 20 20 |t all example. | 000009f0 20 20 63 6f 64 65 20 62 65 6c 6f 77 20 61 73 73 | code below ass| 00000a00 75 6d 65 73 20 74 68 61 74 20 79 6f 75 20 68 61 |umes that you ha| 00000a10 76 65 20 69 6d 70 6f 72 74 65 64 20 62 6f 74 68 |ve imported both| 00000a20 20 67 6f 70 61 63 6b 65 74 20 61 6e 64 0a 20 20 | gopacket and. | 00000a30 20 20 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 | gopacket/layer| 00000a40 73 2e 0a 2a 20 70 63 61 70 3a 20 43 20 62 69 6e |s..* pcap: C bin| 00000a50 64 69 6e 67 73 20 74 6f 20 75 73 65 20 6c 69 62 |dings to use lib| 00000a60 70 63 61 70 20 74 6f 20 70 75 6c 6c 20 70 61 63 |pcap to pull pac| 00000a70 6b 65 74 73 20 6f 66 66 20 74 68 65 20 77 69 72 |kets off the wir| 00000a80 65 2e 0a 2a 20 70 66 72 69 6e 67 3a 20 43 20 62 |e..* pfring: C b| 00000a90 69 6e 64 69 6e 67 73 20 74 6f 20 75 73 65 20 50 |indings to use P| 00000aa0 46 5f 52 49 4e 47 20 74 6f 20 70 75 6c 6c 20 70 |F_RING to pull p| 00000ab0 61 63 6b 65 74 73 20 6f 66 66 20 74 68 65 20 77 |ackets off the w| 00000ac0 69 72 65 2e 0a 3c 2f 70 72 65 3e 0a 3c 68 33 20 |ire..</pre>.<h3 | 00000ad0 69 64 3d 22 42 61 73 69 63 5f 55 73 61 67 65 22 |id="Basic_Usage"| 00000ae0 3e 42 61 73 69 63 20 55 73 61 67 65 3c 2f 68 33 |>Basic Usage</h3| 00000af0 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b 65 74 20 74 |>.<p>.gopacket t| 00000b00 61 6b 65 73 20 69 6e 20 70 61 63 6b 65 74 20 64 |akes in packet d| 00000b10 61 74 61 20 61 73 20 61 20 5b 5d 62 79 74 65 20 |ata as a []byte | 00000b20 61 6e 64 20 64 65 63 6f 64 65 73 20 69 74 20 69 |and decodes it i| 00000b30 6e 74 6f 20 61 20 70 61 63 6b 65 74 20 77 69 74 |nto a packet wit| 00000b40 68 0a 61 20 6e 6f 6e 2d 7a 65 72 6f 20 6e 75 6d |h.a non-zero num| 00000b50 62 65 72 20 6f 66 20 26 23 33 34 3b 6c 61 79 65 |ber of "laye| 00000b60 72 73 26 23 33 34 3b 2e 20 20 45 61 63 68 20 6c |rs". Each l| 00000b70 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 73 |ayer corresponds| 00000b80 20 74 6f 20 61 20 70 72 6f 74 6f 63 6f 6c 0a 77 | to a protocol.w| 00000b90 69 74 68 69 6e 20 74 68 65 20 62 79 74 65 73 2e |ithin the bytes.| 00000ba0 20 20 4f 6e 63 65 20 61 20 70 61 63 6b 65 74 20 | Once a packet | 00000bb0 68 61 73 20 62 65 65 6e 20 64 65 63 6f 64 65 64 |has been decoded| 00000bc0 2c 20 74 68 65 20 6c 61 79 65 72 73 20 6f 66 20 |, the layers of | 00000bd0 74 68 65 20 70 61 63 6b 65 74 0a 63 61 6e 20 62 |the packet.can b| 00000be0 65 20 72 65 71 75 65 73 74 65 64 20 66 72 6f 6d |e requested from| 00000bf0 20 74 68 65 20 70 61 63 6b 65 74 2e 0a 3c 2f 70 | the packet..</p| 00000c00 3e 0a 3c 70 72 65 3e 2f 2f 20 44 65 63 6f 64 65 |>.<pre>// Decode| 00000c10 20 61 20 70 61 63 6b 65 74 0a 70 61 63 6b 65 74 | a packet.packet| 00000c20 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 | := gopacket.New| 00000c30 50 61 63 6b 65 74 28 6d 79 50 61 63 6b 65 74 44 |Packet(myPacketD| 00000c40 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 |ata, layers.Laye| 00000c50 72 54 79 70 65 45 74 68 65 72 6e 65 74 2c 20 67 |rTypeEthernet, g| 00000c60 6f 70 61 63 6b 65 74 2e 44 65 66 61 75 6c 74 29 |opacket.Default)| 00000c70 0a 2f 2f 20 47 65 74 20 74 68 65 20 54 43 50 20 |.// Get the TCP | 00000c80 6c 61 79 65 72 20 66 72 6f 6d 20 74 68 69 73 20 |layer from this | 00000c90 70 61 63 6b 65 74 0a 69 66 20 74 63 70 4c 61 79 |packet.if tcpLay| 00000ca0 65 72 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 |er := packet.Lay| 00000cb0 65 72 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 |er(layers.LayerT| 00000cc0 79 70 65 54 43 50 29 3b 20 74 63 70 4c 61 79 65 |ypeTCP); tcpLaye| 00000cd0 72 20 21 3d 20 6e 69 6c 20 7b 0a 20 20 66 6d 74 |r != nil {. fmt| 00000ce0 2e 50 72 69 6e 74 6c 6e 28 26 23 33 34 3b 54 68 |.Println("Th| 00000cf0 69 73 20 69 73 20 61 20 54 43 50 20 70 61 63 6b |is is a TCP pack| 00000d00 65 74 21 26 23 33 34 3b 29 0a 20 20 2f 2f 20 47 |et!"). // G| 00000d10 65 74 20 61 63 74 75 61 6c 20 54 43 50 20 64 61 |et actual TCP da| 00000d20 74 61 20 66 72 6f 6d 20 74 68 69 73 20 6c 61 79 |ta from this lay| 00000d30 65 72 0a 20 20 74 63 70 2c 20 5f 20 3a 3d 20 74 |er. tcp, _ := t| 00000d40 63 70 4c 61 79 65 72 2e 28 2a 6c 61 79 65 72 73 |cpLayer.(*layers| 00000d50 2e 54 43 50 29 0a 20 20 66 6d 74 2e 50 72 69 6e |.TCP). fmt.Prin| 00000d60 74 66 28 26 23 33 34 3b 46 72 6f 6d 20 73 72 63 |tf("From src| 00000d70 20 70 6f 72 74 20 25 64 20 74 6f 20 64 73 74 20 | port %d to dst | 00000d80 70 6f 72 74 20 25 64 5c 6e 26 23 33 34 3b 2c 20 |port %d\n", | 00000d90 74 63 70 2e 53 72 63 50 6f 72 74 2c 20 74 63 70 |tcp.SrcPort, tcp| 00000da0 2e 44 73 74 50 6f 72 74 29 0a 7d 0a 2f 2f 20 49 |.DstPort).}.// I| 00000db0 74 65 72 61 74 65 20 6f 76 65 72 20 61 6c 6c 20 |terate over all | 00000dc0 6c 61 79 65 72 73 2c 20 70 72 69 6e 74 69 6e 67 |layers, printing| 00000dd0 20 6f 75 74 20 65 61 63 68 20 6c 61 79 65 72 20 | out each layer | 00000de0 74 79 70 65 0a 66 6f 72 20 6c 61 79 65 72 20 3a |type.for layer :| 00000df0 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 2e 4c |= range packet.L| 00000e00 61 79 65 72 73 28 29 20 7b 0a 20 20 66 6d 74 2e |ayers() {. fmt.| 00000e10 50 72 69 6e 74 6c 6e 28 26 23 33 34 3b 50 41 43 |Println("PAC| 00000e20 4b 45 54 20 4c 41 59 45 52 3a 26 23 33 34 3b 2c |KET LAYER:",| 00000e30 20 6c 61 79 65 72 2e 4c 61 79 65 72 54 79 70 65 | layer.LayerType| 00000e40 28 29 29 0a 7d 0a 3c 2f 70 72 65 3e 0a 3c 70 3e |()).}.</pre>.<p>| 00000e50 0a 50 61 63 6b 65 74 73 20 63 61 6e 20 62 65 20 |.Packets can be | 00000e60 64 65 63 6f 64 65 64 20 66 72 6f 6d 20 61 20 6e |decoded from a n| 00000e70 75 6d 62 65 72 20 6f 66 20 73 74 61 72 74 69 6e |umber of startin| 00000e80 67 20 70 6f 69 6e 74 73 2e 20 20 4d 61 6e 79 20 |g points. Many | 00000e90 6f 66 20 6f 75 72 20 62 61 73 65 0a 74 79 70 65 |of our base.type| 00000ea0 73 20 69 6d 70 6c 65 6d 65 6e 74 20 44 65 63 6f |s implement Deco| 00000eb0 64 65 72 2c 20 77 68 69 63 68 20 61 6c 6c 6f 77 |der, which allow| 00000ec0 20 75 73 20 74 6f 20 64 65 63 6f 64 65 20 70 61 | us to decode pa| 00000ed0 63 6b 65 74 73 20 66 6f 72 20 77 68 69 63 68 0a |ckets for which.| 00000ee0 77 65 20 64 6f 6e 26 23 33 39 3b 74 20 68 61 76 |we don't hav| 00000ef0 65 20 66 75 6c 6c 20 64 61 74 61 2e 0a 3c 2f 70 |e full data..</p| 00000f00 3e 0a 3c 70 72 65 3e 2f 2f 20 44 65 63 6f 64 65 |>.<pre>// Decode| 00000f10 20 61 6e 20 65 74 68 65 72 6e 65 74 20 70 61 63 | an ethernet pac| 00000f20 6b 65 74 0a 65 74 68 50 20 3a 3d 20 67 6f 70 61 |ket.ethP := gopa| 00000f30 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 70 |cket.NewPacket(p| 00000f40 31 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 |1, layers.LayerT| 00000f50 79 70 65 45 74 68 65 72 6e 65 74 2c 20 67 6f 70 |ypeEthernet, gop| 00000f60 61 63 6b 65 74 2e 44 65 66 61 75 6c 74 29 0a 2f |acket.Default)./| 00000f70 2f 20 44 65 63 6f 64 65 20 61 6e 20 49 50 76 36 |/ Decode an IPv6| 00000f80 20 68 65 61 64 65 72 20 61 6e 64 20 65 76 65 72 | header and ever| 00000f90 79 74 68 69 6e 67 20 69 74 20 63 6f 6e 74 61 69 |ything it contai| 00000fa0 6e 73 0a 69 70 50 20 3a 3d 20 67 6f 70 61 63 6b |ns.ipP := gopack| 00000fb0 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 70 32 2c |et.NewPacket(p2,| 00000fc0 20 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 | layers.LayerTyp| 00000fd0 65 49 50 76 36 2c 20 67 6f 70 61 63 6b 65 74 2e |eIPv6, gopacket.| 00000fe0 44 65 66 61 75 6c 74 29 0a 2f 2f 20 44 65 63 6f |Default).// Deco| 00000ff0 64 65 20 61 20 54 43 50 20 68 65 61 64 65 72 20 |de a TCP header | 00001000 61 6e 64 20 69 74 73 20 70 61 79 6c 6f 61 64 0a |and its payload.| 00001010 74 63 70 50 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |tcpP := gopacket| 00001020 2e 4e 65 77 50 61 63 6b 65 74 28 70 33 2c 20 6c |.NewPacket(p3, l| 00001030 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 65 54 |ayers.LayerTypeT| 00001040 43 50 2c 20 67 6f 70 61 63 6b 65 74 |CP, gopacket| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..4168..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..4128..] Version=6 TrafficClass=0 FlowLabel=100497 Length=4128 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 10 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..4096..] SrcPort=8080(http-alt) DstPort=58799 Seq=174417647 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=4136 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 65 66 ef 08 97 18 4a 80 18 23 02 |.....ef....J..#.| 00000010 10 28 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |.(..............| --- Layer 4 --- Payload 4096 byte(s) 00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.| 00000010 0a 44 61 74 65 3a 20 53 75 6e 2c 20 30 36 20 4a |.Date: Sun, 06 J| 00000020 61 6e 20 32 30 31 33 20 31 37 3a 32 32 3a 33 32 |an 2013 17:22:32| 00000030 20 47 4d 54 0d 0a 54 72 61 6e 73 66 65 72 2d 45 | GMT..Transfer-E| 00000040 6e 63 6f 64 69 6e 67 3a 20 63 68 75 6e 6b 65 64 |ncoding: chunked| 00000050 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 |..Content-Type: | 00000060 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 |text/html; chars| 00000070 65 74 3d 75 74 66 2d 38 0d 0a 0d 0a 32 30 30 0d |et=utf-8....200.| 00000080 0a 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e |.<!DOCTYPE html>| 00000090 0a 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 3c |.<html>.<head>.<| 000000a0 6d 65 74 61 20 68 74 74 70 2d 65 71 75 69 76 3d |meta http-equiv=| 000000b0 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 63 |"Content-Type" c| 000000c0 6f 6e 74 65 6e 74 3d 22 74 65 78 74 2f 68 74 6d |ontent="text/htm| 000000d0 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 |l; charset=utf-8| 000000e0 22 3e 0a 0a 20 20 3c 74 69 74 6c 65 3e 67 6f 70 |">.. <title>gop| 000000f0 61 63 6b 65 74 20 2d 20 54 68 65 20 47 6f 20 50 |acket - The Go P| 00000100 72 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 |rogramming Langu| 00000110 61 67 65 3c 2f 74 69 74 6c 65 3e 0a 0a 3c 6c 69 |age</title>..<li| 00000120 6e 6b 20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 |nk type="text/cs| 00000130 73 22 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 65 |s" rel="styleshe| 00000140 65 74 22 20 68 72 65 66 3d 22 2f 64 6f 63 2f 73 |et" href="/doc/s| 00000150 74 79 6c 65 2e 63 73 73 22 3e 0a 3c 73 63 72 69 |tyle.css">.<scri| 00000160 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a 61 |pt type="text/ja| 00000170 76 61 73 63 72 69 70 74 22 20 73 72 63 3d 22 2f |vascript" src="/| 00000180 64 6f 63 2f 67 6f 64 6f 63 73 2e 6a 73 22 3e 3c |doc/godocs.js"><| 00000190 2f 73 63 72 69 70 74 3e 0a 0a 3c 2f 68 65 61 64 |/script>..</head| 000001a0 3e 0a 3c 62 6f 64 79 3e 0a 0a 3c 64 69 76 20 69 |>.<body>..<div i| 000001b0 64 3d 22 74 6f 70 62 61 72 22 3e 3c 64 69 76 20 |d="topbar"><div | 000001c0 63 6c 61 73 73 3d 22 63 6f 6e 74 61 69 6e 65 72 |class="container| 000001d0 20 77 69 64 65 22 3e 0a 0a 3c 66 6f 72 6d 20 6d | wide">..<form m| 000001e0 65 74 68 6f 64 3d 22 47 45 54 22 20 61 63 74 69 |ethod="GET" acti| 000001f0 6f 6e 3d 22 2f 73 65 61 72 63 68 22 3e 0a 3c 64 |on="/search">.<d| 00000200 69 76 20 69 64 3d 22 6d 65 6e 75 22 3e 0a 3c 61 |iv id="menu">.<a| 00000210 20 68 72 65 66 3d 22 2f 64 6f 63 2f 22 3e 44 6f | href="/doc/">Do| 00000220 63 75 6d 65 6e 74 73 3c 2f 61 3e 0a 3c 61 20 68 |cuments</a>.<a h| 00000230 72 65 66 3d 22 2f 72 65 66 2f 22 3e 52 65 66 65 |ref="/ref/">Refe| 00000240 72 65 6e 63 65 73 3c 2f 61 3e 0a 3c 61 20 68 72 |rences</a>.<a hr| 00000250 65 66 3d 22 2f 70 6b 67 2f 22 3e 50 61 63 6b 61 |ef="/pkg/">Packa| 00000260 67 65 73 3c 2f 61 3e 0a 3c 61 20 68 72 65 66 3d |ges</a>.<a href=| 00000270 22 2f 70 72 6f 6a 65 63 74 2f 22 3e 54 68 65 20 |"/project/">The | 00000280 50 0d 0a 64 65 0d 0a 72 6f 6a 65 63 74 3c 2f 61 |P..de..roject</a| 00000290 3e 0a 3c 61 20 68 72 65 66 3d 22 2f 68 65 6c 70 |>.<a href="/help| 000002a0 2f 22 3e 48 65 6c 70 3c 2f 61 3e 0a 3c 69 6e 70 |/">Help</a>.<inp| 000002b0 75 74 20 74 79 70 65 3d 22 74 65 78 74 22 20 69 |ut type="text" i| 000002c0 64 3d 22 73 65 61 72 63 68 22 20 6e 61 6d 65 3d |d="search" name=| 000002d0 22 71 22 20 63 6c 61 73 73 3d 22 69 6e 61 63 74 |"q" class="inact| 000002e0 69 76 65 22 20 76 61 6c 75 65 3d 22 53 65 61 72 |ive" value="Sear| 000002f0 63 68 22 3e 0a 3c 2f 64 69 76 3e 0a 3c 64 69 76 |ch">.</div>.<div| 00000300 20 69 64 3d 22 68 65 61 64 69 6e 67 22 3e 3c 61 | id="heading"><a| 00000310 20 68 72 65 66 3d 22 2f 22 3e 54 68 65 20 47 6f | href="/">The Go| 00000320 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e | Programming Lan| 00000330 67 75 61 67 65 3c 2f 61 3e 3c 2f 64 69 76 3e 0a |guage</a></div>.| 00000340 3c 2f 66 6f 72 6d 3e 0a 0a 3c 2f 64 69 76 3e 3c |</form>..</div><| 00000350 2f 64 69 76 3e 0a 0a 3c 64 69 76 20 69 64 3d 22 |/div>..<div id="| 00000360 70 61 67 65 22 0d 0a 64 0d 0a 20 63 6c 61 73 73 |page"..d.. class| 00000370 3d 22 77 69 64 65 22 0d 0a 33 0d 0a 3e 0a 0a 0d |="wide"..3..>...| 00000380 0a 35 38 0d 0a 0a 20 20 3c 64 69 76 20 69 64 3d |.58... <div id=| 00000390 22 70 6c 75 73 6f 6e 65 22 3e 3c 67 3a 70 6c 75 |"plusone"><g:plu| 000003a0 73 6f 6e 65 20 73 69 7a 65 3d 22 73 6d 61 6c 6c |sone size="small| 000003b0 22 20 61 6e 6e 6f 74 61 74 69 6f 6e 3d 22 6e 6f |" annotation="no| 000003c0 6e 65 22 3e 3c 2f 67 3a 70 6c 75 73 6f 6e 65 3e |ne"></g:plusone>| 000003d0 3c 2f 64 69 76 3e 0a 20 20 3c 68 31 3e 0d 0a 31 |</div>. <h1>..1| 000003e0 30 0d 0a 50 61 63 6b 61 67 65 20 67 6f 70 61 63 |0..Package gopac| 000003f0 6b 65 74 0d 0a 36 0d 0a 3c 2f 68 31 3e 0a 0d 0a |ket..6..</h1>...| 00000400 31 0d 0a 0a 0d 0a 32 0d 0a 0a 0a 0d 0a 31 37 0d |1.....2......17.| 00000410 0a 0a 3c 64 69 76 20 69 64 3d 22 6e 61 76 22 3e |..<div id="nav">| 00000420 3c 2f 64 69 76 3e 0a 0a 0d 0a 31 0d 0a 0a 0d 0a |</div>....1.....| 00000430 63 65 39 34 0d 0a 3c 21 2d 2d 0a 09 43 6f 70 79 |ce94..<!--..Copy| 00000440 72 69 67 68 74 20 32 30 30 39 20 54 68 65 20 47 |right 2009 The G| 00000450 6f 20 41 75 74 68 6f 72 73 2e 20 41 6c 6c 20 72 |o Authors. All r| 00000460 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a |ights reserved..| 00000470 09 55 73 65 20 6f 66 20 74 68 69 73 20 73 6f 75 |.Use of this sou| 00000480 72 63 65 20 63 6f 64 65 20 69 73 20 67 6f 76 65 |rce code is gove| 00000490 72 6e 65 64 20 62 79 20 61 20 42 53 44 2d 73 74 |rned by a BSD-st| 000004a0 79 6c 65 0a 09 6c 69 63 65 6e 73 65 20 74 68 61 |yle..license tha| 000004b0 74 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 |t can be found i| 000004c0 6e 20 74 68 65 20 4c 49 43 45 4e 53 45 20 66 69 |n the LICENSE fi| 000004d0 6c 65 2e 0a 2d 2d 3e 0a 3c 21 2d 2d 0a 09 4e 6f |le..-->.<!--..No| 000004e0 74 65 3a 20 53 74 61 74 69 63 20 28 69 2e 65 2e |te: Static (i.e.| 000004f0 2c 20 6e 6f 74 20 74 65 6d 70 6c 61 74 65 2d 67 |, not template-g| 00000500 65 6e 65 72 61 74 65 64 29 20 68 72 65 66 20 61 |enerated) href a| 00000510 6e 64 20 69 64 0a 09 61 74 74 72 69 62 75 74 65 |nd id..attribute| 00000520 73 20 73 74 61 72 74 20 77 69 74 68 20 22 70 6b |s start with "pk| 00000530 67 2d 22 20 74 6f 20 6d 61 6b 65 20 69 74 20 69 |g-" to make it i| 00000540 6d 70 6f 73 73 69 62 6c 65 20 66 6f 72 0a 09 74 |mpossible for..t| 00000550 68 65 6d 20 74 6f 20 63 6f 6e 66 6c 69 63 74 20 |hem to conflict | 00000560 77 69 74 68 20 67 65 6e 65 72 61 74 65 64 20 61 |with generated a| 00000570 74 74 72 69 62 75 74 65 73 20 28 73 6f 6d 65 20 |ttributes (some | 00000580 6f 66 20 77 68 69 63 68 0a 09 63 6f 72 72 65 73 |of which..corres| 00000590 70 6f 6e 64 20 74 6f 20 47 6f 20 69 64 65 6e 74 |pond to Go ident| 000005a0 69 66 69 65 72 73 29 2e 0a 2d 2d 3e 0a 0a 09 0a |ifiers)..-->....| 000005b0 09 09 3c 64 69 76 20 69 64 3d 22 73 68 6f 72 74 |..<div id="short| 000005c0 2d 6e 61 76 22 3e 0a 09 09 09 3c 64 6c 3e 0a 09 |-nav">....<dl>..| 000005d0 09 09 3c 64 64 3e 3c 63 6f 64 65 3e 69 6d 70 6f |..<dd><code>impo| 000005e0 72 74 20 22 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |rt "github.com/g| 000005f0 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00000600 22 3c 2f 63 6f 64 65 3e 3c 2f 64 64 3e 0a 09 09 |"</code></dd>...| 00000610 09 3c 2f 64 6c 3e 0a 09 09 09 3c 64 6c 3e 0a 09 |.</dl>....<dl>..| 00000620 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 |..<dd><a href="#| 00000630 70 6b 67 2d 6f 76 65 72 76 69 65 77 22 20 63 6c |pkg-overview" cl| 00000640 61 73 73 3d 22 6f 76 65 72 76 69 65 77 4c 69 6e |ass="overviewLin| 00000650 6b 22 3e 4f 76 65 72 76 69 65 77 3c 2f 61 3e 3c |k">Overview</a><| 00000660 2f 64 64 3e 0a 09 09 09 3c 64 64 3e 3c 61 20 68 |/dd>....<dd><a h| 00000670 72 65 66 3d 22 23 70 6b 67 2d 69 6e 64 65 78 22 |ref="#pkg-index"| 00000680 3e 49 6e 64 65 78 3c 2f 61 3e 3c 2f 64 64 3e 0a |>Index</a></dd>.| 00000690 09 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 000006a0 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 70 6b |<dd><a href="#pk| 000006b0 67 2d 73 75 62 64 69 72 65 63 74 6f 72 69 65 73 |g-subdirectories| 000006c0 22 3e 53 75 62 64 69 72 65 63 74 6f 72 69 65 73 |">Subdirectories| 000006d0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 |</a></dd>.......| 000006e0 09 3c 2f 64 6c 3e 0a 09 09 3c 2f 64 69 76 3e 0a |.</dl>...</div>.| 000006f0 09 09 3c 21 2d 2d 20 54 68 65 20 70 61 63 6b 61 |..<!-- The packa| 00000700 67 65 27 73 20 4e 61 6d 65 20 69 73 20 70 72 69 |ge's Name is pri| 00000710 6e 74 65 64 20 61 73 20 74 69 74 6c 65 20 62 79 |nted as title by| 00000720 20 74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 20 74 | the top-level t| 00000730 65 6d 70 6c 61 74 65 20 2d 2d 3e 0a 09 09 3c 64 |emplate -->...<d| 00000740 69 76 20 69 64 3d 22 70 6b 67 2d 6f 76 65 72 76 |iv id="pkg-overv| 00000750 69 65 77 22 20 63 6c 61 73 73 3d 22 74 6f 67 67 |iew" class="togg| 00000760 6c 65 56 69 73 69 62 6c 65 22 3e 0a 09 09 09 3c |leVisible">....<| 00000770 64 69 76 20 63 6c 61 73 73 3d 22 63 6f 6c 6c 61 |div class="colla| 00000780 70 73 65 64 22 3e 0a 09 09 09 09 3c 68 32 20 63 |psed">.....<h2 c| 00000790 6c 61 73 73 3d 22 74 6f 67 67 6c 65 42 75 74 74 |lass="toggleButt| 000007a0 6f 6e 22 20 74 69 74 6c 65 3d 22 43 6c 69 63 6b |on" title="Click| 000007b0 20 74 6f 20 73 68 6f 77 20 4f 76 65 72 76 69 65 | to show Overvie| 000007c0 77 20 73 65 63 74 69 6f 6e 22 3e 4f 76 65 72 76 |w section">Overv| 000007d0 69 65 77 20 e2 96 b9 3c 2f 68 32 3e 0a 09 09 09 |iew ...</h2>....| 000007e0 3c 2f 64 69 76 3e 0a 09 09 09 3c 64 69 76 20 63 |</div>....<div c| 000007f0 6c 61 73 73 3d 22 65 78 70 61 6e 64 65 64 22 3e |lass="expanded">| 00000800 0a 09 09 09 09 3c 68 32 20 63 6c 61 73 73 3d 22 |.....<h2 class="| 00000810 74 6f 67 67 6c 65 42 75 74 74 6f 6e 22 20 74 69 |toggleButton" ti| 00000820 74 6c 65 3d 22 43 6c 69 63 6b 20 74 6f 20 68 69 |tle="Click to hi| 00000830 64 65 20 4f 76 65 72 76 69 65 77 20 73 65 63 74 |de Overview sect| 00000840 69 6f 6e 22 3e 4f 76 65 72 76 69 65 77 20 e2 96 |ion">Overview ..| 00000850 be 3c 2f 68 32 3e 0a 09 09 09 09 3c 70 3e 0a 50 |.</h2>.....<p>.P| 00000860 61 63 6b 61 67 65 20 67 6f 70 61 63 6b 65 74 20 |ackage gopacket | 00000870 70 72 6f 76 69 64 65 73 20 70 61 63 6b 65 74 20 |provides packet | 00000880 64 65 63 6f 64 69 6e 67 20 66 6f 72 20 74 68 65 |decoding for the| 00000890 20 47 6f 20 6c 61 6e 67 75 61 67 65 2e 0a 3c 2f | Go language..</| 000008a0 70 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b 65 74 20 |p>.<p>.gopacket | 000008b0 63 6f 6e 74 61 69 6e 73 20 33 20 73 75 62 2d 70 |contains 3 sub-p| 000008c0 61 63 6b 61 67 65 73 20 77 69 74 68 20 61 64 64 |ackages with add| 000008d0 69 74 69 6f 6e 61 6c 20 66 75 6e 63 74 69 6f 6e |itional function| 000008e0 61 6c 69 74 79 20 79 6f 75 20 6d 61 79 20 66 69 |ality you may fi| 000008f0 6e 64 0a 75 73 65 66 75 6c 3a 0a 3c 2f 70 3e 0a |nd.useful:.</p>.| 00000900 3c 70 72 65 3e 2a 20 6c 61 79 65 72 73 3a 20 59 |<pre>* layers: Y| 00000910 6f 75 26 23 33 39 3b 6c 6c 20 70 72 6f 62 61 62 |ou'll probab| 00000920 6c 79 20 75 73 65 20 74 68 69 73 20 65 76 65 72 |ly use this ever| 00000930 79 20 74 69 6d 65 2e 20 20 54 68 69 73 20 63 6f |y time. This co| 00000940 6e 74 61 69 6e 73 20 6f 66 20 74 68 65 20 6c 6f |ntains of the lo| 00000950 67 69 63 0a 20 20 20 20 62 75 69 6c 74 20 69 6e |gic. built in| 00000960 74 6f 20 67 6f 70 61 63 6b 65 74 20 66 6f 72 20 |to gopacket for | 00000970 64 65 63 6f 64 69 6e 67 20 70 61 63 6b 65 74 20 |decoding packet | 00000980 70 72 6f 74 6f 63 6f 6c 73 2e 20 20 4e 6f 74 65 |protocols. Note| 00000990 20 74 68 61 74 20 61 6c 6c 20 65 78 61 6d 70 6c | that all exampl| 000009a0 65 0a 20 20 20 20 63 6f 64 65 20 62 65 6c 6f 77 |e. code below| 000009b0 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 79 6f | assumes that yo| 000009c0 75 20 68 61 76 65 20 69 6d 70 6f 72 74 65 64 20 |u have imported | 000009d0 62 6f 74 68 20 67 6f 70 61 63 6b 65 74 20 61 6e |both gopacket an| 000009e0 64 0a 20 20 20 20 67 6f 70 61 63 6b 65 74 2f 6c |d. gopacket/l| 000009f0 61 79 65 72 73 2e 0a 2a 20 70 63 61 70 3a 20 43 |ayers..* pcap: C| 00000a00 20 62 69 6e 64 69 6e 67 73 20 74 6f 20 75 73 65 | bindings to use| 00000a10 20 6c 69 62 70 63 61 70 20 74 6f 20 70 75 6c 6c | libpcap to pull| 00000a20 20 70 61 63 6b 65 74 73 20 6f 66 66 20 74 68 65 | packets off the| 00000a30 20 77 69 72 65 2e 0a 2a 20 70 66 72 69 6e 67 3a | wire..* pfring:| 00000a40 20 43 20 62 69 6e 64 69 6e 67 73 20 74 6f 20 75 | C bindings to u| 00000a50 73 65 20 50 46 5f 52 49 4e 47 20 74 6f 20 70 75 |se PF_RING to pu| 00000a60 6c 6c 20 70 61 63 6b 65 74 73 20 6f 66 66 20 74 |ll packets off t| 00000a70 68 65 20 77 69 72 65 2e 0a 3c 2f 70 72 65 3e 0a |he wire..</pre>.| 00000a80 3c 68 33 20 69 64 3d 22 42 61 73 69 63 5f 55 73 |<h3 id="Basic_Us| 00000a90 61 67 65 22 3e 42 61 73 69 63 20 55 73 61 67 65 |age">Basic Usage| 00000aa0 3c 2f 68 33 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b |</h3>.<p>.gopack| 00000ab0 65 74 20 74 61 6b 65 73 20 69 6e 20 70 61 63 6b |et takes in pack| 00000ac0 65 74 20 64 61 74 61 20 61 73 20 61 20 5b 5d 62 |et data as a []b| 00000ad0 79 74 65 20 61 6e 64 20 64 65 63 6f 64 65 73 20 |yte and decodes | 00000ae0 69 74 20 69 6e 74 6f 20 61 20 70 61 63 6b 65 74 |it into a packet| 00000af0 20 77 69 74 68 0a 61 20 6e 6f 6e 2d 7a 65 72 6f | with.a non-zero| 00000b00 20 6e 75 6d 62 65 72 20 6f 66 20 26 23 33 34 3b | number of "| 00000b10 6c 61 79 65 72 73 26 23 33 34 3b 2e 20 20 45 61 |layers". Ea| 00000b20 63 68 20 6c 61 79 65 72 20 63 6f 72 72 65 73 70 |ch layer corresp| 00000b30 6f 6e 64 73 20 74 6f 20 61 20 70 72 6f 74 6f 63 |onds to a protoc| 00000b40 6f 6c 0a 77 69 74 68 69 6e 20 74 68 65 20 62 79 |ol.within the by| 00000b50 74 65 73 2e 20 20 4f 6e 63 65 20 61 20 70 61 63 |tes. Once a pac| 00000b60 6b 65 74 20 68 61 73 20 62 65 65 6e 20 64 65 63 |ket has been dec| 00000b70 6f 64 65 64 2c 20 74 68 65 20 6c 61 79 65 72 73 |oded, the layers| 00000b80 20 6f 66 20 74 68 65 20 70 61 63 6b 65 74 0a 63 | of the packet.c| 00000b90 61 6e 20 62 65 20 72 65 71 75 65 73 74 65 64 20 |an be requested | 00000ba0 66 72 6f 6d 20 74 68 65 20 70 61 63 6b 65 74 2e |from the packet.| 00000bb0 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 44 65 |.</p>.<pre>// De| 00000bc0 63 6f 64 65 20 61 20 70 61 63 6b 65 74 0a 70 61 |code a packet.pa| 00000bd0 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket| 00000be0 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac| 00000bf0 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.| 00000c00 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne| 00000c10 74 2c 20 67 6f 70 61 63 6b 65 74 2e 44 65 66 61 |t, gopacket.Defa| 00000c20 75 6c 74 29 0a 2f 2f 20 47 65 74 20 74 68 65 20 |ult).// Get the | 00000c30 54 43 50 20 6c 61 79 65 72 20 66 72 6f 6d 20 74 |TCP layer from t| 00000c40 68 69 73 20 70 61 63 6b 65 74 0a 69 66 20 74 63 |his packet.if tc| 00000c50 70 4c 61 79 65 72 20 3a 3d 20 70 61 63 6b 65 74 |pLayer := packet| 00000c60 2e 4c 61 79 65 72 28 6c 61 79 65 72 73 2e 4c 61 |.Layer(layers.La| 00000c70 79 65 72 54 79 70 65 54 43 50 29 3b 20 74 63 70 |yerTypeTCP); tcp| 00000c80 4c 61 79 65 72 20 21 3d 20 6e 69 6c 20 7b 0a 20 |Layer != nil {. | 00000c90 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 23 33 | fmt.Println(| 00000ca0 34 3b 54 68 69 73 20 69 73 20 61 20 54 43 50 20 |4;This is a TCP | 00000cb0 70 61 63 6b 65 74 21 26 23 33 34 3b 29 0a 20 20 |packet!"). | 00000cc0 2f 2f 20 47 65 74 20 61 63 74 75 61 6c 20 54 43 |// Get actual TC| 00000cd0 50 20 64 61 74 61 20 66 72 6f 6d 20 74 68 69 73 |P data from this| 00000ce0 20 6c 61 79 65 72 0a 20 20 74 63 70 2c 20 5f 20 | layer. tcp, _ | 00000cf0 3a 3d 20 74 63 70 4c 61 79 65 72 2e 28 2a 6c 61 |:= tcpLayer.(*la| 00000d00 79 65 72 73 2e 54 43 50 29 0a 20 20 66 6d 74 2e |yers.TCP). fmt.| 00000d10 50 72 69 6e 74 66 28 26 23 33 34 3b 46 72 6f 6d |Printf("From| 00000d20 20 73 72 63 20 70 6f 72 74 20 25 64 20 74 6f 20 | src port %d to | 00000d30 64 73 74 20 70 6f 72 74 20 25 64 5c 6e 26 23 33 |dst port %d\n| 00000d40 34 3b 2c 20 74 63 70 2e 53 72 63 50 6f 72 74 2c |4;, tcp.SrcPort,| 00000d50 20 74 63 70 2e 44 73 74 50 6f 72 74 29 0a 7d 0a | tcp.DstPort).}.| 00000d60 2f 2f 20 49 74 65 72 61 74 65 20 6f 76 65 72 20 |// Iterate over | 00000d70 61 6c 6c 20 6c 61 79 65 72 73 2c 20 70 72 69 6e |all layers, prin| 00000d80 74 69 6e 67 20 6f 75 74 20 65 61 63 68 20 6c 61 |ting out each la| 00000d90 79 65 72 20 74 79 70 65 0a 66 6f 72 20 6c 61 79 |yer type.for lay| 00000da0 65 72 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b |er := range pack| 00000db0 65 74 2e 4c 61 79 65 72 73 28 29 20 7b 0a 20 20 |et.Layers() {. | 00000dc0 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 23 33 34 |fmt.Println("| 00000dd0 3b 50 41 43 4b 45 54 20 4c 41 59 45 52 3a 26 23 |;PACKET LAYER:&#| 00000de0 33 34 3b 2c 20 6c 61 79 65 72 2e 4c 61 79 65 72 |34;, layer.Layer| 00000df0 54 79 70 65 28 29 29 0a 7d 0a 3c 2f 70 72 65 3e |Type()).}.</pre>| 00000e00 0a 3c 70 3e 0a 50 61 63 6b 65 74 73 20 63 61 6e |.<p>.Packets can| 00000e10 20 62 65 20 64 65 63 6f 64 65 64 20 66 72 6f 6d | be decoded from| 00000e20 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 73 74 61 | a number of sta| 00000e30 72 74 69 6e 67 20 70 6f 69 6e 74 73 2e 20 20 4d |rting points. M| 00000e40 61 6e 79 20 6f 66 20 6f 75 72 20 62 61 73 65 0a |any of our base.| 00000e50 74 79 70 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 |types implement | 00000e60 44 65 63 6f 64 65 72 2c 20 77 68 69 63 68 20 61 |Decoder, which a| 00000e70 6c 6c 6f 77 20 75 73 20 74 6f 20 64 65 63 6f 64 |llow us to decod| 00000e80 65 20 70 61 63 6b 65 74 73 20 66 6f 72 20 77 68 |e packets for wh| 00000e90 69 63 68 0a 77 65 20 64 6f 6e 26 23 33 39 3b 74 |ich.we don't| 00000ea0 20 68 61 76 65 20 66 75 6c 6c 20 64 61 74 61 2e | have full data.| 00000eb0 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 44 65 |.</p>.<pre>// De| 00000ec0 63 6f 64 65 20 61 6e 20 65 74 68 65 72 6e 65 74 |code an ethernet| 00000ed0 20 70 61 63 6b 65 74 0a 65 74 68 50 20 3a 3d 20 | packet.ethP := | 00000ee0 67 6f 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b |gopacket.NewPack| 00000ef0 65 74 28 70 31 2c 20 6c 61 79 65 72 73 2e 4c 61 |et(p1, layers.La| 00000f00 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 74 2c |yerTypeEthernet,| 00000f10 20 67 6f 70 61 63 6b 65 74 2e 44 65 66 61 75 6c | gopacket.Defaul| 00000f20 74 29 0a 2f 2f 20 44 65 63 6f 64 65 20 61 6e 20 |t).// Decode an | 00000f30 49 50 76 36 20 68 65 61 64 65 72 20 61 6e 64 20 |IPv6 header and | 00000f40 65 76 65 72 79 74 68 69 6e 67 20 69 74 20 63 6f |everything it co| 00000f50 6e 74 61 69 6e 73 0a 69 70 50 20 3a 3d 20 67 6f |ntains.ipP := go| 00000f60 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 |packet.NewPacket| 00000f70 28 70 32 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 |(p2, layers.Laye| 00000f80 72 54 79 70 65 49 50 76 36 2c 20 67 6f 70 61 63 |rTypeIPv6, gopac| 00000f90 6b 65 74 2e 44 65 66 61 75 6c 74 29 0a 2f 2f 20 |ket.Default).// | 00000fa0 44 65 63 6f 64 65 20 61 20 54 43 50 20 68 65 61 |Decode a TCP hea| 00000fb0 64 65 72 20 61 6e 64 20 69 74 73 20 70 61 79 6c |der and its payl| 00000fc0 6f 61 64 0a 74 63 70 50 20 3a 3d 20 67 6f 70 61 |oad.tcpP := gopa| 00000fd0 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 70 |cket.NewPacket(p| 00000fe0 33 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 |3, layers.LayerT| 00000ff0 79 70 65 54 43 50 2c 20 67 6f 70 61 63 6b 65 74 |ypeTCP, gopacket| pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?..@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 65 76 ef 08 97 18 4a 80 10 23 02 3f e0 00 00 |.ev....J..#.?...| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 2e 44 65 66 |.............Def| 00000050 61 75 6c 74 29 0a 3c 2f 70 72 65 3e 0a 3c 68 33 |ault).</pre>.<h3| 00000060 20 69 64 3d 22 52 65 61 64 69 6e 67 5f 50 61 63 | id="Reading_Pac| 00000070 6b 65 74 73 5f 46 72 6f 6d 5f 41 5f 53 6f 75 72 |kets_From_A_Sour| 00000080 63 65 22 3e 52 65 61 64 69 6e 67 20 50 61 63 6b |ce">Reading Pack| 00000090 65 74 73 20 46 72 6f 6d 20 41 20 53 6f 75 72 63 |ets From A Sourc| 000000a0 65 3c 2f 68 33 3e 0a 3c 70 3e 0a 4d 6f 73 74 20 |e</h3>.<p>.Most | 000000b0 6f 66 20 74 68 65 20 74 69 6d 65 2c 20 79 6f 75 |of the time, you| 000000c0 20 77 6f 6e 26 23 33 39 3b 74 20 6a 75 73 74 20 | won't just | 000000d0 68 61 76 65 20 61 20 5b 5d 62 79 74 65 20 6f 66 |have a []byte of| 000000e0 20 70 61 63 6b 65 74 20 64 61 74 61 20 6c 79 69 | packet data lyi| 000000f0 6e 67 20 61 72 6f 75 6e 64 2e 0a 49 6e 73 74 65 |ng around..Inste| 00000100 61 64 2c 20 79 6f 75 26 23 33 39 3b 6c 6c 20 77 |ad, you'll w| 00000110 61 6e 74 20 74 6f 20 72 65 61 64 20 70 61 63 6b |ant to read pack| 00000120 65 74 73 20 69 6e 20 66 72 6f 6d 20 73 6f 6d 65 |ets in from some| 00000130 77 68 65 72 65 20 28 66 69 6c 65 2c 20 69 6e 74 |where (file, int| 00000140 65 72 66 61 63 65 2c 20 65 74 63 29 0a 61 6e 64 |erface, etc).and| 00000150 20 70 72 6f 63 65 73 73 20 74 68 65 6d 2e 20 20 | process them. | 00000160 54 6f 20 64 6f 20 74 68 61 74 2c 20 79 6f 75 26 |To do that, you&| 00000170 23 33 39 3b 6c 6c 20 77 61 6e 74 20 74 6f 20 62 |#39;ll want to b| 00000180 75 69 6c 64 20 61 20 50 61 63 6b 65 74 53 6f 75 |uild a PacketSou| 00000190 72 63 65 2e 0a 3c 2f 70 3e 0a 3c 70 3e 0a 46 69 |rce..</p>.<p>.Fi| 000001a0 72 73 74 2c 20 79 6f 75 26 23 33 39 3b 6c 6c 20 |rst, you'll | 000001b0 6e 65 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63 |need to construc| 000001c0 74 20 61 6e 20 6f 62 6a 65 63 74 20 74 68 61 74 |t an object that| 000001d0 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 | implements the | 000001e0 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 |PacketDataSource| 000001f0 0a 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65 |.interface. The| 00000200 72 65 20 61 72 65 20 69 6d 70 6c 65 6d 65 6e 74 |re are implement| 00000210 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 69 |ations of this i| 00000220 6e 74 65 72 66 61 63 65 20 62 75 6e 64 6c 65 64 |nterface bundled| 00000230 20 77 69 74 68 20 67 6f 70 61 63 6b 65 74 0a 69 | with gopacket.i| 00000240 6e 20 74 68 65 20 67 6f 70 61 63 6b 65 74 2f 70 |n the gopacket/p| 00000250 63 61 70 20 61 6e 64 20 67 6f 70 61 63 6b 65 74 |cap and gopacket| 00000260 2f 70 66 72 69 6e 67 20 73 75 62 70 61 63 6b 61 |/pfring subpacka| 00000270 67 65 73 2e 2e 2e 20 73 65 65 20 74 68 65 69 72 |ges... see their| 00000280 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 66 | documentation.f| 00000290 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 |or more informat| 000002a0 69 6f 6e 20 6f 6e 20 74 68 65 69 72 20 75 73 61 |ion on their usa| 000002b0 67 65 2e 20 20 4f 6e 63 65 20 79 6f 75 20 68 61 |ge. Once you ha| 000002c0 76 65 20 61 20 50 61 63 6b 65 74 44 61 74 61 53 |ve a PacketDataS| 000002d0 6f 75 72 63 65 2c 20 79 6f 75 20 63 61 6e 0a 70 |ource, you can.p| 000002e0 61 73 73 20 69 74 20 69 6e 74 6f 20 4e 65 77 50 |ass it into NewP| 000002f0 61 63 6b 65 74 53 6f 75 72 63 65 2c 20 61 6c 6f |acketSource, alo| 00000300 6e 67 20 77 69 74 68 20 61 20 44 65 63 6f 64 65 |ng with a Decode| 00000310 72 20 6f 66 20 79 6f 75 72 20 63 68 6f 69 63 65 |r of your choice| 00000320 2c 20 74 6f 20 63 72 65 61 74 65 0a 61 20 50 61 |, to create.a Pa| 00000330 63 6b 65 74 53 6f 75 72 63 65 2e 0a 3c 2f 70 3e |cketSource..</p>| 00000340 0a 3c 70 3e 0a 4f 6e 63 65 20 79 6f 75 20 68 61 |.<p>.Once you ha| 00000350 76 65 20 61 20 50 61 63 6b 65 74 53 6f 75 72 63 |ve a PacketSourc| 00000360 65 2c 20 79 6f 75 20 63 61 6e 20 72 65 61 64 20 |e, you can read | 00000370 70 61 63 6b 65 74 73 20 66 72 6f 6d 20 69 74 20 |packets from it | 00000380 69 6e 20 6d 75 6c 74 69 70 6c 65 20 77 61 79 73 |in multiple ways| 00000390 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 73 20 66 |..See the docs f| 000003a0 6f 72 20 50 61 63 6b 65 74 53 6f 75 72 63 65 20 |or PacketSource | 000003b0 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 |for more details| 000003c0 2e 20 20 54 68 65 20 65 61 73 69 65 73 74 20 6d |. The easiest m| 000003d0 65 74 68 6f 64 20 69 73 20 74 68 65 0a 50 61 63 |ethod is the.Pac| 000003e0 6b 65 74 73 20 66 75 6e 63 74 69 6f 6e 2c 20 77 |kets function, w| 000003f0 68 69 63 68 20 72 65 74 75 72 6e 73 20 61 20 63 |hich returns a c| 00000400 68 61 6e 6e 65 6c 2c 20 74 68 65 6e 20 61 73 79 |hannel, then asy| 00000410 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 77 72 69 74 |nchronously writ| 00000420 65 73 20 6e 65 77 0a 70 61 63 6b 65 74 73 20 69 |es new.packets i| 00000430 6e 74 6f 20 74 68 61 74 20 63 68 61 6e 6e 65 6c |nto that channel| 00000440 2c 20 63 6c 6f 73 69 6e 67 20 74 68 65 20 63 68 |, closing the ch| 00000450 61 6e 6e 65 6c 20 69 66 20 74 68 65 20 70 61 63 |annel if the pac| 00000460 6b 65 74 53 6f 75 72 63 65 20 68 69 74 73 20 61 |ketSource hits a| 00000470 6e 0a 65 6e 64 2d 6f 66 2d 66 69 6c 65 2e 0a 3c |n.end-of-file..<| 00000480 2f 70 3e 0a 3c 70 72 65 3e 70 61 63 6b 65 74 53 |/p>.<pre>packetS| 00000490 6f 75 72 63 65 20 3a 3d 20 2e 2e 2e 20 20 2f 2f |ource := ... //| 000004a0 20 63 6f 6e 73 74 72 75 63 74 20 75 73 69 6e 67 | construct using| 000004b0 20 70 63 61 70 20 6f 72 20 70 66 72 69 6e 67 0a | pcap or pfring.| 000004c0 66 6f 72 20 70 61 63 6b 65 74 20 3a 3d 20 72 61 |for packet := ra| 000004d0 6e 67 65 20 70 61 63 6b 65 74 53 6f 75 72 63 65 |nge packetSource| 000004e0 2e 50 61 63 6b 65 74 73 28 29 20 7b 0a 20 20 68 |.Packets() {. h| 000004f0 61 6e 64 6c 65 50 61 63 6b 65 74 28 70 61 63 6b |andlePacket(pack| 00000500 65 74 29 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 74 |et) // do somet| 00000510 68 69 6e 67 20 77 69 74 68 20 65 61 63 68 20 70 |hing with each p| 00000520 61 63 6b 65 74 0a 7d 0a 3c 2f 70 72 65 3e 0a 3c |acket.}.</pre>.<| 00000530 70 3e 0a 59 6f 75 20 63 61 6e 20 63 68 61 6e 67 |p>.You can chang| 00000540 65 20 74 68 65 20 64 65 63 6f 64 69 6e 67 20 6f |e the decoding o| 00000550 70 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 61 |ptions of the pa| 00000560 63 6b 65 74 53 6f 75 72 63 65 20 62 79 20 73 65 |cketSource by se| 00000570 74 74 69 6e 67 20 66 69 65 6c 64 73 20 69 6e 0a |tting fields in.| 00000580 70 61 63 6b 65 74 53 6f 75 72 63 65 2e 44 65 63 |packetSource.Dec| 00000590 6f 64 65 4f 70 74 69 6f 6e 73 2e 2e 2e 20 73 65 |odeOptions... se| 000005a0 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 |e the following | 000005b0 73 65 63 74 69 6f 6e 73 20 66 6f 72 20 6d 6f 72 |sections for mor| 000005c0 65 20 64 65 74 61 69 6c 73 2e 0a 3c 2f 70 3e 0a |e details..</p>.| 000005d0 3c 68 33 20 69 64 3d 22 4c 61 7a 79 5f 44 65 63 |<h3 id="Lazy_Dec| 000005e0 6f 64 69 6e 67 22 3e 4c 61 7a 79 20 44 65 63 6f |oding">Lazy Deco| 000005f0 64 69 6e 67 3c 2f 68 33 3e 0a 3c 70 3e 0a 67 6f |ding</h3>.<p>.go| 00000600 70 61 63 6b 65 74 20 6f 70 74 69 6f 6e 61 6c 6c |packet optionall| 00000610 79 20 64 65 63 6f 64 65 73 20 70 61 63 6b 65 74 |y decodes packet| 00000620 20 64 61 74 61 20 6c 61 7a 69 6c 79 2c 20 6d 65 | data lazily, me| 00000630 61 6e 69 6e 67 20 69 74 0a 6f 6e 6c 79 20 64 65 |aning it.only de| 00000640 63 6f 64 65 73 20 61 20 70 61 63 6b 65 74 20 6c |codes a packet l| 00000650 61 79 65 72 20 77 68 65 6e 20 69 74 20 6e 65 65 |ayer when it nee| 00000660 64 73 20 74 6f 20 74 6f 20 68 61 6e 64 6c 65 20 |ds to to handle | 00000670 61 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e |a function call.| 00000680 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 43 72 |.</p>.<pre>// Cr| 00000690 65 61 74 65 20 61 20 70 61 63 6b 65 74 2c 20 62 |eate a packet, b| 000006a0 75 74 20 64 6f 6e 26 23 33 39 3b 74 20 61 63 74 |ut don't act| 000006b0 75 61 6c 6c 79 20 64 65 63 6f 64 65 20 61 6e 79 |ually decode any| 000006c0 74 68 69 6e 67 20 79 65 74 0a 70 61 63 6b 65 74 |thing yet.packet| 000006d0 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 | := gopacket.New| 000006e0 50 61 63 6b 65 74 28 6d 79 50 61 63 6b 65 74 44 |Packet(myPacketD| 000006f0 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 |ata, layers.Laye| 00000700 72 54 79 70 65 45 74 68 65 72 6e 65 74 2c 20 67 |rTypeEthernet, g| 00000710 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 29 0a 2f 2f |opacket.Lazy).//| 00000720 20 4e 6f 77 2c 20 64 65 63 6f 64 65 20 74 68 65 | Now, decode the| 00000730 20 70 61 63 6b 65 74 20 75 70 20 74 6f 20 74 68 | packet up to th| 00000740 65 20 66 69 72 73 74 20 49 50 76 34 20 6c 61 79 |e first IPv4 lay| 00000750 65 72 20 66 6f 75 6e 64 20 62 75 74 20 6e 6f 20 |er found but no | 00000760 66 75 72 74 68 65 72 2e 0a 2f 2f 20 49 66 20 6e |further..// If n| 00000770 6f 20 49 50 76 34 20 6c 61 79 65 72 20 77 61 73 |o IPv4 layer was| 00000780 20 66 6f 75 6e 64 2c 20 74 68 65 20 77 68 6f 6c | found, the whol| 00000790 65 20 70 61 63 6b 65 74 20 77 69 6c 6c 20 62 65 |e packet will be| 000007a0 20 64 65 63 6f 64 65 64 20 6c 6f 6f 6b 69 6e 67 | decoded looking| 000007b0 20 66 6f 72 0a 2f 2f 20 69 74 2e 0a 69 70 34 20 | for.// it..ip4 | 000007c0 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 65 72 28 |:= packet.Layer(| 000007d0 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 65 |layers.LayerType| 000007e0 49 50 76 34 29 0a 2f 2f 20 44 65 63 6f 64 65 20 |IPv4).// Decode | 000007f0 61 6c 6c 20 6c 61 79 65 72 73 20 61 6e 64 20 72 |all layers and r| 00000800 65 74 75 72 6e 20 74 68 65 6d 2e 20 20 54 68 65 |eturn them. The| 00000810 20 6c 61 79 65 72 73 20 75 70 20 74 6f 20 74 68 | layers up to th| 00000820 65 20 66 69 72 73 74 20 49 50 76 34 20 6c 61 79 |e first IPv4 lay| 00000830 65 72 0a 2f 2f 20 61 72 65 20 61 6c 72 65 61 64 |er.// are alread| 00000840 79 20 64 65 63 6f 64 65 64 2c 20 61 6e 64 20 77 |y decoded, and w| 00000850 69 6c 6c 20 6e 6f 74 20 72 65 71 75 69 72 65 20 |ill not require | 00000860 64 65 63 6f 64 69 6e 67 20 61 20 73 65 63 6f 6e |decoding a secon| 00000870 64 20 74 69 6d 65 2e 0a 6c 61 79 65 72 73 20 3a |d time..layers :| 00000880 3d 20 70 61 63 6b 65 74 2e 4c 61 79 65 72 73 28 |= packet.Layers(| 00000890 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 4c 61 7a |).</pre>.<p>.Laz| 000008a0 69 6c 79 2d 64 65 63 6f 64 65 64 20 70 61 63 6b |ily-decoded pack| 000008b0 65 74 73 20 61 72 65 20 6e 6f 74 20 63 6f 6e 63 |ets are not conc| 000008c0 75 72 72 65 6e 63 79 2d 73 61 66 65 2e 20 20 53 |urrency-safe. S| 000008d0 69 6e 63 65 20 6c 61 79 65 72 73 20 68 61 76 65 |ince layers have| 000008e0 20 6e 6f 74 20 61 6c 6c 20 62 65 65 6e 0a 64 65 | not all been.de| 000008f0 63 6f 64 65 64 2c 20 65 61 63 68 20 63 61 6c 6c |coded, each call| 00000900 20 74 6f 20 4c 61 79 65 72 28 29 20 6f 72 20 4c | to Layer() or L| 00000910 61 79 65 72 73 28 29 20 68 61 73 20 74 68 65 20 |ayers() has the | 00000920 70 6f 74 65 6e 74 69 61 6c 20 74 6f 20 6d 75 74 |potential to mut| 00000930 61 74 65 20 74 68 65 20 70 61 63 6b 65 74 0a 69 |ate the packet.i| 00000940 6e 20 6f 72 64 65 72 20 74 6f 20 64 65 63 6f 64 |n order to decod| 00000950 65 20 74 68 65 20 6e 65 78 74 20 6c 61 79 65 72 |e the next layer| 00000960 2e 20 20 49 66 20 61 20 70 61 63 6b 65 74 20 69 |. If a packet i| 00000970 73 20 75 73 65 64 0a 69 6e 20 6d 75 6c 74 69 70 |s used.in multip| 00000980 6c 65 20 67 6f 72 6f 75 74 69 6e 65 73 20 63 6f |le goroutines co| 00000990 6e 63 75 72 72 65 6e 74 6c 79 2c 20 64 6f 6e 26 |ncurrently, don&| 000009a0 23 33 39 3b 74 20 75 73 65 20 67 6f 70 61 63 6b |#39;t use gopack| 000009b0 65 74 2e 4c 61 7a 79 2e 20 20 54 68 65 6e 20 67 |et.Lazy. Then g| 000009c0 6f 70 61 63 6b 65 74 0a 77 69 6c 6c 20 64 65 63 |opacket.will dec| 000009d0 6f 64 65 20 74 68 65 20 70 61 63 6b 65 74 20 66 |ode the packet f| 000009e0 75 6c 6c 79 2c 20 61 6e 64 20 61 6c 6c 20 66 75 |ully, and all fu| 000009f0 74 75 72 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 |ture function ca| 00000a00 6c 6c 73 20 77 6f 6e 26 23 33 39 3b 74 20 6d 75 |lls won't mu| 00000a10 74 61 74 65 20 74 68 65 0a 6f 62 6a 65 63 74 2e |tate the.object.| 00000a20 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 4e 6f |.</p>.<h3 id="No| 00000a30 43 6f 70 79 5f 44 65 63 6f 64 69 6e 67 22 3e 4e |Copy_Decoding">N| 00000a40 6f 43 6f 70 79 20 44 65 63 6f 64 69 6e 67 3c 2f |oCopy Decoding</| 00000a50 68 33 3e 0a 3c 70 3e 0a 42 79 20 64 65 66 61 75 |h3>.<p>.By defau| 00000a60 6c 74 2c 20 67 6f 70 61 63 6b 65 74 20 77 69 6c |lt, gopacket wil| 00000a70 6c 20 63 6f 70 79 20 74 68 65 20 73 6c 69 63 65 |l copy the slice| 00000a80 20 70 61 73 73 65 64 20 74 6f 20 4e 65 77 50 61 | passed to NewPa| 00000a90 63 6b 65 74 20 61 6e 64 20 73 74 6f 72 65 20 74 |cket and store t| 00000aa0 68 65 0a 63 6f 70 79 20 77 69 74 68 69 6e 20 74 |he.copy within t| 00000ab0 68 65 20 70 61 63 6b 65 74 2c 20 73 6f 20 66 75 |he packet, so fu| 00000ac0 74 75 72 65 20 6d 75 74 61 74 69 6f 6e 73 20 74 |ture mutations t| 00000ad0 6f 20 74 68 65 20 62 79 74 65 73 20 75 6e 64 65 |o the bytes unde| 00000ae0 72 6c 79 69 6e 67 20 74 68 65 20 73 6c 69 63 65 |rlying the slice| 00000af0 0a 64 6f 6e 26 23 33 39 3b 74 20 61 66 66 65 63 |.don't affec| 00000b00 74 20 74 68 65 20 70 61 63 6b 65 74 20 61 6e 64 |t the packet and| 00000b10 20 69 74 73 20 6c 61 79 65 72 73 2e 20 20 49 66 | its layers. If| 00000b20 20 79 6f 75 20 63 61 6e 20 67 75 61 72 61 6e 74 | you can guarant| 00000b30 65 65 20 74 68 61 74 20 74 68 65 0a 75 6e 64 65 |ee that the.unde| 00000b40 72 6c 79 69 6e 67 20 73 6c 69 63 65 20 62 79 74 |rlying slice byt| 00000b50 65 73 20 77 6f 6e 26 23 33 39 3b 74 20 62 65 20 |es won't be | 00000b60 63 68 61 6e 67 65 64 2c 20 79 6f 75 20 63 61 6e |changed, you can| 00000b70 20 75 73 65 20 4e 6f 43 6f 70 79 20 74 6f 20 74 | use NoCopy to t| 00000b80 65 6c 6c 0a 67 6f 70 61 63 6b 65 74 2e 4e 65 77 |ell.gopacket.New| 00000b90 50 61 63 6b 65 74 2c 20 61 6e 64 20 69 74 26 23 |Packet, and it&#| 00000ba0 33 39 3b 6c 6c 20 75 73 65 20 74 68 65 20 70 61 |39;ll use the pa| 00000bb0 73 73 65 64 2d 69 6e 20 73 6c 69 63 65 20 69 74 |ssed-in slice it| 00000bc0 73 65 6c 66 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e |self..</p>.<pre>| 00000bd0 2f 2f 20 54 68 69 73 20 63 68 61 6e 6e 65 6c 20 |// This channel | 00000be0 72 65 74 75 72 6e 73 20 6e 65 77 20 62 79 74 65 |returns new byte| 00000bf0 20 73 6c 69 63 65 73 2c 20 65 61 63 68 20 6f 66 | slices, each of| 00000c00 20 77 68 69 63 68 20 70 6f 69 6e 74 73 20 74 6f | which points to| 00000c10 20 61 20 6e 65 77 0a 2f 2f 20 6d 65 6d 6f 72 79 | a new.// memory| 00000c20 20 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74 26 23 | location that&#| 00000c30 33 39 3b 73 20 67 75 61 72 61 6e 74 65 65 64 20 |39;s guaranteed | 00000c40 69 6d 6d 75 74 61 62 6c 65 20 66 6f 72 20 74 68 |immutable for th| 00000c50 65 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 |e duration of th| 00000c60 65 0a 2f 2f 20 70 61 63 6b 65 74 2e 0a 66 6f 72 |e.// packet..for| 00000c70 20 64 61 74 61 20 3a 3d 20 72 61 6e 67 65 20 6d | data := range m| 00000c80 79 42 79 74 65 53 6c 69 63 65 43 68 61 6e 6e 65 |yByteSliceChanne| 00000c90 6c 20 7b 0a 20 20 70 20 3a 3d 20 67 6f 70 61 63 |l {. p := gopac| 00000ca0 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 64 61 |ket.NewPacket(da| 00000cb0 74 61 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 72 |ta, layers.Layer| 00000cc0 54 79 70 65 45 74 68 65 72 6e 65 74 2c 20 67 6f |TypeEthernet, go| 00000cd0 70 61 63 6b 65 74 2e 4e 6f 43 6f 70 79 29 0a 20 |packet.NoCopy). | 00000ce0 20 64 6f 53 6f 6d 65 74 68 69 6e 67 57 69 74 68 | doSomethingWith| 00000cf0 50 61 63 6b 65 74 28 70 29 0a 7d 0a 3c 2f 70 72 |Packet(p).}.</pr| 00000d00 65 3e 0a 3c 70 3e 0a 54 68 65 20 66 61 73 74 65 |e>.<p>.The faste| 00000d10 73 74 20 6d 65 74 68 6f 64 20 6f 66 20 64 65 63 |st method of dec| 00000d20 6f 64 69 6e 67 20 69 73 20 74 6f 20 75 73 65 20 |oding is to use | 00000d30 62 6f 74 68 20 4c 61 7a 79 20 61 6e 64 20 4e 6f |both Lazy and No| 00000d40 43 6f 70 79 2c 20 62 75 74 20 6e 6f 74 65 20 66 |Copy, but note f| 00000d50 72 6f 6d 0a 74 68 65 20 6d 61 6e 79 20 63 61 76 |rom.the many cav| 00000d60 65 61 74 73 20 61 62 6f 76 65 20 74 68 61 74 20 |eats above that | 00000d70 66 6f 72 20 73 6f 6d 65 20 69 6d 70 6c 65 6d 65 |for some impleme| 00000d80 6e 74 61 74 69 6f 6e 73 20 74 68 65 79 20 6d 61 |ntations they ma| 00000d90 79 20 62 65 20 64 61 6e 67 65 72 6f 75 73 0a 65 |y be dangerous.e| 00000da0 69 74 68 65 72 20 6f 72 20 62 6f 74 68 20 6d 61 |ither or both ma| 00000db0 79 20 62 65 20 64 61 6e 67 65 72 6f 75 73 2e 0a |y be dangerous..| 00000dc0 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 50 6f 69 |</p>.<h3 id="Poi| 00000dd0 6e 74 65 72 73 5f 54 6f 5f 4b 6e 6f 77 6e 5f 4c |nters_To_Known_L| 00000de0 61 79 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 20 |ayers">Pointers | 00000df0 54 6f 20 4b 6e 6f 77 6e 20 4c 61 79 65 72 73 3c |To Known Layers<| 00000e00 2f 68 33 3e 0a 3c 70 3e 0a 44 75 72 69 6e 67 20 |/h3>.<p>.During | 00000e10 64 65 63 6f 64 69 6e 67 2c 20 63 65 72 74 61 69 |decoding, certai| 00000e20 6e 20 6c 61 79 65 72 73 20 61 72 65 20 73 74 6f |n layers are sto| 00000e30 72 65 64 20 69 6e 20 74 68 65 20 70 61 63 6b 65 |red in the packe| 00000e40 74 20 61 73 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 0a |t as well-known.| 00000e50 6c 61 79 65 72 20 74 79 70 65 73 2e 20 20 46 6f |layer types. Fo| 00000e60 72 20 65 78 61 6d 70 6c 65 2c 20 49 50 76 34 20 |r example, IPv4 | 00000e70 61 6e 64 20 49 50 76 36 20 61 72 65 20 62 6f 74 |and IPv6 are bot| 00000e80 68 20 63 6f 6e 73 69 64 65 72 65 64 20 4e 65 74 |h considered Net| 00000e90 77 6f 72 6b 4c 61 79 65 72 0a 6c 61 79 65 72 73 |workLayer.layers| 00000ea0 2c 20 77 68 69 6c 65 20 54 43 50 20 61 6e 64 20 |, while TCP and | 00000eb0 55 44 50 20 61 72 65 20 62 6f 74 68 20 54 72 61 |UDP are both Tra| 00000ec0 6e 73 70 6f 72 74 4c 61 79 65 72 20 6c 61 79 65 |nsportLayer laye| 00000ed0 72 73 2e 20 20 57 65 20 73 75 70 70 6f 72 74 20 |rs. We support | 00000ee0 34 0a 6c 61 79 65 72 73 2c 20 63 6f 72 72 65 73 |4.layers, corres| 00000ef0 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 34 |ponding to the 4| 00000f00 20 6c 61 79 65 72 73 20 6f 66 20 74 68 65 20 54 | layers of the T| 00000f10 43 50 2f 49 50 20 6c 61 79 65 72 69 6e 67 20 73 |CP/IP layering s| 00000f20 63 68 65 6d 65 20 28 72 6f 75 67 68 6c 79 0a 61 |cheme (roughly.a| 00000f30 6e 61 67 61 6c 6f 75 73 20 74 6f 20 6c 61 79 65 |nagalous to laye| 00000f40 72 73 20 32 2c 20 33 2c 20 34 2c 20 61 6e 64 20 |rs 2, 3, 4, and | 00000f50 37 20 6f 66 20 74 68 65 20 4f 53 49 20 6d 6f 64 |7 of the OSI mod| 00000f60 65 6c 29 2e 20 20 54 6f 20 61 63 63 65 73 73 20 |el). To access | 00000f70 74 68 65 73 65 2c 0a 79 6f 75 20 63 61 6e 20 75 |these,.you can u| 00000f80 73 65 20 74 68 65 20 70 61 63 6b 65 74 2e 4c 69 |se the packet.Li| 00000f90 6e 6b 4c 61 79 65 72 2c 20 70 61 63 6b 65 74 2e |nkLayer, packet.| 00000fa0 4e 65 74 77 6f 72 6b 4c 61 79 65 72 2c 0a 70 61 |NetworkLayer,.pa| 00000fb0 63 6b 65 74 2e 54 72 61 6e 73 70 6f 72 74 4c 61 |cket.TransportLa| 00000fc0 79 65 72 2c 20 61 6e 64 20 70 61 63 6b 65 74 2e |yer, and packet.| 00000fd0 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer| 00000fe0 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 45 61 63 | functions. Eac| 00000ff0 68 20 6f 66 0a 74 68 65 73 65 20 66 75 6e 63 74 |h of.these funct| 00001000 69 6f 6e 73 20 72 65 74 75 72 6e 73 20 61 20 63 |ions returns a c| 00001010 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 74 |orresponding int| 00001020 65 72 66 61 63 65 0a 28 67 6f 70 61 63 6b 65 74 |erface.(gopacket| 00001030 2e 7b 4c 69 6e 6b 2c 4e 65 74 77 6f 72 6b 2c 54 |.{Link,Network,T| 00001040 72 61 6e 73 70 6f 72 74 2c 41 70 70 6c 69 63 61 |ransport,Applica| 00001050 74 69 6f 6e 7d 4c 61 79 65 72 29 2e 20 20 54 68 |tion}Layer). Th| 00001060 65 20 66 69 72 73 74 20 74 68 72 65 65 0a 70 72 |e first three.pr| 00001070 6f 76 69 64 65 20 6d 65 74 68 6f 64 73 20 66 6f |ovide methods fo| 00001080 72 20 67 65 74 74 69 6e 67 20 73 72 63 2f 64 73 |r getting src/ds| 00001090 74 20 61 64 64 72 65 73 73 65 73 20 66 6f 72 20 |t addresses for | 000010a0 74 68 61 74 20 70 61 72 74 69 63 75 6c 61 72 20 |that particular | 000010b0 6c 61 79 65 72 2c 0a 77 68 69 6c 65 20 74 68 65 |layer,.while the| 000010c0 20 66 69 6e 61 6c 20 6c 61 79 65 72 20 70 72 6f | final layer pro| 000010d0 76 69 64 65 73 20 61 20 50 61 79 6c 6f 61 64 20 |vides a Payload | 000010e0 66 75 6e 63 74 69 6f 6e 20 74 6f 20 67 65 74 20 |function to get | 000010f0 70 61 79 6c 6f 61 64 20 64 61 74 61 2e 0a 54 68 |payload data..Th| 00001100 69 73 20 69 73 20 68 65 6c 70 66 75 6c 2c 20 66 |is is helpful, f| 00001110 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20 67 |or example, to g| 00001120 65 74 20 70 61 79 6c 6f 61 64 73 20 66 6f 72 20 |et payloads for | 00001130 61 6c 6c 20 70 61 63 6b 65 74 73 20 72 65 67 61 |all packets rega| 00001140 72 64 6c 65 73 73 0a 6f 66 20 74 68 65 69 72 20 |rdless.of their | 00001150 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74 61 20 |underlying data | 00001160 74 79 70 65 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e |type:.</p>.<pre>| 00001170 2f 2f 20 47 65 74 20 70 61 63 6b 65 74 73 20 66 |// Get packets f| 00001180 72 6f 6d 20 73 6f 6d 65 20 73 6f 75 72 63 65 0a |rom some source.| 00001190 66 6f 72 20 70 61 63 6b 65 74 20 3a 3d 20 72 61 |for packet := ra| 000011a0 6e 67 65 20 73 6f 6d 65 53 6f 75 72 63 65 20 7b |nge someSource {| 000011b0 0a 20 20 69 66 20 61 70 70 20 3a 3d 20 70 61 63 |. if app := pac| 000011c0 6b 65 74 2e 41 70 70 6c 69 63 61 74 69 6f 6e 4c |ket.ApplicationL| 000011d0 61 79 65 72 28 29 3b 20 61 70 70 20 21 3d 20 6e |ayer(); app != n| 000011e0 69 6c 20 7b 0a 20 20 20 20 69 66 20 73 74 72 69 |il {. if stri| 000011f0 6e 67 73 2e 43 6f 6e 74 61 69 6e 73 28 73 74 72 |ngs.Contains(str| 00001200 69 6e 67 28 61 70 70 2e 50 61 79 6c 6f 61 64 28 |ing(app.Payload(| 00001210 29 29 2c 20 26 23 33 34 3b 6d 61 67 69 63 20 73 |)), "magic s| 00001220 74 72 69 6e 67 26 23 33 34 3b 29 20 7b 0a 20 20 |tring") {. | 00001230 20 20 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 | fmt.Println(| 00001240 26 23 33 34 3b 46 6f 75 6e 64 20 6d 61 67 69 63 |"Found magic| 00001250 20 73 74 72 69 6e 67 20 69 6e 20 61 20 70 61 63 | string in a pac| 00001260 6b 65 74 21 26 23 33 34 3b 29 0a 20 20 20 20 7d |ket!"). }| 00001270 0a 20 20 7d 0a 7d 0a 3c 2f 70 72 65 3e 0a 3c 70 |. }.}.</pre>.<p| 00001280 3e 0a 41 20 70 61 72 74 69 63 75 6c 61 72 6c 79 |>.A particularly| 00001290 20 75 73 65 66 75 6c 20 6c 61 79 65 72 20 69 73 | useful layer is| 000012a0 20 45 72 72 6f 72 4c 61 79 65 72 2c 20 77 68 69 | ErrorLayer, whi| 000012b0 63 68 20 69 73 20 73 65 74 20 77 68 65 6e 65 76 |ch is set whenev| 000012c0 65 72 20 74 68 65 72 65 26 23 33 39 3b 73 0a 61 |er there's.a| 000012d0 6e 20 65 72 72 6f 72 20 70 61 72 73 69 6e 67 20 |n error parsing | 000012e0 70 61 72 74 20 6f 66 20 74 68 65 20 70 61 63 6b |part of the pack| 000012f0 65 74 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 |et..</p>.<pre>pa| 00001300 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket| 00001310 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac| 00001320 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.| 00001330 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne| 00001340 74 2c 20 67 6f 70 61 63 6b 65 74 2e 44 65 66 61 |t, gopacket.Defa| 00001350 75 6c 74 29 0a 69 66 20 65 72 72 20 3a 3d 20 70 |ult).if err := p| 00001360 61 63 6b 65 74 2e 45 72 72 6f 72 4c 61 79 65 72 |acket.ErrorLayer| 00001370 28 29 3b 20 65 72 72 20 21 3d 20 6e 69 6c 20 7b |(); err != nil {| 00001380 0a 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 |. fmt.Println(&| 00001390 23 33 34 3b 45 72 72 6f 72 20 64 65 63 6f 64 69 |#34;Error decodi| 000013a0 6e 67 20 73 6f 6d 65 20 70 61 72 74 20 6f 66 20 |ng some part of | 000013b0 74 68 65 20 70 61 63 6b 65 74 3a 26 23 33 34 3b |the packet:"| 000013c0 2c 20 65 72 72 29 0a 7d 0a 3c 2f 70 72 65 3e 0a |, err).}.</pre>.| 000013d0 3c 70 3e 0a 4e 6f 74 65 20 74 68 61 74 20 77 65 |<p>.Note that we| 000013e0 20 64 6f 6e 26 23 33 39 3b 74 20 72 65 74 75 72 | don't retur| 000013f0 6e 20 61 6e 20 65 72 72 6f 72 20 66 72 6f 6d 20 |n an error from | 00001400 4e 65 77 50 61 63 6b 65 74 20 62 65 63 61 75 73 |NewPacket becaus| 00001410 65 20 77 65 20 6d 61 79 20 68 61 76 65 20 64 65 |e we may have de| 00001420 63 6f 64 65 64 0a 61 20 6e 75 6d 62 65 72 20 6f |coded.a number o| 00001430 66 20 6c 61 79 65 72 73 20 73 75 63 63 65 73 73 |f layers success| 00001440 66 75 6c 6c 79 20 62 65 66 6f 72 65 20 72 75 6e |fully before run| 00001450 6e 69 6e 67 20 69 6e 74 6f 20 6f 75 72 20 65 72 |ning into our er| 00001460 72 6f 6e 65 6f 75 73 20 6c 61 79 65 72 2e 20 20 |roneous layer. | 00001470 59 6f 75 0a 6d 61 79 20 73 74 69 6c 6c 20 62 65 |You.may still be| 00001480 20 61 62 6c 65 20 74 6f 20 67 65 74 20 79 6f 75 | able to get you| 00001490 72 20 45 74 68 65 72 6e 65 74 20 61 6e 64 20 49 |r Ethernet and I| 000014a0 50 76 34 20 6c 61 79 65 72 73 20 63 6f 72 72 65 |Pv4 layers corre| 000014b0 63 74 6c 79 2c 20 65 76 65 6e 20 69 66 0a 79 6f |ctly, even if.yo| 000014c0 75 72 20 54 43 50 20 6c 61 79 65 72 20 69 73 20 |ur TCP layer is | 000014d0 6d 61 6c 66 6f 72 6d 65 64 2e 0a 3c 2f 70 3e 0a |malformed..</p>.| 000014e0 3c 68 33 20 69 64 3d 22 46 6c 6f 77 5f 41 6e 64 |<h3 id="Flow_And| 000014f0 5f 45 6e 64 70 6f 69 6e 74 22 3e 46 6c 6f 77 20 |_Endpoint">Flow | 00001500 41 6e 64 20 45 6e 64 70 6f 69 6e 74 3c 2f 68 33 |And Endpoint</h3| 00001510 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b 65 74 20 68 |>.<p>.gopacket h| 00001520 61 73 20 74 77 6f 20 75 73 65 66 75 6c 20 6f 62 |as two useful ob| 00001530 6a 65 63 74 73 2c 20 46 6c 6f 77 20 61 6e 64 20 |jects, Flow and | 00001540 45 6e 64 70 6f 69 6e 74 2c 20 66 6f 72 20 63 6f |Endpoint, for co| 00001550 6d 6d 75 6e 69 63 61 74 69 6e 67 20 69 6e 20 61 |mmunicating in a| 00001560 20 70 72 6f 74 6f 63 6f 6c 0a 69 6e 64 65 70 65 | protocol.indepe| 00001570 6e 64 65 6e 74 20 6d 61 6e 6e 65 72 20 74 68 65 |ndent manner the| 00001580 20 66 61 63 74 20 74 68 61 74 20 61 20 70 61 63 | fact that a pac| 00001590 6b 65 74 20 69 73 20 63 6f 6d 69 6e 67 20 66 72 |ket is coming fr| 000015a0 6f 6d 20 41 20 61 6e 64 20 67 6f 69 6e 67 20 74 |om A and going t| 000015b0 6f 20 42 2e 0a 54 68 65 20 67 65 6e 65 72 61 6c |o B..The general| 000015c0 20 6c 61 79 65 72 20 74 79 70 65 73 20 4c 69 6e | layer types Lin| 000015d0 6b 4c 61 79 65 72 2c 20 4e 65 74 77 6f 72 6b 4c |kLayer, NetworkL| 000015e0 61 79 65 72 2c 20 61 6e 64 20 54 72 61 6e 73 70 |ayer, and Transp| 000015f0 6f 72 74 4c 61 79 65 72 20 61 6c 6c 20 70 72 6f |ortLayer all pro| 00001600 76 69 64 65 0a 6d 65 74 68 6f 64 73 20 66 6f 72 |vide.methods for| 00001610 20 65 78 74 72 61 63 74 69 6e 67 20 74 68 65 69 | extracting thei| 00001620 72 20 66 6c 6f 77 20 69 6e 66 6f 72 6d 61 74 69 |r flow informati| 00001630 6f 6e 2c 20 77 69 74 68 6f 75 74 20 77 6f 72 72 |on, without worr| 00001640 79 69 6e 67 20 61 62 6f 75 74 20 74 68 65 20 74 |ying about the t| 00001650 79 70 65 0a 6f 66 20 74 68 65 20 75 6e 64 65 72 |ype.of the under| 00001660 6c 79 69 6e 67 20 4c 61 79 65 72 2e 0a 3c 2f 70 |lying Layer..</p| 00001670 3e 0a 3c 70 3e 0a 41 20 46 6c 6f 77 20 69 73 20 |>.<p>.A Flow is | 00001680 61 20 73 69 6d 70 6c 65 20 6f 62 6a 65 63 74 20 |a simple object | 00001690 6d 61 64 65 20 75 70 20 6f 66 20 61 20 73 65 74 |made up of a set| 000016a0 20 6f 66 20 74 77 6f 20 45 6e 64 70 6f 69 6e 74 | of two Endpoint| 000016b0 73 2c 20 6f 6e 65 20 73 6f 75 72 63 65 20 61 6e |s, one source an| 000016c0 64 20 6f 6e 65 0a 64 65 73 74 69 6e 61 74 69 6f |d one.destinatio| 000016d0 6e 2e 20 20 49 74 20 64 65 74 61 69 6c 73 20 74 |n. It details t| 000016e0 68 65 20 73 65 6e 64 65 72 20 61 6e 64 20 72 65 |he sender and re| 000016f0 63 65 69 76 65 72 20 6f 66 20 74 68 65 20 4c 61 |ceiver of the La| 00001700 79 65 72 20 6f 66 20 74 68 65 20 50 61 63 6b 65 |yer of the Packe| 00001710 74 2e 0a 3c 2f 70 3e 0a 3c 70 3e 0a 41 6e 20 45 |t..</p>.<p>.An E| 00001720 6e 64 70 6f 69 6e 74 20 69 73 20 61 20 68 61 73 |ndpoint is a has| 00001730 68 61 62 6c 65 20 72 65 70 72 65 73 65 6e 74 61 |hable representa| 00001740 74 69 6f 6e 20 6f 66 20 61 20 73 6f 75 72 63 65 |tion of a source| 00001750 20 6f 72 20 64 65 73 74 69 6e 61 74 69 6f 6e 2e | or destination.| 00001760 20 20 46 6f 72 0a 65 78 61 6d 70 6c 65 2c 20 66 | For.example, f| 00001770 6f 72 20 4c 61 79 65 72 54 79 70 65 49 50 76 34 |or LayerTypeIPv4| 00001780 2c 20 61 6e 20 45 6e 64 70 6f 69 6e 74 20 63 6f |, an Endpoint co| 00001790 6e 74 61 69 6e 73 20 74 68 65 20 49 50 20 61 64 |ntains the IP ad| 000017a0 64 72 65 73 73 20 62 79 74 65 73 20 66 6f 72 20 |dress bytes for | 000017b0 61 20 76 34 0a 49 50 20 70 61 63 6b 65 74 2e 20 |a v4.IP packet. | 000017c0 20 41 20 46 6c 6f 77 20 63 61 6e 20 62 65 20 62 | A Flow can be b| 000017d0 72 6f 6b 65 6e 20 69 6e 74 6f 20 45 6e 64 70 6f |roken into Endpo| 000017e0 69 6e 74 73 2c 20 61 6e 64 20 45 6e 64 70 6f 69 |ints, and Endpoi| 000017f0 6e 74 73 20 63 61 6e 20 62 65 20 63 6f 6d 62 69 |nts can be combi| 00001800 6e 65 64 0a 69 6e 74 6f 20 46 6c 6f 77 73 3a 0a |ned.into Flows:.| 00001810 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 63 6b 65 74 |</p>.<pre>packet| 00001820 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 | := gopacket.New| 00001830 50 61 63 6b 65 74 28 6d 79 50 61 63 6b 65 74 44 |Packet(myPacketD| 00001840 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 |ata, layers.Laye| 00001850 72 54 79 70 65 45 74 68 65 72 6e 65 74 2c 20 67 |rTypeEthernet, g| 00001860 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 29 0a 6e 65 |opacket.Lazy).ne| 00001870 74 46 6c 6f 77 20 3a 3d 20 70 61 63 6b 65 74 2e |tFlow := packet.| 00001880 4e 65 74 77 6f 72 6b 4c 61 79 65 72 28 29 2e 4e |NetworkLayer().N| 00001890 65 74 77 6f 72 6b 46 6c 6f 77 28 29 0a 73 72 63 |etworkFlow().src| 000018a0 2c 20 64 73 74 20 3a 3d 20 6e 65 74 46 6c 6f 77 |, dst := netFlow| 000018b0 2e 45 6e 64 70 6f 69 6e 74 73 28 29 0a 72 65 76 |.Endpoints().rev| 000018c0 65 72 73 65 46 6c 6f 77 20 3a 3d 20 67 6f 70 61 |erseFlow := gopa| 000018d0 63 6b 65 74 2e 4e 65 77 46 6c 6f 77 28 64 73 74 |cket.NewFlow(dst| 000018e0 2c 20 73 72 63 29 0a 3c 2f 70 72 65 3e 0a 3c 70 |, src).</pre>.<p| 000018f0 3e 0a 42 6f 74 68 20 45 6e 64 70 6f 69 6e 74 20 |>.Both Endpoint | 00001900 61 6e 64 20 46 6c 6f 77 20 6f 62 6a 65 63 74 73 |and Flow objects| 00001910 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 | can be used as | 00001920 6d 61 70 20 6b 65 79 73 2c 20 61 6e 64 20 74 68 |map keys, and th| 00001930 65 20 65 71 75 61 6c 69 74 79 0a 6f 70 65 72 61 |e equality.opera| 00001940 74 6f 72 20 63 61 6e 20 63 6f 6d 70 61 72 65 20 |tor can compare | 00001950 74 68 65 6d 2c 20 73 6f 20 79 6f 75 20 63 61 6e |them, so you can| 00001960 20 65 61 73 69 6c 79 20 67 72 6f 75 70 20 74 6f | easily group to| 00001970 67 65 74 68 65 72 20 61 6c 6c 20 70 61 63 6b 65 |gether all packe| 00001980 74 73 0a 62 61 73 65 64 20 6f 6e 20 65 6e 64 70 |ts.based on endp| 00001990 6f 69 6e 74 20 63 72 69 74 65 72 69 61 3a 0a 3c |oint criteria:.<| 000019a0 2f 70 3e 0a 3c 70 72 65 3e 66 6c 6f 77 73 20 3a |/p>.<pre>flows :| 000019b0 3d 20 6d 61 70 5b 67 6f 70 61 63 6b 65 74 2e 45 |= map[gopacket.E| 000019c0 6e 64 70 6f 69 6e 74 5d 63 68 61 6e 20 67 6f 70 |ndpoint]chan gop| 000019d0 61 63 6b 65 74 2e 50 61 63 6b 65 74 0a 70 61 63 |acket.Packet.pac| 000019e0 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e |ket := gopacket.| 000019f0 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 6b |NewPacket(myPack| 00001a00 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c |etData, layers.L| 00001a10 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 74 |ayerTypeEthernet| 00001a20 2c 20 67 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 29 |, gopacket.Lazy)| 00001a30 0a 2f 2f 20 53 65 6e 64 20 61 6c 6c 20 54 43 50 |.// Send all TCP| 00001a40 20 70 61 63 6b 65 74 73 20 74 6f 20 63 68 61 6e | packets to chan| 00001a50 6e 65 6c 73 20 62 61 73 65 64 20 6f 6e 20 74 68 |nels based on th| 00001a60 65 69 72 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 |eir destination | 00001a70 70 6f 72 74 2e 0a 69 66 20 74 63 70 20 3a 3d 20 |port..if tcp := | 00001a80 70 61 63 6b 65 74 2e 4c 61 79 65 72 28 6c 61 79 |packet.Layer(lay| 00001a90 65 72 73 2e 4c 61 79 65 72 54 79 70 65 54 43 50 |ers.LayerTypeTCP| 00001aa0 29 3b 20 74 63 70 20 21 3d 20 6e 69 6c 20 7b 0a |); tcp != nil {.| 00001ab0 20 20 66 6c 6f 77 73 5b 74 63 70 2e 54 72 61 6e | flows[tcp.Tran| 00001ac0 73 70 6f 72 74 46 6c 6f 77 28 29 2e 44 73 74 28 |sportFlow().Dst(| 00001ad0 29 5d 20 26 6c 74 3b 2d 20 70 61 63 6b 65 74 0a |)] <- packet.| 00001ae0 7d 0a 2f 2f 20 4c 6f 6f 6b 20 66 6f 72 20 61 6c |}.// Look for al| 00001af0 6c 20 70 61 63 6b 65 74 73 20 77 69 74 68 20 74 |l packets with t| 00001b00 68 65 20 73 61 6d 65 20 73 6f 75 72 63 65 20 61 |he same source a| 00001b10 6e 64 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 6e |nd destination n| 00001b20 65 74 77 6f 72 6b 20 61 64 64 72 65 73 73 0a 69 |etwork address.i| 00001b30 66 20 6e 65 74 20 3a 3d 20 70 61 63 6b 65 74 2e |f net := packet.| 00001b40 4e 65 74 77 6f 72 6b 4c 61 79 65 72 28 29 3b 20 |NetworkLayer(); | 00001b50 6e 65 74 20 21 3d 20 6e 69 6c 20 7b 0a 20 20 73 |net != nil {. s| 00001b60 72 63 2c 20 64 73 74 20 3a 3d 20 6e 65 74 2e 4e |rc, dst := net.N| 00001b70 65 74 77 6f 72 6b 46 6c 6f 77 28 29 2e 45 6e 64 |etworkFlow().End| 00001b80 70 6f 69 6e 74 73 28 29 0a 20 20 69 66 20 73 72 |points(). if sr| 00001b90 63 20 3d 3d 20 64 73 74 20 7b 0a 20 20 20 20 66 |c == dst {. f| 00001ba0 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 23 33 34 3b |mt.Println("| 00001bb0 46 69 73 68 79 20 70 61 63 6b 65 74 20 68 61 73 |Fishy packet has| 00001bc0 20 73 61 6d 65 20 6e 65 74 77 6f 72 6b 20 73 6f | same network so| 00001bd0 75 72 63 65 20 61 6e 64 20 64 73 74 3a 20 25 73 |urce and dst: %s| 00001be0 26 23 33 34 3b 2c 20 73 72 63 29 0a 20 20 7d 0a |", src). }.| 00001bf0 7d 0a 2f 2f 20 46 69 6e 64 20 61 6c 6c 20 70 61 |}.// Find all pa| 00001c00 63 6b 65 74 73 20 63 6f 6d 69 6e 67 20 66 72 6f |ckets coming fro| 00001c10 6d 20 55 44 50 20 70 6f 72 74 20 31 30 30 30 20 |m UDP port 1000 | 00001c20 74 6f 20 55 44 50 20 70 6f 72 74 20 35 30 30 0a |to UDP port 500.| 00001c30 69 6e 74 65 72 65 73 74 69 6e 67 46 6c 6f 77 20 |interestingFlow | 00001c40 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 46 |:= gopacket.NewF| 00001c50 6c 6f 77 28 6c 61 79 65 72 73 2e 4e 65 77 55 44 |low(layers.NewUD| 00001c60 50 50 6f 72 74 45 6e 64 70 6f 69 6e 74 28 31 30 |PPortEndpoint(10| 00001c70 30 30 29 2c 20 6c 61 79 65 72 73 2e 4e 65 77 55 |00), layers.NewU| 00001c80 44 50 50 6f 72 74 45 6e 64 70 6f 69 6e 74 28 35 |DPPortEndpoint(5| 00001c90 30 30 29 29 0a 69 66 20 74 20 3a 3d 20 70 61 63 |00)).if t := pac| 00001ca0 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer| 00001cb0 28 29 3b 20 74 20 21 3d 20 6e 69 6c 20 26 61 6d |(); t != nil &am| 00001cc0 70 3b 26 61 6d 70 3b 20 74 2e 54 72 61 6e 73 70 |p;& t.Transp| 00001cd0 6f 72 74 46 6c 6f 77 28 29 20 3d 3d 20 69 6e 74 |ortFlow() == int| 00001ce0 65 72 65 73 74 69 6e 67 46 6c 6f 77 20 7b 0a 20 |erestingFlow {. | 00001cf0 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 23 33 | fmt.Println(| 00001d00 34 3b 46 6f 75 6e 64 20 74 68 61 74 20 55 44 50 |4;Found that UDP| 00001d10 20 66 6c 6f 77 20 49 20 77 61 73 20 6c 6f 6f 6b | flow I was look| 00001d20 69 6e 67 20 66 6f 72 21 26 23 33 34 3b 29 0a 7d |ing for!").}| 00001d30 0a 3c 2f 70 72 65 3e 0a 3c 68 33 20 69 64 3d 22 |.</pre>.<h3 id="| 00001d40 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 5f 59 6f 75 |Implementing_You| 00001d50 72 5f 4f 77 6e 5f 44 65 63 6f 64 65 72 22 3e 49 |r_Own_Decoder">I| 00001d60 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 59 6f 75 72 |mplementing Your| 00001d70 20 4f 77 6e 20 44 65 63 6f 64 65 72 3c 2f 68 33 | Own Decoder</h3| 00001d80 3e 0a 3c 70 3e 0a 49 66 20 79 6f 75 72 20 6e 65 |>.<p>.If your ne| 00001d90 74 77 6f 72 6b 20 68 61 73 20 73 6f 6d 65 20 73 |twork has some s| 00001da0 74 72 61 6e 67 65 20 65 6e 63 61 70 73 75 6c 61 |trange encapsula| 00001db0 74 69 6f 6e 2c 20 79 6f 75 20 63 61 6e 20 69 6d |tion, you can im| 00001dc0 70 6c 65 6d 65 6e 74 20 79 6f 75 72 20 6f 77 6e |plement your own| 00001dd0 0a 64 65 63 6f 64 65 72 2e 20 20 49 6e 20 74 68 |.decoder. In th| 00001de0 69 73 20 65 78 61 6d 70 6c 65 2c 20 77 65 20 68 |is example, we h| 00001df0 61 6e 64 6c 65 20 45 74 68 65 72 6e 65 74 20 70 |andle Ethernet p| 00001e00 61 63 6b 65 74 73 20 77 68 69 63 68 20 61 72 65 |ackets which are| 00001e10 20 65 6e 63 61 70 73 75 6c 61 74 65 64 0a 69 6e | encapsulated.in| 00001e20 20 61 20 34 2d 62 79 74 65 20 68 65 61 64 65 72 | a 4-byte header| 00001e30 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 43 |..</p>.<pre>// C| 00001e40 72 65 61 74 65 20 61 20 6c 61 79 65 72 20 74 79 |reate a layer ty| 00001e50 70 65 2c 20 73 68 6f 75 6c 64 20 62 65 20 75 6e |pe, should be un| 00001e60 69 71 75 65 20 61 6e 64 20 68 69 67 68 2c 20 73 |ique and high, s| 00001e70 6f 20 69 74 20 64 6f 65 73 6e 26 23 33 39 3b 74 |o it doesn't| 00001e80 20 63 6f 6e 66 6c 69 63 74 2c 0a 2f 2f 20 67 69 | conflict,.// gi| 00001e90 76 69 6e 67 20 69 74 20 61 20 6e 61 6d 65 20 61 |ving it a name a| 00001ea0 6e 64 20 61 20 64 65 63 6f 64 65 72 20 74 6f 20 |nd a decoder to | 00001eb0 75 73 65 2e 0a 76 61 72 20 4d 79 4c 61 79 65 72 |use..var MyLayer| 00001ec0 54 79 70 65 20 3d 20 67 6f 70 61 63 6b 65 74 2e |Type = gopacket.| 00001ed0 52 65 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 |RegisterLayerTyp| 00001ee0 65 28 31 32 33 34 35 2c 20 26 23 33 34 3b 4d 79 |e(12345, "My| 00001ef0 4c 61 79 65 72 54 79 70 65 26 23 33 34 3b 2c 20 |LayerType", | 00001f00 67 6f 70 61 63 6b 65 74 2e 44 65 63 6f 64 65 46 |gopacket.DecodeF| 00001f10 75 6e 63 28 64 65 63 6f 64 65 4d 79 4c 61 79 65 |unc(decodeMyLaye| 00001f20 72 29 29 0a 0a 2f 2f 20 49 6d 70 6c 65 6d 65 6e |r))..// Implemen| 00001f30 74 20 6d 79 20 6c 61 79 65 72 0a 74 79 70 65 20 |t my layer.type | 00001f40 4d 79 4c 61 79 65 72 20 73 74 72 75 63 74 20 7b |MyLayer struct {| 00001f50 0a 20 20 53 74 72 61 6e 67 65 48 65 61 64 65 72 |. StrangeHeader| 00001f60 20 5b 5d 62 79 74 65 0a 20 20 70 61 79 6c 6f 61 | []byte. payloa| 00001f70 64 20 5b 5d 62 79 74 65 0a 7d 0a 66 75 6e 63 20 |d []byte.}.func | 00001f80 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 65 |(m MyLayer) Laye| 00001f90 72 54 79 70 65 28 29 20 4c 61 79 65 72 54 79 70 |rType() LayerTyp| 00001fa0 65 20 7b 20 72 65 74 75 72 6e 20 4d 79 4c 61 79 |e { return MyLay| 00001fb0 65 72 54 79 70 65 20 7d 0a 66 75 6e 63 20 28 6d |erType }.func (m| 00001fc0 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 65 72 43 | MyLayer) LayerC| 00001fd0 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 74 65 |ontents() []byte| 00001fe0 20 7b 20 72 65 74 75 72 6e 20 6d 2e 53 74 72 61 | { return m.Stra| 00001ff0 6e 67 65 48 65 61 64 65 72 20 7d 0a 66 75 6e 63 |ngeHeader }.func| 00002000 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 | (m MyLayer) Lay| 00002010 65 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |erPayload() []by| 00002020 74 65 20 7b 20 72 65 74 75 72 6e 20 6d 2e 70 61 |te { return m.pa| 00002030 79 6c 6f 61 64 20 7d 0a 0a 2f 2f 20 4e 6f 77 20 |yload }..// Now | 00002040 69 6d 70 6c 65 6d 65 6e 74 20 61 20 64 65 63 6f |implement a deco| 00002050 64 65 72 2e 2e 2e 20 74 68 69 73 20 6f 6e 65 20 |der... this one | 00002060 73 74 72 69 70 73 20 6f 66 66 20 74 68 65 20 66 |strips off the f| 00002070 69 72 73 74 20 34 20 62 79 74 65 73 20 6f 66 20 |irst 4 bytes of | 00002080 74 68 65 0a 2f 2f 20 70 61 63 6b 65 74 2e 0a 66 |the.// packet..f| 00002090 75 6e 63 20 64 65 63 6f 64 65 4d 79 4c 61 79 65 |unc decodeMyLaye| 000020a0 72 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 |r(data []byte, p| 000020b0 20 67 6f 70 61 63 6b 65 74 2e 50 61 63 6b 65 74 | gopacket.Packet| 000020c0 42 75 69 6c 64 65 72 29 20 65 72 72 6f 72 20 7b |Builder) error {| 000020d0 0a 20 20 2f 2f 20 43 72 65 61 74 65 20 6d 79 20 |. // Create my | 000020e0 6c 61 79 65 72 0a 20 20 70 2e 41 64 64 4c 61 79 |layer. p.AddLay| 000020f0 65 72 28 26 61 6d 70 3b 4d 79 4c 61 79 65 72 7b |er(&MyLayer{| 00002100 64 61 74 61 5b 3a 34 5d 2c 20 64 61 74 61 5b 34 |data[:4], data[4| 00002110 3a 5d 7d 29 0a 20 20 2f 2f 20 44 65 74 65 72 6d |:]}). // Determ| 00002120 69 6e 65 20 68 6f 77 20 74 6f 20 68 61 6e 64 6c |ine how to handl| 00002130 65 20 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 |e the rest of th| 00002140 65 20 70 61 63 6b 65 74 0a 20 20 72 65 74 75 72 |e packet. retur| 00002150 6e 20 70 2e 4e 65 78 74 44 65 63 6f 64 65 72 28 |n p.NextDecoder(| 00002160 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 65 |layers.LayerType| 00002170 45 74 68 65 72 6e 65 74 29 0a 7d 0a 0a 2f 2f 20 |Ethernet).}..// | 00002180 46 69 6e 61 6c 6c 79 2c 20 64 65 63 6f 64 65 20 |Finally, decode | 00002190 79 6f 75 72 20 70 61 63 6b 65 74 73 3a 0a 70 20 |your packets:.p | 000021a0 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 50 |:= gopacket.NewP| 000021b0 61 63 6b 65 74 28 64 61 74 61 2c 20 4d 79 4c 61 |acket(data, MyLa| 000021c0 79 65 72 54 79 70 65 2c 20 67 6f 70 61 63 6b 65 |yerType, gopacke| 000021d0 74 2e 4c 61 7a 79 29 0a 3c 2f 70 72 65 3e 0a 3c |t.Lazy).</pre>.<| 000021e0 70 3e 0a 53 65 65 20 74 68 65 20 64 6f 63 73 20 |p>.See the docs | 000021f0 66 6f 72 20 44 65 63 6f 64 65 72 20 61 6e 64 20 |for Decoder and | 00002200 50 61 63 6b 65 74 42 75 69 6c 64 65 72 20 66 6f |PacketBuilder fo| 00002210 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 20 6f |r more details o| 00002220 6e 20 68 6f 77 20 63 6f 64 69 6e 67 0a 64 65 63 |n how coding.dec| 00002230 6f 64 65 72 73 20 77 6f 72 6b 73 2c 20 6f 72 20 |oders works, or | 00002240 6c 6f 6f 6b 20 61 74 20 52 65 67 69 73 74 65 72 |look at Register| 00002250 4c 61 79 65 72 54 79 70 65 20 61 6e 64 20 52 65 |LayerType and Re| 00002260 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy| 00002270 70 65 20 74 6f 20 73 65 65 20 68 6f 77 0a 74 6f |pe to see how.to| 00002280 20 61 64 64 20 6c 61 79 65 72 2f 65 6e 64 70 6f | add layer/endpo| 00002290 69 6e 74 20 74 79 70 65 73 20 74 6f 20 67 6f 70 |int types to gop| 000022a0 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |acket..</p>.....| 000022b0 3c 2f 64 69 76 3e 0a 09 09 3c 2f 64 69 76 3e 0a |</div>...</div>.| 000022c0 09 09 0a 09 0a 09 09 3c 68 32 20 69 64 3d 22 70 |.......<h2 id="p| 000022d0 6b 67 2d 69 6e 64 65 78 22 3e 49 6e 64 65 78 3c |kg-index">Index<| 000022e0 2f 68 32 3e 0a 09 09 3c 21 2d 2d 20 54 61 62 6c |/h2>...<!-- Tabl| 000022f0 65 20 6f 66 20 63 6f 6e 74 65 6e 74 73 20 66 6f |e of contents fo| 00002300 72 20 41 50 49 3b 20 6d 75 73 74 20 62 65 20 6e |r API; must be n| 00002310 61 6d 65 64 20 6d 61 6e 75 61 6c 2d 6e 61 76 20 |amed manual-nav | 00002320 74 6f 20 74 75 72 6e 20 6f 66 66 20 61 75 74 6f |to turn off auto| 00002330 20 6e 61 76 2e 20 2d 2d 3e 0a 09 09 3c 64 69 76 | nav. -->...<div| 00002340 20 69 64 3d 22 6d 61 6e 75 61 6c 2d 6e 61 76 22 | id="manual-nav"| 00002350 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 09 0a 09 09 |>....<dl>.......| 00002360 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 |......<dd><a hre| 00002370 66 3d 22 23 70 6b 67 2d 76 61 72 69 61 62 6c 65 |f="#pkg-variable| 00002380 73 22 3e 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e |s">Variables</a>| 00002390 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 09 0a 09 09 |</dd>...........| 000023a0 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><| 000023b0 61 20 68 72 65 66 3d 22 23 41 70 70 6c 69 63 61 |a href="#Applica| 000023c0 74 69 6f 6e 4c 61 79 65 72 22 3e 74 79 70 65 20 |tionLayer">type | 000023d0 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer| 000023e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 000023f0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002400 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 43 |.<dd><a href="#C| 00002410 61 70 74 75 72 65 49 6e 66 6f 22 3e 74 79 70 65 |aptureInfo">type| 00002420 20 43 61 70 74 75 72 65 49 6e 66 6f 3c 2f 61 3e | CaptureInfo</a>| 00002430 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 00002440 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 00002450 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod| 00002460 65 46 61 69 6c 75 72 65 22 3e 74 79 70 65 20 44 |eFailure">type D| 00002470 65 63 6f 64 65 46 61 69 6c 75 72 65 3c 2f 61 3e |ecodeFailure</a>| 00002480 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 00002490 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 000024a0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 000024b0 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai| 000024c0 6c 75 72 65 2e 45 72 72 6f 72 22 3e 66 75 6e 63 |lure.Error">func| 000024d0 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 | (d *DecodeFailu| 000024e0 72 65 29 20 45 72 72 6f 72 28 29 20 65 72 72 6f |re) Error() erro| 000024f0 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |r</a></dd>......| 00002500 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00002510 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00002520 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai| 00002530 6c 75 72 65 2e 4c 61 79 65 72 43 6f 6e 74 65 6e |lure.LayerConten| 00002540 74 73 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |ts">func (d *Dec| 00002550 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye| 00002560 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 |rContents() []by| 00002570 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....| 00002580 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00002590 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 000025a0 20 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 | href="#DecodeFa| 000025b0 69 6c 75 72 65 2e 4c 61 79 65 72 50 61 79 6c 6f |ilure.LayerPaylo| 000025c0 61 64 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |ad">func (d *Dec| 000025d0 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye| 000025e0 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 |rPayload() []byt| 000025f0 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......| 00002600 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00002610 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00002620 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai| 00002630 6c 75 72 65 2e 4c 61 79 65 72 54 79 70 65 22 3e |lure.LayerType">| 00002640 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 |func (d *DecodeF| 00002650 61 69 6c 75 72 65 29 20 4c 61 79 65 72 54 79 70 |ailure) LayerTyp| 00002660 65 28 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 61 |e() LayerType</a| 00002670 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........| 00002680 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 |.......<dd> | 00002690 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 |; <a href| 000026a0 3d 22 23 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |="#DecodeFailure| 000026b0 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 64 |.String">func (d| 000026c0 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 | *DecodeFailure)| 000026d0 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e 67 | String() string| 000026e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 000026f0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e |............<dd>| 00002700 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 65 |<a href="#Decode| 00002710 46 75 6e 63 22 3e 74 79 70 65 20 44 65 63 6f 64 |Func">type Decod| 00002720 65 46 75 6e 63 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |eFunc</a></dd>..| 00002730 09 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |................| 00002740 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &| 00002750 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#| 00002760 44 65 63 6f 64 65 46 75 6e 63 2e 44 65 63 6f 64 |DecodeFunc.Decod| 00002770 65 22 3e 66 75 6e 63 20 28 64 20 44 65 63 6f 64 |e">func (d Decod| 00002780 65 46 75 6e 63 29 20 44 65 63 6f 64 65 28 64 61 |eFunc) Decode(da| 00002790 74 61 20 5b 5d 62 79 74 65 2c 20 70 20 50 61 63 |ta []byte, p Pac| 000027a0 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 6f |ketBuilder) erro| 000027b0 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |r</a></dd>......| 000027c0 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 000027d0 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod| 000027e0 65 4f 70 74 69 6f 6e 73 22 3e 74 79 70 65 20 44 |eOptions">type D| 000027f0 65 63 6f 64 65 4f 70 74 69 6f 6e 73 3c 2f 61 3e |ecodeOptions</a>| 00002800 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 00002810 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 00002820 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod| 00002830 65 72 22 3e 74 79 70 65 20 44 65 63 6f 64 65 72 |er">type Decoder| 00002840 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00002850 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002860 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 |.<dd><a href="#E| 00002870 6e 64 70 6f 69 6e 74 22 3e 74 79 70 65 20 45 6e |ndpoint">type En| 00002880 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 64 64 3e 0a |dpoint</a></dd>.| 00002890 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 000028a0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 000028b0 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 45 |; <a href="#NewE| 000028c0 6e 64 70 6f 69 6e 74 22 3e 66 75 6e 63 20 4e 65 |ndpoint">func Ne| 000028d0 77 45 6e 64 70 6f 69 6e 74 28 74 79 70 20 45 6e |wEndpoint(typ En| 000028e0 64 70 6f 69 6e 74 54 79 70 65 2c 20 72 61 77 20 |dpointType, raw | 000028f0 5b 5d 62 79 74 65 29 20 45 6e 64 70 6f 69 6e 74 |[]byte) Endpoint| 00002900 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00002910 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002920 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002930 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo| 00002940 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 |int.EndpointType| 00002950 22 3e 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 |">func (e Endpoi| 00002960 6e 74 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 |nt) EndpointType| 00002970 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c |() EndpointType<| 00002980 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........| 00002990 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb| 000029a0 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr| 000029b0 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 2e 4c 65 |ef="#Endpoint.Le| 000029c0 73 73 54 68 61 6e 22 3e 66 75 6e 63 20 28 61 20 |ssThan">func (a | 000029d0 45 6e 64 70 6f 69 6e 74 29 20 4c 65 73 73 54 68 |Endpoint) LessTh| 000029e0 61 6e 28 62 20 45 6e 64 70 6f 69 6e 74 29 20 62 |an(b Endpoint) b| 000029f0 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ool</a></dd>....| 00002a00 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd| 00002a10 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <| 00002a20 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e |a href="#Endpoin| 00002a30 74 2e 52 61 77 22 3e 66 75 6e 63 20 28 65 20 45 |t.Raw">func (e E| 00002a40 6e 64 70 6f 69 6e 74 29 20 52 61 77 28 29 20 5b |ndpoint) Raw() [| 00002a50 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..| 00002a60 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002a70 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002a80 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo| 00002a90 69 6e 74 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |int.String">func| 00002aa0 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 53 74 | (e Endpoint) St| 00002ab0 72 69 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 61 |ring() string</a| 00002ac0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a |></dd>..........| 00002ad0 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a | 00002ae0 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 54 |href="#EndpointT| 00002af0 79 70 65 22 3e 74 79 70 65 20 45 6e 64 70 6f 69 |ype">type Endpoi| 00002b00 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |ntType</a></dd>.| 00002b10 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 00002b20 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 00002b30 3b 20 3c 61 20 68 72 65 66 3d 22 23 52 65 67 69 |; <a href="#Regi| 00002b40 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 |sterEndpointType| 00002b50 22 3e 66 75 6e 63 20 52 65 67 69 73 74 65 72 45 |">func RegisterE| 00002b60 6e 64 70 6f 69 6e 74 54 79 70 65 28 6e 75 6d 20 |ndpointType(num | 00002b70 69 6e 74 2c 20 6d 65 74 61 20 45 6e 64 70 6f 69 |int, meta Endpoi| 00002b80 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 |ntTypeMetadata) | 00002b90 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f 61 3e |EndpointType</a>| 00002ba0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 00002bb0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00002bc0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00002bd0 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 54 |href="#EndpointT| 00002be0 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |ype.String">func| 00002bf0 20 28 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 | (e EndpointType| 00002c00 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e |) String() strin| 00002c10 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |g</a></dd>......| 00002c20 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 00002c30 3e 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f |><a href="#Endpo| 00002c40 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 22 |intTypeMetadata"| 00002c50 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 54 79 |>type EndpointTy| 00002c60 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c 2f |peMetadata</a></| 00002c70 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............| 00002c80 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><| 00002c90 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 4c 61 |a href="#ErrorLa| 00002ca0 79 65 72 22 3e 74 79 70 65 20 45 72 72 6f 72 4c |yer">type ErrorL| 00002cb0 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ayer</a></dd>...| 00002cc0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 00002cd0 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href| 00002ce0 3d 22 23 46 6c 6f 77 22 3e 74 79 70 65 20 46 6c |="#Flow">type Fl| 00002cf0 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ow</a></dd>.....| 00002d00 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00002d10 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00002d20 20 68 72 65 66 3d 22 23 46 6c 6f 77 46 72 6f 6d | href="#FlowFrom| 00002d30 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 |Endpoints">func | 00002d40 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint| 00002d50 73 28 73 72 63 2c 20 64 73 74 20 45 6e 64 70 6f |s(src, dst Endpo| 00002d60 69 6e 74 29 20 28 5f 20 46 6c 6f 77 2c 20 65 72 |int) (_ Flow, er| 00002d70 72 20 65 72 72 6f 72 29 3c 2f 61 3e 3c 2f 64 64 |r error)</a></dd| 00002d80 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 |>...............| 00002d90 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 |..<dd> &nb| 00002da0 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 |sp; <a href="#Ne| 00002db0 77 46 6c 6f 77 22 3e 66 75 6e 63 20 4e 65 77 46 |wFlow">func NewF| 00002dc0 6c 6f 77 28 74 20 45 6e 64 70 6f 69 6e 74 54 79 |low(t EndpointTy| 00002dd0 70 65 2c 20 73 72 63 2c 20 64 73 74 20 5b 5d 62 |pe, src, dst []b| 00002de0 79 74 65 29 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 |yte) Flow</a></d| 00002df0 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............| 00002e00 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs| 00002e10 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre| 00002e20 66 3d 22 23 46 6c 6f 77 2e 44 73 74 22 3e 66 75 |f="#Flow.Dst">fu| 00002e30 6e 63 20 28 66 20 46 6c 6f 77 29 20 44 73 74 28 |nc (f Flow) Dst(| 00002e40 29 20 28 64 73 74 20 45 6e 64 70 6f 69 6e 74 29 |) (dst Endpoint)| 00002e50 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00002e60 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n| 00002e70 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h| 00002e80 72 65 66 3d 22 23 46 6c 6f 77 2e 45 6e 64 70 6f |ref="#Flow.Endpo| 00002e90 69 6e 74 54 79 70 65 22 3e 66 75 6e 63 20 28 66 |intType">func (f| 00002ea0 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 54 | Flow) EndpointT| 00002eb0 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 |ype() EndpointTy| 00002ec0 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |pe</a></dd>.....| 00002ed0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00002ee0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00002ef0 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 45 6e 64 | href="#Flow.End| 00002f00 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 28 66 20 |points">func (f | 00002f10 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 73 28 |Flow) Endpoints(| 00002f20 29 20 28 73 72 63 2c 20 64 73 74 20 45 6e 64 70 |) (src, dst Endp| 00002f30 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |oint)</a></dd>..| 00002f40 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002f50 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002f60 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e | <a href="#Flow.| 00002f70 52 65 76 65 72 73 65 22 3e 66 75 6e 63 20 28 66 |Reverse">func (f| 00002f80 20 46 6c 6f 77 29 20 52 65 76 65 72 73 65 28 29 | Flow) Reverse()| 00002f90 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 | Flow</a></dd>..| 00002fa0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002fb0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002fc0 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e | <a href="#Flow.| 00002fd0 53 72 63 22 3e 66 75 6e 63 20 28 66 20 46 6c 6f |Src">func (f Flo| 00002fe0 77 29 20 53 72 63 28 29 20 28 73 72 63 20 45 6e |w) Src() (src En| 00002ff0 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e |dpoint)</a></dd>| 00003000 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................| 00003010 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs| 00003020 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f |p; <a href="#Flo| 00003030 77 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |w.String">func (| 00003040 66 20 46 6c 6f 77 29 20 53 74 72 69 6e 67 28 29 |f Flow) String()| 00003050 20 73 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e | string</a></dd>| 00003060 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00003070 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="| 00003080 23 4c 61 79 65 72 22 3e 74 79 70 65 20 4c 61 79 |#Layer">type Lay| 00003090 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....| 000030a0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 000030b0 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="| 000030c0 23 4c 61 79 65 72 43 6c 61 73 73 22 3e 74 79 70 |#LayerClass">typ| 000030d0 65 20 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |e LayerClass</a>| 000030e0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 |</dd>...........| 000030f0 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b |......<dd> | 00003100 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d | <a href=| 00003110 22 23 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 22 |"#NewLayerClass"| 00003120 3e 66 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c |>func NewLayerCl| 00003130 61 73 73 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 |ass(types []Laye| 00003140 72 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 |rType) LayerClas| 00003150 73 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |s</a></dd>......| 00003160 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00003170 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 |..<dd><a href="#| 00003180 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 74 |LayerClassMap">t| 00003190 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 |ype LayerClassMa| 000031a0 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |p</a></dd>......| 000031b0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 000031c0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 000031d0 68 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 43 |href="#NewLayerC| 000031e0 6c 61 73 73 4d 61 70 22 3e 66 75 6e 63 20 4e 65 |lassMap">func Ne| 000031f0 77 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 28 74 |wLayerClassMap(t| 00003200 79 70 65 73 20 5b 5d 4c 61 79 65 72 54 79 70 65 |ypes []LayerType| 00003210 29 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 3c |) LayerClassMap<| 00003220 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........| 00003230 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d| 00003240 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> | 00003250 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 43 |<a href="#LayerC| 00003260 6c 61 73 73 4d 61 70 2e 43 6f 6e 74 61 69 6e 73 |lassMap.Contains| 00003270 22 3e 66 75 6e 63 20 28 6d 20 4c 61 79 65 72 43 |">func (m LayerC| 00003280 6c 61 73 73 4d 61 70 29 20 43 6f 6e 74 61 69 6e |lassMap) Contain| 00003290 73 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 62 |s(t LayerType) b| 000032a0 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ool</a></dd>....| 000032b0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 000032c0 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 |dd><a href="#Lay| 000032d0 65 72 43 6c 61 73 73 53 6c 69 63 65 22 3e 74 79 |erClassSlice">ty| 000032e0 70 65 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |pe LayerClassSli| 000032f0 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ce</a></dd>.....| 00003300 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00003310 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00003320 20 68 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 | href="#NewLayer| 00003330 43 6c 61 73 73 53 6c 69 63 65 22 3e 66 75 6e 63 |ClassSlice">func| 00003340 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c | NewLayerClassSl| 00003350 69 63 65 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 |ice(types []Laye| 00003360 72 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 |rType) LayerClas| 00003370 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |sSlice</a></dd>.| 00003380 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a |................| 00003390 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> | 000033a0 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="| 000033b0 23 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 |#LayerClassSlice| 000033c0 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 75 6e 63 20 |.Contains">func | 000033d0 28 73 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |(s LayerClassSli| 000033e0 63 65 29 20 43 6f 6e 74 61 69 6e 73 28 74 20 4c |ce) Contains(t L| 000033f0 61 79 65 72 54 79 70 65 29 20 62 6f 6f 6c 3c 2f |ayerType) bool</| 00003400 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 00003410 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a| 00003420 20 68 72 65 66 3d 22 23 4c 61 79 65 72 54 79 70 | href="#LayerTyp| 00003430 65 22 3e 74 79 70 65 20 4c 61 79 65 72 54 79 70 |e">type LayerTyp| 00003440 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......| 00003450 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00003460 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00003470 68 72 65 66 3d 22 23 52 65 67 69 73 74 65 72 4c |href="#RegisterL| 00003480 61 79 65 72 54 79 70 65 22 3e 66 75 6e 63 20 52 |ayerType">func R| 00003490 65 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 |egisterLayerType| 000034a0 28 6e 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 4c |(num int, meta L| 000034b0 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 |ayerTypeMetadata| 000034c0 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c |) LayerType</a><| 000034d0 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/dd>............| 000034e0 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n| 000034f0 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h| 00003500 72 65 66 3d 22 23 4c 61 79 65 72 54 79 70 65 2e |ref="#LayerType.| 00003510 44 65 63 6f 64 65 22 3e 66 75 6e 63 20 28 74 20 |Decode">func (t | 00003520 4c 61 79 65 72 54 79 70 65 29 20 44 65 63 6f 64 |LayerType) Decod| 00003530 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 63 |e(data []byte, c| 00003540 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) | 00003550 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..| 00003560 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003570 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003580 20 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 | <a href="#Layer| 00003590 54 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |Type.String">fun| 000035a0 63 20 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 |c (t LayerType) | 000035b0 53 74 72 69 6e 67 28 29 20 28 73 20 73 74 72 69 |String() (s stri| 000035c0 6e 67 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ng)</a></dd>....| 000035d0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 000035e0 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 |dd><a href="#Lay| 000035f0 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 22 3e |erTypeMetadata">| 00003600 74 79 70 65 20 4c 61 79 65 72 54 79 70 65 4d 65 |type LayerTypeMe| 00003610 74 61 64 61 74 61 3c 2f 61 3e 3c 2f 64 64 3e 0a |tadata</a></dd>.| 00003620 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 00003630 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr| 00003640 65 66 3d 22 23 4c 69 6e 6b 4c 61 79 65 72 22 3e |ef="#LinkLayer">| 00003650 74 79 70 65 20 4c 69 6e 6b 4c 61 79 65 72 3c 2f |type LinkLayer</| 00003660 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 00003670 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 00003680 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4e 65 74 |dd><a href="#Net| 00003690 77 6f 72 6b 4c 61 79 65 72 22 3e 74 79 70 65 20 |workLayer">type | 000036a0 4e 65 74 77 6f 72 6b 4c 61 79 65 72 3c 2f 61 3e |NetworkLayer</a>| 000036b0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 000036c0 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 000036d0 3e 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 |><a href="#Packe| 000036e0 74 22 3e 74 79 70 65 20 50 61 63 6b 65 74 3c 2f |t">type Packet</| 000036f0 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 00003700 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs| 00003710 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre| 00003720 66 3d 22 23 4e 65 77 50 61 63 6b 65 74 22 3e 66 |f="#NewPacket">f| 00003730 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 28 64 61 |unc NewPacket(da| 00003740 74 61 20 5b 5d 62 79 74 65 2c 20 66 69 72 73 74 |ta []byte, first| 00003750 4c 61 79 65 72 44 65 63 6f 64 65 72 20 44 65 63 |LayerDecoder Dec| 00003760 6f 64 65 72 2c 20 6f 70 74 69 6f 6e 73 20 44 65 |oder, options De| 00003770 63 6f 64 65 4f 70 74 69 6f 6e 73 29 20 50 61 63 |codeOptions) Pac| 00003780 6b 65 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ket</a></dd>....| 00003790 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................| 000037a0 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d |....<dd><a href=| 000037b0 22 23 50 61 63 6b 65 74 42 75 69 6c 64 65 72 22 |"#PacketBuilder"| 000037c0 3e 74 79 70 65 20 50 61 63 6b 65 74 42 75 69 6c |>type PacketBuil| 000037d0 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |der</a></dd>....| 000037e0 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................| 000037f0 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d |....<dd><a href=| 00003800 22 23 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 |"#PacketDataSour| 00003810 63 65 22 3e 74 79 70 65 20 50 61 63 6b 65 74 44 |ce">type PacketD| 00003820 61 74 61 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 64 |ataSource</a></d| 00003830 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............| 00003840 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a| 00003850 20 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 6f | href="#PacketSo| 00003860 75 72 63 65 22 3e 74 79 70 65 20 50 61 63 6b 65 |urce">type Packe| 00003870 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 64 64 3e |tSource</a></dd>| 00003880 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................| 00003890 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs| 000038a0 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 |p; <a href="#New| 000038b0 50 61 63 6b 65 74 53 6f 75 72 63 65 22 3e 66 75 |PacketSource">fu| 000038c0 6e 63 20 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 |nc NewPacketSour| 000038d0 63 65 28 73 6f 75 72 63 65 20 50 61 63 6b 65 74 |ce(source Packet| 000038e0 44 61 74 61 53 6f 75 72 63 65 2c 20 64 65 63 6f |DataSource, deco| 000038f0 64 65 72 20 44 65 63 6f 64 65 72 29 20 2a 50 61 |der Decoder) *Pa| 00003900 63 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f |cketSource</a></| 00003910 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............| 00003920 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb| 00003930 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr| 00003940 65 66 3d 22 23 50 61 63 6b 65 74 53 6f 75 72 63 |ef="#PacketSourc| 00003950 65 2e 4e 65 78 74 50 61 63 6b 65 74 22 3e 66 75 |e.NextPacket">fu| 00003960 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 |nc (p *PacketSou| 00003970 72 63 65 29 20 4e 65 78 74 50 61 63 6b 65 74 28 |rce) NextPacket(| 00003980 29 20 28 50 61 63 6b 65 74 2c 20 65 72 72 6f 72 |) (Packet, error| 00003990 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |)</a></dd>......| 000039a0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 000039b0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 000039c0 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 6f 75 |href="#PacketSou| 000039d0 72 63 65 2e 50 61 63 6b 65 74 73 22 3e 66 75 6e |rce.Packets">fun| 000039e0 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 72 |c (p *PacketSour| 000039f0 63 65 29 20 50 61 63 6b 65 74 73 28 29 20 63 68 |ce) Packets() ch| 00003a00 61 6e 20 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 64 |an Packet</a></d| 00003a10 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |d>..............| 00003a20 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href| 00003a30 3d 22 23 50 61 79 6c 6f 61 64 22 3e 74 79 70 65 |="#Payload">type| 00003a40 20 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 64 64 | Payload</a></dd| 00003a50 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |>...............| 00003a60 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 |.......<dd> | 00003a70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 |; <a href| 00003a80 3d 22 23 50 61 79 6c 6f 61 64 2e 4c 61 79 65 72 |="#Payload.Layer| 00003a90 43 6f 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 |Contents">func (| 00003aa0 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 65 |p *Payload) Laye| 00003ab0 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 |rContents() []by| 00003ac0 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....| 00003ad0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00003ae0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00003af0 20 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e | href="#Payload.| 00003b00 4c 61 79 65 72 50 61 79 6c 6f 61 64 22 3e 66 75 |LayerPayload">fu| 00003b10 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) | 00003b20 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 5b |LayerPayload() [| 00003b30 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..| 00003b40 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003b50 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003b60 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c 6f | <a href="#Paylo| 00003b70 61 64 2e 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |ad.LayerType">fu| 00003b80 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) | 00003b90 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 65 |LayerType() Laye| 00003ba0 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rType</a></dd>..| 00003bb0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003bc0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003bd0 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c 6f | <a href="#Paylo| 00003be0 61 64 2e 50 61 79 6c 6f 61 64 22 3e 66 75 6e 63 |ad.Payload">func| 00003bf0 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 50 61 | (p *Payload) Pa| 00003c00 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 3c 2f |yload() []byte</| 00003c10 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 00003c20 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs| 00003c30 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre| 00003c40 66 3d 22 23 50 61 79 6c 6f 61 64 2e 53 74 72 69 |f="#Payload.Stri| 00003c50 6e 67 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 |ng">func (p *Pay| 00003c60 6c 6f 61 64 29 20 53 74 72 69 6e 67 28 29 20 73 |load) String() s| 00003c70 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |tring</a></dd>..| 00003c80 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00003c90 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 54 |.<dd><a href="#T| 00003ca0 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 22 3e 74 |ransportLayer">t| 00003cb0 79 70 65 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 |ype TransportLay| 00003cc0 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....| 00003cd0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 |................| 00003ce0 3c 2f 64 6c 3e 0a 0a 09 09 0a 0a 09 09 0a 09 09 |</dl>...........| 00003cf0 09 3c 68 34 3e 50 61 63 6b 61 67 65 20 66 69 6c |.<h4>Package fil| 00003d00 65 73 3c 2f 68 34 3e 0a 09 09 09 3c 70 3e 0a 09 |es</h4>....<p>..| 00003d10 09 09 3c 73 70 61 6e 20 73 74 79 6c 65 3d 22 66 |..<span style="f| 00003d20 6f 6e 74 2d 73 69 7a 65 3a 39 30 25 22 3e 0a 09 |ont-size:90%">..| 00003d30 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="| 00003d40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003d50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003d60 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 22 3e 62 |acket/base.go">b| 00003d70 61 73 65 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ase.go</a>......| 00003d80 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src| 00003d90 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003da0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003db0 74 2f 64 65 63 6f 64 65 2e 67 6f 22 3e 64 65 63 |t/decode.go">dec| 00003dc0 6f 64 65 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ode.go</a>......| 00003dd0 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src| 00003de0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003df0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003e00 74 2f 64 6f 63 2e 67 6f 22 3e 64 6f 63 2e 67 6f |t/doc.go">doc.go| 00003e10 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a | 00003e20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 00003e30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 00003e40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow| 00003e50 73 2e 67 6f 22 3e 66 6c 6f 77 73 2e 67 6f 3c 2f |s.go">flows.go</| 00003e60 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 |a>.........<a hr| 00003e70 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00003e80 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00003e90 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 |/gopacket/layerc| 00003ea0 6c 61 73 73 2e 67 6f 22 3e 6c 61 79 65 72 63 6c |lass.go">layercl| 00003eb0 61 73 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ass.go</a>......| 00003ec0 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src| 00003ed0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003ee0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003ef0 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 22 3e |t/layertype.go">| 00003f00 6c 61 79 65 72 74 79 70 65 2e 67 6f 3c 2f 61 3e |layertype.go</a>| 00003f10 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 |.........<a href| 00003f20 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00003f30 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00003f40 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 |opacket/packet.g| 00003f50 6f 22 3e 70 61 63 6b 65 74 2e 67 6f 3c 2f 61 3e |o">packet.go</a>| 00003f60 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 |.........<a href| 00003f70 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00003f80 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00003f90 6f 70 61 63 6b 65 74 2f 76 61 6c 69 64 5f 6d 61 |opacket/valid_ma| 00003fa0 63 5f 70 72 65 66 69 78 65 73 2e 67 6f 22 3e 76 |c_prefixes.go">v| 00003fb0 61 6c 69 64 5f 6d 61 63 5f 70 72 65 66 69 78 65 |alid_mac_prefixe| 00003fc0 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 |s.go</a>........| 00003fd0 3c 2f 73 70 61 6e 3e 0a 09 09 09 3c 2f 70 3e 0a |</span>....</p>.| 00003fe0 09 09 0a 09 0a 09 09 0a 09 09 0a 09 09 09 3c 68 |..............<h| 00003ff0 32 20 69 64 3d 22 70 6b 67 2d 76 61 72 69 61 62 |2 id="pkg-variab| 00004000 6c 65 73 22 |les"| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..16384..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..16344..] Version=6 TrafficClass=0 FlowLabel=100497 Length=16344 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 3f d8 06 40 00 00 00 00 00 00 00 00 |`...?..@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..16312..] SrcPort=8080(http-alt) DstPort=58799 Seq=174421743 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=16352 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 65 76 ef 08 97 18 4a 80 10 23 02 |.....ev....J..#.| 00000010 3f e0 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |?...............| --- Layer 4 --- Payload 16312 byte(s) 00000000 2e 44 65 66 61 75 6c 74 29 0a 3c 2f 70 72 65 3e |.Default).</pre>| 00000010 0a 3c 68 33 20 69 64 3d 22 52 65 61 64 69 6e 67 |.<h3 id="Reading| 00000020 5f 50 61 63 6b 65 74 73 5f 46 72 6f 6d 5f 41 5f |_Packets_From_A_| 00000030 53 6f 75 72 63 65 22 3e 52 65 61 64 69 6e 67 20 |Source">Reading | 00000040 50 61 63 6b 65 74 73 20 46 72 6f 6d 20 41 20 53 |Packets From A S| 00000050 6f 75 72 63 65 3c 2f 68 33 3e 0a 3c 70 3e 0a 4d |ource</h3>.<p>.M| 00000060 6f 73 74 20 6f 66 20 74 68 65 20 74 69 6d 65 2c |ost of the time,| 00000070 20 79 6f 75 20 77 6f 6e 26 23 33 39 3b 74 20 6a | you won't j| 00000080 75 73 74 20 68 61 76 65 20 61 20 5b 5d 62 79 74 |ust have a []byt| 00000090 65 20 6f 66 20 70 61 63 6b 65 74 20 64 61 74 61 |e of packet data| 000000a0 20 6c 79 69 6e 67 20 61 72 6f 75 6e 64 2e 0a 49 | lying around..I| 000000b0 6e 73 74 65 61 64 2c 20 79 6f 75 26 23 33 39 3b |nstead, you'| 000000c0 6c 6c 20 77 61 6e 74 20 74 6f 20 72 65 61 64 20 |ll want to read | 000000d0 70 61 63 6b 65 74 73 20 69 6e 20 66 72 6f 6d 20 |packets in from | 000000e0 73 6f 6d 65 77 68 65 72 65 20 28 66 69 6c 65 2c |somewhere (file,| 000000f0 20 69 6e 74 65 72 66 61 63 65 2c 20 65 74 63 29 | interface, etc)| 00000100 0a 61 6e 64 20 70 72 6f 63 65 73 73 20 74 68 65 |.and process the| 00000110 6d 2e 20 20 54 6f 20 64 6f 20 74 68 61 74 2c 20 |m. To do that, | 00000120 79 6f 75 26 23 33 39 3b 6c 6c 20 77 61 6e 74 20 |you'll want | 00000130 74 6f 20 62 75 69 6c 64 20 61 20 50 61 63 6b 65 |to build a Packe| 00000140 74 53 6f 75 72 63 65 2e 0a 3c 2f 70 3e 0a 3c 70 |tSource..</p>.<p| 00000150 3e 0a 46 69 72 73 74 2c 20 79 6f 75 26 23 33 39 |>.First, you'| 00000160 3b 6c 6c 20 6e 65 65 64 20 74 6f 20 63 6f 6e 73 |;ll need to cons| 00000170 74 72 75 63 74 20 61 6e 20 6f 62 6a 65 63 74 20 |truct an object | 00000180 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 |that implements | 00000190 74 68 65 20 50 61 63 6b 65 74 44 61 74 61 53 6f |the PacketDataSo| 000001a0 75 72 63 65 0a 69 6e 74 65 72 66 61 63 65 2e 20 |urce.interface. | 000001b0 20 54 68 65 72 65 20 61 72 65 20 69 6d 70 6c 65 | There are imple| 000001c0 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 |mentations of th| 000001d0 69 73 20 69 6e 74 65 72 66 61 63 65 20 62 75 6e |is interface bun| 000001e0 64 6c 65 64 20 77 69 74 68 20 67 6f 70 61 63 6b |dled with gopack| 000001f0 65 74 0a 69 6e 20 74 68 65 20 67 6f 70 61 63 6b |et.in the gopack| 00000200 65 74 2f 70 63 61 70 20 61 6e 64 20 67 6f 70 61 |et/pcap and gopa| 00000210 63 6b 65 74 2f 70 66 72 69 6e 67 20 73 75 62 70 |cket/pfring subp| 00000220 61 63 6b 61 67 65 73 2e 2e 2e 20 73 65 65 20 74 |ackages... see t| 00000230 68 65 69 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 |heir documentati| 00000240 6f 6e 0a 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f |on.for more info| 00000250 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 69 72 |rmation on their| 00000260 20 75 73 61 67 65 2e 20 20 4f 6e 63 65 20 79 6f | usage. Once yo| 00000270 75 20 68 61 76 65 20 61 20 50 61 63 6b 65 74 44 |u have a PacketD| 00000280 61 74 61 53 6f 75 72 63 65 2c 20 79 6f 75 20 63 |ataSource, you c| 00000290 61 6e 0a 70 61 73 73 20 69 74 20 69 6e 74 6f 20 |an.pass it into | 000002a0 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 2c |NewPacketSource,| 000002b0 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 44 65 | along with a De| 000002c0 63 6f 64 65 72 20 6f 66 20 79 6f 75 72 20 63 68 |coder of your ch| 000002d0 6f 69 63 65 2c 20 74 6f 20 63 72 65 61 74 65 0a |oice, to create.| 000002e0 61 20 50 61 63 6b 65 74 53 6f 75 72 63 65 2e 0a |a PacketSource..| 000002f0 3c 2f 70 3e 0a 3c 70 3e 0a 4f 6e 63 65 20 79 6f |</p>.<p>.Once yo| 00000300 75 20 68 61 76 65 20 61 20 50 61 63 6b 65 74 53 |u have a PacketS| 00000310 6f 75 72 63 65 2c 20 79 6f 75 20 63 61 6e 20 72 |ource, you can r| 00000320 65 61 64 20 70 61 63 6b 65 74 73 20 66 72 6f 6d |ead packets from| 00000330 20 69 74 20 69 6e 20 6d 75 6c 74 69 70 6c 65 20 | it in multiple | 00000340 77 61 79 73 2e 0a 53 65 65 20 74 68 65 20 64 6f |ways..See the do| 00000350 63 73 20 66 6f 72 20 50 61 63 6b 65 74 53 6f 75 |cs for PacketSou| 00000360 72 63 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 |rce for more det| 00000370 61 69 6c 73 2e 20 20 54 68 65 20 65 61 73 69 65 |ails. The easie| 00000380 73 74 20 6d 65 74 68 6f 64 20 69 73 20 74 68 65 |st method is the| 00000390 0a 50 61 63 6b 65 74 73 20 66 75 6e 63 74 69 6f |.Packets functio| 000003a0 6e 2c 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 |n, which returns| 000003b0 20 61 20 63 68 61 6e 6e 65 6c 2c 20 74 68 65 6e | a channel, then| 000003c0 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 | asynchronously | 000003d0 77 72 69 74 65 73 20 6e 65 77 0a 70 61 63 6b 65 |writes new.packe| 000003e0 74 73 20 69 6e 74 6f 20 74 68 61 74 20 63 68 61 |ts into that cha| 000003f0 6e 6e 65 6c 2c 20 63 6c 6f 73 69 6e 67 20 74 68 |nnel, closing th| 00000400 65 20 63 68 61 6e 6e 65 6c 20 69 66 20 74 68 65 |e channel if the| 00000410 20 70 61 63 6b 65 74 53 6f 75 72 63 65 20 68 69 | packetSource hi| 00000420 74 73 20 61 6e 0a 65 6e 64 2d 6f 66 2d 66 69 6c |ts an.end-of-fil| 00000430 65 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 63 |e..</p>.<pre>pac| 00000440 6b 65 74 53 6f 75 72 63 65 20 3a 3d 20 2e 2e 2e |ketSource := ...| 00000450 20 20 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20 75 | // construct u| 00000460 73 69 6e 67 20 70 63 61 70 20 6f 72 20 70 66 72 |sing pcap or pfr| 00000470 69 6e 67 0a 66 6f 72 20 70 61 63 6b 65 74 20 3a |ing.for packet :| 00000480 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 53 6f |= range packetSo| 00000490 75 72 63 65 2e 50 61 63 6b 65 74 73 28 29 20 7b |urce.Packets() {| 000004a0 0a 20 20 68 61 6e 64 6c 65 50 61 63 6b 65 74 28 |. handlePacket(| 000004b0 70 61 63 6b 65 74 29 20 20 2f 2f 20 64 6f 20 73 |packet) // do s| 000004c0 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 65 61 |omething with ea| 000004d0 63 68 20 70 61 63 6b 65 74 0a 7d 0a 3c 2f 70 72 |ch packet.}.</pr| 000004e0 65 3e 0a 3c 70 3e 0a 59 6f 75 20 63 61 6e 20 63 |e>.<p>.You can c| 000004f0 68 61 6e 67 65 20 74 68 65 20 64 65 63 6f 64 69 |hange the decodi| 00000500 6e 67 20 6f 70 74 69 6f 6e 73 20 6f 66 20 74 68 |ng options of th| 00000510 65 20 70 61 63 6b 65 74 53 6f 75 72 63 65 20 62 |e packetSource b| 00000520 79 20 73 65 74 74 69 6e 67 20 66 69 65 6c 64 73 |y setting fields| 00000530 20 69 6e 0a 70 61 63 6b 65 74 53 6f 75 72 63 65 | in.packetSource| 00000540 2e 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 2e 2e |.DecodeOptions..| 00000550 2e 20 73 65 65 20 74 68 65 20 66 6f 6c 6c 6f 77 |. see the follow| 00000560 69 6e 67 20 73 65 63 74 69 6f 6e 73 20 66 6f 72 |ing sections for| 00000570 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 3c | more details..<| 00000580 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 4c 61 7a 79 |/p>.<h3 id="Lazy| 00000590 5f 44 65 63 6f 64 69 6e 67 22 3e 4c 61 7a 79 20 |_Decoding">Lazy | 000005a0 44 65 63 6f 64 69 6e 67 3c 2f 68 33 3e 0a 3c 70 |Decoding</h3>.<p| 000005b0 3e 0a 67 6f 70 61 63 6b 65 74 20 6f 70 74 69 6f |>.gopacket optio| 000005c0 6e 61 6c 6c 79 20 64 65 63 6f 64 65 73 20 70 61 |nally decodes pa| 000005d0 63 6b 65 74 20 64 61 74 61 20 6c 61 7a 69 6c 79 |cket data lazily| 000005e0 2c 20 6d 65 61 6e 69 6e 67 20 69 74 0a 6f 6e 6c |, meaning it.onl| 000005f0 79 20 64 65 63 6f 64 65 73 20 61 20 70 61 63 6b |y decodes a pack| 00000600 65 74 20 6c 61 79 65 72 20 77 68 65 6e 20 69 74 |et layer when it| 00000610 20 6e 65 65 64 73 20 74 6f 20 74 6f 20 68 61 6e | needs to to han| 00000620 64 6c 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 63 |dle a function c| 00000630 61 6c 6c 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f |all..</p>.<pre>/| 00000640 2f 20 43 72 65 61 74 65 20 61 20 70 61 63 6b 65 |/ Create a packe| 00000650 74 2c 20 62 75 74 20 64 6f 6e 26 23 33 39 3b 74 |t, but don't| 00000660 20 61 63 74 75 61 6c 6c 79 20 64 65 63 6f 64 65 | actually decode| 00000670 20 61 6e 79 74 68 69 6e 67 20 79 65 74 0a 70 61 | anything yet.pa| 00000680 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket| 00000690 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac| 000006a0 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.| 000006b0 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne| 000006c0 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 |t, gopacket.Lazy| 000006d0 29 0a 2f 2f 20 4e 6f 77 2c 20 64 65 63 6f 64 65 |).// Now, decode| 000006e0 20 74 68 65 20 70 61 63 6b 65 74 20 75 70 20 74 | the packet up t| 000006f0 6f 20 74 68 65 20 66 69 72 73 74 20 49 50 76 34 |o the first IPv4| 00000700 20 6c 61 79 65 72 20 66 6f 75 6e 64 20 62 75 74 | layer found but| 00000710 20 6e 6f 20 66 75 72 74 68 65 72 2e 0a 2f 2f 20 | no further..// | 00000720 49 66 20 6e 6f 20 49 50 76 34 20 6c 61 79 65 72 |If no IPv4 layer| 00000730 20 77 61 73 20 66 6f 75 6e 64 2c 20 74 68 65 20 | was found, the | 00000740 77 68 6f 6c 65 20 70 61 63 6b 65 74 20 77 69 6c |whole packet wil| 00000750 6c 20 62 65 20 64 65 63 6f 64 65 64 20 6c 6f 6f |l be decoded loo| 00000760 6b 69 6e 67 20 66 6f 72 0a 2f 2f 20 69 74 2e 0a |king for.// it..| 00000770 69 70 34 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 |ip4 := packet.La| 00000780 79 65 72 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 |yer(layers.Layer| 00000790 54 79 70 65 49 50 76 34 29 0a 2f 2f 20 44 65 63 |TypeIPv4).// Dec| 000007a0 6f 64 65 20 61 6c 6c 20 6c 61 79 65 72 73 20 61 |ode all layers a| 000007b0 6e 64 20 72 65 74 75 72 6e 20 74 68 65 6d 2e 20 |nd return them. | 000007c0 20 54 68 65 20 6c 61 79 65 72 73 20 75 70 20 74 | The layers up t| 000007d0 6f 20 74 68 65 20 66 69 72 73 74 20 49 50 76 34 |o the first IPv4| 000007e0 20 6c 61 79 65 72 0a 2f 2f 20 61 72 65 20 61 6c | layer.// are al| 000007f0 72 65 61 64 79 20 64 65 63 6f 64 65 64 2c 20 61 |ready decoded, a| 00000800 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 72 65 71 75 |nd will not requ| 00000810 69 72 65 20 64 65 63 6f 64 69 6e 67 20 61 20 73 |ire decoding a s| 00000820 65 63 6f 6e 64 20 74 69 6d 65 2e 0a 6c 61 79 65 |econd time..laye| 00000830 72 73 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 |rs := packet.Lay| 00000840 65 72 73 28 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e |ers().</pre>.<p>| 00000850 0a 4c 61 7a 69 6c 79 2d 64 65 63 6f 64 65 64 20 |.Lazily-decoded | 00000860 70 61 63 6b 65 74 73 20 61 72 65 20 6e 6f 74 20 |packets are not | 00000870 63 6f 6e 63 75 72 72 65 6e 63 79 2d 73 61 66 65 |concurrency-safe| 00000880 2e 20 20 53 69 6e 63 65 20 6c 61 79 65 72 73 20 |. Since layers | 00000890 68 61 76 65 20 6e 6f 74 20 61 6c 6c 20 62 65 65 |have not all bee| 000008a0 6e 0a 64 65 63 6f 64 65 64 2c 20 65 61 63 68 20 |n.decoded, each | 000008b0 63 61 6c 6c 20 74 6f 20 4c 61 79 65 72 28 29 20 |call to Layer() | 000008c0 6f 72 20 4c 61 79 65 72 73 28 29 20 68 61 73 20 |or Layers() has | 000008d0 74 68 65 20 70 6f 74 65 6e 74 69 61 6c 20 74 6f |the potential to| 000008e0 20 6d 75 74 61 74 65 20 74 68 65 20 70 61 63 6b | mutate the pack| 000008f0 65 74 0a 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 |et.in order to d| 00000900 65 63 6f 64 65 20 74 68 65 20 6e 65 78 74 20 6c |ecode the next l| 00000910 61 79 65 72 2e 20 20 49 66 20 61 20 70 61 63 6b |ayer. If a pack| 00000920 65 74 20 69 73 20 75 73 65 64 0a 69 6e 20 6d 75 |et is used.in mu| 00000930 6c 74 69 70 6c 65 20 67 6f 72 6f 75 74 69 6e 65 |ltiple goroutine| 00000940 73 20 63 6f 6e 63 75 72 72 65 6e 74 6c 79 2c 20 |s concurrently, | 00000950 64 6f 6e 26 23 33 39 3b 74 20 75 73 65 20 67 6f |don't use go| 00000960 70 61 63 6b 65 74 2e 4c 61 7a 79 2e 20 20 54 68 |packet.Lazy. Th| 00000970 65 6e 20 67 6f 70 61 63 6b 65 74 0a 77 69 6c 6c |en gopacket.will| 00000980 20 64 65 63 6f 64 65 20 74 68 65 20 70 61 63 6b | decode the pack| 00000990 65 74 20 66 75 6c 6c 79 2c 20 61 6e 64 20 61 6c |et fully, and al| 000009a0 6c 20 66 75 74 75 72 65 20 66 75 6e 63 74 69 6f |l future functio| 000009b0 6e 20 63 61 6c 6c 73 20 77 6f 6e 26 23 33 39 3b |n calls won'| 000009c0 74 20 6d 75 74 61 74 65 20 74 68 65 0a 6f 62 6a |t mutate the.obj| 000009d0 65 63 74 2e 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 |ect..</p>.<h3 id| 000009e0 3d 22 4e 6f 43 6f 70 79 5f 44 65 63 6f 64 69 6e |="NoCopy_Decodin| 000009f0 67 22 3e 4e 6f 43 6f 70 79 20 44 65 63 6f 64 69 |g">NoCopy Decodi| 00000a00 6e 67 3c 2f 68 33 3e 0a 3c 70 3e 0a 42 79 20 64 |ng</h3>.<p>.By d| 00000a10 65 66 61 75 6c 74 2c 20 67 6f 70 61 63 6b 65 74 |efault, gopacket| 00000a20 20 77 69 6c 6c 20 63 6f 70 79 20 74 68 65 20 73 | will copy the s| 00000a30 6c 69 63 65 20 70 61 73 73 65 64 20 74 6f 20 4e |lice passed to N| 00000a40 65 77 50 61 63 6b 65 74 20 61 6e 64 20 73 74 6f |ewPacket and sto| 00000a50 72 65 20 74 68 65 0a 63 6f 70 79 20 77 69 74 68 |re the.copy with| 00000a60 69 6e 20 74 68 65 20 70 61 63 6b 65 74 2c 20 73 |in the packet, s| 00000a70 6f 20 66 75 74 75 72 65 20 6d 75 74 61 74 69 6f |o future mutatio| 00000a80 6e 73 20 74 6f 20 74 68 65 20 62 79 74 65 73 20 |ns to the bytes | 00000a90 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 73 |underlying the s| 00000aa0 6c 69 63 65 0a 64 6f 6e 26 23 33 39 3b 74 20 61 |lice.don't a| 00000ab0 66 66 65 63 74 20 74 68 65 20 70 61 63 6b 65 74 |ffect the packet| 00000ac0 20 61 6e 64 20 69 74 73 20 6c 61 79 65 72 73 2e | and its layers.| 00000ad0 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 61 | If you can gua| 00000ae0 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 0a |rantee that the.| 00000af0 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 65 |underlying slice| 00000b00 20 62 79 74 65 73 20 77 6f 6e 26 23 33 39 3b 74 | bytes won't| 00000b10 20 62 65 20 63 68 61 6e 67 65 64 2c 20 79 6f 75 | be changed, you| 00000b20 20 63 61 6e 20 75 73 65 20 4e 6f 43 6f 70 79 20 | can use NoCopy | 00000b30 74 6f 20 74 65 6c 6c 0a 67 6f 70 61 63 6b 65 74 |to tell.gopacket| 00000b40 2e 4e 65 77 50 61 63 6b 65 74 2c 20 61 6e 64 20 |.NewPacket, and | 00000b50 69 74 26 23 33 39 3b 6c 6c 20 75 73 65 20 74 68 |it'll use th| 00000b60 65 20 70 61 73 73 65 64 2d 69 6e 20 73 6c 69 63 |e passed-in slic| 00000b70 65 20 69 74 73 65 6c 66 2e 0a 3c 2f 70 3e 0a 3c |e itself..</p>.<| 00000b80 70 72 65 3e 2f 2f 20 54 68 69 73 20 63 68 61 6e |pre>// This chan| 00000b90 6e 65 6c 20 72 65 74 75 72 6e 73 20 6e 65 77 20 |nel returns new | 00000ba0 62 79 74 65 20 73 6c 69 63 65 73 2c 20 65 61 63 |byte slices, eac| 00000bb0 68 20 6f 66 20 77 68 69 63 68 20 70 6f 69 6e 74 |h of which point| 00000bc0 73 20 74 6f 20 61 20 6e 65 77 0a 2f 2f 20 6d 65 |s to a new.// me| 00000bd0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74 68 |mory location th| 00000be0 61 74 26 23 33 39 3b 73 20 67 75 61 72 61 6e 74 |at's guarant| 00000bf0 65 65 64 20 69 6d 6d 75 74 61 62 6c 65 20 66 6f |eed immutable fo| 00000c00 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f |r the duration o| 00000c10 66 20 74 68 65 0a 2f 2f 20 70 61 63 6b 65 74 2e |f the.// packet.| 00000c20 0a 66 6f 72 20 64 61 74 61 20 3a 3d 20 72 61 6e |.for data := ran| 00000c30 67 65 20 6d 79 42 79 74 65 53 6c 69 63 65 43 68 |ge myByteSliceCh| 00000c40 61 6e 6e 65 6c 20 7b 0a 20 20 70 20 3a 3d 20 67 |annel {. p := g| 00000c50 6f 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 |opacket.NewPacke| 00000c60 74 28 64 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c |t(data, layers.L| 00000c70 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 74 |ayerTypeEthernet| 00000c80 2c 20 67 6f 70 61 63 6b 65 74 2e 4e 6f 43 6f 70 |, gopacket.NoCop| 00000c90 79 29 0a 20 20 64 6f 53 6f 6d 65 74 68 69 6e 67 |y). doSomething| 00000ca0 57 69 74 68 50 61 63 6b 65 74 28 70 29 0a 7d 0a |WithPacket(p).}.| 00000cb0 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 54 68 65 20 66 |</pre>.<p>.The f| 00000cc0 61 73 74 65 73 74 20 6d 65 74 68 6f 64 20 6f 66 |astest method of| 00000cd0 20 64 65 63 6f 64 69 6e 67 20 69 73 20 74 6f 20 | decoding is to | 00000ce0 75 73 65 20 62 6f 74 68 20 4c 61 7a 79 20 61 6e |use both Lazy an| 00000cf0 64 20 4e 6f 43 6f 70 79 2c 20 62 75 74 20 6e 6f |d NoCopy, but no| 00000d00 74 65 20 66 72 6f 6d 0a 74 68 65 20 6d 61 6e 79 |te from.the many| 00000d10 20 63 61 76 65 61 74 73 20 61 62 6f 76 65 20 74 | caveats above t| 00000d20 68 61 74 20 66 6f 72 20 73 6f 6d 65 20 69 6d 70 |hat for some imp| 00000d30 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68 65 |lementations the| 00000d40 79 20 6d 61 79 20 62 65 20 64 61 6e 67 65 72 6f |y may be dangero| 00000d50 75 73 0a 65 69 74 68 65 72 20 6f 72 20 62 6f 74 |us.either or bot| 00000d60 68 20 6d 61 79 20 62 65 20 64 61 6e 67 65 72 6f |h may be dangero| 00000d70 75 73 2e 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d |us..</p>.<h3 id=| 00000d80 22 50 6f 69 6e 74 65 72 73 5f 54 6f 5f 4b 6e 6f |"Pointers_To_Kno| 00000d90 77 6e 5f 4c 61 79 65 72 73 22 3e 50 6f 69 6e 74 |wn_Layers">Point| 00000da0 65 72 73 20 54 6f 20 4b 6e 6f 77 6e 20 4c 61 79 |ers To Known Lay| 00000db0 65 72 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 44 75 72 |ers</h3>.<p>.Dur| 00000dc0 69 6e 67 20 64 65 63 6f 64 69 6e 67 2c 20 63 65 |ing decoding, ce| 00000dd0 72 74 61 69 6e 20 6c 61 79 65 72 73 20 61 72 65 |rtain layers are| 00000de0 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 70 | stored in the p| 00000df0 61 63 6b 65 74 20 61 73 20 77 65 6c 6c 2d 6b 6e |acket as well-kn| 00000e00 6f 77 6e 0a 6c 61 79 65 72 20 74 79 70 65 73 2e |own.layer types.| 00000e10 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 49 | For example, I| 00000e20 50 76 34 20 61 6e 64 20 49 50 76 36 20 61 72 65 |Pv4 and IPv6 are| 00000e30 20 62 6f 74 68 20 63 6f 6e 73 69 64 65 72 65 64 | both considered| 00000e40 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 0a 6c 61 | NetworkLayer.la| 00000e50 79 65 72 73 2c 20 77 68 69 6c 65 20 54 43 50 20 |yers, while TCP | 00000e60 61 6e 64 20 55 44 50 20 61 72 65 20 62 6f 74 68 |and UDP are both| 00000e70 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 | TransportLayer | 00000e80 6c 61 79 65 72 73 2e 20 20 57 65 20 73 75 70 70 |layers. We supp| 00000e90 6f 72 74 20 34 0a 6c 61 79 65 72 73 2c 20 63 6f |ort 4.layers, co| 00000ea0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 |rresponding to t| 00000eb0 68 65 20 34 20 6c 61 79 65 72 73 20 6f 66 20 74 |he 4 layers of t| 00000ec0 68 65 20 54 43 50 2f 49 50 20 6c 61 79 65 72 69 |he TCP/IP layeri| 00000ed0 6e 67 20 73 63 68 65 6d 65 20 28 72 6f 75 67 68 |ng scheme (rough| 00000ee0 6c 79 0a 61 6e 61 67 61 6c 6f 75 73 20 74 6f 20 |ly.anagalous to | 00000ef0 6c 61 79 65 72 73 20 32 2c 20 33 2c 20 34 2c 20 |layers 2, 3, 4, | 00000f00 61 6e 64 20 37 20 6f 66 20 74 68 65 20 4f 53 49 |and 7 of the OSI| 00000f10 20 6d 6f 64 65 6c 29 2e 20 20 54 6f 20 61 63 63 | model). To acc| 00000f20 65 73 73 20 74 68 65 73 65 2c 0a 79 6f 75 20 63 |ess these,.you c| 00000f30 61 6e 20 75 73 65 20 74 68 65 20 70 61 63 6b 65 |an use the packe| 00000f40 74 2e 4c 69 6e 6b 4c 61 79 65 72 2c 20 70 61 63 |t.LinkLayer, pac| 00000f50 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer| 00000f60 2c 0a 70 61 63 6b 65 74 2e 54 72 61 6e 73 70 6f |,.packet.Transpo| 00000f70 72 74 4c 61 79 65 72 2c 20 61 6e 64 20 70 61 63 |rtLayer, and pac| 00000f80 6b 65 74 2e 41 70 70 6c 69 63 61 74 69 6f 6e 4c |ket.ApplicationL| 00000f90 61 79 65 72 20 66 75 6e 63 74 69 6f 6e 73 2e 20 |ayer functions. | 00000fa0 20 45 61 63 68 20 6f 66 0a 74 68 65 73 65 20 66 | Each of.these f| 00000fb0 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 73 |unctions returns| 00000fc0 20 61 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 | a corresponding| 00000fd0 20 69 6e 74 65 72 66 61 63 65 0a 28 67 6f 70 61 | interface.(gopa| 00000fe0 63 6b 65 74 2e 7b 4c 69 6e 6b 2c 4e 65 74 77 6f |cket.{Link,Netwo| 00000ff0 72 6b 2c 54 72 61 6e 73 70 6f 72 74 2c 41 70 70 |rk,Transport,App| 00001000 6c 69 63 61 74 69 6f 6e 7d 4c 61 79 65 72 29 2e |lication}Layer).| 00001010 20 20 54 68 65 20 66 69 72 73 74 20 74 68 72 65 | The first thre| 00001020 65 0a 70 72 6f 76 69 64 65 20 6d 65 74 68 6f 64 |e.provide method| 00001030 73 20 66 6f 72 20 67 65 74 74 69 6e 67 20 73 72 |s for getting sr| 00001040 63 2f 64 73 74 20 61 64 64 72 65 73 73 65 73 20 |c/dst addresses | 00001050 66 6f 72 20 74 68 61 74 20 70 61 72 74 69 63 75 |for that particu| 00001060 6c 61 72 20 6c 61 79 65 72 2c 0a 77 68 69 6c 65 |lar layer,.while| 00001070 20 74 68 65 20 66 69 6e 61 6c 20 6c 61 79 65 72 | the final layer| 00001080 20 70 72 6f 76 69 64 65 73 20 61 20 50 61 79 6c | provides a Payl| 00001090 6f 61 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 |oad function to | 000010a0 67 65 74 20 70 61 79 6c 6f 61 64 20 64 61 74 61 |get payload data| 000010b0 2e 0a 54 68 69 73 20 69 73 20 68 65 6c 70 66 75 |..This is helpfu| 000010c0 6c 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 |l, for example, | 000010d0 74 6f 20 67 65 74 20 70 61 79 6c 6f 61 64 73 20 |to get payloads | 000010e0 66 6f 72 20 61 6c 6c 20 70 61 63 6b 65 74 73 20 |for all packets | 000010f0 72 65 67 61 72 64 6c 65 73 73 0a 6f 66 20 74 68 |regardless.of th| 00001100 65 69 72 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 |eir underlying d| 00001110 61 74 61 20 74 79 70 65 3a 0a 3c 2f 70 3e 0a 3c |ata type:.</p>.<| 00001120 70 72 65 3e 2f 2f 20 47 65 74 20 70 61 63 6b 65 |pre>// Get packe| 00001130 74 73 20 66 72 6f 6d 20 73 6f 6d 65 20 73 6f 75 |ts from some sou| 00001140 72 63 65 0a 66 6f 72 20 70 61 63 6b 65 74 20 3a |rce.for packet :| 00001150 3d 20 72 61 6e 67 65 20 73 6f 6d 65 53 6f 75 72 |= range someSour| 00001160 63 65 20 7b 0a 20 20 69 66 20 61 70 70 20 3a 3d |ce {. if app :=| 00001170 20 70 61 63 6b 65 74 2e 41 70 70 6c 69 63 61 74 | packet.Applicat| 00001180 69 6f 6e 4c 61 79 65 72 28 29 3b 20 61 70 70 20 |ionLayer(); app | 00001190 21 3d 20 6e 69 6c 20 7b 0a 20 20 20 20 69 66 20 |!= nil {. if | 000011a0 73 74 72 69 6e 67 73 2e 43 6f 6e 74 61 69 6e 73 |strings.Contains| 000011b0 28 73 74 72 69 6e 67 28 61 70 70 2e 50 61 79 6c |(string(app.Payl| 000011c0 6f 61 64 28 29 29 2c 20 26 23 33 34 3b 6d 61 67 |oad()), "mag| 000011d0 69 63 20 73 74 72 69 6e 67 26 23 33 34 3b 29 20 |ic string") | 000011e0 7b 0a 20 20 20 20 20 20 66 6d 74 2e 50 72 69 6e |{. fmt.Prin| 000011f0 74 6c 6e 28 26 23 33 34 3b 46 6f 75 6e 64 20 6d |tln("Found m| 00001200 61 67 69 63 20 73 74 72 69 6e 67 20 69 6e 20 61 |agic string in a| 00001210 20 70 61 63 6b 65 74 21 26 23 33 34 3b 29 0a 20 | packet!"). | 00001220 20 20 20 7d 0a 20 20 7d 0a 7d 0a 3c 2f 70 72 65 | }. }.}.</pre| 00001230 3e 0a 3c 70 3e 0a 41 20 70 61 72 74 69 63 75 6c |>.<p>.A particul| 00001240 61 72 6c 79 20 75 73 65 66 75 6c 20 6c 61 79 65 |arly useful laye| 00001250 72 20 69 73 20 45 72 72 6f 72 4c 61 79 65 72 2c |r is ErrorLayer,| 00001260 20 77 68 69 63 68 20 69 73 20 73 65 74 20 77 68 | which is set wh| 00001270 65 6e 65 76 65 72 20 74 68 65 72 65 26 23 33 39 |enever there'| 00001280 3b 73 0a 61 6e 20 65 72 72 6f 72 20 70 61 72 73 |;s.an error pars| 00001290 69 6e 67 20 70 61 72 74 20 6f 66 20 74 68 65 20 |ing part of the | 000012a0 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 3c 70 72 |packet..</p>.<pr| 000012b0 65 3e 70 61 63 6b 65 74 20 3a 3d 20 67 6f 70 61 |e>packet := gopa| 000012c0 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 6d |cket.NewPacket(m| 000012d0 79 50 61 63 6b 65 74 44 61 74 61 2c 20 6c 61 79 |yPacketData, lay| 000012e0 65 72 73 2e 4c 61 79 65 72 54 79 70 65 45 74 68 |ers.LayerTypeEth| 000012f0 65 72 6e 65 74 2c 20 67 6f 70 61 63 6b 65 74 2e |ernet, gopacket.| 00001300 44 65 66 61 75 6c 74 29 0a 69 66 20 65 72 72 20 |Default).if err | 00001310 3a 3d 20 70 61 63 6b 65 74 2e 45 72 72 6f 72 4c |:= packet.ErrorL| 00001320 61 79 65 72 28 29 3b 20 65 72 72 20 21 3d 20 6e |ayer(); err != n| 00001330 69 6c 20 7b 0a 20 20 66 6d 74 2e 50 72 69 6e 74 |il {. fmt.Print| 00001340 6c 6e 28 26 23 33 34 3b 45 72 72 6f 72 20 64 65 |ln("Error de| 00001350 63 6f 64 69 6e 67 20 73 6f 6d 65 20 70 61 72 74 |coding some part| 00001360 20 6f 66 20 74 68 65 20 70 61 63 6b 65 74 3a 26 | of the packet:&| 00001370 23 33 34 3b 2c 20 65 72 72 29 0a 7d 0a 3c 2f 70 |#34;, err).}.</p| 00001380 72 65 3e 0a 3c 70 3e 0a 4e 6f 74 65 20 74 68 61 |re>.<p>.Note tha| 00001390 74 20 77 65 20 64 6f 6e 26 23 33 39 3b 74 20 72 |t we don't r| 000013a0 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72 20 66 |eturn an error f| 000013b0 72 6f 6d 20 4e 65 77 50 61 63 6b 65 74 20 62 65 |rom NewPacket be| 000013c0 63 61 75 73 65 20 77 65 20 6d 61 79 20 68 61 76 |cause we may hav| 000013d0 65 20 64 65 63 6f 64 65 64 0a 61 20 6e 75 6d 62 |e decoded.a numb| 000013e0 65 72 20 6f 66 20 6c 61 79 65 72 73 20 73 75 63 |er of layers suc| 000013f0 63 65 73 73 66 75 6c 6c 79 20 62 65 66 6f 72 65 |cessfully before| 00001400 20 72 75 6e 6e 69 6e 67 20 69 6e 74 6f 20 6f 75 | running into ou| 00001410 72 20 65 72 72 6f 6e 65 6f 75 73 20 6c 61 79 65 |r erroneous laye| 00001420 72 2e 20 20 59 6f 75 0a 6d 61 79 20 73 74 69 6c |r. You.may stil| 00001430 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 67 65 74 |l be able to get| 00001440 20 79 6f 75 72 20 45 74 68 65 72 6e 65 74 20 61 | your Ethernet a| 00001450 6e 64 20 49 50 76 34 20 6c 61 79 65 72 73 20 63 |nd IPv4 layers c| 00001460 6f 72 72 65 63 74 6c 79 2c 20 65 76 65 6e 20 69 |orrectly, even i| 00001470 66 0a 79 6f 75 72 20 54 43 50 20 6c 61 79 65 72 |f.your TCP layer| 00001480 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 2e 0a 3c | is malformed..<| 00001490 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 46 6c 6f 77 |/p>.<h3 id="Flow| 000014a0 5f 41 6e 64 5f 45 6e 64 70 6f 69 6e 74 22 3e 46 |_And_Endpoint">F| 000014b0 6c 6f 77 20 41 6e 64 20 45 6e 64 70 6f 69 6e 74 |low And Endpoint| 000014c0 3c 2f 68 33 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b |</h3>.<p>.gopack| 000014d0 65 74 20 68 61 73 20 74 77 6f 20 75 73 65 66 75 |et has two usefu| 000014e0 6c 20 6f 62 6a 65 63 74 73 2c 20 46 6c 6f 77 20 |l objects, Flow | 000014f0 61 6e 64 20 45 6e 64 70 6f 69 6e 74 2c 20 66 6f |and Endpoint, fo| 00001500 72 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6e 67 20 |r communicating | 00001510 69 6e 20 61 20 70 72 6f 74 6f 63 6f 6c 0a 69 6e |in a protocol.in| 00001520 64 65 70 65 6e 64 65 6e 74 20 6d 61 6e 6e 65 72 |dependent manner| 00001530 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 61 | the fact that a| 00001540 20 70 61 63 6b 65 74 20 69 73 20 63 6f 6d 69 6e | packet is comin| 00001550 67 20 66 72 6f 6d 20 41 20 61 6e 64 20 67 6f 69 |g from A and goi| 00001560 6e 67 20 74 6f 20 42 2e 0a 54 68 65 20 67 65 6e |ng to B..The gen| 00001570 65 72 61 6c 20 6c 61 79 65 72 20 74 79 70 65 73 |eral layer types| 00001580 20 4c 69 6e 6b 4c 61 79 65 72 2c 20 4e 65 74 77 | LinkLayer, Netw| 00001590 6f 72 6b 4c 61 79 65 72 2c 20 61 6e 64 20 54 72 |orkLayer, and Tr| 000015a0 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 61 6c 6c |ansportLayer all| 000015b0 20 70 72 6f 76 69 64 65 0a 6d 65 74 68 6f 64 73 | provide.methods| 000015c0 20 66 6f 72 20 65 78 74 72 61 63 74 69 6e 67 20 | for extracting | 000015d0 74 68 65 69 72 20 66 6c 6f 77 20 69 6e 66 6f 72 |their flow infor| 000015e0 6d 61 74 69 6f 6e 2c 20 77 69 74 68 6f 75 74 20 |mation, without | 000015f0 77 6f 72 72 79 69 6e 67 20 61 62 6f 75 74 20 74 |worrying about t| 00001600 68 65 20 74 79 70 65 0a 6f 66 20 74 68 65 20 75 |he type.of the u| 00001610 6e 64 65 72 6c 79 69 6e 67 20 4c 61 79 65 72 2e |nderlying Layer.| 00001620 0a 3c 2f 70 3e 0a 3c 70 3e 0a 41 20 46 6c 6f 77 |.</p>.<p>.A Flow| 00001630 20 69 73 20 61 20 73 69 6d 70 6c 65 20 6f 62 6a | is a simple obj| 00001640 65 63 74 20 6d 61 64 65 20 75 70 20 6f 66 20 61 |ect made up of a| 00001650 20 73 65 74 20 6f 66 20 74 77 6f 20 45 6e 64 70 | set of two Endp| 00001660 6f 69 6e 74 73 2c 20 6f 6e 65 20 73 6f 75 72 63 |oints, one sourc| 00001670 65 20 61 6e 64 20 6f 6e 65 0a 64 65 73 74 69 6e |e and one.destin| 00001680 61 74 69 6f 6e 2e 20 20 49 74 20 64 65 74 61 69 |ation. It detai| 00001690 6c 73 20 74 68 65 20 73 65 6e 64 65 72 20 61 6e |ls the sender an| 000016a0 64 20 72 65 63 65 69 76 65 72 20 6f 66 20 74 68 |d receiver of th| 000016b0 65 20 4c 61 79 65 72 20 6f 66 20 74 68 65 20 50 |e Layer of the P| 000016c0 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 3c 70 3e 0a |acket..</p>.<p>.| 000016d0 41 6e 20 45 6e 64 70 6f 69 6e 74 20 69 73 20 61 |An Endpoint is a| 000016e0 20 68 61 73 68 61 62 6c 65 20 72 65 70 72 65 73 | hashable repres| 000016f0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 73 6f |entation of a so| 00001700 75 72 63 65 20 6f 72 20 64 65 73 74 69 6e 61 74 |urce or destinat| 00001710 69 6f 6e 2e 20 20 46 6f 72 0a 65 78 61 6d 70 6c |ion. For.exampl| 00001720 65 2c 20 66 6f 72 20 4c 61 79 65 72 54 79 70 65 |e, for LayerType| 00001730 49 50 76 34 2c 20 61 6e 20 45 6e 64 70 6f 69 6e |IPv4, an Endpoin| 00001740 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 49 |t contains the I| 00001750 50 20 61 64 64 72 65 73 73 20 62 79 74 65 73 20 |P address bytes | 00001760 66 6f 72 20 61 20 76 34 0a 49 50 20 70 61 63 6b |for a v4.IP pack| 00001770 65 74 2e 20 20 41 20 46 6c 6f 77 20 63 61 6e 20 |et. A Flow can | 00001780 62 65 20 62 72 6f 6b 65 6e 20 69 6e 74 6f 20 45 |be broken into E| 00001790 6e 64 70 6f 69 6e 74 73 2c 20 61 6e 64 20 45 6e |ndpoints, and En| 000017a0 64 70 6f 69 6e 74 73 20 63 61 6e 20 62 65 20 63 |dpoints can be c| 000017b0 6f 6d 62 69 6e 65 64 0a 69 6e 74 6f 20 46 6c 6f |ombined.into Flo| 000017c0 77 73 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 |ws:.</p>.<pre>pa| 000017d0 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket| 000017e0 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac| 000017f0 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.| 00001800 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne| 00001810 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 |t, gopacket.Lazy| 00001820 29 0a 6e 65 74 46 6c 6f 77 20 3a 3d 20 70 61 63 |).netFlow := pac| 00001830 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer| 00001840 28 29 2e 4e 65 74 77 6f 72 6b 46 6c 6f 77 28 29 |().NetworkFlow()| 00001850 0a 73 72 63 2c 20 64 73 74 20 3a 3d 20 6e 65 74 |.src, dst := net| 00001860 46 6c 6f 77 2e 45 6e 64 70 6f 69 6e 74 73 28 29 |Flow.Endpoints()| 00001870 0a 72 65 76 65 72 73 65 46 6c 6f 77 20 3a 3d 20 |.reverseFlow := | 00001880 67 6f 70 61 63 6b 65 74 2e 4e 65 77 46 6c 6f 77 |gopacket.NewFlow| 00001890 28 64 73 74 2c 20 73 72 63 29 0a 3c 2f 70 72 65 |(dst, src).</pre| 000018a0 3e 0a 3c 70 3e 0a 42 6f 74 68 20 45 6e 64 70 6f |>.<p>.Both Endpo| 000018b0 69 6e 74 20 61 6e 64 20 46 6c 6f 77 20 6f 62 6a |int and Flow obj| 000018c0 65 63 74 73 20 63 61 6e 20 62 65 20 75 73 65 64 |ects can be used| 000018d0 20 61 73 20 6d 61 70 20 6b 65 79 73 2c 20 61 6e | as map keys, an| 000018e0 64 20 74 68 65 20 65 71 75 61 6c 69 74 79 0a 6f |d the equality.o| 000018f0 70 65 72 61 74 6f 72 20 63 61 6e 20 63 6f 6d 70 |perator can comp| 00001900 61 72 65 20 74 68 65 6d 2c 20 73 6f 20 79 6f 75 |are them, so you| 00001910 20 63 61 6e 20 65 61 73 69 6c 79 20 67 72 6f 75 | can easily grou| 00001920 70 20 74 6f 67 65 74 68 65 72 20 61 6c 6c 20 70 |p together all p| 00001930 61 63 6b 65 74 73 0a 62 61 73 65 64 20 6f 6e 20 |ackets.based on | 00001940 65 6e 64 70 6f 69 6e 74 20 63 72 69 74 65 72 69 |endpoint criteri| 00001950 61 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 66 6c 6f |a:.</p>.<pre>flo| 00001960 77 73 20 3a 3d 20 6d 61 70 5b 67 6f 70 61 63 6b |ws := map[gopack| 00001970 65 74 2e 45 6e 64 70 6f 69 6e 74 5d 63 68 61 6e |et.Endpoint]chan| 00001980 20 67 6f 70 61 63 6b 65 74 2e 50 61 63 6b 65 74 | gopacket.Packet| 00001990 0a 70 61 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 |.packet := gopac| 000019a0 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 |ket.NewPacket(my| 000019b0 50 61 63 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 |PacketData, laye| 000019c0 72 73 2e 4c 61 79 65 72 54 79 70 65 45 74 68 65 |rs.LayerTypeEthe| 000019d0 72 6e 65 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c |rnet, gopacket.L| 000019e0 61 7a 79 29 0a 2f 2f 20 53 65 6e 64 20 61 6c 6c |azy).// Send all| 000019f0 20 54 43 50 20 70 61 63 6b 65 74 73 20 74 6f 20 | TCP packets to | 00001a00 63 68 61 6e 6e 65 6c 73 20 62 61 73 65 64 20 6f |channels based o| 00001a10 6e 20 74 68 65 69 72 20 64 65 73 74 69 6e 61 74 |n their destinat| 00001a20 69 6f 6e 20 70 6f 72 74 2e 0a 69 66 20 74 63 70 |ion port..if tcp| 00001a30 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 65 72 | := packet.Layer| 00001a40 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 |(layers.LayerTyp| 00001a50 65 54 43 50 29 3b 20 74 63 70 20 21 3d 20 6e 69 |eTCP); tcp != ni| 00001a60 6c 20 7b 0a 20 20 66 6c 6f 77 73 5b 74 63 70 2e |l {. flows[tcp.| 00001a70 54 72 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 2e |TransportFlow().| 00001a80 44 73 74 28 29 5d 20 26 6c 74 3b 2d 20 70 61 63 |Dst()] <- pac| 00001a90 6b 65 74 0a 7d 0a 2f 2f 20 4c 6f 6f 6b 20 66 6f |ket.}.// Look fo| 00001aa0 72 20 61 6c 6c 20 70 61 63 6b 65 74 73 20 77 69 |r all packets wi| 00001ab0 74 68 20 74 68 65 20 73 61 6d 65 20 73 6f 75 72 |th the same sour| 00001ac0 63 65 20 61 6e 64 20 64 65 73 74 69 6e 61 74 69 |ce and destinati| 00001ad0 6f 6e 20 6e 65 74 77 6f 72 6b 20 61 64 64 72 65 |on network addre| 00001ae0 73 73 0a 69 66 20 6e 65 74 20 3a 3d 20 70 61 63 |ss.if net := pac| 00001af0 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer| 00001b00 28 29 3b 20 6e 65 74 20 21 3d 20 6e 69 6c 20 7b |(); net != nil {| 00001b10 0a 20 20 73 72 63 2c 20 64 73 74 20 3a 3d 20 6e |. src, dst := n| 00001b20 65 74 2e 4e 65 74 77 6f 72 6b 46 6c 6f 77 28 29 |et.NetworkFlow()| 00001b30 2e 45 6e 64 70 6f 69 6e 74 73 28 29 0a 20 20 69 |.Endpoints(). i| 00001b40 66 20 73 72 63 20 3d 3d 20 64 73 74 20 7b 0a 20 |f src == dst {. | 00001b50 20 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 | fmt.Println(&| 00001b60 23 33 34 3b 46 69 73 68 79 20 70 61 63 6b 65 74 |#34;Fishy packet| 00001b70 20 68 61 73 20 73 61 6d 65 20 6e 65 74 77 6f 72 | has same networ| 00001b80 6b 20 73 6f 75 72 63 65 20 61 6e 64 20 64 73 74 |k source and dst| 00001b90 3a 20 25 73 26 23 33 34 3b 2c 20 73 72 63 29 0a |: %s", src).| 00001ba0 20 20 7d 0a 7d 0a 2f 2f 20 46 69 6e 64 20 61 6c | }.}.// Find al| 00001bb0 6c 20 70 61 63 6b 65 74 73 20 63 6f 6d 69 6e 67 |l packets coming| 00001bc0 20 66 72 6f 6d 20 55 44 50 20 70 6f 72 74 20 31 | from UDP port 1| 00001bd0 30 30 30 20 74 6f 20 55 44 50 20 70 6f 72 74 20 |000 to UDP port | 00001be0 35 30 30 0a 69 6e 74 65 72 65 73 74 69 6e 67 46 |500.interestingF| 00001bf0 6c 6f 77 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e |low := gopacket.| 00001c00 4e 65 77 46 6c 6f 77 28 6c 61 79 65 72 73 2e 4e |NewFlow(layers.N| 00001c10 65 77 55 44 50 50 6f 72 74 45 6e 64 70 6f 69 6e |ewUDPPortEndpoin| 00001c20 74 28 31 30 30 30 29 2c 20 6c 61 79 65 72 73 2e |t(1000), layers.| 00001c30 4e 65 77 55 44 50 50 6f 72 74 45 6e 64 70 6f 69 |NewUDPPortEndpoi| 00001c40 6e 74 28 35 30 30 29 29 0a 69 66 20 74 20 3a 3d |nt(500)).if t :=| 00001c50 20 70 61 63 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c | packet.NetworkL| 00001c60 61 79 65 72 28 29 3b 20 74 20 21 3d 20 6e 69 6c |ayer(); t != nil| 00001c70 20 26 61 6d 70 3b 26 61 6d 70 3b 20 74 2e 54 72 | && t.Tr| 00001c80 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 20 3d 3d |ansportFlow() ==| 00001c90 20 69 6e 74 65 72 65 73 74 69 6e 67 46 6c 6f 77 | interestingFlow| 00001ca0 20 7b 0a 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e | {. fmt.Println| 00001cb0 28 26 23 33 34 3b 46 6f 75 6e 64 20 74 68 61 74 |("Found that| 00001cc0 20 55 44 50 20 66 6c 6f 77 20 49 20 77 61 73 20 | UDP flow I was | 00001cd0 6c 6f 6f 6b 69 6e 67 20 66 6f 72 21 26 23 33 34 |looking for!"| 00001ce0 3b 29 0a 7d 0a 3c 2f 70 72 65 3e 0a 3c 68 33 20 |;).}.</pre>.<h3 | 00001cf0 69 64 3d 22 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 |id="Implementing| 00001d00 5f 59 6f 75 72 5f 4f 77 6e 5f 44 65 63 6f 64 65 |_Your_Own_Decode| 00001d10 72 22 3e 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 |r">Implementing | 00001d20 59 6f 75 72 20 4f 77 6e 20 44 65 63 6f 64 65 72 |Your Own Decoder| 00001d30 3c 2f 68 33 3e 0a 3c 70 3e 0a 49 66 20 79 6f 75 |</h3>.<p>.If you| 00001d40 72 20 6e 65 74 77 6f 72 6b 20 68 61 73 20 73 6f |r network has so| 00001d50 6d 65 20 73 74 72 61 6e 67 65 20 65 6e 63 61 70 |me strange encap| 00001d60 73 75 6c 61 74 69 6f 6e 2c 20 79 6f 75 20 63 61 |sulation, you ca| 00001d70 6e 20 69 6d 70 6c 65 6d 65 6e 74 20 79 6f 75 72 |n implement your| 00001d80 20 6f 77 6e 0a 64 65 63 6f 64 65 72 2e 20 20 49 | own.decoder. I| 00001d90 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 |n this example, | 00001da0 77 65 20 68 61 6e 64 6c 65 20 45 74 68 65 72 6e |we handle Ethern| 00001db0 65 74 20 70 61 63 6b 65 74 73 20 77 68 69 63 68 |et packets which| 00001dc0 20 61 72 65 20 65 6e 63 61 70 73 75 6c 61 74 65 | are encapsulate| 00001dd0 64 0a 69 6e 20 61 20 34 2d 62 79 74 65 20 68 65 |d.in a 4-byte he| 00001de0 61 64 65 72 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e |ader..</p>.<pre>| 00001df0 2f 2f 20 43 72 65 61 74 65 20 61 20 6c 61 79 65 |// Create a laye| 00001e00 72 20 74 79 70 65 2c 20 73 68 6f 75 6c 64 20 62 |r type, should b| 00001e10 65 20 75 6e 69 71 75 65 20 61 6e 64 20 68 69 67 |e unique and hig| 00001e20 68 2c 20 73 6f 20 69 74 20 64 6f 65 73 6e 26 23 |h, so it doesn&#| 00001e30 33 39 3b 74 20 63 6f 6e 66 6c 69 63 74 2c 0a 2f |39;t conflict,./| 00001e40 2f 20 67 69 76 69 6e 67 20 69 74 20 61 20 6e 61 |/ giving it a na| 00001e50 6d 65 20 61 6e 64 20 61 20 64 65 63 6f 64 65 72 |me and a decoder| 00001e60 20 74 6f 20 75 73 65 2e 0a 76 61 72 20 4d 79 4c | to use..var MyL| 00001e70 61 79 65 72 54 79 70 65 20 3d 20 67 6f 70 61 63 |ayerType = gopac| 00001e80 6b 65 74 2e 52 65 67 69 73 74 65 72 4c 61 79 65 |ket.RegisterLaye| 00001e90 72 54 79 70 65 28 31 32 33 34 35 2c 20 26 23 33 |rType(12345, | 00001ea0 34 3b 4d 79 4c 61 79 65 72 54 79 70 65 26 23 33 |4;MyLayerType| 00001eb0 34 3b 2c 20 67 6f 70 61 63 6b 65 74 2e 44 65 63 |4;, gopacket.Dec| 00001ec0 6f 64 65 46 75 6e 63 28 64 65 63 6f 64 65 4d 79 |odeFunc(decodeMy| 00001ed0 4c 61 79 65 72 29 29 0a 0a 2f 2f 20 49 6d 70 6c |Layer))..// Impl| 00001ee0 65 6d 65 6e 74 20 6d 79 20 6c 61 79 65 72 0a 74 |ement my layer.t| 00001ef0 79 70 65 20 4d 79 4c 61 79 65 72 20 73 74 72 75 |ype MyLayer stru| 00001f00 63 74 20 7b 0a 20 20 53 74 72 61 6e 67 65 48 65 |ct {. StrangeHe| 00001f10 61 64 65 72 20 5b 5d 62 79 74 65 0a 20 20 70 61 |ader []byte. pa| 00001f20 79 6c 6f 61 64 20 5b 5d 62 79 74 65 0a 7d 0a 66 |yload []byte.}.f| 00001f30 75 6e 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 |unc (m MyLayer) | 00001f40 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 65 |LayerType() Laye| 00001f50 72 54 79 70 65 20 7b 20 72 65 74 75 72 6e 20 4d |rType { return M| 00001f60 79 4c 61 79 65 72 54 79 70 65 20 7d 0a 66 75 6e |yLayerType }.fun| 00001f70 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 |c (m MyLayer) La| 00001f80 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d |yerContents() []| 00001f90 62 79 74 65 20 7b 20 72 65 74 75 72 6e 20 6d 2e |byte { return m.| 00001fa0 53 74 72 61 6e 67 65 48 65 61 64 65 72 20 7d 0a |StrangeHeader }.| 00001fb0 66 75 6e 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 |func (m MyLayer)| 00001fc0 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 | LayerPayload() | 00001fd0 5b 5d 62 79 74 65 20 7b 20 72 65 74 75 72 6e 20 |[]byte { return | 00001fe0 6d 2e 70 61 79 6c 6f 61 64 20 7d 0a 0a 2f 2f 20 |m.payload }..// | 00001ff0 4e 6f 77 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 |Now implement a | 00002000 64 65 63 6f 64 65 72 2e 2e 2e 20 74 68 69 73 20 |decoder... this | 00002010 6f 6e 65 20 73 74 72 69 70 73 20 6f 66 66 20 74 |one strips off t| 00002020 68 65 20 66 69 72 73 74 20 34 20 62 79 74 65 73 |he first 4 bytes| 00002030 20 6f 66 20 74 68 65 0a 2f 2f 20 70 61 63 6b 65 | of the.// packe| 00002040 74 2e 0a 66 75 6e 63 20 64 65 63 6f 64 65 4d 79 |t..func decodeMy| 00002050 4c 61 79 65 72 28 64 61 74 61 20 5b 5d 62 79 74 |Layer(data []byt| 00002060 65 2c 20 70 20 67 6f 70 61 63 6b 65 74 2e 50 61 |e, p gopacket.Pa| 00002070 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 |cketBuilder) err| 00002080 6f 72 20 7b 0a 20 20 2f 2f 20 43 72 65 61 74 65 |or {. // Create| 00002090 20 6d 79 20 6c 61 79 65 72 0a 20 20 70 2e 41 64 | my layer. p.Ad| 000020a0 64 4c 61 79 65 72 28 26 61 6d 70 3b 4d 79 4c 61 |dLayer(&MyLa| 000020b0 79 65 72 7b 64 61 74 61 5b 3a 34 5d 2c 20 64 61 |yer{data[:4], da| 000020c0 74 61 5b 34 3a 5d 7d 29 0a 20 20 2f 2f 20 44 65 |ta[4:]}). // De| 000020d0 74 65 72 6d 69 6e 65 20 68 6f 77 20 74 6f 20 68 |termine how to h| 000020e0 61 6e 64 6c 65 20 74 68 65 20 72 65 73 74 20 6f |andle the rest o| 000020f0 66 20 74 68 65 20 70 61 63 6b 65 74 0a 20 20 72 |f the packet. r| 00002100 65 74 75 72 6e 20 70 2e 4e 65 78 74 44 65 63 6f |eturn p.NextDeco| 00002110 64 65 72 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 |der(layers.Layer| 00002120 54 79 70 65 45 74 68 65 72 6e 65 74 29 0a 7d 0a |TypeEthernet).}.| 00002130 0a 2f 2f 20 46 69 6e 61 6c 6c 79 2c 20 64 65 63 |.// Finally, dec| 00002140 6f 64 65 20 79 6f 75 72 20 70 61 63 6b 65 74 73 |ode your packets| 00002150 3a 0a 70 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e |:.p := gopacket.| 00002160 4e 65 77 50 61 63 6b 65 74 28 64 61 74 61 2c 20 |NewPacket(data, | 00002170 4d 79 4c 61 79 65 72 54 79 70 65 2c 20 67 6f 70 |MyLayerType, gop| 00002180 61 63 6b 65 74 2e 4c 61 7a 79 29 0a 3c 2f 70 72 |acket.Lazy).</pr| 00002190 65 3e 0a 3c 70 3e 0a 53 65 65 20 74 68 65 20 64 |e>.<p>.See the d| 000021a0 6f 63 73 20 66 6f 72 20 44 65 63 6f 64 65 72 20 |ocs for Decoder | 000021b0 61 6e 64 20 50 61 63 6b 65 74 42 75 69 6c 64 65 |and PacketBuilde| 000021c0 72 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 |r for more detai| 000021d0 6c 73 20 6f 6e 20 68 6f 77 20 63 6f 64 69 6e 67 |ls on how coding| 000021e0 0a 64 65 63 6f 64 65 72 73 20 77 6f 72 6b 73 2c |.decoders works,| 000021f0 20 6f 72 20 6c 6f 6f 6b 20 61 74 20 52 65 67 69 | or look at Regi| 00002200 73 74 65 72 4c 61 79 65 72 54 79 70 65 20 61 6e |sterLayerType an| 00002210 64 20 52 65 67 69 73 74 65 72 45 6e 64 70 6f 69 |d RegisterEndpoi| 00002220 6e 74 54 79 70 65 20 74 6f 20 73 65 65 20 68 6f |ntType to see ho| 00002230 77 0a 74 6f 20 61 64 64 20 6c 61 79 65 72 2f 65 |w.to add layer/e| 00002240 6e 64 70 6f 69 6e 74 20 74 79 70 65 73 20 74 6f |ndpoint types to| 00002250 20 67 6f 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a | gopacket..</p>.| 00002260 0a 09 09 09 3c 2f 64 69 76 3e 0a 09 09 3c 2f 64 |....</div>...</d| 00002270 69 76 3e 0a 09 09 0a 09 0a 09 09 3c 68 32 20 69 |iv>........<h2 i| 00002280 64 3d 22 70 6b 67 2d 69 6e 64 65 78 22 3e 49 6e |d="pkg-index">In| 00002290 64 65 78 3c 2f 68 32 3e 0a 09 09 3c 21 2d 2d 20 |dex</h2>...<!-- | 000022a0 54 61 62 6c 65 20 6f 66 20 63 6f 6e 74 65 6e 74 |Table of content| 000022b0 73 20 66 6f 72 20 41 50 49 3b 20 6d 75 73 74 20 |s for API; must | 000022c0 62 65 20 6e 61 6d 65 64 20 6d 61 6e 75 61 6c 2d |be named manual-| 000022d0 6e 61 76 20 74 6f 20 74 75 72 6e 20 6f 66 66 20 |nav to turn off | 000022e0 61 75 74 6f 20 6e 61 76 2e 20 2d 2d 3e 0a 09 09 |auto nav. -->...| 000022f0 3c 64 69 76 20 69 64 3d 22 6d 61 6e 75 61 6c 2d |<div id="manual-| 00002300 6e 61 76 22 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 |nav">....<dl>...| 00002310 09 0a 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a| 00002320 20 68 72 65 66 3d 22 23 70 6b 67 2d 76 61 72 69 | href="#pkg-vari| 00002330 61 62 6c 65 73 22 3e 56 61 72 69 61 62 6c 65 73 |ables">Variables| 00002340 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 |</a></dd>.......| 00002350 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 00002360 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 41 70 70 |dd><a href="#App| 00002370 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 22 3e 74 |licationLayer">t| 00002380 79 70 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c |ype ApplicationL| 00002390 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ayer</a></dd>...| 000023a0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 000023b0 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href| 000023c0 3d 22 23 43 61 70 74 75 72 65 49 6e 66 6f 22 3e |="#CaptureInfo">| 000023d0 74 79 70 65 20 43 61 70 74 75 72 65 49 6e 66 6f |type CaptureInfo| 000023e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 000023f0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002400 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D| 00002410 65 63 6f 64 65 46 61 69 6c 75 72 65 22 3e 74 79 |ecodeFailure">ty| 00002420 70 65 20 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |pe DecodeFailure| 00002430 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00002440 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002450 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002460 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod| 00002470 65 46 61 69 6c 75 72 65 2e 45 72 72 6f 72 22 3e |eFailure.Error">| 00002480 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 |func (d *DecodeF| 00002490 61 69 6c 75 72 65 29 20 45 72 72 6f 72 28 29 20 |ailure) Error() | 000024a0 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..| 000024b0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 000024c0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 000024d0 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod| 000024e0 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 43 6f |eFailure.LayerCo| 000024f0 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 64 20 |ntents">func (d | 00002500 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) | 00002510 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 |LayerContents() | 00002520 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |[]byte</a></dd>.| 00002530 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 00002540 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 00002550 3b 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f |; <a href="#Deco| 00002560 64 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 50 |deFailure.LayerP| 00002570 61 79 6c 6f 61 64 22 3e 66 75 6e 63 20 28 64 20 |ayload">func (d | 00002580 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) | 00002590 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 5b |LayerPayload() [| 000025a0 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..| 000025b0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 000025c0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 000025d0 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod| 000025e0 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 54 79 |eFailure.LayerTy| 000025f0 70 65 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |pe">func (d *Dec| 00002600 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye| 00002610 72 54 79 70 65 28 29 20 4c 61 79 65 72 54 79 70 |rType() LayerTyp| 00002620 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......| 00002630 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00002640 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00002650 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai| 00002660 6c 75 72 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |lure.String">fun| 00002670 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c |c (d *DecodeFail| 00002680 75 72 65 29 20 53 74 72 69 6e 67 28 29 20 73 74 |ure) String() st| 00002690 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ring</a></dd>...| 000026a0 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................| 000026b0 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 |<dd><a href="#De| 000026c0 63 6f 64 65 46 75 6e 63 22 3e 74 79 70 65 20 44 |codeFunc">type D| 000026d0 65 63 6f 64 65 46 75 6e 63 3c 2f 61 3e 3c 2f 64 |ecodeFunc</a></d| 000026e0 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............| 000026f0 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs| 00002700 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre| 00002710 66 3d 22 23 44 65 63 6f 64 65 46 75 6e 63 2e 44 |f="#DecodeFunc.D| 00002720 65 63 6f 64 65 22 3e 66 75 6e 63 20 28 64 20 44 |ecode">func (d D| 00002730 65 63 6f 64 65 46 75 6e 63 29 20 44 65 63 6f 64 |ecodeFunc) Decod| 00002740 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 |e(data []byte, p| 00002750 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) | 00002760 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..| 00002770 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002780 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D| 00002790 65 63 6f 64 65 4f 70 74 69 6f 6e 73 22 3e 74 79 |ecodeOptions">ty| 000027a0 70 65 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |pe DecodeOptions| 000027b0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 000027c0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 000027d0 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D| 000027e0 65 63 6f 64 65 72 22 3e 74 79 70 65 20 44 65 63 |ecoder">type Dec| 000027f0 6f 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |oder</a></dd>...| 00002800 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 00002810 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href| 00002820 3d 22 23 45 6e 64 70 6f 69 6e 74 22 3e 74 79 70 |="#Endpoint">typ| 00002830 65 20 45 6e 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f |e Endpoint</a></| 00002840 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |dd>.............| 00002850 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &| 00002860 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#| 00002870 4e 65 77 45 6e 64 70 6f 69 6e 74 22 3e 66 75 6e |NewEndpoint">fun| 00002880 63 20 4e 65 77 45 6e 64 70 6f 69 6e 74 28 74 79 |c NewEndpoint(ty| 00002890 70 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 2c 20 |p EndpointType, | 000028a0 72 61 77 20 5b 5d 62 79 74 65 29 20 45 6e 64 70 |raw []byte) Endp| 000028b0 6f 69 6e 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |oint</a></dd>...| 000028c0 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |................| 000028d0 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 000028e0 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 |bsp; <a href="#E| 000028f0 6e 64 70 6f 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 |ndpoint.Endpoint| 00002900 54 79 70 65 22 3e 66 75 6e 63 20 28 65 20 45 6e |Type">func (e En| 00002910 64 70 6f 69 6e 74 29 20 45 6e 64 70 6f 69 6e 74 |dpoint) Endpoint| 00002920 54 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 |Type() EndpointT| 00002930 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ype</a></dd>....| 00002940 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd| 00002950 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <| 00002960 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e |a href="#Endpoin| 00002970 74 2e 4c 65 73 73 54 68 61 6e 22 3e 66 75 6e 63 |t.LessThan">func| 00002980 20 28 61 20 45 6e 64 70 6f 69 6e 74 29 20 4c 65 | (a Endpoint) Le| 00002990 73 73 54 68 61 6e 28 62 20 45 6e 64 70 6f 69 6e |ssThan(b Endpoin| 000029a0 74 29 20 62 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e |t) bool</a></dd>| 000029b0 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................| 000029c0 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs| 000029d0 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 |p; <a href="#End| 000029e0 70 6f 69 6e 74 2e 52 61 77 22 3e 66 75 6e 63 20 |point.Raw">func | 000029f0 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 52 61 77 |(e Endpoint) Raw| 00002a00 28 29 20 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 |() []byte</a></d| 00002a10 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00002a20 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00002a30 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 |bsp; <a href="#E| 00002a40 6e 64 70 6f 69 6e 74 2e 53 74 72 69 6e 67 22 3e |ndpoint.String">| 00002a50 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 |func (e Endpoint| 00002a60 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e |) String() strin| 00002a70 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |g</a></dd>......| 00002a80 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd| 00002a90 3e 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f |><a href="#Endpo| 00002aa0 69 6e 74 54 79 70 65 22 3e 74 79 70 65 20 45 6e |intType">type En| 00002ab0 64 70 6f 69 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f |dpointType</a></| 00002ac0 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |dd>.............| 00002ad0 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &| 00002ae0 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#| 00002af0 52 65 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 |RegisterEndpoint| 00002b00 54 79 70 65 22 3e 66 75 6e 63 20 52 65 67 69 73 |Type">func Regis| 00002b10 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 |terEndpointType(| 00002b20 6e 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 45 6e |num int, meta En| 00002b30 64 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 61 |dpointTypeMetada| 00002b40 74 61 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 |ta) EndpointType| 00002b50 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00002b60 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00002b70 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00002b80 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo| 00002b90 69 6e 74 54 79 70 65 2e 53 74 72 69 6e 67 22 3e |intType.String">| 00002ba0 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 |func (e Endpoint| 00002bb0 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 20 73 |Type) String() s| 00002bc0 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |tring</a></dd>..| 00002bd0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002be0 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 |.<dd><a href="#E| 00002bf0 6e 64 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 |ndpointTypeMetad| 00002c00 61 74 61 22 3e 74 79 70 65 20 45 6e 64 70 6f 69 |ata">type Endpoi| 00002c10 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 3c 2f |ntTypeMetadata</| 00002c20 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 00002c30 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 00002c40 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 |dd><a href="#Err| 00002c50 6f 72 4c 61 79 65 72 22 3e 74 79 70 65 20 45 72 |orLayer">type Er| 00002c60 72 6f 72 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 |rorLayer</a></dd| 00002c70 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a |>...............| 00002c80 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a | 00002c90 68 72 65 66 3d 22 23 46 6c 6f 77 22 3e 74 79 70 |href="#Flow">typ| 00002ca0 65 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a |e Flow</a></dd>.| 00002cb0 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 00002cc0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 00002cd0 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 |; <a href="#Flow| 00002ce0 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 22 3e 66 |FromEndpoints">f| 00002cf0 75 6e 63 20 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 |unc FlowFromEndp| 00002d00 6f 69 6e 74 73 28 73 72 63 2c 20 64 73 74 20 45 |oints(src, dst E| 00002d10 6e 64 70 6f 69 6e 74 29 20 28 5f 20 46 6c 6f 77 |ndpoint) (_ Flow| 00002d20 2c 20 65 72 72 20 65 72 72 6f 72 29 3c 2f 61 3e |, err error)</a>| 00002d30 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 |</dd>...........| 00002d40 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b |......<dd> | 00002d50 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d | <a href=| 00002d60 22 23 4e 65 77 46 6c 6f 77 22 3e 66 75 6e 63 20 |"#NewFlow">func | 00002d70 4e 65 77 46 6c 6f 77 28 74 20 45 6e 64 70 6f 69 |NewFlow(t Endpoi| 00002d80 6e 74 54 79 70 65 2c 20 73 72 63 2c 20 64 73 74 |ntType, src, dst| 00002d90 20 5b 5d 62 79 74 65 29 20 46 6c 6f 77 3c 2f 61 | []byte) Flow</a| 00002da0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........| 00002db0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00002dc0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00002dd0 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 44 73 74 | href="#Flow.Dst| 00002de0 22 3e 66 75 6e 63 20 28 66 20 46 6c 6f 77 29 20 |">func (f Flow) | 00002df0 44 73 74 28 29 20 28 64 73 74 20 45 6e 64 70 6f |Dst() (dst Endpo| 00002e00 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |int)</a></dd>...| 00002e10 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d| 00002e20 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> | 00002e30 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 45 |<a href="#Flow.E| 00002e40 6e 64 70 6f 69 6e 74 54 79 70 65 22 3e 66 75 6e |ndpointType">fun| 00002e50 63 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f |c (f Flow) Endpo| 00002e60 69 6e 74 54 79 70 65 28 29 20 45 6e 64 70 6f 69 |intType() Endpoi| 00002e70 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |ntType</a></dd>.| 00002e80 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 00002e90 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 00002ea0 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 |; <a href="#Flow| 00002eb0 2e 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 |.Endpoints">func| 00002ec0 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 | (f Flow) Endpoi| 00002ed0 6e 74 73 28 29 20 28 73 72 63 2c 20 64 73 74 20 |nts() (src, dst | 00002ee0 45 6e 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 |Endpoint)</a></d| 00002ef0 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00002f00 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00002f10 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 |bsp; <a href="#F| 00002f20 6c 6f 77 2e 52 65 76 65 72 73 65 22 3e 66 75 6e |low.Reverse">fun| 00002f30 63 20 28 66 20 46 6c 6f 77 29 20 52 65 76 65 72 |c (f Flow) Rever| 00002f40 73 65 28 29 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 |se() Flow</a></d| 00002f50 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00002f60 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00002f70 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 |bsp; <a href="#F| 00002f80 6c 6f 77 2e 53 72 63 22 3e 66 75 6e 63 20 28 66 |low.Src">func (f| 00002f90 20 46 6c 6f 77 29 20 53 72 63 28 29 20 28 73 72 | Flow) Src() (sr| 00002fa0 63 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c |c Endpoint)</a><| 00002fb0 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a |/dd>............| 00002fc0 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> | 00002fd0 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="| 00002fe0 23 46 6c 6f 77 2e 53 74 72 69 6e 67 22 3e 66 75 |#Flow.String">fu| 00002ff0 6e 63 20 28 66 20 46 6c 6f 77 29 20 53 74 72 69 |nc (f Flow) Stri| 00003000 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 61 3e 3c |ng() string</a><| 00003010 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 |/dd>............| 00003020 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr| 00003030 65 66 3d 22 23 4c 61 79 65 72 22 3e 74 79 70 65 |ef="#Layer">type| 00003040 20 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a | Layer</a></dd>.| 00003050 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 00003060 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr| 00003070 65 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 22 |ef="#LayerClass"| 00003080 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 |>type LayerClass| 00003090 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 000030a0 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n| 000030b0 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h| 000030c0 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 43 6c |ref="#NewLayerCl| 000030d0 61 73 73 22 3e 66 75 6e 63 20 4e 65 77 4c 61 79 |ass">func NewLay| 000030e0 65 72 43 6c 61 73 73 28 74 79 70 65 73 20 5b 5d |erClass(types []| 000030f0 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 65 72 |LayerType) Layer| 00003100 43 6c 61 73 73 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |Class</a></dd>..| 00003110 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00003120 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 |......<dd><a hre| 00003130 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 4d 61 |f="#LayerClassMa| 00003140 70 22 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 |p">type LayerCla| 00003150 73 73 4d 61 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |ssMap</a></dd>..| 00003160 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003170 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003180 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 4c 61 | <a href="#NewLa| 00003190 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 66 75 6e |yerClassMap">fun| 000031a0 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 4d |c NewLayerClassM| 000031b0 61 70 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 72 |ap(types []Layer| 000031c0 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 73 |Type) LayerClass| 000031d0 4d 61 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |Map</a></dd>....| 000031e0 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 |................| 000031f0 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 |..<dd> &nb| 00003200 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4c 61 |sp; <a href="#La| 00003210 79 65 72 43 6c 61 73 73 4d 61 70 2e 43 6f 6e 74 |yerClassMap.Cont| 00003220 61 69 6e 73 22 3e 66 75 6e 63 20 28 6d 20 4c 61 |ains">func (m La| 00003230 79 65 72 43 6c 61 73 73 4d 61 70 29 20 43 6f 6e |yerClassMap) Con| 00003240 74 61 69 6e 73 28 74 20 4c 61 79 65 72 54 79 70 |tains(t LayerTyp| 00003250 65 29 20 62 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e |e) bool</a></dd>| 00003260 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00003270 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="| 00003280 23 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 |#LayerClassSlice| 00003290 22 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 |">type LayerClas| 000032a0 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |sSlice</a></dd>.| 000032b0 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 000032c0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 000032d0 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 4c |; <a href="#NewL| 000032e0 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 22 3e |ayerClassSlice">| 000032f0 66 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 |func NewLayerCla| 00003300 73 73 53 6c 69 63 65 28 74 79 70 65 73 20 5b 5d |ssSlice(types []| 00003310 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 65 72 |LayerType) Layer| 00003320 43 6c 61 73 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f |ClassSlice</a></| 00003330 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............| 00003340 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb| 00003350 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr| 00003360 65 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 53 |ef="#LayerClassS| 00003370 6c 69 63 65 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 |lice.Contains">f| 00003380 75 6e 63 20 28 73 20 4c 61 79 65 72 43 6c 61 73 |unc (s LayerClas| 00003390 73 53 6c 69 63 65 29 20 43 6f 6e 74 61 69 6e 73 |sSlice) Contains| 000033a0 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 62 6f |(t LayerType) bo| 000033b0 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ol</a></dd>.....| 000033c0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 |..............<d| 000033d0 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 |d><a href="#Laye| 000033e0 72 54 79 70 65 22 3e 74 79 70 65 20 4c 61 79 65 |rType">type Laye| 000033f0 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rType</a></dd>..| 00003400 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003410 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003420 20 3c 61 20 68 72 65 66 3d 22 23 52 65 67 69 73 | <a href="#Regis| 00003430 74 65 72 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |terLayerType">fu| 00003440 6e 63 20 52 65 67 69 73 74 65 72 4c 61 79 65 72 |nc RegisterLayer| 00003450 54 79 70 65 28 6e 75 6d 20 69 6e 74 2c 20 6d 65 |Type(num int, me| 00003460 74 61 20 4c 61 79 65 72 54 79 70 65 4d 65 74 61 |ta LayerTypeMeta| 00003470 64 61 74 61 29 20 4c 61 79 65 72 54 79 70 65 3c |data) LayerType<| 00003480 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........| 00003490 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d| 000034a0 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> | 000034b0 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 54 |<a href="#LayerT| 000034c0 79 70 65 2e 44 65 63 6f 64 65 22 3e 66 75 6e 63 |ype.Decode">func| 000034d0 20 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 44 | (t LayerType) D| 000034e0 65 63 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 |ecode(data []byt| 000034f0 65 2c 20 63 20 50 61 63 6b 65 74 42 75 69 6c 64 |e, c PacketBuild| 00003500 65 72 29 20 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 |er) error</a></d| 00003510 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00003520 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00003530 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4c |bsp; <a href="#L| 00003540 61 79 65 72 54 79 70 65 2e 53 74 72 69 6e 67 22 |ayerType.String"| 00003550 3e 66 75 6e 63 20 28 74 20 4c 61 79 65 72 54 79 |>func (t LayerTy| 00003560 70 65 29 20 53 74 72 69 6e 67 28 29 20 28 73 20 |pe) String() (s | 00003570 73 74 72 69 6e 67 29 3c 2f 61 3e 3c 2f 64 64 3e |string)</a></dd>| 00003580 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00003590 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="| 000035a0 23 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 |#LayerTypeMetada| 000035b0 74 61 22 3e 74 79 70 65 20 4c 61 79 65 72 54 79 |ta">type LayerTy| 000035c0 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c 2f |peMetadata</a></| 000035d0 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............| 000035e0 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><| 000035f0 61 20 68 72 65 66 3d 22 23 4c 69 6e 6b 4c 61 79 |a href="#LinkLay| 00003600 65 72 22 3e 74 79 70 65 20 4c 69 6e 6b 4c 61 79 |er">type LinkLay| 00003610 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....| 00003620 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00003630 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="| 00003640 23 4e 65 74 77 6f 72 6b 4c 61 79 65 72 22 3e 74 |#NetworkLayer">t| 00003650 79 70 65 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ype NetworkLayer| 00003660 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......| 00003670 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00003680 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 50 |.<dd><a href="#P| 00003690 61 63 6b 65 74 22 3e 74 79 70 65 20 50 61 63 6b |acket">type Pack| 000036a0 65 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |et</a></dd>.....| 000036b0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 000036c0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 000036d0 20 68 72 65 66 3d 22 23 4e 65 77 50 61 63 6b 65 | href="#NewPacke| 000036e0 74 22 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 |t">func NewPacke| 000036f0 74 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 66 |t(data []byte, f| 00003700 69 72 73 74 4c 61 79 65 72 44 65 63 6f 64 65 72 |irstLayerDecoder| 00003710 20 44 65 63 6f 64 65 72 2c 20 6f 70 74 69 6f 6e | Decoder, option| 00003720 73 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 29 |s DecodeOptions)| 00003730 20 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 64 64 3e | Packet</a></dd>| 00003740 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................| 00003750 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 |........<dd><a h| 00003760 72 65 66 3d 22 23 50 61 63 6b 65 74 42 75 69 6c |ref="#PacketBuil| 00003770 64 65 72 22 3e 74 79 70 65 20 50 61 63 6b 65 74 |der">type Packet| 00003780 42 75 69 6c 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e |Builder</a></dd>| 00003790 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................| 000037a0 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 |........<dd><a h| 000037b0 72 65 66 3d 22 23 50 61 63 6b 65 74 44 61 74 61 |ref="#PacketData| 000037c0 53 6f 75 72 63 65 22 3e 74 79 70 65 20 50 61 63 |Source">type Pac| 000037d0 6b 65 74 44 61 74 61 53 6f 75 72 63 65 3c 2f 61 |ketDataSource</a| 000037e0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........| 000037f0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 |..............<d| 00003800 64 3e 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b |d><a href="#Pack| 00003810 65 74 53 6f 75 72 63 65 22 3e 74 79 70 65 20 50 |etSource">type P| 00003820 61 63 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c |acketSource</a><| 00003830 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a |/dd>............| 00003840 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> | 00003850 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="| 00003860 23 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |#NewPacketSource| 00003870 22 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 |">func NewPacket| 00003880 53 6f 75 72 63 65 28 73 6f 75 72 63 65 20 50 61 |Source(source Pa| 00003890 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2c 20 |cketDataSource, | 000038a0 64 65 63 6f 64 65 72 20 44 65 63 6f 64 65 72 29 |decoder Decoder)| 000038b0 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 3c 2f | *PacketSource</| 000038c0 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........| 000038d0 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd| 000038e0 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <| 000038f0 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 |a href="#PacketS| 00003900 6f 75 72 63 65 2e 4e 65 78 74 50 61 63 6b 65 74 |ource.NextPacket| 00003910 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 |">func (p *Packe| 00003920 74 53 6f 75 72 63 65 29 20 4e 65 78 74 50 61 63 |tSource) NextPac| 00003930 6b 65 74 28 29 20 28 50 61 63 6b 65 74 2c 20 65 |ket() (Packet, e| 00003940 72 72 6f 72 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rror)</a></dd>..| 00003950 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<| 00003960 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> | 00003970 20 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 | <a href="#Packe| 00003980 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 22 |tSource.Packets"| 00003990 3e 66 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 |>func (p *Packet| 000039a0 53 6f 75 72 63 65 29 20 50 61 63 6b 65 74 73 28 |Source) Packets(| 000039b0 29 20 63 68 61 6e 20 50 61 63 6b 65 74 3c 2f 61 |) chan Packet</a| 000039c0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a |></dd>..........| 000039d0 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a | 000039e0 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 22 3e |href="#Payload">| 000039f0 74 79 70 65 20 50 61 79 6c 6f 61 64 3c 2f 61 3e |type Payload</a>| 00003a00 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........| 00003a10 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&| 00003a20 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a | 00003a30 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e 4c |href="#Payload.L| 00003a40 61 79 65 72 43 6f 6e 74 65 6e 74 73 22 3e 66 75 |ayerContents">fu| 00003a50 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) | 00003a60 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 |LayerContents() | 00003a70 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |[]byte</a></dd>.| 00003a80 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................| 00003a90 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  | 00003aa0 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c |; <a href="#Payl| 00003ab0 6f 61 64 2e 4c 61 79 65 72 50 61 79 6c 6f 61 64 |oad.LayerPayload| 00003ac0 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f |">func (p *Paylo| 00003ad0 61 64 29 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 |ad) LayerPayload| 00003ae0 28 29 20 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 |() []byte</a></d| 00003af0 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00003b00 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00003b10 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 |bsp; <a href="#P| 00003b20 61 79 6c 6f 61 64 2e 4c 61 79 65 72 54 79 70 65 |ayload.LayerType| 00003b30 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f |">func (p *Paylo| 00003b40 61 64 29 20 4c 61 79 65 72 54 79 70 65 28 29 20 |ad) LayerType() | 00003b50 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 |LayerType</a></d| 00003b60 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............| 00003b70 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n| 00003b80 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 |bsp; <a href="#P| 00003b90 61 79 6c 6f 61 64 2e 50 61 79 6c 6f 61 64 22 3e |ayload.Payload">| 00003ba0 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 |func (p *Payload| 00003bb0 29 20 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |) Payload() []by| 00003bc0 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....| 00003bd0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>| 00003be0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a| 00003bf0 20 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e | href="#Payload.| 00003c00 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 70 20 |String">func (p | 00003c10 2a 50 61 79 6c 6f 61 64 29 20 53 74 72 69 6e 67 |*Payload) String| 00003c20 28 29 20 73 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 |() string</a></d| 00003c30 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |d>..............| 00003c40 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href| 00003c50 3d 22 23 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |="#TransportLaye| 00003c60 72 22 3e 74 79 70 65 20 54 72 61 6e 73 70 6f 72 |r">type Transpor| 00003c70 74 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a |tLayer</a></dd>.| 00003c80 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 00003c90 09 0a 09 09 3c 2f 64 6c 3e 0a 0a 09 09 0a 0a 09 |....</dl>.......| 00003ca0 09 0a 09 09 09 3c 68 34 3e 50 61 63 6b 61 67 65 |.....<h4>Package| 00003cb0 20 66 69 6c 65 73 3c 2f 68 34 3e 0a 09 09 09 3c | files</h4>....<| 00003cc0 70 3e 0a 09 09 09 3c 73 70 61 6e 20 73 74 79 6c |p>....<span styl| 00003cd0 65 3d 22 66 6f 6e 74 2d 73 69 7a 65 3a 39 30 25 |e="font-size:90%| 00003ce0 22 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 |">.........<a hr| 00003cf0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00003d00 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00003d10 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g| 00003d20 6f 22 3e 62 61 73 65 2e 67 6f 3c 2f 61 3e 0a 09 |o">base.go</a>..| 00003d30 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="| 00003d40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003d50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003d60 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 22 |acket/decode.go"| 00003d70 3e 64 65 63 6f 64 65 2e 67 6f 3c 2f 61 3e 0a 09 |>decode.go</a>..| 00003d80 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="| 00003d90 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003da0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003db0 61 63 6b 65 74 2f 64 6f 63 2e 67 6f 22 3e 64 6f |acket/doc.go">do| 00003dc0 63 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 |c.go</a>........| 00003dd0 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 |.<a href="/src/p| 00003de0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00003df0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00003e00 66 6c 6f 77 73 2e 67 6f 22 3e 66 6c 6f 77 73 2e |flows.go">flows.| 00003e10 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c |go</a>.........<| 00003e20 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg| 00003e30 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon| 00003e40 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 |nell/gopacket/la| 00003e50 79 65 72 63 6c 61 73 73 2e 67 6f 22 3e 6c 61 79 |yerclass.go">lay| 00003e60 65 72 63 6c 61 73 73 2e 67 6f 3c 2f 61 3e 0a 09 |erclass.go</a>..| 00003e70 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="| 00003e80 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003e90 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003ea0 61 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e |acket/layertype.| 00003eb0 67 6f 22 3e 6c 61 79 65 72 74 79 70 65 2e 67 6f |go">layertype.go| 00003ec0 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a | 00003ed0 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 00003ee0 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 00003ef0 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b |ll/gopacket/pack| 00003f00 65 74 2e 67 6f 22 3e 70 61 63 6b 65 74 2e 67 6f |et.go">packet.go| 00003f10 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a | 00003f20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 00003f30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 00003f40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 76 61 6c 69 |ll/gopacket/vali| 00003f50 64 5f 6d 61 63 5f 70 72 65 66 69 78 65 73 2e 67 |d_mac_prefixes.g| 00003f60 6f 22 3e 76 61 6c 69 64 5f 6d 61 63 5f 70 72 65 |o">valid_mac_pre| 00003f70 66 69 78 65 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 |fixes.go</a>....| 00003f80 0a 09 09 09 3c 2f 73 70 61 6e 3e 0a 09 09 09 3c |....</span>....<| 00003f90 2f 70 3e 0a 09 09 0a 09 0a 09 09 0a 09 09 0a 09 |/p>.............| 00003fa0 09 09 3c 68 32 20 69 64 3d 22 70 6b 67 2d 76 61 |..<h2 id="pkg-va| 00003fb0 72 69 61 62 6c 65 73 22 |riables"| pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?..@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 65 b6 a7 08 97 18 4a 80 10 23 02 3f e0 00 00 |.e.....J..#.?...| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 3e 56 61 72 |............>Var| 00000050 69 61 62 6c 65 73 3c 2f 68 32 3e 0a 09 09 09 0a |iables</h2>.....| 00000060 09 09 09 09 3c 70 72 65 3e 76 61 72 20 56 61 6c |....<pre>var Val| 00000070 69 64 4d 41 43 50 72 65 66 69 78 4d 61 70 20 3d |idMACPrefixMap =| 00000080 20 76 61 6c 69 64 4d 41 43 50 72 65 66 69 78 4d | validMACPrefixM| 00000090 61 70 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ap</pre>.....<p>| 000000a0 0a 56 61 6c 69 64 4d 41 43 50 72 65 66 69 78 4d |.ValidMACPrefixM| 000000b0 61 70 20 6d 61 70 73 20 61 20 76 61 6c 69 64 20 |ap maps a valid | 000000c0 4d 41 43 20 61 64 64 72 65 73 73 20 70 72 65 66 |MAC address pref| 000000d0 69 78 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 6f |ix to the name o| 000000e0 66 20 74 68 65 0a 6f 72 67 61 6e 69 7a 61 74 69 |f the.organizati| 000000f0 6f 6e 20 74 68 61 74 20 6f 77 6e 73 20 74 68 65 |on that owns the| 00000100 20 72 69 67 68 74 73 20 74 6f 20 75 73 65 20 69 | rights to use i| 00000110 74 2e 20 20 57 65 20 6d 61 70 20 69 74 20 74 6f |t. We map it to| 00000120 20 61 20 68 69 64 64 65 6e 0a 76 61 72 69 61 62 | a hidden.variab| 00000130 6c 65 20 73 6f 20 69 74 20 77 6f 6e 26 23 33 39 |le so it won'| 00000140 3b 74 20 73 68 6f 77 20 75 70 20 69 6e 20 67 6f |;t show up in go| 00000150 64 6f 63 2c 20 73 69 6e 63 65 20 69 74 26 23 33 |doc, since it| 00000160 39 3b 73 20 61 20 76 65 72 79 20 6c 61 72 67 65 |9;s a very large| 00000170 20 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a | map..</p>......| 00000180 09 09 0a 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................| 00000190 0a 09 09 09 3c 68 32 20 69 64 3d 22 41 70 70 6c |....<h2 id="Appl| 000001a0 69 63 61 74 69 6f 6e 4c 61 79 65 72 22 3e 74 79 |icationLayer">ty| 000001b0 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src| 000001c0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 000001d0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 000001e0 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 32 32 30 32 |t/base.go?s=2202| 000001f0 3a 32 32 36 32 23 4c 35 37 22 3e 41 70 70 6c 69 |:2262#L57">Appli| 00000200 63 61 74 69 6f 6e 4c 61 79 65 72 3c 2f 61 3e 3c |cationLayer</a><| 00000210 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 00000220 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 |e ApplicationLay| 00000230 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 |er interface {. | 00000240 20 20 20 4c 61 79 65 72 0a 20 20 20 20 50 61 79 | Layer. Pay| 00000250 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 0a 7d 3c |load() []byte.}<| 00000260 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 41 70 70 |/pre>....<p>.App| 00000270 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 20 69 73 |licationLayer is| 00000280 20 74 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 | the packet laye| 00000290 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 |r corresponding | 000002a0 74 6f 20 74 68 65 20 54 43 50 2f 49 50 20 6c 61 |to the TCP/IP la| 000002b0 79 65 72 20 34 20 28 4f 53 49 0a 6c 61 79 65 72 |yer 4 (OSI.layer| 000002c0 20 37 29 2c 20 61 6c 73 6f 20 6b 6e 6f 77 6e 20 | 7), also known | 000002d0 61 73 20 74 68 65 20 70 61 63 6b 65 74 20 70 61 |as the packet pa| 000002e0 79 6c 6f 61 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |yload..</p>.....| 000002f0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 00000300 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................| 00000310 0a 09 09 09 3c 68 32 20 69 64 3d 22 43 61 70 74 |....<h2 id="Capt| 00000320 75 72 65 49 6e 66 6f 22 3e 74 79 70 65 20 3c 61 |ureInfo">type <a| 00000330 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00000340 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00000350 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 |ell/gopacket/pac| 00000360 6b 65 74 2e 67 6f 3f 73 3d 33 32 38 3a 36 33 32 |ket.go?s=328:632| 00000370 23 4c 36 22 3e 43 61 70 74 75 72 65 49 6e 66 6f |#L6">CaptureInfo| 00000380 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr| 00000390 65 3e 74 79 70 65 20 43 61 70 74 75 72 65 49 6e |e>type CaptureIn| 000003a0 66 6f 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 |fo struct {. | 000003b0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 000003c0 6d 65 6e 74 22 3e 2f 2f 20 50 6f 70 75 6c 61 74 |ment">// Populat| 000003d0 65 64 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 |ed is set to tru| 000003e0 65 20 69 66 20 74 68 65 20 72 65 73 74 20 6f 66 |e if the rest of| 000003f0 20 74 68 65 20 43 61 70 74 75 72 65 49 6e 66 6f | the CaptureInfo| 00000400 20 68 61 73 20 62 65 65 6e 20 70 6f 70 75 6c 61 | has been popula| 00000410 74 65 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |ted</span>. <| 00000420 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00000430 65 6e 74 22 3e 2f 2f 20 77 69 74 68 20 61 63 74 |ent">// with act| 00000440 75 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e |ual information.| 00000450 20 20 49 66 20 50 6f 70 75 6c 61 74 65 64 20 69 | If Populated i| 00000460 73 20 66 61 6c 73 65 2c 20 74 68 65 72 65 26 23 |s false, there&#| 00000470 33 39 3b 73 20 6e 6f 20 70 6f 69 6e 74 20 69 6e |39;s no point in| 00000480 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 00000490 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 000004a0 22 3e 2f 2f 20 72 65 61 64 69 6e 67 20 61 6e 79 |">// reading any| 000004b0 20 6f 66 20 74 68 65 20 6f 74 68 65 72 20 66 69 | of the other fi| 000004c0 65 6c 64 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |elds.</span>. | 000004d0 20 50 6f 70 75 6c 61 74 65 64 20 20 20 20 20 20 | Populated | 000004e0 20 20 20 20 20 20 20 62 6f 6f 6c 0a 20 20 20 20 | bool. | 000004f0 54 69 6d 65 73 74 61 6d 70 20 20 20 20 20 20 20 |Timestamp | 00000500 20 20 20 20 20 20 74 69 6d 65 2e 54 69 6d 65 0a | time.Time.| 00000510 20 20 20 20 43 61 70 74 75 72 65 4c 65 6e 67 74 | CaptureLengt| 00000520 68 2c 20 4c 65 6e 67 74 68 20 69 6e 74 0a 7d 3c |h, Length int.}<| 00000530 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 43 61 70 |/pre>....<p>.Cap| 00000540 74 75 72 65 49 6e 66 6f 20 63 6f 6e 74 61 69 6e |tureInfo contain| 00000550 73 20 63 61 70 74 75 72 65 20 6d 65 74 61 64 61 |s capture metada| 00000560 74 61 20 66 6f 72 20 61 20 70 61 63 6b 65 74 2e |ta for a packet.| 00000570 20 20 49 66 20 61 20 70 61 63 6b 65 74 20 77 61 | If a packet wa| 00000580 73 20 63 61 70 74 75 72 65 64 0a 6f 66 66 20 74 |s captured.off t| 00000590 68 65 20 77 69 72 65 20 6f 72 20 72 65 61 64 20 |he wire or read | 000005a0 66 72 6f 6d 20 61 20 70 63 61 70 20 66 69 6c 65 |from a pcap file| 000005b0 20 28 73 65 65 20 74 68 65 20 26 23 33 39 3b 70 | (see the 'p| 000005c0 63 61 70 26 23 33 39 3b 20 73 75 62 64 69 72 65 |cap' subdire| 000005d0 63 74 6f 72 79 29 2c 20 74 68 69 73 0a 69 6e 66 |ctory), this.inf| 000005e0 6f 72 6d 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65 |ormation will be| 000005f0 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 | attached to the| 00000600 20 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 0a 0a | packet..</p>...| 00000610 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................| 00000620 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................| 00000630 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 44 65 |......<h2 id="De| 00000640 63 6f 64 65 46 61 69 6c 75 72 65 22 3e 74 79 70 |codeFailure">typ| 00000650 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00000660 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00000670 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00000680 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 33 32 |/decode.go?s=332| 00000690 37 3a 33 33 38 31 23 4c 37 33 22 3e 44 65 63 6f |7:3381#L73">Deco| 000006a0 64 65 46 61 69 6c 75 72 65 3c 2f 61 3e 3c 2f 68 |deFailure</a></h| 000006b0 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type | 000006c0 44 65 63 6f 64 65 46 61 69 6c 75 72 65 20 73 74 |DecodeFailure st| 000006d0 72 75 63 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e |ruct {. <span| 000006e0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 000006f0 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 66 69 6c |>// contains fil| 00000700 74 65 72 65 64 20 6f 72 20 75 6e 65 78 70 6f 72 |tered or unexpor| 00000710 74 65 64 20 66 69 65 6c 64 73 3c 2f 73 70 61 6e |ted fields</span| 00000720 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |>.}</pre>....<p>| 00000730 0a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 20 69 |.DecodeFailure i| 00000740 73 20 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 |s a packet layer| 00000750 20 63 72 65 61 74 65 64 20 69 66 20 64 65 63 6f | created if deco| 00000760 64 69 6e 67 20 6f 66 20 74 68 65 20 70 61 63 6b |ding of the pack| 00000770 65 74 20 64 61 74 61 20 66 61 69 6c 65 64 0a 66 |et data failed.f| 00000780 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2e 20 |or some reason. | 00000790 20 49 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 45 | It implements E| 000007a0 72 72 6f 72 4c 61 79 65 72 2e 20 20 4c 61 79 65 |rrorLayer. Laye| 000007b0 72 43 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 |rContents will b| 000007c0 65 20 74 68 65 20 65 6e 74 69 72 65 0a 73 65 74 |e the entire.set| 000007d0 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 66 | of bytes that f| 000007e0 61 69 6c 65 64 20 74 6f 20 70 61 72 73 65 2c 20 |ailed to parse, | 000007f0 61 6e 64 20 45 72 72 6f 72 20 77 69 6c 6c 20 72 |and Error will r| 00000800 65 74 75 72 6e 20 74 68 65 20 72 65 61 73 6f 6e |eturn the reason| 00000810 20 70 61 72 73 69 6e 67 0a 66 61 69 6c 65 64 2e | parsing.failed.| 00000820 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........| 00000830 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 00000840 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=| 00000850 22 44 65 63 6f 64 65 46 61 69 6c 75 72 65 2e 45 |"DecodeFailure.E| 00000860 72 72 6f 72 22 3e 66 75 6e 63 20 28 2a 44 65 63 |rror">func (*Dec| 00000870 6f 64 65 46 61 69 6c 75 72 65 29 20 3c 61 20 68 |odeFailure) <a h| 00000880 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00000890 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 000008a0 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 6f 64 |l/gopacket/decod| 000008b0 65 2e 67 6f 3f 73 3d 33 34 33 39 3a 33 34 37 36 |e.go?s=3439:3476| 000008c0 23 4c 37 39 22 3e 45 72 72 6f 72 3c 2f 61 3e 3c |#L79">Error</a><| 000008d0 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu| 000008e0 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 |nc (d *DecodeFai| 000008f0 6c 75 72 65 29 20 45 72 72 6f 72 28 29 20 65 72 |lure) Error() er| 00000900 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 |ror</pre>.....<p| 00000910 3e 0a 45 72 72 6f 72 20 72 65 74 75 72 6e 73 20 |>.Error returns | 00000920 74 68 65 20 65 72 72 6f 72 20 65 6e 63 6f 75 6e |the error encoun| 00000930 74 65 72 65 64 20 64 75 72 69 6e 67 20 64 65 63 |tered during dec| 00000940 6f 64 69 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |oding..</p>.....| 00000950 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................| 00000960 09 09 09 09 3c 68 33 20 69 64 3d 22 44 65 63 6f |....<h3 id="Deco| 00000970 64 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 43 |deFailure.LayerC| 00000980 6f 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 2a |ontents">func (*| 00000990 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 3c |DecodeFailure) <| 000009a0 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg| 000009b0 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon| 000009c0 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 |nell/gopacket/de| 000009d0 63 6f 64 65 2e 67 6f 3f 73 3d 33 35 30 33 3a 33 |code.go?s=3503:3| 000009e0 35 34 39 23 4c 38 30 22 3e 4c 61 79 65 72 43 6f |549#L80">LayerCo| 000009f0 6e 74 65 6e 74 73 3c 2f 61 3e 3c 2f 68 33 3e 0a |ntents</a></h3>.| 00000a00 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 64 |....<pre>func (d| 00000a10 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 | *DecodeFailure)| 00000a20 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 | LayerContents()| 00000a30 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a 09 09 | []byte</pre>...| 00000a40 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00000a50 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00000a60 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 72 65 2e |="DecodeFailure.| 00000a70 4c 61 79 65 72 50 61 79 6c 6f 61 64 22 3e 66 75 |LayerPayload">fu| 00000a80 6e 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 |nc (*DecodeFailu| 00000a90 72 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |re) <a href="/sr| 00000aa0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00000ab0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000ac0 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 |et/decode.go?s=3| 00000ad0 35 36 38 3a 33 36 31 33 23 4c 38 31 22 3e 4c 61 |568:3613#L81">La| 00000ae0 79 65 72 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f |yerPayload</a></| 00000af0 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun| 00000b00 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c |c (d *DecodeFail| 00000b10 75 72 65 29 20 4c 61 79 65 72 50 61 79 6c 6f 61 |ure) LayerPayloa| 00000b20 64 28 29 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e |d() []byte</pre>| 00000b30 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a |................| 00000b40 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 |.............<h3| 00000b50 20 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 | id="DecodeFailu| 00000b60 72 65 2e 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |re.LayerType">fu| 00000b70 6e 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 |nc (*DecodeFailu| 00000b80 72 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |re) <a href="/sr| 00000b90 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00000ba0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000bb0 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 |et/decode.go?s=3| 00000bc0 37 35 30 3a 33 37 39 35 23 4c 38 35 22 3e 4c 61 |750:3795#L85">La| 00000bd0 79 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e |yerType</a></h3>| 00000be0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (| 00000bf0 64 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |d *DecodeFailure| 00000c00 29 20 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 |) LayerType() La| 00000c10 79 65 72 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 |yerType</pre>...| 00000c20 09 09 3c 70 3e 0a 4c 61 79 65 72 54 79 70 65 20 |..<p>.LayerType | 00000c30 72 65 74 75 72 6e 73 20 4c 61 79 65 72 54 79 70 |returns LayerTyp| 00000c40 65 44 65 63 6f 64 65 46 61 69 6c 75 72 65 0a 3c |eDecodeFailure.<| 00000c50 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/p>.............| 00000c60 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 | 00000c70 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 72 |id="DecodeFailur| 00000c80 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |e.String">func (| 00000c90 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) | 00000ca0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00000cb0 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00000cc0 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 |nnell/gopacket/d| 00000cd0 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 36 33 30 3a |ecode.go?s=3630:| 00000ce0 33 36 36 39 23 4c 38 32 22 3e 53 74 72 69 6e 67 |3669#L82">String| 00000cf0 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 |</a></h3>.....<p| 00000d00 72 65 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 6f |re>func (d *Deco| 00000d10 64 65 46 61 69 6c 75 72 65 29 20 53 74 72 69 6e |deFailure) Strin| 00000d20 67 28 29 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e |g() string</pre>| 00000d30 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a |................| 00000d40 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................| 00000d50 09 09 3c 68 32 20 69 64 3d 22 44 65 63 6f 64 65 |..<h2 id="Decode| 00000d60 46 75 6e 63 22 3e 74 79 70 65 20 3c 61 20 68 72 |Func">type <a hr| 00000d70 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00000d80 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00000d90 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 6f 64 65 |/gopacket/decode| 00000da0 2e 67 6f 3f 73 3d 32 31 30 34 3a 32 31 35 33 23 |.go?s=2104:2153#| 00000db0 4c 34 36 22 3e 44 65 63 6f 64 65 46 75 6e 63 3c |L46">DecodeFunc<| 00000dc0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 00000dd0 3e 74 79 70 65 20 44 65 63 6f 64 65 46 75 6e 63 |>type DecodeFunc| 00000de0 20 66 75 6e 63 28 5b 5d 62 79 74 65 2c 20 50 61 | func([]byte, Pa| 00000df0 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 |cketBuilder) err| 00000e00 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a |or</pre>....<p>.| 00000e10 44 65 63 6f 64 65 46 75 6e 63 20 77 72 61 70 73 |DecodeFunc wraps| 00000e20 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6d | a function to m| 00000e30 61 6b 65 20 69 74 20 61 20 44 65 63 6f 64 65 72 |ake it a Decoder| 00000e40 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........| 00000e50 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 00000e60 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00000e70 3d 22 44 65 63 6f 64 65 46 75 6e 63 2e 44 65 63 |="DecodeFunc.Dec| 00000e80 6f 64 65 22 3e 66 75 6e 63 20 28 44 65 63 6f 64 |ode">func (Decod| 00000e90 65 46 75 6e 63 29 20 3c 61 20 68 72 65 66 3d 22 |eFunc) <a href="| 00000ea0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00000eb0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00000ec0 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f |acket/decode.go?| 00000ed0 73 3d 32 31 35 35 3a 32 32 31 37 23 4c 34 38 22 |s=2155:2217#L48"| 00000ee0 3e 44 65 63 6f 64 65 3c 2f 61 3e 3c 2f 68 33 3e |>Decode</a></h3>| 00000ef0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (| 00000f00 64 20 44 65 63 6f 64 65 46 75 6e 63 29 20 44 65 |d DecodeFunc) De| 00000f10 63 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 65 |code(data []byte| 00000f20 2c 20 70 20 50 61 63 6b 65 74 42 75 69 6c 64 65 |, p PacketBuilde| 00000f30 72 29 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 |r) error</pre>..| 00000f40 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00000f50 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00000f60 3c 68 32 20 69 64 3d 22 44 65 63 6f 64 65 4f 70 |<h2 id="DecodeOp| 00000f70 74 69 6f 6e 73 22 3e 74 79 70 65 20 3c 61 20 68 |tions">type <a h| 00000f80 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00000f90 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00000fa0 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe| 00000fb0 74 2e 67 6f 3f 73 3d 38 33 31 39 3a 38 39 39 30 |t.go?s=8319:8990| 00000fc0 23 4c 33 30 38 22 3e 44 65 63 6f 64 65 4f 70 74 |#L308">DecodeOpt| 00000fd0 69 6f 6e 73 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |ions</a></h2>...| 00000fe0 09 3c 70 72 65 3e 74 79 70 65 20 44 65 63 6f 64 |.<pre>type Decod| 00000ff0 65 4f 70 74 69 6f 6e 73 20 73 74 72 75 63 74 20 |eOptions struct | 00001000 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |{. <span clas| 00001010 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c |s="comment">// L| 00001020 61 7a 79 20 64 65 63 6f 64 69 6e 67 20 64 65 63 |azy decoding dec| 00001030 6f 64 65 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d |odes the minimum| 00001040 20 6e 75 6d 62 65 72 20 6f 66 20 6c 61 79 65 72 | number of layer| 00001050 73 20 6e 65 65 64 65 64 20 74 6f 20 72 65 74 75 |s needed to retu| 00001060 72 6e 20 64 61 74 61 3c 2f 73 70 61 6e 3e 0a 20 |rn data</span>. | 00001070 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00001080 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 66 6f 72 20 |comment">// for | 00001090 61 20 70 61 63 6b 65 74 20 61 74 20 65 61 63 68 |a packet at each| 000010a0 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20 | function call. | 000010b0 20 42 65 20 63 61 72 65 66 75 6c 20 75 73 69 6e | Be careful usin| 000010c0 67 20 74 68 69 73 20 77 69 74 68 20 63 6f 6e 63 |g this with conc| 000010d0 75 72 72 65 6e 74 3c 2f 73 70 61 6e 3e 0a 20 20 |urrent</span>. | 000010e0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 000010f0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 70 61 63 6b 65 |omment">// packe| 00001100 74 20 70 72 6f 63 65 73 73 6f 72 73 2c 20 61 73 |t processors, as| 00001110 20 65 61 63 68 20 63 61 6c 6c 20 74 6f 20 70 61 | each call to pa| 00001120 63 6b 65 74 2e 2a 20 63 6f 75 6c 64 20 6d 75 74 |cket.* could mut| 00001130 61 74 65 20 74 68 65 20 70 61 63 6b 65 74 2c 20 |ate the packet, | 00001140 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |and</span>. <| 00001150 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00001160 65 6e 74 22 3e 2f 2f 20 74 77 6f 20 63 6f 6e 63 |ent">// two conc| 00001170 75 72 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 |urrent function | 00001180 63 61 6c 6c 73 20 63 6f 75 6c 64 20 69 6e 74 65 |calls could inte| 00001190 72 61 63 74 20 70 6f 6f 72 6c 79 2e 3c 2f 73 70 |ract poorly.</sp| 000011a0 61 6e 3e 0a 20 20 20 20 4c 61 7a 79 20 62 6f 6f |an>. Lazy boo| 000011b0 6c 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |l. <span clas| 000011c0 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e |s="comment">// N| 000011d0 6f 43 6f 70 79 20 64 65 63 6f 64 69 6e 67 20 64 |oCopy decoding d| 000011e0 6f 65 73 6e 26 23 33 39 3b 74 20 63 6f 70 79 20 |oesn't copy | 000011f0 69 74 73 20 69 6e 70 75 74 20 62 75 66 66 65 72 |its input buffer| 00001200 20 69 6e 74 6f 20 73 74 6f 72 61 67 65 20 74 68 | into storage th| 00001210 61 74 26 23 33 39 3b 73 20 6f 77 6e 65 64 20 62 |at's owned b| 00001220 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |y</span>. <sp| 00001230 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 00001240 74 22 3e 2f 2f 20 74 68 65 20 70 61 63 6b 65 74 |t">// the packet| 00001250 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 |. If you can gu| 00001260 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 |arantee that the| 00001270 20 62 79 74 65 73 20 75 6e 64 65 72 6c 79 69 6e | bytes underlyin| 00001280 67 20 74 68 65 20 73 6c 69 63 65 3c 2f 73 70 61 |g the slice</spa| 00001290 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla| 000012a0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 000012b0 70 61 73 73 65 64 20 69 6e 74 6f 20 4e 65 77 50 |passed into NewP| 000012c0 61 63 6b 65 74 20 61 72 65 6e 26 23 33 39 3b 74 |acket aren't| 000012d0 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 6d 6f 64 | going to be mod| 000012e0 69 66 69 65 64 2c 20 74 68 69 73 20 63 61 6e 20 |ified, this can | 000012f0 62 65 20 66 61 73 74 65 72 2e 20 20 49 66 3c 2f |be faster. If</| 00001300 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 |span>. <span | 00001310 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00001320 2f 2f 20 74 68 65 72 65 26 23 33 39 3b 73 20 61 |// there's a| 00001330 6e 79 20 63 68 61 6e 63 65 20 74 68 61 74 20 74 |ny chance that t| 00001340 68 6f 73 65 20 62 79 74 65 73 20 57 49 4c 4c 20 |hose bytes WILL | 00001350 62 65 20 63 68 61 6e 67 65 64 2c 20 74 68 69 73 |be changed, this| 00001360 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 | will invalidate| 00001370 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 00001380 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 00001390 22 3e 2f 2f 20 79 6f 75 72 20 70 61 63 6b 65 74 |">// your packet| 000013a0 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 6f |s.</span>. No| 000013b0 43 6f 70 79 20 62 6f 6f 6c 0a 7d 3c 2f 70 72 65 |Copy bool.}</pre| 000013c0 3e 0a 09 09 09 3c 70 3e 0a 44 65 63 6f 64 65 4f |>....<p>.DecodeO| 000013d0 70 74 69 6f 6e 73 20 74 65 6c 6c 73 20 67 6f 70 |ptions tells gop| 000013e0 61 63 6b 65 74 20 68 6f 77 20 74 6f 20 64 65 63 |acket how to dec| 000013f0 6f 64 65 20 61 20 70 61 63 6b 65 74 2e 0a 3c 2f |ode a packet..</| 00001400 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |p>..............| 00001410 09 09 3c 70 72 65 3e 76 61 72 20 44 65 66 61 75 |..<pre>var Defau| 00001420 6c 74 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |lt DecodeOptions| 00001430 20 3d 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 | = DecodeOptions| 00001440 7b 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |{}</pre>.....<p>| 00001450 0a 44 65 66 61 75 6c 74 20 64 65 63 6f 64 69 6e |.Default decodin| 00001460 67 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 73 |g provides the s| 00001470 61 66 65 73 74 20 28 62 75 74 20 73 6c 6f 77 65 |afest (but slowe| 00001480 73 74 29 20 6d 65 74 68 6f 64 20 66 6f 72 20 64 |st) method for d| 00001490 65 63 6f 64 69 6e 67 0a 70 61 63 6b 65 74 73 2e |ecoding.packets.| 000014a0 20 20 49 74 20 65 61 67 65 72 6c 79 20 70 72 6f | It eagerly pro| 000014b0 63 65 73 73 65 73 20 61 6c 6c 20 6c 61 79 65 72 |cesses all layer| 000014c0 73 20 28 73 6f 20 69 74 26 23 33 39 3b 73 20 63 |s (so it's c| 000014d0 6f 6e 63 75 72 72 65 6e 63 79 2d 73 61 66 65 29 |oncurrency-safe)| 000014e0 20 61 6e 64 20 69 74 0a 63 6f 70 69 65 73 20 69 | and it.copies i| 000014f0 74 73 20 69 6e 70 75 74 20 62 75 66 66 65 72 20 |ts input buffer | 00001500 75 70 6f 6e 20 63 72 65 61 74 69 6f 6e 20 6f 66 |upon creation of| 00001510 20 74 68 65 20 70 61 63 6b 65 74 20 28 73 6f 20 | the packet (so | 00001520 74 68 65 20 70 61 63 6b 65 74 20 72 65 6d 61 69 |the packet remai| 00001530 6e 73 0a 76 61 6c 69 64 20 69 66 20 74 68 65 20 |ns.valid if the | 00001540 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 65 |underlying slice| 00001550 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 20 20 42 | is modified. B| 00001560 6f 74 68 20 6f 66 20 74 68 65 73 65 20 74 61 6b |oth of these tak| 00001570 65 20 74 69 6d 65 2c 0a 74 68 6f 75 67 68 2c 20 |e time,.though, | 00001580 73 6f 20 62 65 77 61 72 65 2e 20 20 49 66 20 79 |so beware. If y| 00001590 6f 75 20 63 61 6e 20 67 75 61 72 61 6e 74 65 65 |ou can guarantee| 000015a0 20 74 68 61 74 20 74 68 65 20 70 61 63 6b 65 74 | that the packet| 000015b0 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 75 73 | will only be us| 000015c0 65 64 0a 62 79 20 6f 6e 65 20 67 6f 72 6f 75 74 |ed.by one gorout| 000015d0 69 6e 65 20 61 74 20 61 20 74 69 6d 65 2c 20 73 |ine at a time, s| 000015e0 65 74 20 4c 61 7a 79 20 64 65 63 6f 64 69 6e 67 |et Lazy decoding| 000015f0 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 |. If you can gu| 00001600 61 72 61 6e 74 65 65 20 74 68 61 74 0a 74 68 65 |arantee that.the| 00001610 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 | underlying slic| 00001620 65 20 77 6f 6e 26 23 33 39 3b 74 20 63 68 61 6e |e won't chan| 00001630 67 65 2c 20 73 65 74 20 4e 6f 43 6f 70 79 20 64 |ge, set NoCopy d| 00001640 65 63 6f 64 69 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 |ecoding..</p>...| 00001650 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 |.......<pre>var | 00001660 4c 61 7a 79 20 44 65 63 6f 64 65 4f 70 74 69 6f |Lazy DecodeOptio| 00001670 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 69 6f |ns = DecodeOptio| 00001680 6e 73 7b 4c 61 7a 79 3a 20 74 72 75 65 7d 3c 2f |ns{Lazy: true}</| 00001690 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 7a |pre>.....<p>.Laz| 000016a0 79 20 69 73 20 61 20 44 65 63 6f 64 65 4f 70 74 |y is a DecodeOpt| 000016b0 69 6f 6e 73 20 77 69 74 68 20 6a 75 73 74 20 4c |ions with just L| 000016c0 61 7a 79 20 73 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 |azy set..</p>...| 000016d0 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 |.......<pre>var | 000016e0 4e 6f 43 6f 70 79 20 44 65 63 6f 64 65 4f 70 74 |NoCopy DecodeOpt| 000016f0 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 |ions = DecodeOpt| 00001700 69 6f 6e 73 7b 4e 6f 43 6f 70 79 3a 20 74 72 75 |ions{NoCopy: tru| 00001710 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |e}</pre>.....<p>| 00001720 0a 4e 6f 43 6f 70 79 20 69 73 20 61 20 44 65 63 |.NoCopy is a Dec| 00001730 6f 64 65 4f 70 74 69 6f 6e 73 20 77 69 74 68 20 |odeOptions with | 00001740 6a 75 73 74 20 4e 6f 43 6f 70 79 20 73 65 74 2e |just NoCopy set.| 00001750 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 0a 09 09 09 0a |.</p>...........| 00001760 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 |................| 00001770 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="| 00001780 44 65 63 6f 64 65 72 22 3e 74 79 70 65 20 3c 61 |Decoder">type <a| 00001790 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 000017a0 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 000017b0 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 |ell/gopacket/dec| 000017c0 6f 64 65 2e 67 6f 3f 73 3d 31 37 37 38 3a 32 30 |ode.go?s=1778:20| 000017d0 34 39 23 4c 33 38 22 3e 44 65 63 6f 64 65 72 3c |49#L38">Decoder<| 000017e0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 000017f0 3e 74 79 70 65 20 44 65 63 6f 64 65 72 20 69 6e |>type Decoder in| 00001800 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 3c 73 |terface {. <s| 00001810 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001820 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 65 20 64 65 |nt">// Decode de| 00001830 63 6f 64 65 73 20 74 68 65 20 62 79 74 65 73 20 |codes the bytes | 00001840 6f 66 20 61 20 70 61 63 6b 65 74 2c 20 73 65 6e |of a packet, sen| 00001850 64 69 6e 67 20 64 65 63 6f 64 65 64 20 76 61 6c |ding decoded val| 00001860 75 65 73 20 61 6e 64 20 6f 74 68 65 72 3c 2f 73 |ues and other</s| 00001870 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 |pan>. <span c| 00001880 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 00001890 2f 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f |/ information to| 000018a0 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 2c 20 | PacketBuilder, | 000018b0 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20 61 6e |and returning an| 000018c0 20 65 72 72 6f 72 20 69 66 20 75 6e 73 75 63 63 | error if unsucc| 000018d0 65 73 73 66 75 6c 2e 20 20 53 65 65 3c 2f 73 70 |essful. See</sp| 000018e0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl| 000018f0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 00001900 20 74 68 65 20 50 61 63 6b 65 74 42 75 69 6c 64 | the PacketBuild| 00001910 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e |er documentation| 00001920 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c | for more detail| 00001930 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 44 65 |s.</span>. De| 00001940 63 6f 64 65 28 5b 5d 62 79 74 65 2c 20 50 61 63 |code([]byte, Pac| 00001950 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 6f |ketBuilder) erro| 00001960 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |r.}</pre>....<p>| 00001970 0a 44 65 63 6f 64 65 72 20 69 73 20 61 6e 20 69 |.Decoder is an i| 00001980 6e 74 65 72 66 61 63 65 20 66 6f 72 20 6c 6f 67 |nterface for log| 00001990 69 63 20 74 6f 20 64 65 63 6f 64 65 20 61 20 70 |ic to decode a p| 000019a0 61 63 6b 65 74 20 6c 61 79 65 72 2e 20 20 55 73 |acket layer. Us| 000019b0 65 72 73 20 6d 61 79 0a 69 6d 70 6c 65 6d 65 6e |ers may.implemen| 000019c0 74 20 61 20 44 65 63 6f 64 65 72 20 74 6f 20 68 |t a Decoder to h| 000019d0 61 6e 64 6c 65 20 74 68 65 69 72 20 6f 77 6e 20 |andle their own | 000019e0 73 74 72 61 6e 67 65 20 70 61 63 6b 65 74 20 74 |strange packet t| 000019f0 79 70 65 73 2c 20 6f 72 20 6d 61 79 20 75 73 65 |ypes, or may use| 00001a00 20 6f 6e 65 0a 6f 66 20 74 68 65 20 6d 61 6e 79 | one.of the many| 00001a10 20 64 65 63 6f 64 65 72 73 20 61 76 61 69 6c 61 | decoders availa| 00001a20 62 6c 65 20 69 6e 20 74 68 65 20 26 23 33 39 3b |ble in the '| 00001a30 6c 61 79 65 72 73 26 23 33 39 3b 20 73 75 62 70 |layers' subp| 00001a40 61 63 6b 61 67 65 20 74 6f 20 64 65 63 6f 64 65 |ackage to decode| 00001a50 20 74 68 69 6e 67 73 0a 66 6f 72 20 74 68 65 6d | things.for them| 00001a60 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........| 00001a70 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 |......<pre>var D| 00001a80 65 63 6f 64 65 50 61 79 6c 6f 61 64 20 44 65 63 |ecodePayload Dec| 00001a90 6f 64 65 72 20 3d 20 44 65 63 6f 64 65 46 75 6e |oder = DecodeFun| 00001aa0 63 28 64 65 63 6f 64 65 50 61 79 6c 6f 61 64 29 |c(decodePayload)| 00001ab0 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 44 |</pre>.....<p>.D| 00001ac0 65 63 6f 64 65 50 61 79 6c 6f 61 64 20 69 73 20 |ecodePayload is | 00001ad0 61 20 44 65 63 6f 64 65 72 20 74 68 61 74 20 72 |a Decoder that r| 00001ae0 65 74 75 72 6e 73 20 61 20 50 61 79 6c 6f 61 64 |eturns a Payload| 00001af0 20 6c 61 79 65 72 20 63 6f 6e 74 61 69 6e 69 6e | layer containin| 00001b00 67 20 61 6c 6c 0a 72 65 6d 61 69 6e 69 6e 67 20 |g all.remaining | 00001b10 62 79 74 65 73 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |bytes..</p>.....| 00001b20 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 65 |.....<pre>var De| 00001b30 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 44 65 63 6f |codeUnknown Deco| 00001b40 64 65 72 20 3d 20 44 65 63 6f 64 65 46 75 6e 63 |der = DecodeFunc| 00001b50 28 64 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 29 3c |(decodeUnknown)<| 00001b60 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 44 65 |/pre>.....<p>.De| 00001b70 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 69 73 20 61 |codeUnknown is a| 00001b80 20 44 65 63 6f 64 65 72 20 74 68 61 74 20 72 65 | Decoder that re| 00001b90 74 75 72 6e 73 20 61 20 44 65 63 6f 64 65 46 61 |turns a DecodeFa| 00001ba0 69 6c 75 72 65 20 6c 61 79 65 72 20 63 6f 6e 74 |ilure layer cont| 00001bb0 61 69 6e 69 6e 67 20 61 6c 6c 0a 72 65 6d 61 69 |aining all.remai| 00001bc0 6e 69 6e 67 20 62 79 74 65 73 2c 20 75 73 65 66 |ning bytes, usef| 00001bd0 75 6c 20 69 66 20 79 6f 75 20 72 75 6e 20 75 70 |ul if you run up| 00001be0 20 61 67 61 69 6e 73 74 20 61 20 6c 61 79 65 72 | against a layer| 00001bf0 20 74 68 61 74 20 79 6f 75 26 23 33 39 3b 72 65 | that you're| 00001c00 20 75 6e 61 62 6c 65 20 74 6f 0a 64 65 63 6f 64 | unable to.decod| 00001c10 65 20 79 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |e yet..</p>.....| 00001c20 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 00001c30 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h| 00001c40 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 22 3e |2 id="Endpoint">| 00001c50 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 |type <a href="/s| 00001c60 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 00001c70 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 00001c80 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 |ket/flows.go?s=3| 00001c90 31 30 3a 33 36 34 23 4c 35 22 3e 45 6e 64 70 6f |10:364#L5">Endpo| 00001ca0 69 6e 74 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 |int</a></h2>....| 00001cb0 3c 70 72 65 3e 74 79 70 65 20 45 6e 64 70 6f 69 |<pre>type Endpoi| 00001cc0 6e 74 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 |nt struct {. | 00001cd0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00001ce0 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e |ment">// contain| 00001cf0 73 20 66 69 6c 74 65 72 65 64 20 6f 72 20 75 6e |s filtered or un| 00001d00 65 78 70 6f 72 74 65 64 20 66 69 65 6c 64 73 3c |exported fields<| 00001d10 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 |/span>.}</pre>..| 00001d20 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 20 69 |..<p>.Endpoint i| 00001d30 73 20 74 68 65 20 73 65 74 20 6f 66 20 62 79 74 |s the set of byt| 00001d40 65 73 20 75 73 65 64 20 74 6f 20 61 64 64 72 65 |es used to addre| 00001d50 73 73 20 70 61 63 6b 65 74 73 20 61 74 20 76 61 |ss packets at va| 00001d60 72 69 6f 75 73 20 6c 61 79 65 72 73 2e 0a 53 65 |rious layers..Se| 00001d70 65 20 4c 69 6e 6b 4c 61 79 65 72 2c 20 4e 65 74 |e LinkLayer, Net| 00001d80 77 6f 72 6b 4c 61 79 65 72 2c 20 61 6e 64 20 54 |workLayer, and T| 00001d90 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 73 70 |ransportLayer sp| 00001da0 65 63 69 66 69 63 61 74 69 6f 6e 73 2e 0a 45 6e |ecifications..En| 00001db0 64 70 6f 69 6e 74 73 20 61 72 65 20 75 73 61 62 |dpoints are usab| 00001dc0 6c 65 20 61 73 20 6d 61 70 20 6b 65 79 73 2e 0a |le as map keys..| 00001dd0 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a |</p>............| 00001de0 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00001df0 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 45 6e |...<h3 id="NewEn| 00001e00 64 70 6f 69 6e 74 22 3e 66 75 6e 63 20 3c 61 20 |dpoint">func <a | 00001e10 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 00001e20 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 00001e30 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow| 00001e40 73 2e 67 6f 3f 73 3d 31 31 36 34 3a 31 32 31 39 |s.go?s=1164:1219| 00001e50 23 4c 32 36 22 3e 4e 65 77 45 6e 64 70 6f 69 6e |#L26">NewEndpoin| 00001e60 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<| 00001e70 70 72 65 3e 66 75 6e 63 20 4e 65 77 45 6e 64 70 |pre>func NewEndp| 00001e80 6f 69 6e 74 28 74 79 70 20 45 6e 64 70 6f 69 6e |oint(typ Endpoin| 00001e90 74 54 79 70 65 2c 20 72 61 77 20 5b 5d 62 79 74 |tType, raw []byt| 00001ea0 65 29 20 45 6e 64 70 6f 69 6e 74 3c 2f 70 72 65 |e) Endpoint</pre| 00001eb0 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 45 6e 64 |>.....<p>.NewEnd| 00001ec0 70 6f 69 6e 74 20 63 72 65 61 74 65 73 20 61 20 |point creates a | 00001ed0 6e 65 77 20 45 6e 64 70 6f 69 6e 74 20 6f 62 6a |new Endpoint obj| 00001ee0 65 63 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a |ect..</p>.......| 00001ef0 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00001f00 09 09 3c 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 |..<h3 id="Endpoi| 00001f10 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 |nt.EndpointType"| 00001f20 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 |>func (Endpoint)| 00001f30 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 00001f40 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00001f50 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00001f60 66 6c 6f 77 73 2e 67 6f 3f 73 3d 34 33 39 3a 34 |flows.go?s=439:4| 00001f70 38 34 23 4c 31 31 22 3e 45 6e 64 70 6f 69 6e 74 |84#L11">Endpoint| 00001f80 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |Type</a></h3>...| 00001f90 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 65 20 45 |..<pre>func (e E| 00001fa0 6e 64 70 6f 69 6e 74 29 20 45 6e 64 70 6f 69 6e |ndpoint) Endpoin| 00001fb0 74 54 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 |tType() Endpoint| 00001fc0 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |Type</pre>.....<| 00001fd0 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 |p>.EndpointType | 00001fe0 72 65 74 75 72 6e 73 20 74 68 65 20 65 6e 64 70 |returns the endp| 00001ff0 6f 69 6e 74 20 74 79 70 65 20 61 73 73 6f 63 69 |oint type associ| 00002000 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 65 |ated with this e| 00002010 6e 64 70 6f 69 6e 74 2e 0a 3c 2f 70 3e 0a 0a 09 |ndpoint..</p>...| 00002020 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00002030 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 45 6e |......<h3 id="En| 00002040 64 70 6f 69 6e 74 2e 4c 65 73 73 54 68 61 6e 22 |dpoint.LessThan"| 00002050 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 |>func (Endpoint)| 00002060 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 00002070 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00002080 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00002090 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 30 31 30 3a |flows.go?s=1010:| 000020a0 31 30 35 33 23 4c 32 31 22 3e 4c 65 73 73 54 68 |1053#L21">LessTh| 000020b0 61 6e 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |an</a></h3>.....| 000020c0 3c 70 72 65 3e 66 75 6e 63 20 28 61 20 45 6e 64 |<pre>func (a End| 000020d0 70 6f 69 6e 74 29 20 4c 65 73 73 54 68 61 6e 28 |point) LessThan(| 000020e0 62 20 45 6e 64 70 6f 69 6e 74 29 20 62 6f 6f 6c |b Endpoint) bool| 000020f0 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c |</pre>.....<p>.L| 00002100 65 73 73 54 68 61 6e 20 70 72 6f 76 69 64 65 73 |essThan provides| 00002110 20 61 20 73 74 61 62 6c 65 20 6f 72 64 65 72 69 | a stable orderi| 00002120 6e 67 20 66 6f 72 20 61 6c 6c 20 65 6e 64 70 6f |ng for all endpo| 00002130 69 6e 74 73 2e 20 20 49 74 20 73 6f 72 74 73 20 |ints. It sorts | 00002140 66 69 72 73 74 20 62 61 73 65 64 0a 6f 6e 20 74 |first based.on t| 00002150 68 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 |he EndpointType | 00002160 6f 66 20 61 6e 20 65 6e 64 70 6f 69 6e 74 2c 20 |of an endpoint, | 00002170 74 68 65 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 |then based on th| 00002180 65 20 72 61 77 20 62 79 74 65 73 20 6f 66 20 74 |e raw bytes of t| 00002190 68 61 74 20 65 6e 64 70 6f 69 6e 74 2e 0a 46 6f |hat endpoint..Fo| 000021a0 72 20 73 6f 6d 65 20 65 6e 64 70 6f 69 6e 74 73 |r some endpoints| 000021b0 2c 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 6d |, the actual com| 000021c0 70 61 72 69 73 6f 6e 20 6d 61 79 20 6e 6f 74 20 |parison may not | 000021d0 6d 61 6b 65 20 73 65 6e 73 65 2c 20 68 6f 77 65 |make sense, howe| 000021e0 76 65 72 20 74 68 69 73 0a 6f 72 64 65 72 69 6e |ver this.orderin| 000021f0 67 20 64 6f 65 73 20 70 72 6f 76 69 64 65 20 75 |g does provide u| 00002200 73 65 66 75 6c 20 69 6e 66 6f 72 6d 61 74 69 6f |seful informatio| 00002210 6e 20 66 6f 72 20 6d 6f 73 74 20 45 6e 64 70 6f |n for most Endpo| 00002220 69 6e 74 20 74 79 70 65 73 2e 0a 3c 2f 70 3e 0a |int types..</p>.| 00002230 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................| 00002240 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="| 00002250 45 6e 64 70 6f 69 6e 74 2e 52 61 77 22 3e 66 75 |Endpoint.Raw">fu| 00002260 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 20 3c 61 |nc (Endpoint) <a| 00002270 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00002280 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00002290 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f |ell/gopacket/flo| 000022a0 77 73 2e 67 6f 3f 73 3d 36 34 31 3a 36 37 31 23 |ws.go?s=641:671#| 000022b0 4c 31 35 22 3e 52 61 77 3c 2f 61 3e 3c 2f 68 33 |L15">Raw</a></h3| 000022c0 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 000022d0 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 52 61 77 |(e Endpoint) Raw| 000022e0 28 29 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a |() []byte</pre>.| 000022f0 09 09 09 09 3c 70 3e 0a 52 61 77 20 72 65 74 75 |....<p>.Raw retu| 00002300 72 6e 73 20 74 68 65 20 72 61 77 20 62 79 74 65 |rns the raw byte| 00002310 73 20 6f 66 20 74 68 69 73 20 65 6e 64 70 6f 69 |s of this endpoi| 00002320 6e 74 2e 20 20 54 68 65 73 65 20 61 72 65 6e 26 |nt. These aren&| 00002330 23 33 39 3b 74 20 68 75 6d 61 6e 2d 72 65 61 64 |#39;t human-read| 00002340 61 62 6c 65 0a 6d 6f 73 74 20 6f 66 20 74 68 65 |able.most of the| 00002350 20 74 69 6d 65 2c 20 62 75 74 20 74 68 65 79 20 | time, but they | 00002360 61 72 65 20 66 61 73 74 65 72 20 74 68 61 6e 20 |are faster than | 00002370 63 61 6c 6c 69 6e 67 20 53 74 72 69 6e 67 2e 0a |calling String..| 00002380 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a |</p>............| 00002390 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 |.............<h3| 000023a0 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 2e 53 74 | id="Endpoint.St| 000023b0 72 69 6e 67 22 3e 66 75 6e 63 20 28 45 6e 64 70 |ring">func (Endp| 000023c0 6f 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f |oint) <a href="/| 000023d0 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 000023e0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 000023f0 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d |cket/flows.go?s=| 00002400 32 33 36 39 3a 32 34 30 32 23 4c 36 34 22 3e 53 |2369:2402#L64">S| 00002410 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |tring</a></h3>..| 00002420 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 65 20 |...<pre>func (e | 00002430 45 6e 64 70 6f 69 6e 74 29 20 53 74 72 69 6e 67 |Endpoint) String| 00002440 28 29 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a |() string</pre>.| 00002450 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 |................| 00002460 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 |................| 00002470 09 3c 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e |.<h2 id="Endpoin| 00002480 74 54 79 70 65 22 3e 74 79 70 65 20 3c 61 20 68 |tType">type <a h| 00002490 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 000024a0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 000024b0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows| 000024c0 2e 67 6f 3f 73 3d 31 37 34 36 3a 31 37 36 39 23 |.go?s=1746:1769#| 000024d0 4c 34 31 22 3e 45 6e 64 70 6f 69 6e 74 54 79 70 |L41">EndpointTyp| 000024e0 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 |e</a></h2>....<p| 000024f0 72 65 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 |re>type Endpoint| 00002500 54 79 70 65 20 69 6e 74 36 34 3c 2f 70 72 65 3e |Type int64</pre>| 00002510 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 |....<p>.Endpoint| 00002520 54 79 70 65 20 69 73 20 74 68 65 20 74 79 70 65 |Type is the type| 00002530 20 6f 66 20 61 20 67 6f 70 61 63 6b 65 74 20 45 | of a gopacket E| 00002540 6e 64 70 6f 69 6e 74 2e 20 20 54 68 69 73 20 74 |ndpoint. This t| 00002550 79 70 65 20 64 65 74 65 72 6d 69 6e 65 73 20 68 |ype determines h| 00002560 6f 77 0a 74 68 65 20 62 79 74 65 73 20 73 74 6f |ow.the bytes sto| 00002570 72 65 64 20 69 6e 20 74 68 65 20 65 6e 64 70 6f |red in the endpo| 00002580 69 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e |int should be in| 00002590 74 65 72 70 72 65 74 65 64 2e 0a 3c 2f 70 3e 0a |terpreted..</p>.| 000025a0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 000025b0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 |..............<h| 000025c0 33 20 69 64 3d 22 52 65 67 69 73 74 65 72 45 6e |3 id="RegisterEn| 000025d0 64 70 6f 69 6e 74 54 79 70 65 22 3e 66 75 6e 63 |dpointType">func| 000025e0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 000025f0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00002600 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00002610 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 30 31 37 3a |flows.go?s=2017:| 00002620 32 30 39 31 23 4c 34 38 22 3e 52 65 67 69 73 74 |2091#L48">Regist| 00002630 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f |erEndpointType</| 00002640 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 |a></h3>.....<pre| 00002650 3e 66 75 6e 63 20 52 65 67 69 73 74 65 72 45 6e |>func RegisterEn| 00002660 64 70 6f 69 6e 74 54 79 70 65 28 6e 75 6d 20 69 |dpointType(num i| 00002670 6e 74 2c 20 6d 65 74 61 20 45 6e 64 70 6f 69 6e |nt, meta Endpoin| 00002680 74 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 45 |tTypeMetadata) E| 00002690 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f 70 72 65 |ndpointType</pre| 000026a0 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 67 69 73 74 |>.....<p>.Regist| 000026b0 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 63 |erEndpointType c| 000026c0 72 65 61 74 65 73 20 61 20 6e 65 77 20 45 6e 64 |reates a new End| 000026d0 70 6f 69 6e 74 54 79 70 65 20 61 6e 64 20 72 65 |pointType and re| 000026e0 67 69 73 74 65 72 73 20 69 74 20 67 6c 6f 62 61 |gisters it globa| 000026f0 6c 6c 79 2e 0a 49 74 20 4d 55 53 54 20 62 65 20 |lly..It MUST be | 00002700 70 61 73 73 65 64 20 61 20 75 6e 69 71 75 65 20 |passed a unique | 00002710 6e 75 6d 62 65 72 2c 20 6f 72 20 69 74 20 77 69 |number, or it wi| 00002720 6c 6c 20 70 61 6e 69 63 2e 20 20 4e 75 6d 62 65 |ll panic. Numbe| 00002730 72 73 20 30 2d 39 39 39 20 61 72 65 0a 72 65 73 |rs 0-999 are.res| 00002740 65 72 76 65 64 20 66 6f 72 20 67 6f 70 61 63 6b |erved for gopack| 00002750 65 74 26 23 33 39 3b 73 20 75 73 65 2e 0a 3c 2f |et's use..</| 00002760 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 |p>..............| 00002770 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 |...........<h3 i| 00002780 64 3d 22 45 6e 64 70 6f 69 6e 74 54 79 70 65 2e |d="EndpointType.| 00002790 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 45 6e |String">func (En| 000027a0 64 70 6f 69 6e 74 54 79 70 65 29 20 3c 61 20 68 |dpointType) <a h| 000027b0 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 000027c0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 000027d0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows| 000027e0 2e 67 6f 3f 73 3d 32 32 34 32 3a 32 32 37 39 23 |.go?s=2242:2279#| 000027f0 4c 35 37 22 3e 53 74 72 69 6e 67 3c 2f 61 3e 3c |L57">String</a><| 00002800 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu| 00002810 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 54 79 |nc (e EndpointTy| 00002820 70 65 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 |pe) String() str| 00002830 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 |ing</pre>.......| 00002840 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 0a |................| 00002850 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i| 00002860 64 3d 22 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d |d="EndpointTypeM| 00002870 65 74 61 64 61 74 61 22 3e 74 79 70 65 20 3c 61 |etadata">type <a| 00002880 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00002890 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 000028a0 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f |ell/gopacket/flo| 000028b0 77 73 2e 67 6f 3f 73 3d 31 33 32 35 3a 31 36 30 |ws.go?s=1325:160| 000028c0 37 23 4c 33 31 22 3e 45 6e 64 70 6f 69 6e 74 54 |7#L31">EndpointT| 000028d0 79 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c |ypeMetadata</a><| 000028e0 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 000028f0 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d 65 |e EndpointTypeMe| 00002900 74 61 64 61 74 61 20 73 74 72 75 63 74 20 7b 0a |tadata struct {.| 00002910 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 00002920 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 61 6d |"comment">// Nam| 00002930 65 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 20 |e is the string | 00002940 72 65 74 75 72 6e 65 64 20 62 79 20 61 6e 20 45 |returned by an E| 00002950 6e 64 70 6f 69 6e 74 54 79 70 65 26 23 33 39 3b |ndpointType'| 00002960 73 20 53 74 72 69 6e 67 20 66 75 6e 63 74 69 6f |s String functio| 00002970 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 61 |n.</span>. Na| 00002980 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 3c 73 |me string. <s| 00002990 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000029a0 6e 74 22 3e 2f 2f 20 46 6f 72 6d 61 74 74 65 72 |nt">// Formatter| 000029b0 20 69 73 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 | is called from | 000029c0 61 6e 20 45 6e 64 70 6f 69 6e 74 26 23 33 39 3b |an Endpoint'| 000029d0 73 20 53 74 72 69 6e 67 20 66 75 6e 63 74 69 6f |s String functio| 000029e0 6e 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 |n to format the | 000029f0 72 61 77 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |raw</span>. <| 00002a00 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00002a10 65 6e 74 22 3e 2f 2f 20 62 79 74 65 73 20 69 6e |ent">// bytes in| 00002a20 20 61 6e 20 45 6e 64 70 6f 69 6e 74 20 69 6e 74 | an Endpoint int| 00002a30 6f 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 |o a human-readab| 00002a40 6c 65 20 73 74 72 69 6e 67 2e 3c 2f 73 70 61 6e |le string.</span| 00002a50 3e 0a 20 20 20 20 46 6f 72 6d 61 74 74 65 72 20 |>. Formatter | 00002a60 66 75 6e 63 28 5b 5d 62 79 74 65 29 20 73 74 72 |func([]byte) str| 00002a70 69 6e 67 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |ing.}</pre>....<| 00002a80 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d |p>.EndpointTypeM| 00002a90 65 74 61 64 61 74 61 20 69 73 20 75 73 65 64 20 |etadata is used | 00002aa0 74 6f 20 72 65 67 69 73 74 65 72 20 61 20 6e 65 |to register a ne| 00002ab0 77 20 65 6e 64 70 6f 69 6e 74 20 74 79 70 65 2e |w endpoint type.| 00002ac0 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........| 00002ad0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 00002ae0 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h| 00002af0 32 20 69 64 3d 22 45 72 72 6f 72 4c 61 79 65 72 |2 id="ErrorLayer| 00002b00 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 00002b10 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00002b20 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00002b30 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d |acket/base.go?s=| 00002b40 32 34 36 36 3a 32 35 31 37 23 4c 36 35 22 3e 45 |2466:2517#L65">E| 00002b50 72 72 6f 72 4c 61 79 65 72 3c 2f 61 3e 3c 2f 68 |rrorLayer</a></h| 00002b60 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type | 00002b70 45 72 72 6f 72 4c 61 79 65 72 20 69 6e 74 65 72 |ErrorLayer inter| 00002b80 66 61 63 65 20 7b 0a 20 20 20 20 4c 61 79 65 72 |face {. Layer| 00002b90 0a 20 20 20 20 45 72 72 6f 72 28 29 20 65 72 72 |. Error() err| 00002ba0 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 |or.}</pre>....<p| 00002bb0 3e 0a 45 72 72 6f 72 4c 61 79 65 72 20 69 73 20 |>.ErrorLayer is | 00002bc0 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 63 |a packet layer c| 00002bd0 72 65 61 74 65 64 20 77 68 65 6e 20 64 65 63 6f |reated when deco| 00002be0 64 69 6e 67 20 6f 66 20 74 68 65 20 70 61 63 6b |ding of the pack| 00002bf0 65 74 20 68 61 73 20 66 61 69 6c 65 64 2e 0a 49 |et has failed..I| 00002c00 74 73 20 70 61 79 6c 6f 61 64 20 69 73 20 61 6c |ts payload is al| 00002c10 6c 20 74 68 65 20 62 79 74 65 73 20 74 68 61 74 |l the bytes that| 00002c20 20 77 65 20 77 65 72 65 20 75 6e 61 62 6c 65 20 | we were unable | 00002c30 74 6f 20 64 65 63 6f 64 65 2c 20 61 6e 64 20 74 |to decode, and t| 00002c40 68 65 20 72 65 74 75 72 6e 65 64 0a 65 72 72 6f |he returned.erro| 00002c50 72 20 64 65 74 61 69 6c 73 20 77 68 79 20 74 68 |r details why th| 00002c60 65 20 64 65 63 6f 64 69 6e 67 20 66 61 69 6c 65 |e decoding faile| 00002c70 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 |d..</p>.........| 00002c80 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00002c90 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00002ca0 3c 68 32 20 69 64 3d 22 46 6c 6f 77 22 3e 74 79 |<h2 id="Flow">ty| 00002cb0 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src| 00002cc0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00002cd0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00002ce0 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 36 38 |t/flows.go?s=268| 00002cf0 37 3a 32 37 34 37 23 4c 37 33 22 3e 46 6c 6f 77 |7:2747#L73">Flow| 00002d00 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr| 00002d10 65 3e 74 79 70 65 20 46 6c 6f 77 20 73 74 72 75 |e>type Flow stru| 00002d20 63 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 |ct {. <span c| 00002d30 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 00002d40 2f 20 63 6f 6e 74 61 69 6e 73 20 66 69 6c 74 65 |/ contains filte| 00002d50 72 65 64 20 6f 72 20 75 6e 65 78 70 6f 72 74 65 |red or unexporte| 00002d60 64 20 66 69 65 6c 64 73 3c 2f 73 70 61 6e 3e 0a |d fields</span>.| 00002d70 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 46 |}</pre>....<p>.F| 00002d80 6c 6f 77 20 72 65 70 72 65 73 65 6e 74 73 20 74 |low represents t| 00002d90 68 65 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 |he direction of | 00002da0 74 72 61 66 66 69 63 20 66 6f 72 20 61 20 70 61 |traffic for a pa| 00002db0 63 6b 65 74 20 6c 61 79 65 72 2c 20 61 73 20 61 |cket layer, as a| 00002dc0 20 73 6f 75 72 63 65 20 61 6e 64 20 64 65 73 74 | source and dest| 00002dd0 69 6e 61 74 69 6f 6e 20 45 6e 64 70 6f 69 6e 74 |ination Endpoint| 00002de0 2e 0a 46 6c 6f 77 73 20 61 72 65 20 75 73 61 62 |..Flows are usab| 00002df0 6c 65 20 61 73 20 6d 61 70 20 6b 65 79 73 2e 0a |le as map keys..| 00002e00 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a |</p>............| 00002e10 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00002e20 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 46 |...<h3 id="FlowF| 00002e30 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 |romEndpoints">fu| 00002e40 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |nc <a href="/src| 00002e50 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00002e60 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00002e70 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 39 31 |t/flows.go?s=291| 00002e80 36 3a 32 39 37 37 23 4c 38 31 22 3e 46 6c 6f 77 |6:2977#L81">Flow| 00002e90 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 3c 2f 61 |FromEndpoints</a| 00002ea0 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>| 00002eb0 66 75 6e 63 20 46 6c 6f 77 46 72 6f 6d 45 6e 64 |func FlowFromEnd| 00002ec0 70 6f 69 6e 74 73 28 73 72 63 2c 20 64 73 74 20 |points(src, dst | 00002ed0 45 6e 64 70 6f 69 6e 74 29 20 28 5f 20 46 6c 6f |Endpoint) (_ Flo| 00002ee0 77 2c 20 65 72 72 20 65 72 72 6f 72 29 3c 2f 70 |w, err error)</p| 00002ef0 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 46 6c 6f 77 |re>.....<p>.Flow| 00002f00 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 20 63 72 |FromEndpoints cr| 00002f10 65 61 74 65 73 20 61 20 6e 65 77 20 66 6c 6f 77 |eates a new flow| 00002f20 20 62 79 20 70 61 73 74 69 6e 67 20 74 6f 67 65 | by pasting toge| 00002f30 74 68 65 72 20 74 77 6f 20 65 6e 64 70 6f 69 6e |ther two endpoin| 00002f40 74 73 2e 0a 54 68 65 20 65 6e 64 70 6f 69 6e 74 |ts..The endpoint| 00002f50 73 20 6d 75 73 74 20 68 61 76 65 20 74 68 65 20 |s must have the | 00002f60 73 61 6d 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 |same EndpointTyp| 00002f70 65 2c 20 6f 72 20 74 68 69 73 20 66 75 6e 63 74 |e, or this funct| 00002f80 69 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a |ion will return.| 00002f90 61 6e 20 65 72 72 6f 72 2e 0a 3c 2f 70 3e 0a 0a |an error..</p>..| 00002fa0 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00002fb0 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 46 6c 6f |..<h3 id="NewFlo| 00002fc0 77 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d |w">func <a href=| 00002fd0 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 00002fe0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 00002ff0 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f |packet/flows.go?| 00003000 73 3d 33 39 38 38 3a 34 30 33 38 23 4c 31 32 33 |s=3988:4038#L123| 00003010 22 3e 4e 65 77 46 6c 6f 77 3c 2f 61 3e 3c 2f 68 |">NewFlow</a></h| 00003020 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func| 00003030 20 4e 65 77 46 6c 6f 77 28 74 20 45 6e 64 70 6f | NewFlow(t Endpo| 00003040 69 6e 74 54 79 70 65 2c 20 73 72 63 2c 20 64 73 |intType, src, ds| 00003050 74 20 5b 5d 62 79 74 65 29 20 46 6c 6f 77 3c 2f |t []byte) Flow</| 00003060 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 |pre>.....<p>.New| 00003070 46 6c 6f 77 20 63 72 65 61 74 65 73 20 61 20 6e |Flow creates a n| 00003080 65 77 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |ew flow..</p>...| 00003090 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................| 000030a0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl| 000030b0 6f 77 2e 44 73 74 22 3e 66 75 6e 63 20 28 46 6c |ow.Dst">func (Fl| 000030c0 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ow) <a href="/sr| 000030d0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 000030e0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 000030f0 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 37 |et/flows.go?s=37| 00003100 36 32 3a 33 37 39 36 23 4c 31 31 32 22 3e 44 73 |62:3796#L112">Ds| 00003110 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<| 00003120 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f 77 |pre>func (f Flow| 00003130 29 20 44 73 74 28 29 20 28 64 73 74 20 45 6e 64 |) Dst() (dst End| 00003140 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 09 |point)</pre>....| 00003150 09 3c 70 3e 0a 44 73 74 20 72 65 74 75 72 6e 73 |.<p>.Dst returns| 00003160 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e | the destination| 00003170 20 45 6e 64 70 6f 69 6e 74 20 66 6f 72 20 74 68 | Endpoint for th| 00003180 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |is flow..</p>...| 00003190 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 000031a0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl| 000031b0 6f 77 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 |ow.EndpointType"| 000031c0 3e 66 75 6e 63 20 28 46 6c 6f 77 29 20 3c 61 20 |>func (Flow) <a | 000031d0 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 000031e0 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 000031f0 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow| 00003200 73 2e 67 6f 3f 73 3d 33 33 36 34 3a 33 34 30 35 |s.go?s=3364:3405| 00003210 23 4c 39 36 22 3e 45 6e 64 70 6f 69 6e 74 54 79 |#L96">EndpointTy| 00003220 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |pe</a></h3>.....| 00003230 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo| 00003240 77 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 |w) EndpointType(| 00003250 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f |) EndpointType</| 00003260 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 45 6e 64 |pre>.....<p>.End| 00003270 70 6f 69 6e 74 54 79 70 65 20 72 65 74 75 72 6e |pointType return| 00003280 73 20 74 68 65 20 45 6e 64 70 6f 69 6e 74 54 79 |s the EndpointTy| 00003290 70 65 20 66 6f 72 20 74 68 69 73 20 46 6c 6f 77 |pe for this Flow| 000032a0 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........| 000032b0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 000032c0 68 33 20 69 64 3d 22 46 6c 6f 77 2e 45 6e 64 70 |h3 id="Flow.Endp| 000032d0 6f 69 6e 74 73 22 3e 66 75 6e 63 20 28 46 6c 6f |oints">func (Flo| 000032e0 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |w) <a href="/src| 000032f0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003300 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003310 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 34 37 |t/flows.go?s=347| 00003320 39 3a 33 35 32 34 23 4c 31 30 31 22 3e 45 6e 64 |9:3524#L101">End| 00003330 70 6f 69 6e 74 73 3c 2f 61 3e 3c 2f 68 33 3e 0a |points</a></h3>.| 00003340 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f| 00003350 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 73 | Flow) Endpoints| 00003360 28 29 20 28 73 72 63 2c 20 64 73 74 20 45 6e 64 |() (src, dst End| 00003370 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 09 |point)</pre>....| 00003380 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 73 20 72 |.<p>.Endpoints r| 00003390 65 74 75 72 6e 73 20 74 68 65 20 74 77 6f 20 45 |eturns the two E| 000033a0 6e 64 70 6f 69 6e 74 73 20 66 6f 72 20 74 68 69 |ndpoints for thi| 000033b0 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 |s flow..</p>....| 000033c0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 000033d0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f |.....<h3 id="Flo| 000033e0 77 2e 52 65 76 65 72 73 65 22 3e 66 75 6e 63 20 |w.Reverse">func | 000033f0 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="| 00003400 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003410 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003420 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s| 00003430 3d 33 38 38 39 3a 33 39 31 37 23 4c 31 31 38 22 |=3889:3917#L118"| 00003440 3e 52 65 76 65 72 73 65 3c 2f 61 3e 3c 2f 68 33 |>Reverse</a></h3| 00003450 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00003460 28 66 20 46 6c 6f 77 29 20 52 65 76 65 72 73 65 |(f Flow) Reverse| 00003470 28 29 20 46 6c 6f 77 3c 2f 70 72 65 3e 0a 09 09 |() Flow</pre>...| 00003480 09 09 3c 70 3e 0a 52 65 76 65 72 73 65 20 72 65 |..<p>.Reverse re| 00003490 74 75 72 6e 73 20 61 20 6e 65 77 20 66 6c 6f 77 |turns a new flow| 000034a0 20 77 69 74 68 20 65 6e 64 70 6f 69 6e 74 73 20 | with endpoints | 000034b0 72 65 76 65 72 73 65 64 2e 0a 3c 2f 70 3e 0a 0a |reversed..</p>..| 000034c0 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 000034d0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 |.......<h3 id="F| 000034e0 6c 6f 77 2e 53 72 63 22 3e 66 75 6e 63 20 28 46 |low.Src">func (F| 000034f0 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |low) <a href="/s| 00003500 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 00003510 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 00003520 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 |ket/flows.go?s=3| 00003530 36 33 35 3a 33 36 36 39 23 4c 31 30 36 22 3e 53 |635:3669#L106">S| 00003540 72 63 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |rc</a></h3>.....| 00003550 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo| 00003560 77 29 20 53 72 63 28 29 20 28 73 72 63 20 45 6e |w) Src() (src En| 00003570 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 |dpoint)</pre>...| 00003580 09 09 3c 70 3e 0a 53 72 63 20 72 65 74 75 72 6e |..<p>.Src return| 00003590 73 20 74 68 65 20 73 6f 75 72 63 65 20 45 6e 64 |s the source End| 000035a0 70 6f 69 6e 74 20 66 6f 72 20 74 68 69 73 20 66 |point for this f| 000035b0 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a |low..</p>.......| 000035c0 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 000035d0 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 2e 53 |..<h3 id="Flow.S| 000035e0 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 46 6c 6f |tring">func (Flo| 000035f0 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |w) <a href="/src| 00003600 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003610 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003620 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 32 32 |t/flows.go?s=322| 00003630 39 3a 33 32 35 38 23 4c 39 31 22 3e 53 74 72 69 |9:3258#L91">Stri| 00003640 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |ng</a></h3>.....| 00003650 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo| 00003660 77 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 |w) String() stri| 00003670 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ng</pre>.....<p>| 00003680 0a 53 74 72 69 6e 67 20 72 65 74 75 72 6e 73 20 |.String returns | 00003690 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 |a human-readable| 000036a0 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 | representation | 000036b0 6f 66 20 74 68 69 73 20 66 6c 6f 77 2c 20 69 6e |of this flow, in| 000036c0 20 74 68 65 20 66 6f 72 6d 0a 26 23 33 34 3b 53 | the form."S| 000036d0 72 63 2d 26 67 74 3b 44 73 74 26 23 33 34 3b 0a |rc->Dst".| 000036e0 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a |</p>............| 000036f0 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................| 00003700 09 09 3c 68 32 20 69 64 3d 22 4c 61 79 65 72 22 |..<h2 id="Layer"| 00003710 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/| 00003720 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 00003730 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 00003740 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 35 |cket/base.go?s=5| 00003750 30 33 3a 38 33 37 23 4c 36 22 3e 4c 61 79 65 72 |03:837#L6">Layer| 00003760 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr| 00003770 65 3e 74 79 70 65 20 4c 61 79 65 72 20 69 6e 74 |e>type Layer int| 00003780 65 72 66 61 63 65 20 7b 0a 20 20 20 20 66 6d 74 |erface {. fmt| 00003790 2e 53 74 72 69 6e 67 65 72 0a 20 20 20 20 3c 73 |.Stringer. <s| 000037a0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000037b0 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 54 79 70 65 |nt">// LayerType| 000037c0 20 69 73 20 74 68 65 20 67 6f 70 61 63 6b 65 74 | is the gopacket| 000037d0 20 74 79 70 65 20 66 6f 72 20 74 68 69 73 20 6c | type for this l| 000037e0 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |ayer.</span>. | 000037f0 20 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 | LayerType() Lay| 00003800 65 72 54 79 70 65 0a 20 20 20 20 3c 73 70 61 6e |erType. <span| 00003810 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 00003820 3e 2f 2f 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 |>// LayerContent| 00003830 73 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 |s returns the se| 00003840 74 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 |t of bytes that | 00003850 6d 61 6b 65 20 75 70 20 74 68 69 73 20 6c 61 79 |make up this lay| 00003860 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c |er.</span>. L| 00003870 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b |ayerContents() [| 00003880 5d 62 79 74 65 0a 20 20 20 20 3c 73 70 61 6e 20 |]byte. <span | 00003890 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 000038a0 2f 2f 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 20 |// LayerPayload | 000038b0 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 74 20 |returns the set | 000038c0 6f 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e |of bytes contain| 000038d0 65 64 20 77 69 74 68 69 6e 20 74 68 69 73 20 6c |ed within this l| 000038e0 61 79 65 72 2c 20 6e 6f 74 3c 2f 73 70 61 6e 3e |ayer, not</span>| 000038f0 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class| 00003900 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 69 6e |="comment">// in| 00003910 63 6c 75 64 69 6e 67 20 74 68 65 20 6c 61 79 65 |cluding the laye| 00003920 72 20 69 74 73 65 6c 66 2e 3c 2f 73 70 61 6e 3e |r itself.</span>| 00003930 0a 20 20 20 20 4c 61 79 65 72 50 61 79 6c 6f 61 |. LayerPayloa| 00003940 64 28 29 20 5b 5d 62 79 74 65 0a 7d 3c 2f 70 72 |d() []byte.}</pr| 00003950 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 20 |e>....<p>.Layer | 00003960 72 65 70 72 65 73 65 6e 74 73 20 61 20 73 69 6e |represents a sin| 00003970 67 6c 65 20 64 65 63 6f 64 65 64 20 70 61 63 6b |gle decoded pack| 00003980 65 74 20 6c 61 79 65 72 20 28 75 73 69 6e 67 20 |et layer (using | 00003990 65 69 74 68 65 72 20 74 68 65 0a 4f 53 49 20 6f |either the.OSI o| 000039a0 72 20 54 43 50 2f 49 50 20 64 65 66 69 6e 69 74 |r TCP/IP definit| 000039b0 69 6f 6e 20 6f 66 20 61 20 6c 61 79 65 72 29 2e |ion of a layer).| 000039c0 20 20 57 68 65 6e 20 64 65 63 6f 64 69 6e 67 2c | When decoding,| 000039d0 20 61 20 70 61 63 6b 65 74 26 23 33 39 3b 73 20 | a packet's | 000039e0 64 61 74 61 20 69 73 0a 62 72 6f 6b 65 6e 20 75 |data is.broken u| 000039f0 70 20 69 6e 74 6f 20 61 20 6e 75 6d 62 65 72 20 |p into a number | 00003a00 6f 66 20 6c 61 79 65 72 73 2e 20 20 54 68 65 20 |of layers. The | 00003a10 63 61 6c 6c 65 72 20 6d 61 79 20 63 61 6c 6c 20 |caller may call | 00003a20 4c 61 79 65 72 54 79 70 65 28 29 20 74 6f 0a 66 |LayerType() to.f| 00003a30 69 67 75 72 65 20 6f 75 74 20 77 68 69 63 68 20 |igure out which | 00003a40 74 79 70 65 20 6f 66 20 6c 61 79 65 72 20 68 65 |type of layer he| 00003a50 26 23 33 39 3b 73 20 72 65 63 65 69 76 65 64 20 |'s received | 00003a60 66 72 6f 6d 20 74 68 65 20 70 61 63 6b 65 74 2e |from the packet.| 00003a70 20 20 4f 70 74 69 6f 6e 61 6c 6c 79 2c 0a 68 65 | Optionally,.he| 00003a80 20 6d 61 79 20 74 68 65 6e 20 75 73 65 20 61 20 | may then use a | 00003a90 74 79 70 65 20 61 73 73 65 72 74 69 6f 6e 20 74 |type assertion t| 00003aa0 6f 20 67 65 74 20 74 68 65 20 61 63 74 75 61 6c |o get the actual| 00003ab0 20 6c 61 79 65 72 20 74 79 70 65 20 66 6f 72 20 | layer type for | 00003ac0 64 65 65 70 0a 69 6e 73 70 65 63 74 69 6f 6e 20 |deep.inspection | 00003ad0 6f 66 20 74 68 65 20 64 61 74 61 2e 0a 3c 2f 70 |of the data..</p| 00003ae0 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |>...............| 00003af0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 |................| 00003b00 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 |..........<h2 id| 00003b10 3d 22 4c 61 79 65 72 43 6c 61 73 73 22 3e 74 79 |="LayerClass">ty| 00003b20 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src| 00003b30 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003b40 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003b50 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f |t/layerclass.go?| 00003b60 73 3d 31 38 30 3a 33 33 36 23 4c 31 22 3e 4c 61 |s=180:336#L1">La| 00003b70 79 65 72 43 6c 61 73 73 3c 2f 61 3e 3c 2f 68 32 |yerClass</a></h2| 00003b80 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 4c |>....<pre>type L| 00003b90 61 79 65 72 43 6c 61 73 73 20 69 6e 74 65 72 66 |ayerClass interf| 00003ba0 61 63 65 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 |ace {. <span | 00003bb0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00003bc0 2f 2f 20 43 6f 6e 74 61 69 6e 73 20 72 65 74 75 |// Contains retu| 00003bd0 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 65 20 |rns true if the | 00003be0 67 69 76 65 6e 20 6c 61 79 65 72 20 74 79 70 65 |given layer type| 00003bf0 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 | should be consi| 00003c00 64 65 72 65 64 20 70 61 72 74 3c 2f 73 70 61 6e |dered part</span| 00003c10 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |>. <span clas| 00003c20 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f |s="comment">// o| 00003c30 66 20 74 68 69 73 20 6c 61 79 65 72 20 63 6c 61 |f this layer cla| 00003c40 73 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 43 |ss.</span>. C| 00003c50 6f 6e 74 61 69 6e 73 28 4c 61 79 65 72 54 79 70 |ontains(LayerTyp| 00003c60 65 29 20 62 6f 6f 6c 0a 7d 3c 2f 70 72 65 3e 0a |e) bool.}</pre>.| 00003c70 09 09 09 3c 70 3e 0a 4c 61 79 65 72 43 6c 61 73 |...<p>.LayerClas| 00003c80 73 20 69 73 20 61 20 73 65 74 20 6f 66 20 4c 61 |s is a set of La| 00003c90 79 65 72 54 79 70 65 73 2c 20 75 73 65 64 20 66 |yerTypes, used f| 00003ca0 6f 72 20 67 72 61 62 62 69 6e 67 20 6f 6e 65 20 |or grabbing one | 00003cb0 6f 66 20 61 20 6e 75 6d 62 65 72 20 6f 66 0a 64 |of a number of.d| 00003cc0 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 66 |ifferent types f| 00003cd0 72 6f 6d 20 61 20 70 61 63 6b 65 74 2e 0a 3c 2f |rom a packet..</| 00003ce0 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |p>..............| 00003cf0 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00003d00 09 3c 68 33 20 69 64 3d 22 4e 65 77 4c 61 79 65 |.<h3 id="NewLaye| 00003d10 72 43 6c 61 73 73 22 3e 66 75 6e 63 20 3c 61 20 |rClass">func <a | 00003d20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g| 00003d30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne| 00003d40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 |ll/gopacket/laye| 00003d50 72 63 6c 61 73 73 2e 67 6f 3f 73 3d 31 37 32 32 |rclass.go?s=1722| 00003d60 3a 31 37 37 30 23 4c 35 31 22 3e 4e 65 77 4c 61 |:1770#L51">NewLa| 00003d70 79 65 72 43 6c 61 73 73 3c 2f 61 3e 3c 2f 68 33 |yerClass</a></h3| 00003d80 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00003d90 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 28 74 79 |NewLayerClass(ty| 00003da0 70 65 73 20 5b 5d 4c 61 79 65 72 54 79 70 65 29 |pes []LayerType)| 00003db0 20 4c 61 79 65 72 43 6c 61 73 73 3c 2f 70 72 65 | LayerClass</pre| 00003dc0 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 4c 61 79 |>.....<p>.NewLay| 00003dd0 65 72 43 6c 61 73 73 20 63 72 65 61 74 65 73 20 |erClass creates | 00003de0 61 20 4c 61 79 65 72 43 6c 61 73 73 2c 20 61 74 |a LayerClass, at| 00003df0 74 65 6d 70 74 69 6e 67 20 74 6f 20 62 65 20 73 |tempting to be s| 00003e00 6d 61 72 74 20 61 62 6f 75 74 20 77 68 69 63 68 |mart about which| 00003e10 20 74 79 70 65 0a 69 74 20 63 72 65 61 74 65 73 | type.it creates| 00003e20 20 62 61 73 65 64 20 6f 6e 20 77 68 69 63 68 20 | based on which | 00003e30 74 79 70 65 73 20 61 72 65 20 70 61 73 73 65 64 |types are passed| 00003e40 20 69 6e 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a | in..</p>.......| 00003e50 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a |................| 00003e60 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c |.......<h2 id="L| 00003e70 61 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 74 79 |ayerClassMap">ty| 00003e80 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src| 00003e90 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003ea0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003eb0 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f |t/layerclass.go?| 00003ec0 73 3d 31 31 35 32 3a 31 31 38 39 23 4c 33 31 22 |s=1152:1189#L31"| 00003ed0 3e 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 3c 2f |>LayerClassMap</| 00003ee0 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e |a></h2>....<pre>| 00003ef0 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 4d |type LayerClassM| 00003f00 61 70 20 6d 61 70 5b 4c 61 79 65 72 54 79 70 65 |ap map[LayerType| 00003f10 5d 62 6f 6f 6c 3c 2f 70 72 65 3e 0a 09 09 09 3c |]bool</pre>....<| 00003f20 70 3e 0a 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |p>.LayerClassMap| 00003f30 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 20 4c 61 | implements a La| 00003f40 79 65 72 43 6c 61 73 73 20 77 69 74 68 20 61 20 |yerClass with a | 00003f50 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |map..</p>.......| 00003f60 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 |................| 00003f70 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="| 00003f80 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |NewLayerClassMap| 00003f90 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="| 00003fa0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003fb0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003fc0 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass| 00003fd0 2e 67 6f 3f 73 3d 31 34 35 33 3a 31 35 30 37 23 |.go?s=1453:1507#| 00003fe0 4c 34 31 22 3e 4e 65 77 4c 61 79 65 72 43 6c 61 |L41">NewLayerCla| 00003ff0 73 73 4d 61 70 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |ssMap</a></h3>..| 00004000 09 09 09 3c |...<| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..16384..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..16344..] Version=6 TrafficClass=0 FlowLabel=100497 Length=16344 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 3f d8 06 40 00 00 00 00 00 00 00 00 |`...?..@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..16312..] SrcPort=8080(http-alt) DstPort=58799 Seq=174438055 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=16352 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 65 b6 a7 08 97 18 4a 80 10 23 02 |.....e.....J..#.| 00000010 3f e0 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |?...............| --- Layer 4 --- Payload 16312 byte(s) 00000000 3e 56 61 72 69 61 62 6c 65 73 3c 2f 68 32 3e 0a |>Variables</h2>.| 00000010 09 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 |........<pre>var| 00000020 20 56 61 6c 69 64 4d 41 43 50 72 65 66 69 78 4d | ValidMACPrefixM| 00000030 61 70 20 3d 20 76 61 6c 69 64 4d 41 43 50 72 65 |ap = validMACPre| 00000040 66 69 78 4d 61 70 3c 2f 70 72 65 3e 0a 09 09 09 |fixMap</pre>....| 00000050 09 3c 70 3e 0a 56 61 6c 69 64 4d 41 43 50 72 65 |.<p>.ValidMACPre| 00000060 66 69 78 4d 61 70 20 6d 61 70 73 20 61 20 76 61 |fixMap maps a va| 00000070 6c 69 64 20 4d 41 43 20 61 64 64 72 65 73 73 20 |lid MAC address | 00000080 70 72 65 66 69 78 20 74 6f 20 74 68 65 20 6e 61 |prefix to the na| 00000090 6d 65 20 6f 66 20 74 68 65 0a 6f 72 67 61 6e 69 |me of the.organi| 000000a0 7a 61 74 69 6f 6e 20 74 68 61 74 20 6f 77 6e 73 |zation that owns| 000000b0 20 74 68 65 20 72 69 67 68 74 73 20 74 6f 20 75 | the rights to u| 000000c0 73 65 20 69 74 2e 20 20 57 65 20 6d 61 70 20 69 |se it. We map i| 000000d0 74 20 74 6f 20 61 20 68 69 64 64 65 6e 0a 76 61 |t to a hidden.va| 000000e0 72 69 61 62 6c 65 20 73 6f 20 69 74 20 77 6f 6e |riable so it won| 000000f0 26 23 33 39 3b 74 20 73 68 6f 77 20 75 70 20 69 |'t show up i| 00000100 6e 20 67 6f 64 6f 63 2c 20 73 69 6e 63 65 20 69 |n godoc, since i| 00000110 74 26 23 33 39 3b 73 20 61 20 76 65 72 79 20 6c |t's a very l| 00000120 61 72 67 65 20 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a |arge map..</p>..| 00000130 09 09 09 0a 09 09 0a 09 09 0a 09 09 0a 09 09 09 |................| 00000140 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="| 00000150 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer| 00000160 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 00000170 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00000180 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00000190 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d |acket/base.go?s=| 000001a0 32 32 30 32 3a 32 32 36 32 23 4c 35 37 22 3e 41 |2202:2262#L57">A| 000001b0 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 3c |pplicationLayer<| 000001c0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 000001d0 3e 74 79 70 65 20 41 70 70 6c 69 63 61 74 69 6f |>type Applicatio| 000001e0 6e 4c 61 79 65 72 20 69 6e 74 65 72 66 61 63 65 |nLayer interface| 000001f0 20 7b 0a 20 20 20 20 4c 61 79 65 72 0a 20 20 20 | {. Layer. | 00000200 20 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 | Payload() []byt| 00000210 65 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |e.}</pre>....<p>| 00000220 0a 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 |.ApplicationLaye| 00000230 72 20 69 73 20 74 68 65 20 70 61 63 6b 65 74 20 |r is the packet | 00000240 6c 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 |layer correspond| 00000250 69 6e 67 20 74 6f 20 74 68 65 20 54 43 50 2f 49 |ing to the TCP/I| 00000260 50 20 6c 61 79 65 72 20 34 20 28 4f 53 49 0a 6c |P layer 4 (OSI.l| 00000270 61 79 65 72 20 37 29 2c 20 61 6c 73 6f 20 6b 6e |ayer 7), also kn| 00000280 6f 77 6e 20 61 73 20 74 68 65 20 70 61 63 6b 65 |own as the packe| 00000290 74 20 70 61 79 6c 6f 61 64 2e 0a 3c 2f 70 3e 0a |t payload..</p>.| 000002a0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 000002b0 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 |................| 000002c0 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="| 000002d0 43 61 70 74 75 72 65 49 6e 66 6f 22 3e 74 79 70 |CaptureInfo">typ| 000002e0 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 000002f0 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00000300 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00000310 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 33 32 38 |/packet.go?s=328| 00000320 3a 36 33 32 23 4c 36 22 3e 43 61 70 74 75 72 65 |:632#L6">Capture| 00000330 49 6e 66 6f 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |Info</a></h2>...| 00000340 09 3c 70 72 65 3e 74 79 70 65 20 43 61 70 74 75 |.<pre>type Captu| 00000350 72 65 49 6e 66 6f 20 73 74 72 75 63 74 20 7b 0a |reInfo struct {.| 00000360 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 00000370 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 50 6f 70 |"comment">// Pop| 00000380 75 6c 61 74 65 64 20 69 73 20 73 65 74 20 74 6f |ulated is set to| 00000390 20 74 72 75 65 20 69 66 20 74 68 65 20 72 65 73 | true if the res| 000003a0 74 20 6f 66 20 74 68 65 20 43 61 70 74 75 72 65 |t of the Capture| 000003b0 49 6e 66 6f 20 68 61 73 20 62 65 65 6e 20 70 6f |Info has been po| 000003c0 70 75 6c 61 74 65 64 3c 2f 73 70 61 6e 3e 0a 20 |pulated</span>. | 000003d0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 000003e0 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 77 69 74 68 |comment">// with| 000003f0 20 61 63 74 75 61 6c 20 69 6e 66 6f 72 6d 61 74 | actual informat| 00000400 69 6f 6e 2e 20 20 49 66 20 50 6f 70 75 6c 61 74 |ion. If Populat| 00000410 65 64 20 69 73 20 66 61 6c 73 65 2c 20 74 68 65 |ed is false, the| 00000420 72 65 26 23 33 39 3b 73 20 6e 6f 20 70 6f 69 6e |re's no poin| 00000430 74 20 69 6e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |t in</span>. | 00000440 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00000450 6d 65 6e 74 22 3e 2f 2f 20 72 65 61 64 69 6e 67 |ment">// reading| 00000460 20 61 6e 79 20 6f 66 20 74 68 65 20 6f 74 68 65 | any of the othe| 00000470 72 20 66 69 65 6c 64 73 2e 3c 2f 73 70 61 6e 3e |r fields.</span>| 00000480 0a 20 20 20 20 50 6f 70 75 6c 61 74 65 64 20 20 |. Populated | 00000490 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 0a | bool.| 000004a0 20 20 20 20 54 69 6d 65 73 74 61 6d 70 20 20 20 | Timestamp | 000004b0 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 2e 54 | time.T| 000004c0 69 6d 65 0a 20 20 20 20 43 61 70 74 75 72 65 4c |ime. CaptureL| 000004d0 65 6e 67 74 68 2c 20 4c 65 6e 67 74 68 20 69 6e |ength, Length in| 000004e0 74 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |t.}</pre>....<p>| 000004f0 0a 43 61 70 74 75 72 65 49 6e 66 6f 20 63 6f 6e |.CaptureInfo con| 00000500 74 61 69 6e 73 20 63 61 70 74 75 72 65 20 6d 65 |tains capture me| 00000510 74 61 64 61 74 61 20 66 6f 72 20 61 20 70 61 63 |tadata for a pac| 00000520 6b 65 74 2e 20 20 49 66 20 61 20 70 61 63 6b 65 |ket. If a packe| 00000530 74 20 77 61 73 20 63 61 70 74 75 72 65 64 0a 6f |t was captured.o| 00000540 66 66 20 74 68 65 20 77 69 72 65 20 6f 72 20 72 |ff the wire or r| 00000550 65 61 64 20 66 72 6f 6d 20 61 20 70 63 61 70 20 |ead from a pcap | 00000560 66 69 6c 65 20 28 73 65 65 20 74 68 65 20 26 23 |file (see the &#| 00000570 33 39 3b 70 63 61 70 26 23 33 39 3b 20 73 75 62 |39;pcap' sub| 00000580 64 69 72 65 63 74 6f 72 79 29 2c 20 74 68 69 73 |directory), this| 00000590 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 69 6c |.information wil| 000005a0 6c 20 62 65 20 61 74 74 61 63 68 65 64 20 74 6f |l be attached to| 000005b0 20 74 68 65 20 70 61 63 6b 65 74 2e 0a 3c 2f 70 | the packet..</p| 000005c0 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |>...............| 000005d0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 |................| 000005e0 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 |..........<h2 id| 000005f0 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 72 65 22 |="DecodeFailure"| 00000600 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/| 00000610 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 00000620 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 00000630 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 |cket/decode.go?s| 00000640 3d 33 33 32 37 3a 33 33 38 31 23 4c 37 33 22 3e |=3327:3381#L73">| 00000650 44 65 63 6f 64 65 46 61 69 6c 75 72 65 3c 2f 61 |DecodeFailure</a| 00000660 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t| 00000670 79 70 65 20 44 65 63 6f 64 65 46 61 69 6c 75 72 |ype DecodeFailur| 00000680 65 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 3c |e struct {. <| 00000690 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 000006a0 65 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 |ent">// contains| 000006b0 20 66 69 6c 74 65 72 65 64 20 6f 72 20 75 6e 65 | filtered or une| 000006c0 78 70 6f 72 74 65 64 20 66 69 65 6c 64 73 3c 2f |xported fields</| 000006d0 73 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 |span>.}</pre>...| 000006e0 09 3c 70 3e 0a 44 65 63 6f 64 65 46 61 69 6c 75 |.<p>.DecodeFailu| 000006f0 72 65 20 69 73 20 61 20 70 61 63 6b 65 74 20 6c |re is a packet l| 00000700 61 79 65 72 20 63 72 65 61 74 65 64 20 69 66 20 |ayer created if | 00000710 64 65 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 |decoding of the | 00000720 70 61 63 6b 65 74 20 64 61 74 61 20 66 61 69 6c |packet data fail| 00000730 65 64 0a 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 |ed.for some reas| 00000740 6f 6e 2e 20 20 49 74 20 69 6d 70 6c 65 6d 65 6e |on. It implemen| 00000750 74 73 20 45 72 72 6f 72 4c 61 79 65 72 2e 20 20 |ts ErrorLayer. | 00000760 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 20 77 69 |LayerContents wi| 00000770 6c 6c 20 62 65 20 74 68 65 20 65 6e 74 69 72 65 |ll be the entire| 00000780 0a 73 65 74 20 6f 66 20 62 79 74 65 73 20 74 68 |.set of bytes th| 00000790 61 74 20 66 61 69 6c 65 64 20 74 6f 20 70 61 72 |at failed to par| 000007a0 73 65 2c 20 61 6e 64 20 45 72 72 6f 72 20 77 69 |se, and Error wi| 000007b0 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 |ll return the re| 000007c0 61 73 6f 6e 20 70 61 72 73 69 6e 67 0a 66 61 69 |ason parsing.fai| 000007d0 6c 65 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |led..</p>.......| 000007e0 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................| 000007f0 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 |.............<h3| 00000800 20 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 | id="DecodeFailu| 00000810 72 65 2e 45 72 72 6f 72 22 3e 66 75 6e 63 20 28 |re.Error">func (| 00000820 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) | 00000830 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00000840 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00000850 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 |nnell/gopacket/d| 00000860 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 34 33 39 3a |ecode.go?s=3439:| 00000870 33 34 37 36 23 4c 37 39 22 3e 45 72 72 6f 72 3c |3476#L79">Error<| 00000880 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 |/a></h3>.....<pr| 00000890 65 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 |e>func (d *Decod| 000008a0 65 46 61 69 6c 75 72 65 29 20 45 72 72 6f 72 28 |eFailure) Error(| 000008b0 29 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 |) error</pre>...| 000008c0 09 09 3c 70 3e 0a 45 72 72 6f 72 20 72 65 74 75 |..<p>.Error retu| 000008d0 72 6e 73 20 74 68 65 20 65 72 72 6f 72 20 65 6e |rns the error en| 000008e0 63 6f 75 6e 74 65 72 65 64 20 64 75 72 69 6e 67 |countered during| 000008f0 20 64 65 63 6f 64 69 6e 67 2e 0a 3c 2f 70 3e 0a | decoding..</p>.| 00000900 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................| 00000910 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="| 00000920 44 65 63 6f 64 65 46 61 69 6c 75 72 65 2e 4c 61 |DecodeFailure.La| 00000930 79 65 72 43 6f 6e 74 65 6e 74 73 22 3e 66 75 6e |yerContents">fun| 00000940 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 |c (*DecodeFailur| 00000950 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |e) <a href="/src| 00000960 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00000970 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00000980 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 35 |t/decode.go?s=35| 00000990 30 33 3a 33 35 34 39 23 4c 38 30 22 3e 4c 61 79 |03:3549#L80">Lay| 000009a0 65 72 43 6f 6e 74 65 6e 74 73 3c 2f 61 3e 3c 2f |erContents</a></| 000009b0 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun| 000009c0 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c |c (d *DecodeFail| 000009d0 75 72 65 29 20 4c 61 79 65 72 43 6f 6e 74 65 6e |ure) LayerConten| 000009e0 74 73 28 29 20 5b 5d 62 79 74 65 3c 2f 70 72 65 |ts() []byte</pre| 000009f0 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |>...............| 00000a00 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 |..............<h| 00000a10 33 20 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c |3 id="DecodeFail| 00000a20 75 72 65 2e 4c 61 79 65 72 50 61 79 6c 6f 61 64 |ure.LayerPayload| 00000a30 22 3e 66 75 6e 63 20 28 2a 44 65 63 6f 64 65 46 |">func (*DecodeF| 00000a40 61 69 6c 75 72 65 29 20 3c 61 20 68 72 65 66 3d |ailure) <a href=| 00000a50 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 00000a60 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 00000a70 70 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f |packet/decode.go| 00000a80 3f 73 3d 33 35 36 38 3a 33 36 31 33 23 4c 38 31 |?s=3568:3613#L81| 00000a90 22 3e 4c 61 79 65 72 50 61 79 6c 6f 61 64 3c 2f |">LayerPayload</| 00000aa0 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 |a></h3>.....<pre| 00000ab0 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 |>func (d *Decode| 00000ac0 46 61 69 6c 75 72 65 29 20 4c 61 79 65 72 50 61 |Failure) LayerPa| 00000ad0 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 3c 2f |yload() []byte</| 00000ae0 70 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 |pre>............| 00000af0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00000b00 09 3c 68 33 20 69 64 3d 22 44 65 63 6f 64 65 46 |.<h3 id="DecodeF| 00000b10 61 69 6c 75 72 65 2e 4c 61 79 65 72 54 79 70 65 |ailure.LayerType| 00000b20 22 3e 66 75 6e 63 20 28 2a 44 65 63 6f 64 65 46 |">func (*DecodeF| 00000b30 61 69 6c 75 72 65 29 20 3c 61 20 68 72 65 66 3d |ailure) <a href=| 00000b40 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 00000b50 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 00000b60 70 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f |packet/decode.go| 00000b70 3f 73 3d 33 37 35 30 3a 33 37 39 35 23 4c 38 35 |?s=3750:3795#L85| 00000b80 22 3e 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c |">LayerType</a><| 00000b90 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu| 00000ba0 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 |nc (d *DecodeFai| 00000bb0 6c 75 72 65 29 20 4c 61 79 65 72 54 79 70 65 28 |lure) LayerType(| 00000bc0 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 70 72 65 |) LayerType</pre| 00000bd0 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 72 54 |>.....<p>.LayerT| 00000be0 79 70 65 20 72 65 74 75 72 6e 73 20 4c 61 79 65 |ype returns Laye| 00000bf0 72 54 79 70 65 44 65 63 6f 64 65 46 61 69 6c 75 |rTypeDecodeFailu| 00000c00 72 65 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 |re.</p>.........| 00000c10 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................| 00000c20 3c 68 33 20 69 64 3d 22 44 65 63 6f 64 65 46 61 |<h3 id="DecodeFa| 00000c30 69 6c 75 72 65 2e 53 74 72 69 6e 67 22 3e 66 75 |ilure.String">fu| 00000c40 6e 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 |nc (*DecodeFailu| 00000c50 72 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |re) <a href="/sr| 00000c60 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00000c70 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000c80 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 |et/decode.go?s=3| 00000c90 36 33 30 3a 33 36 36 39 23 4c 38 32 22 3e 53 74 |630:3669#L82">St| 00000ca0 72 69 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |ring</a></h3>...| 00000cb0 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 64 20 2a |..<pre>func (d *| 00000cc0 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 53 |DecodeFailure) S| 00000cd0 74 72 69 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f |tring() string</| 00000ce0 70 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 |pre>............| 00000cf0 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................| 00000d00 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 44 65 |......<h2 id="De| 00000d10 63 6f 64 65 46 75 6e 63 22 3e 74 79 70 65 20 3c |codeFunc">type <| 00000d20 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg| 00000d30 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon| 00000d40 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 |nell/gopacket/de| 00000d50 63 6f 64 65 2e 67 6f 3f 73 3d 32 31 30 34 3a 32 |code.go?s=2104:2| 00000d60 31 35 33 23 4c 34 36 22 3e 44 65 63 6f 64 65 46 |153#L46">DecodeF| 00000d70 75 6e 63 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 |unc</a></h2>....| 00000d80 3c 70 72 65 3e 74 79 70 65 20 44 65 63 6f 64 65 |<pre>type Decode| 00000d90 46 75 6e 63 20 66 75 6e 63 28 5b 5d 62 79 74 65 |Func func([]byte| 00000da0 2c 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 |, PacketBuilder)| 00000db0 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 | error</pre>....| 00000dc0 3c 70 3e 0a 44 65 63 6f 64 65 46 75 6e 63 20 77 |<p>.DecodeFunc w| 00000dd0 72 61 70 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 |raps a function | 00000de0 74 6f 20 6d 61 6b 65 20 69 74 20 61 20 44 65 63 |to make it a Dec| 00000df0 6f 64 65 72 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 |oder..</p>......| 00000e00 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 00000e10 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 |..............<h| 00000e20 33 20 69 64 3d 22 44 65 63 6f 64 65 46 75 6e 63 |3 id="DecodeFunc| 00000e30 2e 44 65 63 6f 64 65 22 3e 66 75 6e 63 20 28 44 |.Decode">func (D| 00000e40 65 63 6f 64 65 46 75 6e 63 29 20 3c 61 20 68 72 |ecodeFunc) <a hr| 00000e50 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00000e60 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00000e70 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 6f 64 65 |/gopacket/decode| 00000e80 2e 67 6f 3f 73 3d 32 31 35 35 3a 32 32 31 37 23 |.go?s=2155:2217#| 00000e90 4c 34 38 22 3e 44 65 63 6f 64 65 3c 2f 61 3e 3c |L48">Decode</a><| 00000ea0 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu| 00000eb0 6e 63 20 28 64 20 44 65 63 6f 64 65 46 75 6e 63 |nc (d DecodeFunc| 00000ec0 29 20 44 65 63 6f 64 65 28 64 61 74 61 20 5b 5d |) Decode(data []| 00000ed0 62 79 74 65 2c 20 70 20 50 61 63 6b 65 74 42 75 |byte, p PacketBu| 00000ee0 69 6c 64 65 72 29 20 65 72 72 6f 72 3c 2f 70 72 |ilder) error</pr| 00000ef0 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |e>..............| 00000f00 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................| 00000f10 0a 09 09 09 3c 68 32 20 69 64 3d 22 44 65 63 6f |....<h2 id="Deco| 00000f20 64 65 4f 70 74 69 6f 6e 73 22 3e 74 79 70 65 20 |deOptions">type | 00000f30 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00000f40 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00000f50 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 |nnell/gopacket/p| 00000f60 61 63 6b 65 74 2e 67 6f 3f 73 3d 38 33 31 39 3a |acket.go?s=8319:| 00000f70 38 39 39 30 23 4c 33 30 38 22 3e 44 65 63 6f 64 |8990#L308">Decod| 00000f80 65 4f 70 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 68 32 |eOptions</a></h2| 00000f90 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 44 |>....<pre>type D| 00000fa0 65 63 6f 64 65 4f 70 74 69 6f 6e 73 20 73 74 72 |ecodeOptions str| 00000fb0 75 63 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 |uct {. <span | 00000fc0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00000fd0 2f 2f 20 4c 61 7a 79 20 64 65 63 6f 64 69 6e 67 |// Lazy decoding| 00000fe0 20 64 65 63 6f 64 65 73 20 74 68 65 20 6d 69 6e | decodes the min| 00000ff0 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6c |imum number of l| 00001000 61 79 65 72 73 20 6e 65 65 64 65 64 20 74 6f 20 |ayers needed to | 00001010 72 65 74 75 72 6e 20 64 61 74 61 3c 2f 73 70 61 |return data</spa| 00001020 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla| 00001030 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 00001040 66 6f 72 20 61 20 70 61 63 6b 65 74 20 61 74 20 |for a packet at | 00001050 65 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 63 61 |each function ca| 00001060 6c 6c 2e 20 20 42 65 20 63 61 72 65 66 75 6c 20 |ll. Be careful | 00001070 75 73 69 6e 67 20 74 68 69 73 20 77 69 74 68 20 |using this with | 00001080 63 6f 6e 63 75 72 72 65 6e 74 3c 2f 73 70 61 6e |concurrent</span| 00001090 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |>. <span clas| 000010a0 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 70 |s="comment">// p| 000010b0 61 63 6b 65 74 20 70 72 6f 63 65 73 73 6f 72 73 |acket processors| 000010c0 2c 20 61 73 20 65 61 63 68 20 63 61 6c 6c 20 74 |, as each call t| 000010d0 6f 20 70 61 63 6b 65 74 2e 2a 20 63 6f 75 6c 64 |o packet.* could| 000010e0 20 6d 75 74 61 74 65 20 74 68 65 20 70 61 63 6b | mutate the pack| 000010f0 65 74 2c 20 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 |et, and</span>. | 00001100 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00001110 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 74 77 6f 20 |comment">// two | 00001120 63 6f 6e 63 75 72 72 65 6e 74 20 66 75 6e 63 74 |concurrent funct| 00001130 69 6f 6e 20 63 61 6c 6c 73 20 63 6f 75 6c 64 20 |ion calls could | 00001140 69 6e 74 65 72 61 63 74 20 70 6f 6f 72 6c 79 2e |interact poorly.| 00001150 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c 61 7a 79 |</span>. Lazy| 00001160 20 62 6f 6f 6c 0a 20 20 20 20 3c 73 70 61 6e 20 | bool. <span | 00001170 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00001180 2f 2f 20 4e 6f 43 6f 70 79 20 64 65 63 6f 64 69 |// NoCopy decodi| 00001190 6e 67 20 64 6f 65 73 6e 26 23 33 39 3b 74 20 63 |ng doesn't c| 000011a0 6f 70 79 20 69 74 73 20 69 6e 70 75 74 20 62 75 |opy its input bu| 000011b0 66 66 65 72 20 69 6e 74 6f 20 73 74 6f 72 61 67 |ffer into storag| 000011c0 65 20 74 68 61 74 26 23 33 39 3b 73 20 6f 77 6e |e that's own| 000011d0 65 64 20 62 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 |ed by</span>. | 000011e0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co| 000011f0 6d 6d 65 6e 74 22 3e 2f 2f 20 74 68 65 20 70 61 |mment">// the pa| 00001200 63 6b 65 74 2e 20 20 49 66 20 79 6f 75 20 63 61 |cket. If you ca| 00001210 6e 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 |n guarantee that| 00001220 20 74 68 65 20 62 79 74 65 73 20 75 6e 64 65 72 | the bytes under| 00001230 6c 79 69 6e 67 20 74 68 65 20 73 6c 69 63 65 3c |lying the slice<| 00001240 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e |/span>. <span| 00001250 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 00001260 3e 2f 2f 20 70 61 73 73 65 64 20 69 6e 74 6f 20 |>// passed into | 00001270 4e 65 77 50 61 63 6b 65 74 20 61 72 65 6e 26 23 |NewPacket aren&#| 00001280 33 39 3b 74 20 67 6f 69 6e 67 20 74 6f 20 62 65 |39;t going to be| 00001290 20 6d 6f 64 69 66 69 65 64 2c 20 74 68 69 73 20 | modified, this | 000012a0 63 61 6e 20 62 65 20 66 61 73 74 65 72 2e 20 20 |can be faster. | 000012b0 49 66 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |If</span>. <s| 000012c0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000012d0 6e 74 22 3e 2f 2f 20 74 68 65 72 65 26 23 33 39 |nt">// there'| 000012e0 3b 73 20 61 6e 79 20 63 68 61 6e 63 65 20 74 68 |;s any chance th| 000012f0 61 74 20 74 68 6f 73 65 20 62 79 74 65 73 20 57 |at those bytes W| 00001300 49 4c 4c 20 62 65 20 63 68 61 6e 67 65 64 2c 20 |ILL be changed, | 00001310 74 68 69 73 20 77 69 6c 6c 20 69 6e 76 61 6c 69 |this will invali| 00001320 64 61 74 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |date</span>. | 00001330 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00001340 6d 65 6e 74 22 3e 2f 2f 20 79 6f 75 72 20 70 61 |ment">// your pa| 00001350 63 6b 65 74 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |ckets.</span>. | 00001360 20 20 4e 6f 43 6f 70 79 20 62 6f 6f 6c 0a 7d 3c | NoCopy bool.}<| 00001370 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 44 65 63 |/pre>....<p>.Dec| 00001380 6f 64 65 4f 70 74 69 6f 6e 73 20 74 65 6c 6c 73 |odeOptions tells| 00001390 20 67 6f 70 61 63 6b 65 74 20 68 6f 77 20 74 6f | gopacket how to| 000013a0 20 64 65 63 6f 64 65 20 61 20 70 61 63 6b 65 74 | decode a packet| 000013b0 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........| 000013c0 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 |......<pre>var D| 000013d0 65 66 61 75 6c 74 20 44 65 63 6f 64 65 4f 70 74 |efault DecodeOpt| 000013e0 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 |ions = DecodeOpt| 000013f0 69 6f 6e 73 7b 7d 3c 2f 70 72 65 3e 0a 09 09 09 |ions{}</pre>....| 00001400 09 3c 70 3e 0a 44 65 66 61 75 6c 74 20 64 65 63 |.<p>.Default dec| 00001410 6f 64 69 6e 67 20 70 72 6f 76 69 64 65 73 20 74 |oding provides t| 00001420 68 65 20 73 61 66 65 73 74 20 28 62 75 74 20 73 |he safest (but s| 00001430 6c 6f 77 65 73 74 29 20 6d 65 74 68 6f 64 20 66 |lowest) method f| 00001440 6f 72 20 64 65 63 6f 64 69 6e 67 0a 70 61 63 6b |or decoding.pack| 00001450 65 74 73 2e 20 20 49 74 20 65 61 67 65 72 6c 79 |ets. It eagerly| 00001460 20 70 72 6f 63 65 73 73 65 73 20 61 6c 6c 20 6c | processes all l| 00001470 61 79 65 72 73 20 28 73 6f 20 69 74 26 23 33 39 |ayers (so it'| 00001480 3b 73 20 63 6f 6e 63 75 72 72 65 6e 63 79 2d 73 |;s concurrency-s| 00001490 61 66 65 29 20 61 6e 64 20 69 74 0a 63 6f 70 69 |afe) and it.copi| 000014a0 65 73 20 69 74 73 20 69 6e 70 75 74 20 62 75 66 |es its input buf| 000014b0 66 65 72 20 75 70 6f 6e 20 63 72 65 61 74 69 6f |fer upon creatio| 000014c0 6e 20 6f 66 20 74 68 65 20 70 61 63 6b 65 74 20 |n of the packet | 000014d0 28 73 6f 20 74 68 65 20 70 61 63 6b 65 74 20 72 |(so the packet r| 000014e0 65 6d 61 69 6e 73 0a 76 61 6c 69 64 20 69 66 20 |emains.valid if | 000014f0 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 |the underlying s| 00001500 6c 69 63 65 20 69 73 20 6d 6f 64 69 66 69 65 64 |lice is modified| 00001510 2e 20 20 42 6f 74 68 20 6f 66 20 74 68 65 73 65 |. Both of these| 00001520 20 74 61 6b 65 20 74 69 6d 65 2c 0a 74 68 6f 75 | take time,.thou| 00001530 67 68 2c 20 73 6f 20 62 65 77 61 72 65 2e 20 20 |gh, so beware. | 00001540 49 66 20 79 6f 75 20 63 61 6e 20 67 75 61 72 61 |If you can guara| 00001550 6e 74 65 65 20 74 68 61 74 20 74 68 65 20 70 61 |ntee that the pa| 00001560 63 6b 65 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 |cket will only b| 00001570 65 20 75 73 65 64 0a 62 79 20 6f 6e 65 20 67 6f |e used.by one go| 00001580 72 6f 75 74 69 6e 65 20 61 74 20 61 20 74 69 6d |routine at a tim| 00001590 65 2c 20 73 65 74 20 4c 61 7a 79 20 64 65 63 6f |e, set Lazy deco| 000015a0 64 69 6e 67 2e 20 20 49 66 20 79 6f 75 20 63 61 |ding. If you ca| 000015b0 6e 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 |n guarantee that| 000015c0 0a 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 |.the underlying | 000015d0 73 6c 69 63 65 20 77 6f 6e 26 23 33 39 3b 74 20 |slice won't | 000015e0 63 68 61 6e 67 65 2c 20 73 65 74 20 4e 6f 43 6f |change, set NoCo| 000015f0 70 79 20 64 65 63 6f 64 69 6e 67 2e 0a 3c 2f 70 |py decoding..</p| 00001600 3e 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e |>..........<pre>| 00001610 76 61 72 20 4c 61 7a 79 20 44 65 63 6f 64 65 4f |var Lazy DecodeO| 00001620 70 74 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f |ptions = DecodeO| 00001630 70 74 69 6f 6e 73 7b 4c 61 7a 79 3a 20 74 72 75 |ptions{Lazy: tru| 00001640 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |e}</pre>.....<p>| 00001650 0a 4c 61 7a 79 20 69 73 20 61 20 44 65 63 6f 64 |.Lazy is a Decod| 00001660 65 4f 70 74 69 6f 6e 73 20 77 69 74 68 20 6a 75 |eOptions with ju| 00001670 73 74 20 4c 61 7a 79 20 73 65 74 2e 0a 3c 2f 70 |st Lazy set..</p| 00001680 3e 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e |>..........<pre>| 00001690 76 61 72 20 4e 6f 43 6f 70 79 20 44 65 63 6f 64 |var NoCopy Decod| 000016a0 65 4f 70 74 69 6f 6e 73 20 3d 20 44 65 63 6f 64 |eOptions = Decod| 000016b0 65 4f 70 74 69 6f 6e 73 7b 4e 6f 43 6f 70 79 3a |eOptions{NoCopy:| 000016c0 20 74 72 75 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 | true}</pre>....| 000016d0 09 3c 70 3e 0a 4e 6f 43 6f 70 79 20 69 73 20 61 |.<p>.NoCopy is a| 000016e0 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 20 77 | DecodeOptions w| 000016f0 69 74 68 20 6a 75 73 74 20 4e 6f 43 6f 70 79 20 |ith just NoCopy | 00001700 73 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 0a |set..</p>.......| 00001710 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................| 00001720 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 | 00001730 69 64 3d 22 44 65 63 6f 64 65 72 22 3e 74 79 70 |id="Decoder">typ| 00001740 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00001750 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00001760 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00001770 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 31 37 37 |/decode.go?s=177| 00001780 38 3a 32 30 34 39 23 4c 33 38 22 3e 44 65 63 6f |8:2049#L38">Deco| 00001790 64 65 72 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 |der</a></h2>....| 000017a0 3c 70 72 65 3e 74 79 70 65 20 44 65 63 6f 64 65 |<pre>type Decode| 000017b0 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 |r interface {. | 000017c0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 000017d0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 |omment">// Decod| 000017e0 65 20 64 65 63 6f 64 65 73 20 74 68 65 20 62 79 |e decodes the by| 000017f0 74 65 73 20 6f 66 20 61 20 70 61 63 6b 65 74 2c |tes of a packet,| 00001800 20 73 65 6e 64 69 6e 67 20 64 65 63 6f 64 65 64 | sending decoded| 00001810 20 76 61 6c 75 65 73 20 61 6e 64 20 6f 74 68 65 | values and othe| 00001820 72 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |r</span>. <sp| 00001830 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 00001840 74 22 3e 2f 2f 20 69 6e 66 6f 72 6d 61 74 69 6f |t">// informatio| 00001850 6e 20 74 6f 20 50 61 63 6b 65 74 42 75 69 6c 64 |n to PacketBuild| 00001860 65 72 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e |er, and returnin| 00001870 67 20 61 6e 20 65 72 72 6f 72 20 69 66 20 75 6e |g an error if un| 00001880 73 75 63 63 65 73 73 66 75 6c 2e 20 20 53 65 65 |successful. See| 00001890 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 000018a0 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 000018b0 22 3e 2f 2f 20 74 68 65 20 50 61 63 6b 65 74 42 |">// the PacketB| 000018c0 75 69 6c 64 65 72 20 64 6f 63 75 6d 65 6e 74 61 |uilder documenta| 000018d0 74 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 64 65 |tion for more de| 000018e0 74 61 69 6c 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |tails.</span>. | 000018f0 20 20 44 65 63 6f 64 65 28 5b 5d 62 79 74 65 2c | Decode([]byte,| 00001900 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) | 00001910 65 72 72 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 |error.}</pre>...| 00001920 09 3c 70 3e 0a 44 65 63 6f 64 65 72 20 69 73 20 |.<p>.Decoder is | 00001930 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 |an interface for| 00001940 20 6c 6f 67 69 63 20 74 6f 20 64 65 63 6f 64 65 | logic to decode| 00001950 20 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 2e | a packet layer.| 00001960 20 20 55 73 65 72 73 20 6d 61 79 0a 69 6d 70 6c | Users may.impl| 00001970 65 6d 65 6e 74 20 61 20 44 65 63 6f 64 65 72 20 |ement a Decoder | 00001980 74 6f 20 68 61 6e 64 6c 65 20 74 68 65 69 72 20 |to handle their | 00001990 6f 77 6e 20 73 74 72 61 6e 67 65 20 70 61 63 6b |own strange pack| 000019a0 65 74 20 74 79 70 65 73 2c 20 6f 72 20 6d 61 79 |et types, or may| 000019b0 20 75 73 65 20 6f 6e 65 0a 6f 66 20 74 68 65 20 | use one.of the | 000019c0 6d 61 6e 79 20 64 65 63 6f 64 65 72 73 20 61 76 |many decoders av| 000019d0 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 26 |ailable in the &| 000019e0 23 33 39 3b 6c 61 79 65 72 73 26 23 33 39 3b 20 |#39;layers' | 000019f0 73 75 62 70 61 63 6b 61 67 65 20 74 6f 20 64 65 |subpackage to de| 00001a00 63 6f 64 65 20 74 68 69 6e 67 73 0a 66 6f 72 20 |code things.for | 00001a10 74 68 65 6d 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 |them..</p>......| 00001a20 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 |..........<pre>v| 00001a30 61 72 20 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 |ar DecodePayload| 00001a40 20 44 65 63 6f 64 65 72 20 3d 20 44 65 63 6f 64 | Decoder = Decod| 00001a50 65 46 75 6e 63 28 64 65 63 6f 64 65 50 61 79 6c |eFunc(decodePayl| 00001a60 6f 61 64 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |oad)</pre>.....<| 00001a70 70 3e 0a 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 |p>.DecodePayload| 00001a80 20 69 73 20 61 20 44 65 63 6f 64 65 72 20 74 68 | is a Decoder th| 00001a90 61 74 20 72 65 74 75 72 6e 73 20 61 20 50 61 79 |at returns a Pay| 00001aa0 6c 6f 61 64 20 6c 61 79 65 72 20 63 6f 6e 74 61 |load layer conta| 00001ab0 69 6e 69 6e 67 20 61 6c 6c 0a 72 65 6d 61 69 6e |ining all.remain| 00001ac0 69 6e 67 20 62 79 74 65 73 2e 0a 3c 2f 70 3e 0a |ing bytes..</p>.| 00001ad0 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 |.........<pre>va| 00001ae0 72 20 44 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 |r DecodeUnknown | 00001af0 44 65 63 6f 64 65 72 20 3d 20 44 65 63 6f 64 65 |Decoder = Decode| 00001b00 46 75 6e 63 28 64 65 63 6f 64 65 55 6e 6b 6e 6f |Func(decodeUnkno| 00001b10 77 6e 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 |wn)</pre>.....<p| 00001b20 3e 0a 44 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 |>.DecodeUnknown | 00001b30 69 73 20 61 20 44 65 63 6f 64 65 72 20 74 68 61 |is a Decoder tha| 00001b40 74 20 72 65 74 75 72 6e 73 20 61 20 44 65 63 6f |t returns a Deco| 00001b50 64 65 46 61 69 6c 75 72 65 20 6c 61 79 65 72 20 |deFailure layer | 00001b60 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 0a 72 |containing all.r| 00001b70 65 6d 61 69 6e 69 6e 67 20 62 79 74 65 73 2c 20 |emaining bytes, | 00001b80 75 73 65 66 75 6c 20 69 66 20 79 6f 75 20 72 75 |useful if you ru| 00001b90 6e 20 75 70 20 61 67 61 69 6e 73 74 20 61 20 6c |n up against a l| 00001ba0 61 79 65 72 20 74 68 61 74 20 79 6f 75 26 23 33 |ayer that you| 00001bb0 39 3b 72 65 20 75 6e 61 62 6c 65 20 74 6f 0a 64 |9;re unable to.d| 00001bc0 65 63 6f 64 65 20 79 65 74 2e 0a 3c 2f 70 3e 0a |ecode yet..</p>.| 00001bd0 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................| 00001be0 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................| 00001bf0 09 09 3c 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 |..<h2 id="Endpoi| 00001c00 6e 74 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |nt">type <a href| 00001c10 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00001c20 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00001c30 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f |opacket/flows.go| 00001c40 3f 73 3d 33 31 30 3a 33 36 34 23 4c 35 22 3e 45 |?s=310:364#L5">E| 00001c50 6e 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 68 32 3e |ndpoint</a></h2>| 00001c60 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 45 6e |....<pre>type En| 00001c70 64 70 6f 69 6e 74 20 73 74 72 75 63 74 20 7b 0a |dpoint struct {.| 00001c80 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 00001c90 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e |"comment">// con| 00001ca0 74 61 69 6e 73 20 66 69 6c 74 65 72 65 64 20 6f |tains filtered o| 00001cb0 72 20 75 6e 65 78 70 6f 72 74 65 64 20 66 69 65 |r unexported fie| 00001cc0 6c 64 73 3c 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 |lds</span>.}</pr| 00001cd0 65 3e 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 |e>....<p>.Endpoi| 00001ce0 6e 74 20 69 73 20 74 68 65 20 73 65 74 20 6f 66 |nt is the set of| 00001cf0 20 62 79 74 65 73 20 75 73 65 64 20 74 6f 20 61 | bytes used to a| 00001d00 64 64 72 65 73 73 20 70 61 63 6b 65 74 73 20 61 |ddress packets a| 00001d10 74 20 76 61 72 69 6f 75 73 20 6c 61 79 65 72 73 |t various layers| 00001d20 2e 0a 53 65 65 20 4c 69 6e 6b 4c 61 79 65 72 2c |..See LinkLayer,| 00001d30 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 2c 20 61 | NetworkLayer, a| 00001d40 6e 64 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |nd TransportLaye| 00001d50 72 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 |r specifications| 00001d60 2e 0a 45 6e 64 70 6f 69 6e 74 73 20 61 72 65 20 |..Endpoints are | 00001d70 75 73 61 62 6c 65 20 61 73 20 6d 61 70 20 6b 65 |usable as map ke| 00001d80 79 73 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a |ys..</p>........| 00001d90 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................| 00001da0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e |.......<h3 id="N| 00001db0 65 77 45 6e 64 70 6f 69 6e 74 22 3e 66 75 6e 63 |ewEndpoint">func| 00001dc0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 00001dd0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00001de0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00001df0 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 31 36 34 3a |flows.go?s=1164:| 00001e00 31 32 31 39 23 4c 32 36 22 3e 4e 65 77 45 6e 64 |1219#L26">NewEnd| 00001e10 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |point</a></h3>..| 00001e20 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 4e 65 77 |...<pre>func New| 00001e30 45 6e 64 70 6f 69 6e 74 28 74 79 70 20 45 6e 64 |Endpoint(typ End| 00001e40 70 6f 69 6e 74 54 79 70 65 2c 20 72 61 77 20 5b |pointType, raw [| 00001e50 5d 62 79 74 65 29 20 45 6e 64 70 6f 69 6e 74 3c |]byte) Endpoint<| 00001e60 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne| 00001e70 77 45 6e 64 70 6f 69 6e 74 20 63 72 65 61 74 65 |wEndpoint create| 00001e80 73 20 61 20 6e 65 77 20 45 6e 64 70 6f 69 6e 74 |s a new Endpoint| 00001e90 20 6f 62 6a 65 63 74 2e 0a 3c 2f 70 3e 0a 0a 09 | object..</p>...| 00001ea0 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................| 00001eb0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 45 6e |......<h3 id="En| 00001ec0 64 70 6f 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 |dpoint.EndpointT| 00001ed0 79 70 65 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f |ype">func (Endpo| 00001ee0 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |int) <a href="/s| 00001ef0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 00001f00 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 00001f10 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 34 |ket/flows.go?s=4| 00001f20 33 39 3a 34 38 34 23 4c 31 31 22 3e 45 6e 64 70 |39:484#L11">Endp| 00001f30 6f 69 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 |ointType</a></h3| 00001f40 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00001f50 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 45 6e 64 |(e Endpoint) End| 00001f60 70 6f 69 6e 74 54 79 70 65 28 29 20 45 6e 64 70 |pointType() Endp| 00001f70 6f 69 6e 74 54 79 70 65 3c 2f 70 72 65 3e 0a 09 |ointType</pre>..| 00001f80 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 |...<p>.EndpointT| 00001f90 79 70 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 |ype returns the | 00001fa0 65 6e 64 70 6f 69 6e 74 20 74 79 70 65 20 61 73 |endpoint type as| 00001fb0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 |sociated with th| 00001fc0 69 73 20 65 6e 64 70 6f 69 6e 74 2e 0a 3c 2f 70 |is endpoint..</p| 00001fd0 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............| 00001fe0 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00001ff0 3d 22 45 6e 64 70 6f 69 6e 74 2e 4c 65 73 73 54 |="Endpoint.LessT| 00002000 68 61 6e 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f |han">func (Endpo| 00002010 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |int) <a href="/s| 00002020 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 00002030 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 00002040 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 |ket/flows.go?s=1| 00002050 30 31 30 3a 31 30 35 33 23 4c 32 31 22 3e 4c 65 |010:1053#L21">Le| 00002060 73 73 54 68 61 6e 3c 2f 61 3e 3c 2f 68 33 3e 0a |ssThan</a></h3>.| 00002070 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 61 |....<pre>func (a| 00002080 20 45 6e 64 70 6f 69 6e 74 29 20 4c 65 73 73 54 | Endpoint) LessT| 00002090 68 61 6e 28 62 20 45 6e 64 70 6f 69 6e 74 29 20 |han(b Endpoint) | 000020a0 62 6f 6f 6c 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |bool</pre>.....<| 000020b0 70 3e 0a 4c 65 73 73 54 68 61 6e 20 70 72 6f 76 |p>.LessThan prov| 000020c0 69 64 65 73 20 61 20 73 74 61 62 6c 65 20 6f 72 |ides a stable or| 000020d0 64 65 72 69 6e 67 20 66 6f 72 20 61 6c 6c 20 65 |dering for all e| 000020e0 6e 64 70 6f 69 6e 74 73 2e 20 20 49 74 20 73 6f |ndpoints. It so| 000020f0 72 74 73 20 66 69 72 73 74 20 62 61 73 65 64 0a |rts first based.| 00002100 6f 6e 20 74 68 65 20 45 6e 64 70 6f 69 6e 74 54 |on the EndpointT| 00002110 79 70 65 20 6f 66 20 61 6e 20 65 6e 64 70 6f 69 |ype of an endpoi| 00002120 6e 74 2c 20 74 68 65 6e 20 62 61 73 65 64 20 6f |nt, then based o| 00002130 6e 20 74 68 65 20 72 61 77 20 62 79 74 65 73 20 |n the raw bytes | 00002140 6f 66 20 74 68 61 74 20 65 6e 64 70 6f 69 6e 74 |of that endpoint| 00002150 2e 0a 46 6f 72 20 73 6f 6d 65 20 65 6e 64 70 6f |..For some endpo| 00002160 69 6e 74 73 2c 20 74 68 65 20 61 63 74 75 61 6c |ints, the actual| 00002170 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6d 61 79 20 | comparison may | 00002180 6e 6f 74 20 6d 61 6b 65 20 73 65 6e 73 65 2c 20 |not make sense, | 00002190 68 6f 77 65 76 65 72 20 74 68 69 73 0a 6f 72 64 |however this.ord| 000021a0 65 72 69 6e 67 20 64 6f 65 73 20 70 72 6f 76 69 |ering does provi| 000021b0 64 65 20 75 73 65 66 75 6c 20 69 6e 66 6f 72 6d |de useful inform| 000021c0 61 74 69 6f 6e 20 66 6f 72 20 6d 6f 73 74 20 45 |ation for most E| 000021d0 6e 64 70 6f 69 6e 74 20 74 79 70 65 73 2e 0a 3c |ndpoint types..<| 000021e0 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/p>.............| 000021f0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 | 00002200 69 64 3d 22 45 6e 64 70 6f 69 6e 74 2e 52 61 77 |id="Endpoint.Raw| 00002210 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 |">func (Endpoint| 00002220 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/| 00002230 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00002240 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00002250 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 36 34 31 3a |/flows.go?s=641:| 00002260 36 37 31 23 4c 31 35 22 3e 52 61 77 3c 2f 61 3e |671#L15">Raw</a>| 00002270 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 00002280 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 |unc (e Endpoint)| 00002290 20 52 61 77 28 29 20 5b 5d 62 79 74 65 3c 2f 70 | Raw() []byte</p| 000022a0 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 52 61 77 20 |re>.....<p>.Raw | 000022b0 72 65 74 75 72 6e 73 20 74 68 65 20 72 61 77 20 |returns the raw | 000022c0 62 79 74 65 73 20 6f 66 20 74 68 69 73 20 65 6e |bytes of this en| 000022d0 64 70 6f 69 6e 74 2e 20 20 54 68 65 73 65 20 61 |dpoint. These a| 000022e0 72 65 6e 26 23 33 39 3b 74 20 68 75 6d 61 6e 2d |ren't human-| 000022f0 72 65 61 64 61 62 6c 65 0a 6d 6f 73 74 20 6f 66 |readable.most of| 00002300 20 74 68 65 20 74 69 6d 65 2c 20 62 75 74 20 74 | the time, but t| 00002310 68 65 79 20 61 72 65 20 66 61 73 74 65 72 20 74 |hey are faster t| 00002320 68 61 6e 20 63 61 6c 6c 69 6e 67 20 53 74 72 69 |han calling Stri| 00002330 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |ng..</p>........| 00002340 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002350 09 3c 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 6e |.<h3 id="Endpoin| 00002360 74 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |t.String">func (| 00002370 45 6e 64 70 6f 69 6e 74 29 20 3c 61 20 68 72 65 |Endpoint) <a hre| 00002380 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith| 00002390 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/| 000023a0 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 |gopacket/flows.g| 000023b0 6f 3f 73 3d 32 33 36 39 3a 32 34 30 32 23 4c 36 |o?s=2369:2402#L6| 000023c0 34 22 3e 53 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 |4">String</a></h| 000023d0 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func| 000023e0 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 53 74 | (e Endpoint) St| 000023f0 72 69 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 70 |ring() string</p| 00002400 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |re>.............| 00002410 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 |................| 00002420 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 45 6e 64 |.....<h2 id="End| 00002430 70 6f 69 6e 74 54 79 70 65 22 3e 74 79 70 65 20 |pointType">type | 00002440 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00002450 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00002460 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 |nnell/gopacket/f| 00002470 6c 6f 77 73 2e 67 6f 3f 73 3d 31 37 34 36 3a 31 |lows.go?s=1746:1| 00002480 37 36 39 23 4c 34 31 22 3e 45 6e 64 70 6f 69 6e |769#L41">Endpoin| 00002490 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 |tType</a></h2>..| 000024a0 09 09 3c 70 72 65 3e 74 79 70 65 20 45 6e 64 70 |..<pre>type Endp| 000024b0 6f 69 6e 74 54 79 70 65 20 69 6e 74 36 34 3c 2f |ointType int64</| 000024c0 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 |pre>....<p>.Endp| 000024d0 6f 69 6e 74 54 79 70 65 20 69 73 20 74 68 65 20 |ointType is the | 000024e0 74 79 70 65 20 6f 66 20 61 20 67 6f 70 61 63 6b |type of a gopack| 000024f0 65 74 20 45 6e 64 70 6f 69 6e 74 2e 20 20 54 68 |et Endpoint. Th| 00002500 69 73 20 74 79 70 65 20 64 65 74 65 72 6d 69 6e |is type determin| 00002510 65 73 20 68 6f 77 0a 74 68 65 20 62 79 74 65 73 |es how.the bytes| 00002520 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 65 | stored in the e| 00002530 6e 64 70 6f 69 6e 74 20 73 68 6f 75 6c 64 20 62 |ndpoint should b| 00002540 65 20 69 6e 74 65 72 70 72 65 74 65 64 2e 0a 3c |e interpreted..<| 00002550 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |/p>.............| 00002560 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00002570 09 09 3c 68 33 20 69 64 3d 22 52 65 67 69 73 74 |..<h3 id="Regist| 00002580 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 3e |erEndpointType">| 00002590 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 |func <a href="/s| 000025a0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 000025b0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 000025c0 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 |ket/flows.go?s=2| 000025d0 30 31 37 3a 32 30 39 31 23 4c 34 38 22 3e 52 65 |017:2091#L48">Re| 000025e0 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy| 000025f0 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |pe</a></h3>.....| 00002600 3c 70 72 65 3e 66 75 6e 63 20 52 65 67 69 73 74 |<pre>func Regist| 00002610 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 6e |erEndpointType(n| 00002620 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 45 6e 64 |um int, meta End| 00002630 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 |pointTypeMetadat| 00002640 61 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c |a) EndpointType<| 00002650 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 |/pre>.....<p>.Re| 00002660 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy| 00002670 70 65 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 |pe creates a new| 00002680 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 61 6e | EndpointType an| 00002690 64 20 72 65 67 69 73 74 65 72 73 20 69 74 20 67 |d registers it g| 000026a0 6c 6f 62 61 6c 6c 79 2e 0a 49 74 20 4d 55 53 54 |lobally..It MUST| 000026b0 20 62 65 20 70 61 73 73 65 64 20 61 20 75 6e 69 | be passed a uni| 000026c0 71 75 65 20 6e 75 6d 62 65 72 2c 20 6f 72 20 69 |que number, or i| 000026d0 74 20 77 69 6c 6c 20 70 61 6e 69 63 2e 20 20 4e |t will panic. N| 000026e0 75 6d 62 65 72 73 20 30 2d 39 39 39 20 61 72 65 |umbers 0-999 are| 000026f0 0a 72 65 73 65 72 76 65 64 20 66 6f 72 20 67 6f |.reserved for go| 00002700 70 61 63 6b 65 74 26 23 33 39 3b 73 20 75 73 65 |packet's use| 00002710 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........| 00002720 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 00002730 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 54 |h3 id="EndpointT| 00002740 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |ype.String">func| 00002750 20 28 45 6e 64 70 6f 69 6e 74 54 79 70 65 29 20 | (EndpointType) | 00002760 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00002770 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00002780 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 |nnell/gopacket/f| 00002790 6c 6f 77 73 2e 67 6f 3f 73 3d 32 32 34 32 3a 32 |lows.go?s=2242:2| 000027a0 32 37 39 23 4c 35 37 22 3e 53 74 72 69 6e 67 3c |279#L57">String<| 000027b0 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 |/a></h3>.....<pr| 000027c0 65 3e 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 |e>func (e Endpoi| 000027d0 6e 74 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 |ntType) String()| 000027e0 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 | string</pre>...| 000027f0 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00002800 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c |...............<| 00002810 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 54 |h2 id="EndpointT| 00002820 79 70 65 4d 65 74 61 64 61 74 61 22 3e 74 79 70 |ypeMetadata">typ| 00002830 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00002840 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00002850 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00002860 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 33 32 35 |/flows.go?s=1325| 00002870 3a 31 36 30 37 23 4c 33 31 22 3e 45 6e 64 70 6f |:1607#L31">Endpo| 00002880 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 3c |intTypeMetadata<| 00002890 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 000028a0 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 54 79 |>type EndpointTy| 000028b0 70 65 4d 65 74 61 64 61 74 61 20 73 74 72 75 63 |peMetadata struc| 000028c0 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |t {. <span cl| 000028d0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 000028e0 20 4e 61 6d 65 20 69 73 20 74 68 65 20 73 74 72 | Name is the str| 000028f0 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 |ing returned by | 00002900 61 6e 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 26 |an EndpointType&| 00002910 23 33 39 3b 73 20 53 74 72 69 6e 67 20 66 75 6e |#39;s String fun| 00002920 63 74 69 6f 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |ction.</span>. | 00002930 20 20 4e 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 | Name string. | 00002940 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00002950 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 46 6f 72 6d 61 |omment">// Forma| 00002960 74 74 65 72 20 69 73 20 63 61 6c 6c 65 64 20 66 |tter is called f| 00002970 72 6f 6d 20 61 6e 20 45 6e 64 70 6f 69 6e 74 26 |rom an Endpoint&| 00002980 23 33 39 3b 73 20 53 74 72 69 6e 67 20 66 75 6e |#39;s String fun| 00002990 63 74 69 6f 6e 20 74 6f 20 66 6f 72 6d 61 74 20 |ction to format | 000029a0 74 68 65 20 72 61 77 3c 2f 73 70 61 6e 3e 0a 20 |the raw</span>. | 000029b0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 000029c0 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 62 79 74 65 |comment">// byte| 000029d0 73 20 69 6e 20 61 6e 20 45 6e 64 70 6f 69 6e 74 |s in an Endpoint| 000029e0 20 69 6e 74 6f 20 61 20 68 75 6d 61 6e 2d 72 65 | into a human-re| 000029f0 61 64 61 62 6c 65 20 73 74 72 69 6e 67 2e 3c 2f |adable string.</| 00002a00 73 70 61 6e 3e 0a 20 20 20 20 46 6f 72 6d 61 74 |span>. Format| 00002a10 74 65 72 20 66 75 6e 63 28 5b 5d 62 79 74 65 29 |ter func([]byte)| 00002a20 20 73 74 72 69 6e 67 0a 7d 3c 2f 70 72 65 3e 0a | string.}</pre>.| 00002a30 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 |...<p>.EndpointT| 00002a40 79 70 65 4d 65 74 61 64 61 74 61 20 69 73 20 75 |ypeMetadata is u| 00002a50 73 65 64 20 74 6f 20 72 65 67 69 73 74 65 72 20 |sed to register | 00002a60 61 20 6e 65 77 20 65 6e 64 70 6f 69 6e 74 20 74 |a new endpoint t| 00002a70 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |ype..</p>.......| 00002a80 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................| 00002a90 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................| 00002aa0 09 09 3c 68 32 20 69 64 3d 22 45 72 72 6f 72 4c |..<h2 id="ErrorL| 00002ab0 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 |ayer">type <a hr| 00002ac0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00002ad0 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00002ae0 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g| 00002af0 6f 3f 73 3d 32 34 36 36 3a 32 35 31 37 23 4c 36 |o?s=2466:2517#L6| 00002b00 35 22 3e 45 72 72 6f 72 4c 61 79 65 72 3c 2f 61 |5">ErrorLayer</a| 00002b10 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t| 00002b20 79 70 65 20 45 72 72 6f 72 4c 61 79 65 72 20 69 |ype ErrorLayer i| 00002b30 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 4c |nterface {. L| 00002b40 61 79 65 72 0a 20 20 20 20 45 72 72 6f 72 28 29 |ayer. Error()| 00002b50 20 65 72 72 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 | error.}</pre>..| 00002b60 09 09 3c 70 3e 0a 45 72 72 6f 72 4c 61 79 65 72 |..<p>.ErrorLayer| 00002b70 20 69 73 20 61 20 70 61 63 6b 65 74 20 6c 61 79 | is a packet lay| 00002b80 65 72 20 63 72 65 61 74 65 64 20 77 68 65 6e 20 |er created when | 00002b90 64 65 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 |decoding of the | 00002ba0 70 61 63 6b 65 74 20 68 61 73 20 66 61 69 6c 65 |packet has faile| 00002bb0 64 2e 0a 49 74 73 20 70 61 79 6c 6f 61 64 20 69 |d..Its payload i| 00002bc0 73 20 61 6c 6c 20 74 68 65 20 62 79 74 65 73 20 |s all the bytes | 00002bd0 74 68 61 74 20 77 65 20 77 65 72 65 20 75 6e 61 |that we were una| 00002be0 62 6c 65 20 74 6f 20 64 65 63 6f 64 65 2c 20 61 |ble to decode, a| 00002bf0 6e 64 20 74 68 65 20 72 65 74 75 72 6e 65 64 0a |nd the returned.| 00002c00 65 72 72 6f 72 20 64 65 74 61 69 6c 73 20 77 68 |error details wh| 00002c10 79 20 74 68 65 20 64 65 63 6f 64 69 6e 67 20 66 |y the decoding f| 00002c20 61 69 6c 65 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |ailed..</p>.....| 00002c30 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 00002c40 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................| 00002c50 0a 09 09 09 3c 68 32 20 69 64 3d 22 46 6c 6f 77 |....<h2 id="Flow| 00002c60 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 00002c70 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00002c80 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00002c90 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s| 00002ca0 3d 32 36 38 37 3a 32 37 34 37 23 4c 37 33 22 3e |=2687:2747#L73">| 00002cb0 46 6c 6f 77 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |Flow</a></h2>...| 00002cc0 09 3c 70 72 65 3e 74 79 70 65 20 46 6c 6f 77 20 |.<pre>type Flow | 00002cd0 73 74 72 75 63 74 20 7b 0a 20 20 20 20 3c 73 70 |struct {. <sp| 00002ce0 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 00002cf0 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 66 |t">// contains f| 00002d00 69 6c 74 65 72 65 64 20 6f 72 20 75 6e 65 78 70 |iltered or unexp| 00002d10 6f 72 74 65 64 20 66 69 65 6c 64 73 3c 2f 73 70 |orted fields</sp| 00002d20 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |an>.}</pre>....<| 00002d30 70 3e 0a 46 6c 6f 77 20 72 65 70 72 65 73 65 6e |p>.Flow represen| 00002d40 74 73 20 74 68 65 20 64 69 72 65 63 74 69 6f 6e |ts the direction| 00002d50 20 6f 66 20 74 72 61 66 66 69 63 20 66 6f 72 20 | of traffic for | 00002d60 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 2c 20 |a packet layer, | 00002d70 61 73 20 61 20 73 6f 75 72 63 65 20 61 6e 64 20 |as a source and | 00002d80 64 65 73 74 69 6e 61 74 69 6f 6e 20 45 6e 64 70 |destination Endp| 00002d90 6f 69 6e 74 2e 0a 46 6c 6f 77 73 20 61 72 65 20 |oint..Flows are | 00002da0 75 73 61 62 6c 65 20 61 73 20 6d 61 70 20 6b 65 |usable as map ke| 00002db0 79 73 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a |ys..</p>........| 00002dc0 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................| 00002dd0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 |.......<h3 id="F| 00002de0 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 |lowFromEndpoints| 00002df0 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="| 00002e00 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00002e10 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00002e20 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s| 00002e30 3d 32 39 31 36 3a 32 39 37 37 23 4c 38 31 22 3e |=2916:2977#L81">| 00002e40 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint| 00002e50 73 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |s</a></h3>.....<| 00002e60 70 72 65 3e 66 75 6e 63 20 46 6c 6f 77 46 72 6f |pre>func FlowFro| 00002e70 6d 45 6e 64 70 6f 69 6e 74 73 28 73 72 63 2c 20 |mEndpoints(src, | 00002e80 64 73 74 20 45 6e 64 70 6f 69 6e 74 29 20 28 5f |dst Endpoint) (_| 00002e90 20 46 6c 6f 77 2c 20 65 72 72 20 65 72 72 6f 72 | Flow, err error| 00002ea0 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a |)</pre>.....<p>.| 00002eb0 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint| 00002ec0 73 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 |s creates a new | 00002ed0 66 6c 6f 77 20 62 79 20 70 61 73 74 69 6e 67 20 |flow by pasting | 00002ee0 74 6f 67 65 74 68 65 72 20 74 77 6f 20 65 6e 64 |together two end| 00002ef0 70 6f 69 6e 74 73 2e 0a 54 68 65 20 65 6e 64 70 |points..The endp| 00002f00 6f 69 6e 74 73 20 6d 75 73 74 20 68 61 76 65 20 |oints must have | 00002f10 74 68 65 20 73 61 6d 65 20 45 6e 64 70 6f 69 6e |the same Endpoin| 00002f20 74 54 79 70 65 2c 20 6f 72 20 74 68 69 73 20 66 |tType, or this f| 00002f30 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 72 65 74 |unction will ret| 00002f40 75 72 6e 0a 61 6e 20 65 72 72 6f 72 2e 0a 3c 2f |urn.an error..</| 00002f50 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |p>..............| 00002f60 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 |......<h3 id="Ne| 00002f70 77 46 6c 6f 77 22 3e 66 75 6e 63 20 3c 61 20 68 |wFlow">func <a h| 00002f80 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00002f90 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00002fa0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows| 00002fb0 2e 67 6f 3f 73 3d 33 39 38 38 3a 34 30 33 38 23 |.go?s=3988:4038#| 00002fc0 4c 31 32 33 22 3e 4e 65 77 46 6c 6f 77 3c 2f 61 |L123">NewFlow</a| 00002fd0 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>| 00002fe0 66 75 6e 63 20 4e 65 77 46 6c 6f 77 28 74 20 45 |func NewFlow(t E| 00002ff0 6e 64 70 6f 69 6e 74 54 79 70 65 2c 20 73 72 63 |ndpointType, src| 00003000 2c 20 64 73 74 20 5b 5d 62 79 74 65 29 20 46 6c |, dst []byte) Fl| 00003010 6f 77 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ow</pre>.....<p>| 00003020 0a 4e 65 77 46 6c 6f 77 20 63 72 65 61 74 65 73 |.NewFlow creates| 00003030 20 61 20 6e 65 77 20 66 6c 6f 77 2e 0a 3c 2f 70 | a new flow..</p| 00003040 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 09 |>...............| 00003050 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00003060 3d 22 46 6c 6f 77 2e 44 73 74 22 3e 66 75 6e 63 |="Flow.Dst">func| 00003070 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d | (Flow) <a href=| 00003080 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 00003090 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 000030a0 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f |packet/flows.go?| 000030b0 73 3d 33 37 36 32 3a 33 37 39 36 23 4c 31 31 32 |s=3762:3796#L112| 000030c0 22 3e 44 73 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |">Dst</a></h3>..| 000030d0 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 |...<pre>func (f | 000030e0 46 6c 6f 77 29 20 44 73 74 28 29 20 28 64 73 74 |Flow) Dst() (dst| 000030f0 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e | Endpoint)</pre>| 00003100 0a 09 09 09 09 3c 70 3e 0a 44 73 74 20 72 65 74 |.....<p>.Dst ret| 00003110 75 72 6e 73 20 74 68 65 20 64 65 73 74 69 6e 61 |urns the destina| 00003120 74 69 6f 6e 20 45 6e 64 70 6f 69 6e 74 20 66 6f |tion Endpoint fo| 00003130 72 20 74 68 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 |r this flow..</p| 00003140 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............| 00003150 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00003160 3d 22 46 6c 6f 77 2e 45 6e 64 70 6f 69 6e 74 54 |="Flow.EndpointT| 00003170 79 70 65 22 3e 66 75 6e 63 20 28 46 6c 6f 77 29 |ype">func (Flow)| 00003180 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 00003190 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 000031a0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 000031b0 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 33 36 34 3a |flows.go?s=3364:| 000031c0 33 34 30 35 23 4c 39 36 22 3e 45 6e 64 70 6f 69 |3405#L96">Endpoi| 000031d0 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a |ntType</a></h3>.| 000031e0 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f| 000031f0 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 54 | Flow) EndpointT| 00003200 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 |ype() EndpointTy| 00003210 70 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |pe</pre>.....<p>| 00003220 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 72 65 |.EndpointType re| 00003230 74 75 72 6e 73 20 74 68 65 20 45 6e 64 70 6f 69 |turns the Endpoi| 00003240 6e 74 54 79 70 65 20 66 6f 72 20 74 68 69 73 20 |ntType for this | 00003250 46 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 |Flow..</p>......| 00003260 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00003270 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 2e |...<h3 id="Flow.| 00003280 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 |Endpoints">func | 00003290 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="| 000032a0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 000032b0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 000032c0 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s| 000032d0 3d 33 34 37 39 3a 33 35 32 34 23 4c 31 30 31 22 |=3479:3524#L101"| 000032e0 3e 45 6e 64 70 6f 69 6e 74 73 3c 2f 61 3e 3c 2f |>Endpoints</a></| 000032f0 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun| 00003300 63 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f |c (f Flow) Endpo| 00003310 69 6e 74 73 28 29 20 28 73 72 63 2c 20 64 73 74 |ints() (src, dst| 00003320 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e | Endpoint)</pre>| 00003330 0a 09 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e |.....<p>.Endpoin| 00003340 74 73 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 |ts returns the t| 00003350 77 6f 20 45 6e 64 70 6f 69 6e 74 73 20 66 6f 72 |wo Endpoints for| 00003360 20 74 68 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e | this flow..</p>| 00003370 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a |................| 00003380 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=| 00003390 22 46 6c 6f 77 2e 52 65 76 65 72 73 65 22 3e 66 |"Flow.Reverse">f| 000033a0 75 6e 63 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 |unc (Flow) <a hr| 000033b0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 000033c0 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 000033d0 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e |/gopacket/flows.| 000033e0 67 6f 3f 73 3d 33 38 38 39 3a 33 39 31 37 23 4c |go?s=3889:3917#L| 000033f0 31 31 38 22 3e 52 65 76 65 72 73 65 3c 2f 61 3e |118">Reverse</a>| 00003400 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 00003410 75 6e 63 20 28 66 20 46 6c 6f 77 29 20 52 65 76 |unc (f Flow) Rev| 00003420 65 72 73 65 28 29 20 46 6c 6f 77 3c 2f 70 72 65 |erse() Flow</pre| 00003430 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 76 65 72 73 |>.....<p>.Revers| 00003440 65 20 72 65 74 75 72 6e 73 20 61 20 6e 65 77 20 |e returns a new | 00003450 66 6c 6f 77 20 77 69 74 68 20 65 6e 64 70 6f 69 |flow with endpoi| 00003460 6e 74 73 20 72 65 76 65 72 73 65 64 2e 0a 3c 2f |nts reversed..</| 00003470 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |p>..............| 00003480 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 |...........<h3 i| 00003490 64 3d 22 46 6c 6f 77 2e 53 72 63 22 3e 66 75 6e |d="Flow.Src">fun| 000034a0 63 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 |c (Flow) <a href| 000034b0 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 000034c0 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 000034d0 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f |opacket/flows.go| 000034e0 3f 73 3d 33 36 33 35 3a 33 36 36 39 23 4c 31 30 |?s=3635:3669#L10| 000034f0 36 22 3e 53 72 63 3c 2f 61 3e 3c 2f 68 33 3e 0a |6">Src</a></h3>.| 00003500 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f| 00003510 20 46 6c 6f 77 29 20 53 72 63 28 29 20 28 73 72 | Flow) Src() (sr| 00003520 63 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 |c Endpoint)</pre| 00003530 3e 0a 09 09 09 09 3c 70 3e 0a 53 72 63 20 72 65 |>.....<p>.Src re| 00003540 74 75 72 6e 73 20 74 68 65 20 73 6f 75 72 63 65 |turns the source| 00003550 20 45 6e 64 70 6f 69 6e 74 20 66 6f 72 20 74 68 | Endpoint for th| 00003560 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |is flow..</p>...| 00003570 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00003580 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl| 00003590 6f 77 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 |ow.String">func | 000035a0 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="| 000035b0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 000035c0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 000035d0 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s| 000035e0 3d 33 32 32 39 3a 33 32 35 38 23 4c 39 31 22 3e |=3229:3258#L91">| 000035f0 53 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a |String</a></h3>.| 00003600 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f| 00003610 20 46 6c 6f 77 29 20 53 74 72 69 6e 67 28 29 20 | Flow) String() | 00003620 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 |string</pre>....| 00003630 09 3c 70 3e 0a 53 74 72 69 6e 67 20 72 65 74 75 |.<p>.String retu| 00003640 72 6e 73 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 |rns a human-read| 00003650 61 62 6c 65 20 72 65 70 72 65 73 65 6e 74 61 74 |able representat| 00003660 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 6c 6f 77 |ion of this flow| 00003670 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 26 23 |, in the form.&#| 00003680 33 34 3b 53 72 63 2d 26 67 74 3b 44 73 74 26 23 |34;Src->Dst&#| 00003690 33 34 3b 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |34;.</p>........| 000036a0 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................| 000036b0 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 61 |......<h2 id="La| 000036c0 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 65 |yer">type <a hre| 000036d0 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith| 000036e0 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/| 000036f0 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f |gopacket/base.go| 00003700 3f 73 3d 35 30 33 3a 38 33 37 23 4c 36 22 3e 4c |?s=503:837#L6">L| 00003710 61 79 65 72 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |ayer</a></h2>...| 00003720 09 3c 70 72 65 3e 74 79 70 65 20 4c 61 79 65 72 |.<pre>type Layer| 00003730 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 | interface {. | 00003740 20 66 6d 74 2e 53 74 72 69 6e 67 65 72 0a 20 20 | fmt.Stringer. | 00003750 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00003760 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 |omment">// Layer| 00003770 54 79 70 65 20 69 73 20 74 68 65 20 67 6f 70 61 |Type is the gopa| 00003780 63 6b 65 74 20 74 79 70 65 20 66 6f 72 20 74 68 |cket type for th| 00003790 69 73 20 6c 61 79 65 72 2e 3c 2f 73 70 61 6e 3e |is layer.</span>| 000037a0 0a 20 20 20 20 4c 61 79 65 72 54 79 70 65 28 29 |. LayerType()| 000037b0 20 4c 61 79 65 72 54 79 70 65 0a 20 20 20 20 3c | LayerType. <| 000037c0 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 000037d0 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 43 6f 6e |ent">// LayerCon| 000037e0 74 65 6e 74 73 20 72 65 74 75 72 6e 73 20 74 68 |tents returns th| 000037f0 65 20 73 65 74 20 6f 66 20 62 79 74 65 73 20 74 |e set of bytes t| 00003800 68 61 74 20 6d 61 6b 65 20 75 70 20 74 68 69 73 |hat make up this| 00003810 20 6c 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 | layer.</span>. | 00003820 20 20 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 | LayerContents| 00003830 28 29 20 5b 5d 62 79 74 65 0a 20 20 20 20 3c 73 |() []byte. <s| 00003840 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00003850 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 50 61 79 6c |nt">// LayerPayl| 00003860 6f 61 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 |oad returns the | 00003870 73 65 74 20 6f 66 20 62 79 74 65 73 20 63 6f 6e |set of bytes con| 00003880 74 61 69 6e 65 64 20 77 69 74 68 69 6e 20 74 68 |tained within th| 00003890 69 73 20 6c 61 79 65 72 2c 20 6e 6f 74 3c 2f 73 |is layer, not</s| 000038a0 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 |pan>. <span c| 000038b0 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 000038c0 2f 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 |/ including the | 000038d0 6c 61 79 65 72 20 69 74 73 65 6c 66 2e 3c 2f 73 |layer itself.</s| 000038e0 70 61 6e 3e 0a 20 20 20 20 4c 61 79 65 72 50 61 |pan>. LayerPa| 000038f0 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 0a 7d |yload() []byte.}| 00003900 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 |</pre>....<p>.La| 00003910 79 65 72 20 72 65 70 72 65 73 65 6e 74 73 20 61 |yer represents a| 00003920 20 73 69 6e 67 6c 65 20 64 65 63 6f 64 65 64 20 | single decoded | 00003930 70 61 63 6b 65 74 20 6c 61 79 65 72 20 28 75 73 |packet layer (us| 00003940 69 6e 67 20 65 69 74 68 65 72 20 74 68 65 0a 4f |ing either the.O| 00003950 53 49 20 6f 72 20 54 43 50 2f 49 50 20 64 65 66 |SI or TCP/IP def| 00003960 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 6c 61 79 |inition of a lay| 00003970 65 72 29 2e 20 20 57 68 65 6e 20 64 65 63 6f 64 |er). When decod| 00003980 69 6e 67 2c 20 61 20 70 61 63 6b 65 74 26 23 33 |ing, a packet| 00003990 39 3b 73 20 64 61 74 61 20 69 73 0a 62 72 6f 6b |9;s data is.brok| 000039a0 65 6e 20 75 70 20 69 6e 74 6f 20 61 20 6e 75 6d |en up into a num| 000039b0 62 65 72 20 6f 66 20 6c 61 79 65 72 73 2e 20 20 |ber of layers. | 000039c0 54 68 65 20 63 61 6c 6c 65 72 20 6d 61 79 20 63 |The caller may c| 000039d0 61 6c 6c 20 4c 61 79 65 72 54 79 70 65 28 29 20 |all LayerType() | 000039e0 74 6f 0a 66 69 67 75 72 65 20 6f 75 74 20 77 68 |to.figure out wh| 000039f0 69 63 68 20 74 79 70 65 20 6f 66 20 6c 61 79 65 |ich type of laye| 00003a00 72 20 68 65 26 23 33 39 3b 73 20 72 65 63 65 69 |r he's recei| 00003a10 76 65 64 20 66 72 6f 6d 20 74 68 65 20 70 61 63 |ved from the pac| 00003a20 6b 65 74 2e 20 20 4f 70 74 69 6f 6e 61 6c 6c 79 |ket. Optionally| 00003a30 2c 0a 68 65 20 6d 61 79 20 74 68 65 6e 20 75 73 |,.he may then us| 00003a40 65 20 61 20 74 79 70 65 20 61 73 73 65 72 74 69 |e a type asserti| 00003a50 6f 6e 20 74 6f 20 67 65 74 20 74 68 65 20 61 63 |on to get the ac| 00003a60 74 75 61 6c 20 6c 61 79 65 72 20 74 79 70 65 20 |tual layer type | 00003a70 66 6f 72 20 64 65 65 70 0a 69 6e 73 70 65 63 74 |for deep.inspect| 00003a80 69 6f 6e 20 6f 66 20 74 68 65 20 64 61 74 61 2e |ion of the data.| 00003a90 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........| 00003aa0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 00003ab0 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h| 00003ac0 32 20 69 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 |2 id="LayerClass| 00003ad0 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 00003ae0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003af0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003b00 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass| 00003b10 2e 67 6f 3f 73 3d 31 38 30 3a 33 33 36 23 4c 31 |.go?s=180:336#L1| 00003b20 22 3e 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |">LayerClass</a>| 00003b30 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 |</h2>....<pre>ty| 00003b40 70 65 20 4c 61 79 65 72 43 6c 61 73 73 20 69 6e |pe LayerClass in| 00003b50 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 3c 73 |terface {. <s| 00003b60 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00003b70 6e 74 22 3e 2f 2f 20 43 6f 6e 74 61 69 6e 73 20 |nt">// Contains | 00003b80 72 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 |returns true if | 00003b90 74 68 65 20 67 69 76 65 6e 20 6c 61 79 65 72 20 |the given layer | 00003ba0 74 79 70 65 20 73 68 6f 75 6c 64 20 62 65 20 63 |type should be c| 00003bb0 6f 6e 73 69 64 65 72 65 64 20 70 61 72 74 3c 2f |onsidered part</| 00003bc0 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 |span>. <span | 00003bd0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00003be0 2f 2f 20 6f 66 20 74 68 69 73 20 6c 61 79 65 72 |// of this layer| 00003bf0 20 63 6c 61 73 73 2e 3c 2f 73 70 61 6e 3e 0a 20 | class.</span>. | 00003c00 20 20 20 43 6f 6e 74 61 69 6e 73 28 4c 61 79 65 | Contains(Laye| 00003c10 72 54 79 70 65 29 20 62 6f 6f 6c 0a 7d 3c 2f 70 |rType) bool.}</p| 00003c20 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 |re>....<p>.Layer| 00003c30 43 6c 61 73 73 20 69 73 20 61 20 73 65 74 20 6f |Class is a set o| 00003c40 66 20 4c 61 79 65 72 54 79 70 65 73 2c 20 75 73 |f LayerTypes, us| 00003c50 65 64 20 66 6f 72 20 67 72 61 62 62 69 6e 67 20 |ed for grabbing | 00003c60 6f 6e 65 20 6f 66 20 61 20 6e 75 6d 62 65 72 20 |one of a number | 00003c70 6f 66 0a 64 69 66 66 65 72 65 6e 74 20 74 79 70 |of.different typ| 00003c80 65 73 20 66 72 6f 6d 20 61 20 70 61 63 6b 65 74 |es from a packet| 00003c90 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........| 00003ca0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 |................| 00003cb0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 |.....<h3 id="New| 00003cc0 4c 61 79 65 72 43 6c 61 73 73 22 3e 66 75 6e 63 |LayerClass">func| 00003cd0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p| 00003ce0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc| 00003cf0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/| 00003d00 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f 73 3d |layerclass.go?s=| 00003d10 31 37 32 32 3a 31 37 37 30 23 4c 35 31 22 3e 4e |1722:1770#L51">N| 00003d20 65 77 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |ewLayerClass</a>| 00003d30 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 00003d40 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 |unc NewLayerClas| 00003d50 73 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 72 54 |s(types []LayerT| 00003d60 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 73 3c |ype) LayerClass<| 00003d70 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne| 00003d80 77 4c 61 79 65 72 43 6c 61 73 73 20 63 72 65 61 |wLayerClass crea| 00003d90 74 65 73 20 61 20 4c 61 79 65 72 43 6c 61 73 73 |tes a LayerClass| 00003da0 2c 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 |, attempting to | 00003db0 62 65 20 73 6d 61 72 74 20 61 62 6f 75 74 20 77 |be smart about w| 00003dc0 68 69 63 68 20 74 79 70 65 0a 69 74 20 63 72 65 |hich type.it cre| 00003dd0 61 74 65 73 20 62 61 73 65 64 20 6f 6e 20 77 68 |ates based on wh| 00003de0 69 63 68 20 74 79 70 65 73 20 61 72 65 20 70 61 |ich types are pa| 00003df0 73 73 65 64 20 69 6e 2e 0a 3c 2f 70 3e 0a 0a 09 |ssed in..</p>...| 00003e00 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a |................| 00003e10 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i| 00003e20 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |d="LayerClassMap| 00003e30 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 00003e40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 00003e50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003e60 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass| 00003e70 2e 67 6f 3f 73 3d 31 31 35 32 3a 31 31 38 39 23 |.go?s=1152:1189#| 00003e80 4c 33 31 22 3e 4c 61 79 65 72 43 6c 61 73 73 4d |L31">LayerClassM| 00003e90 61 70 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c |ap</a></h2>....<| 00003ea0 70 72 65 3e 74 79 70 65 20 4c 61 79 65 72 43 6c |pre>type LayerCl| 00003eb0 61 73 73 4d 61 70 20 6d 61 70 5b 4c 61 79 65 72 |assMap map[Layer| 00003ec0 54 79 70 65 5d 62 6f 6f 6c 3c 2f 70 72 65 3e 0a |Type]bool</pre>.| 00003ed0 09 09 09 3c 70 3e 0a 4c 61 79 65 72 43 6c 61 73 |...<p>.LayerClas| 00003ee0 73 4d 61 70 20 69 6d 70 6c 65 6d 65 6e 74 73 20 |sMap implements | 00003ef0 61 20 4c 61 79 65 72 43 6c 61 73 73 20 77 69 74 |a LayerClass wit| 00003f00 68 20 61 20 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 0a |h a map..</p>...| 00003f10 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................| 00003f20 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 | 00003f30 69 64 3d 22 4e 65 77 4c 61 79 65 72 43 6c 61 73 |id="NewLayerClas| 00003f40 73 4d 61 70 22 3e 66 75 6e 63 20 3c 61 20 68 72 |sMap">func <a hr| 00003f50 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00003f60 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00003f70 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 |/gopacket/layerc| 00003f80 6c 61 73 73 2e 67 6f 3f 73 3d 31 34 35 33 3a 31 |lass.go?s=1453:1| 00003f90 35 30 37 23 4c 34 31 22 3e 4e 65 77 4c 61 79 65 |507#L41">NewLaye| 00003fa0 72 43 6c 61 73 73 4d 61 70 3c 2f 61 3e 3c 2f 68 |rClassMap</a></h| 00003fb0 33 3e 0a 09 09 09 09 3c |3>.....<| pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?..@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 65 f6 5f 08 97 18 4a 80 10 23 02 3f e0 00 00 |.e._...J..#.?...| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 70 72 65 3e |............pre>| 00000050 66 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 |func NewLayerCla| 00000060 73 73 4d 61 70 28 74 79 70 65 73 20 5b 5d 4c 61 |ssMap(types []La| 00000070 79 65 72 54 79 70 65 29 20 4c 61 79 65 72 43 6c |yerType) LayerCl| 00000080 61 73 73 4d 61 70 3c 2f 70 72 65 3e 0a 09 09 09 |assMap</pre>....| 00000090 09 3c 70 3e 0a 4e 65 77 4c 61 79 65 72 43 6c 61 |.<p>.NewLayerCla| 000000a0 73 73 4d 61 70 20 63 72 65 61 74 65 73 20 61 20 |ssMap creates a | 000000b0 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 20 61 6e |LayerClassMap an| 000000c0 64 20 73 65 74 73 20 6d 61 70 5b 74 5d 20 74 6f |d sets map[t] to| 000000d0 20 74 72 75 65 20 66 6f 72 20 65 61 63 68 0a 74 | true for each.t| 000000e0 79 70 65 20 69 6e 20 74 79 70 65 73 2e 0a 3c 2f |ype in types..</| 000000f0 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 |p>..............| 00000100 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 |...........<h3 i| 00000110 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |d="LayerClassMap| 00000120 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 75 6e 63 20 |.Contains">func | 00000130 28 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 29 20 |(LayerClassMap) | 00000140 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00000150 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00000160 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c |nnell/gopacket/l| 00000170 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f 73 3d 31 |ayerclass.go?s=1| 00000180 32 39 30 3a 31 33 33 39 23 4c 33 35 22 3e 43 6f |290:1339#L35">Co| 00000190 6e 74 61 69 6e 73 3c 2f 61 3e 3c 2f 68 33 3e 0a |ntains</a></h3>.| 000001a0 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 6d |....<pre>func (m| 000001b0 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 29 20 | LayerClassMap) | 000001c0 43 6f 6e 74 61 69 6e 73 28 74 20 4c 61 79 65 72 |Contains(t Layer| 000001d0 54 79 70 65 29 20 62 6f 6f 6c 3c 2f 70 72 65 3e |Type) bool</pre>| 000001e0 0a 09 09 09 09 3c 70 3e 0a 43 6f 6e 74 61 69 6e |.....<p>.Contain| 000001f0 73 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 69 |s returns true i| 00000200 66 20 74 68 65 20 67 69 76 65 6e 20 6c 61 79 65 |f the given laye| 00000210 72 20 74 79 70 65 20 73 68 6f 75 6c 64 20 62 65 |r type should be| 00000220 20 63 6f 6e 73 69 64 65 72 65 64 20 70 61 72 74 | considered part| 00000230 0a 6f 66 20 74 68 69 73 20 6c 61 79 65 72 20 63 |.of this layer c| 00000240 6c 61 73 73 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 |lass..</p>......| 00000250 0a 09 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 |................| 00000260 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="| 00000270 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 22 |LayerClassSlice"| 00000280 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/| 00000290 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 000002a0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 000002b0 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e |cket/layerclass.| 000002c0 67 6f 3f 73 3d 33 39 35 3a 34 32 32 23 4c 34 22 |go?s=395:422#L4"| 000002d0 3e 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 |>LayerClassSlice| 000002e0 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr| 000002f0 65 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 |e>type LayerClas| 00000300 73 53 6c 69 63 65 20 5b 5d 62 6f 6f 6c 3c 2f 70 |sSlice []bool</p| 00000310 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 |re>....<p>.Layer| 00000320 43 6c 61 73 73 53 6c 69 63 65 20 69 6d 70 6c 65 |ClassSlice imple| 00000330 6d 65 6e 74 73 20 61 20 4c 61 79 65 72 43 6c 61 |ments a LayerCla| 00000340 73 73 20 77 69 74 68 20 61 20 73 6c 69 63 65 2e |ss with a slice.| 00000350 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........| 00000360 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a |................| 00000370 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 4c |....<h3 id="NewL| 00000380 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 22 3e |ayerClassSlice">| 00000390 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 |func <a href="/s| 000003a0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 000003b0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 000003c0 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 |ket/layerclass.g| 000003d0 6f 3f 73 3d 38 36 34 3a 39 32 32 23 4c 31 36 22 |o?s=864:922#L16"| 000003e0 3e 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c |>NewLayerClassSl| 000003f0 69 63 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 |ice</a></h3>....| 00000400 09 3c 70 72 65 3e 66 75 6e 63 20 4e 65 77 4c 61 |.<pre>func NewLa| 00000410 79 65 72 43 6c 61 73 73 53 6c 69 63 65 28 74 79 |yerClassSlice(ty| 00000420 70 65 73 20 5b 5d 4c 61 79 65 72 54 79 70 65 29 |pes []LayerType)| 00000430 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 | LayerClassSlice| 00000440 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e |</pre>.....<p>.N| 00000450 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 |ewLayerClassSlic| 00000460 65 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 |e creates a new | 00000470 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 20 |LayerClassSlice | 00000480 62 79 20 63 72 65 61 74 69 6e 67 20 61 20 73 6c |by creating a sl| 00000490 69 63 65 20 6f 66 0a 73 69 7a 65 20 6d 61 78 28 |ice of.size max(| 000004a0 74 79 70 65 73 29 20 61 6e 64 20 73 65 74 74 69 |types) and setti| 000004b0 6e 67 20 73 6c 69 63 65 5b 74 5d 20 74 6f 20 74 |ng slice[t] to t| 000004c0 72 75 65 20 66 6f 72 20 65 61 63 68 20 74 79 70 |rue for each typ| 000004d0 65 20 74 2e 20 20 4e 6f 74 65 2c 20 69 66 0a 79 |e t. Note, if.y| 000004e0 6f 75 20 69 6d 70 6c 65 6d 65 6e 74 20 79 6f 75 |ou implement you| 000004f0 72 20 6f 77 6e 20 4c 61 79 65 72 54 79 70 65 20 |r own LayerType | 00000500 61 6e 64 20 67 69 76 65 20 69 74 20 61 20 68 69 |and give it a hi| 00000510 67 68 20 76 61 6c 75 65 2c 20 74 68 69 73 20 57 |gh value, this W| 00000520 49 4c 4c 20 63 72 65 61 74 65 0a 61 20 76 65 72 |ILL create.a ver| 00000530 79 20 6c 61 72 67 65 20 73 6c 69 63 65 2e 0a 3c |y large slice..<| 00000540 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 |/p>.............| 00000550 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 | 00000560 69 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 53 6c |id="LayerClassSl| 00000570 69 63 65 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 75 |ice.Contains">fu| 00000580 6e 63 20 28 4c 61 79 65 72 43 6c 61 73 73 53 6c |nc (LayerClassSl| 00000590 69 63 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |ice) <a href="/s| 000005a0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 000005b0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 000005c0 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 |ket/layerclass.g| 000005d0 6f 3f 73 3d 35 32 33 3a 35 37 34 23 4c 38 22 3e |o?s=523:574#L8">| 000005e0 43 6f 6e 74 61 69 6e 73 3c 2f 61 3e 3c 2f 68 33 |Contains</a></h3| 000005f0 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00000600 28 73 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |(s LayerClassSli| 00000610 63 65 29 20 43 6f 6e 74 61 69 6e 73 28 74 20 4c |ce) Contains(t L| 00000620 61 79 65 72 54 79 70 65 29 20 62 6f 6f 6c 3c 2f |ayerType) bool</| 00000630 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 43 6f 6e |pre>.....<p>.Con| 00000640 74 61 69 6e 73 20 72 65 74 75 72 6e 73 20 74 72 |tains returns tr| 00000650 75 65 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 |ue if the given | 00000660 6c 61 79 65 72 20 74 79 70 65 20 73 68 6f 75 6c |layer type shoul| 00000670 64 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64 20 |d be considered | 00000680 70 61 72 74 0a 6f 66 20 74 68 69 73 20 6c 61 79 |part.of this lay| 00000690 65 72 20 63 6c 61 73 73 2e 0a 3c 2f 70 3e 0a 0a |er class..</p>..| 000006a0 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 000006b0 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 | 000006c0 69 64 3d 22 4c 61 79 65 72 54 79 70 65 22 3e 74 |id="LayerType">t| 000006d0 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ype <a href="/sr| 000006e0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 000006f0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000700 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 3f |et/layertype.go?| 00000710 73 3d 34 38 38 3a 35 30 38 23 4c 36 22 3e 4c 61 |s=488:508#L6">La| 00000720 79 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 68 32 3e |yerType</a></h2>| 00000730 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 4c 61 |....<pre>type La| 00000740 79 65 72 54 79 70 65 20 69 6e 74 36 34 3c 2f 70 |yerType int64</p| 00000750 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 |re>....<p>.Layer| 00000760 54 79 70 65 20 69 73 20 61 20 75 6e 69 71 75 65 |Type is a unique| 00000770 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 | identifier for | 00000780 65 61 63 68 20 74 79 70 65 20 6f 66 20 6c 61 79 |each type of lay| 00000790 65 72 2e 20 20 54 68 69 73 20 65 6e 75 6d 65 72 |er. This enumer| 000007a0 61 74 69 6f 6e 0a 64 6f 65 73 20 6e 6f 74 20 6d |ation.does not m| 000007b0 61 74 63 68 20 77 69 74 68 20 61 6e 79 20 65 78 |atch with any ex| 000007c0 74 65 72 6e 61 6c 6c 79 20 61 76 61 69 6c 61 62 |ternally availab| 000007d0 6c 65 20 6e 75 6d 62 65 72 69 6e 67 20 73 63 68 |le numbering sch| 000007e0 65 6d 65 2e 2e 2e 20 69 74 26 23 33 39 3b 73 20 |eme... it's | 000007f0 73 6f 6c 65 6c 79 0a 75 73 61 62 6c 65 2f 75 73 |solely.usable/us| 00000800 65 66 75 6c 20 77 69 74 68 69 6e 20 74 68 69 73 |eful within this| 00000810 20 6c 69 62 72 61 72 79 20 61 73 20 61 20 6d 65 | library as a me| 00000820 61 6e 73 20 66 6f 72 20 72 65 71 75 65 73 74 69 |ans for requesti| 00000830 6e 67 20 6c 61 79 65 72 20 74 79 70 65 73 0a 28 |ng layer types.(| 00000840 73 65 65 20 50 61 63 6b 65 74 2e 4c 61 79 65 72 |see Packet.Layer| 00000850 29 20 61 6e 64 20 64 65 74 65 72 6d 69 6e 69 6e |) and determinin| 00000860 67 20 77 68 69 63 68 20 74 79 70 65 73 20 6f 66 |g which types of| 00000870 20 6c 61 79 65 72 73 20 68 61 76 65 20 62 65 65 | layers have bee| 00000880 6e 20 64 65 63 6f 64 65 64 2e 0a 3c 2f 70 3e 0a |n decoded..</p>.| 00000890 3c 70 3e 0a 4e 65 77 20 4c 61 79 65 72 54 79 70 |<p>.New LayerTyp| 000008a0 65 73 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 |es may be create| 000008b0 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 67 6f 70 |d by calling gop| 000008c0 61 63 6b 65 74 2e 52 65 67 69 73 74 65 72 4c 61 |acket.RegisterLa| 000008d0 79 65 72 54 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 0a |yerType..</p>...| 000008e0 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 |.............<pr| 000008f0 65 3e 76 61 72 20 4c 61 79 65 72 54 79 70 65 44 |e>var LayerTypeD| 00000900 65 63 6f 64 65 46 61 69 6c 75 72 65 20 4c 61 79 |ecodeFailure Lay| 00000910 65 72 54 79 70 65 20 3d 20 52 65 67 69 73 74 65 |erType = Registe| 00000920 72 4c 61 79 65 72 54 79 70 65 28 30 2c 20 4c 61 |rLayerType(0, La| 00000930 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 7b |yerTypeMetadata{| 00000940 26 23 33 34 3b 44 65 63 6f 64 65 20 46 61 69 6c |"Decode Fail| 00000950 75 72 65 26 23 33 34 3b 2c 20 44 65 63 6f 64 65 |ure", Decode| 00000960 55 6e 6b 6e 6f 77 6e 7d 29 3c 2f 70 72 65 3e 0a |Unknown})</pre>.| 00000970 09 09 09 09 3c 70 3e 0a 4c 61 79 65 72 54 79 70 |....<p>.LayerTyp| 00000980 65 44 65 63 6f 64 65 46 61 69 6c 75 72 65 20 69 |eDecodeFailure i| 00000990 73 20 74 68 65 20 6c 61 79 65 72 20 74 79 70 65 |s the layer type| 000009a0 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 | for the default| 000009b0 20 65 72 72 6f 72 20 6c 61 79 65 72 2e 0a 3c 2f | error layer..</| 000009c0 70 3e 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 |p>..........<pre| 000009d0 3e 76 61 72 20 4c 61 79 65 72 54 79 70 65 50 61 |>var LayerTypePa| 000009e0 79 6c 6f 61 64 20 4c 61 79 65 72 54 79 70 65 20 |yload LayerType | 000009f0 3d 20 52 65 67 69 73 74 65 72 4c 61 79 65 72 54 |= RegisterLayerT| 00000a00 79 70 65 28 31 2c 20 4c 61 79 65 72 54 79 70 65 |ype(1, LayerType| 00000a10 4d 65 74 61 64 61 74 61 7b 26 23 33 34 3b 50 61 |Metadata{"Pa| 00000a20 79 6c 6f 61 64 26 23 33 34 3b 2c 20 44 65 63 6f |yload", Deco| 00000a30 64 65 50 61 79 6c 6f 61 64 7d 29 3c 2f 70 72 65 |dePayload})</pre| 00000a40 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 72 54 |>.....<p>.LayerT| 00000a50 79 70 65 50 61 79 6c 6f 61 64 20 69 73 20 74 68 |ypePayload is th| 00000a60 65 20 6c 61 79 65 72 20 74 79 70 65 20 66 6f 72 |e layer type for| 00000a70 20 61 20 70 61 79 6c 6f 61 64 20 74 68 61 74 20 | a payload that | 00000a80 77 65 20 64 6f 6e 26 23 33 39 3b 74 20 74 72 79 |we don't try| 00000a90 20 74 6f 20 64 65 63 6f 64 65 0a 62 75 74 20 74 | to decode.but t| 00000aa0 72 65 61 74 20 61 73 20 61 20 73 75 63 63 65 73 |reat as a succes| 00000ab0 73 2c 20 49 45 3a 20 61 6e 20 61 70 70 6c 69 63 |s, IE: an applic| 00000ac0 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 70 61 79 6c |ation-level payl| 00000ad0 6f 61 64 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 0a |oad..</p>.......| 00000ae0 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00000af0 09 09 3c 68 33 20 69 64 3d 22 52 65 67 69 73 74 |..<h3 id="Regist| 00000b00 65 72 4c 61 79 65 72 54 79 70 65 22 3e 66 75 6e |erLayerType">fun| 00000b10 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |c <a href="/src/| 00000b20 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00000b30 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00000b40 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 3f 73 3d |/layertype.go?s=| 00000b50 31 34 35 37 3a 31 35 32 32 23 4c 33 34 22 3e 52 |1457:1522#L34">R| 00000b60 65 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 |egisterLayerType| 00000b70 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 |</a></h3>.....<p| 00000b80 72 65 3e 66 75 6e 63 20 52 65 67 69 73 74 65 72 |re>func Register| 00000b90 4c 61 79 65 72 54 79 70 65 28 6e 75 6d 20 69 6e |LayerType(num in| 00000ba0 74 2c 20 6d 65 74 61 20 4c 61 79 65 72 54 79 70 |t, meta LayerTyp| 00000bb0 65 4d 65 74 61 64 61 74 61 29 20 4c 61 79 65 72 |eMetadata) Layer| 00000bc0 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |Type</pre>.....<| 00000bd0 70 3e 0a 52 65 67 69 73 74 65 72 4c 61 79 65 72 |p>.RegisterLayer| 00000be0 54 79 70 65 20 63 72 65 61 74 65 73 20 61 20 6e |Type creates a n| 00000bf0 65 77 20 6c 61 79 65 72 20 74 79 70 65 20 61 6e |ew layer type an| 00000c00 64 20 72 65 67 69 73 74 65 72 73 20 69 74 20 67 |d registers it g| 00000c10 6c 6f 62 61 6c 6c 79 2e 0a 54 68 65 20 6e 75 6d |lobally..The num| 00000c20 62 65 72 20 70 61 73 73 65 64 20 69 6e 20 6d 75 |ber passed in mu| 00000c30 73 74 20 62 65 20 75 6e 69 71 75 65 2c 20 6f 72 |st be unique, or| 00000c40 20 61 20 72 75 6e 74 69 6d 65 20 70 61 6e 69 63 | a runtime panic| 00000c50 20 77 69 6c 6c 20 6f 63 63 75 72 2e 20 20 4e 75 | will occur. Nu| 00000c60 6d 62 65 72 73 0a 30 2d 39 39 39 20 61 72 65 20 |mbers.0-999 are | 00000c70 72 65 73 65 72 76 65 64 20 66 6f 72 20 74 68 65 |reserved for the| 00000c80 20 67 6f 70 61 63 6b 65 74 20 6c 69 62 72 61 72 | gopacket librar| 00000c90 79 2e 20 20 4e 75 6d 62 65 72 73 20 31 30 30 30 |y. Numbers 1000| 00000ca0 2d 31 39 39 39 20 73 68 6f 75 6c 64 20 62 65 0a |-1999 should be.| 00000cb0 75 73 65 64 20 66 6f 72 20 63 6f 6d 6d 6f 6e 20 |used for common | 00000cc0 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73 70 65 63 |application-spec| 00000cd0 69 66 69 63 20 74 79 70 65 73 2c 20 61 6e 64 20 |ific types, and | 00000ce0 61 72 65 20 76 65 72 79 20 66 61 73 74 2e 20 20 |are very fast. | 00000cf0 41 6e 79 20 6f 74 68 65 72 0a 6e 75 6d 62 65 72 |Any other.number| 00000d00 20 28 6e 65 67 61 74 69 76 65 20 6f 72 20 26 67 | (negative or &g| 00000d10 74 3b 3d 20 32 30 30 30 29 20 6d 61 79 20 62 65 |t;= 2000) may be| 00000d20 20 75 73 65 64 20 66 6f 72 20 75 6e 63 6f 6d 6d | used for uncomm| 00000d30 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73 |on application-s| 00000d40 70 65 63 69 66 69 63 0a 74 79 70 65 73 2c 20 61 |pecific.types, a| 00000d50 6e 64 20 61 72 65 20 73 6f 6d 65 77 68 61 74 20 |nd are somewhat | 00000d60 73 6c 6f 77 65 72 20 28 74 68 65 79 20 72 65 71 |slower (they req| 00000d70 75 69 72 65 20 61 20 6d 61 70 20 6c 6f 6f 6b 75 |uire a map looku| 00000d80 70 20 6f 76 65 72 20 61 6e 20 61 72 72 61 79 0a |p over an array.| 00000d90 69 6e 64 65 78 29 2e 0a 3c 2f 70 3e 0a 0a 09 09 |index)..</p>....| 00000da0 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 |................| 00000db0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4c 61 79 |.....<h3 id="Lay| 00000dc0 65 72 54 79 70 65 2e 44 65 63 6f 64 65 22 3e 66 |erType.Decode">f| 00000dd0 75 6e 63 20 28 4c 61 79 65 72 54 79 70 65 29 20 |unc (LayerType) | 00000de0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00000df0 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00000e00 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c |nnell/gopacket/l| 00000e10 61 79 65 72 74 79 70 65 2e 67 6f 3f 73 3d 32 30 |ayertype.go?s=20| 00000e20 33 39 3a 32 31 30 30 23 4c 35 37 22 3e 44 65 63 |39:2100#L57">Dec| 00000e30 6f 64 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 |ode</a></h3>....| 00000e40 09 3c 70 72 65 3e 66 75 6e 63 20 28 74 20 4c 61 |.<pre>func (t La| 00000e50 79 65 72 54 79 70 65 29 20 44 65 63 6f 64 65 28 |yerType) Decode(| 00000e60 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 63 20 50 |data []byte, c P| 00000e70 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 |acketBuilder) er| 00000e80 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 |ror</pre>.....<p| 00000e90 3e 0a 44 65 63 6f 64 65 20 64 65 63 6f 64 65 73 |>.Decode decodes| 00000ea0 20 74 68 65 20 67 69 76 65 6e 20 64 61 74 61 20 | the given data | 00000eb0 75 73 69 6e 67 20 74 68 65 20 64 65 63 6f 64 65 |using the decode| 00000ec0 72 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74 |r registered wit| 00000ed0 68 20 74 68 65 20 6c 61 79 65 72 0a 74 79 70 65 |h the layer.type| 00000ee0 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........| 00000ef0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 00000f00 68 33 20 69 64 3d 22 4c 61 79 65 72 54 79 70 65 |h3 id="LayerType| 00000f10 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 4c |.String">func (L| 00000f20 61 79 65 72 54 79 70 65 29 20 3c 61 20 68 72 65 |ayerType) <a hre| 00000f30 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith| 00000f40 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/| 00000f50 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 74 79 |gopacket/layerty| 00000f60 70 65 2e 67 6f 3f 73 3d 32 34 30 35 3a 32 34 34 |pe.go?s=2405:244| 00000f70 33 23 4c 37 31 22 3e 53 74 72 69 6e 67 3c 2f 61 |3#L71">String</a| 00000f80 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>| 00000f90 66 75 6e 63 20 28 74 20 4c 61 79 65 72 54 79 70 |func (t LayerTyp| 00000fa0 65 29 20 53 74 72 69 6e 67 28 29 20 28 73 20 73 |e) String() (s s| 00000fb0 74 72 69 6e 67 29 3c 2f 70 72 65 3e 0a 09 09 09 |tring)</pre>....| 00000fc0 09 3c 70 3e 0a 53 74 72 69 6e 67 20 72 65 74 75 |.<p>.String retu| 00000fd0 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 61 |rns the string a| 00000fe0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 |ssociated with t| 00000ff0 68 69 73 20 6c 61 79 65 72 20 74 79 70 65 2e 0a |his layer type..| 00001000 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a |</p>............| 00001010 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................| 00001020 09 09 3c 68 32 20 69 64 3d 22 4c 61 79 65 72 54 |..<h2 id="LayerT| 00001030 79 70 65 4d 65 74 61 64 61 74 61 22 3e 74 79 70 |ypeMetadata">typ| 00001040 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00001050 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00001060 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00001070 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 3f 73 3d |/layertype.go?s=| 00001080 35 38 31 3a 37 39 37 23 4c 39 22 3e 4c 61 79 65 |581:797#L9">Laye| 00001090 72 54 79 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 |rTypeMetadata</a| 000010a0 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t| 000010b0 79 70 65 20 4c 61 79 65 72 54 79 70 65 4d 65 74 |ype LayerTypeMet| 000010c0 61 64 61 74 61 20 73 74 72 75 63 74 20 7b 0a 20 |adata struct {. | 000010d0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 000010e0 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 61 6d 65 |comment">// Name| 000010f0 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 20 72 | is the string r| 00001100 65 74 75 72 6e 65 64 20 62 79 20 65 61 63 68 20 |eturned by each | 00001110 6c 61 79 65 72 20 74 79 70 65 26 23 33 39 3b 73 |layer type's| 00001120 20 53 74 72 69 6e 67 20 6d 65 74 68 6f 64 2e 3c | String method.<| 00001130 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 61 6d 65 20 |/span>. Name | 00001140 73 74 72 69 6e 67 0a 20 20 20 20 3c 73 70 61 6e |string. <span| 00001150 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 00001160 3e 2f 2f 20 44 65 63 6f 64 65 72 20 69 73 20 74 |>// Decoder is t| 00001170 68 65 20 64 65 63 6f 64 65 72 20 74 6f 20 75 73 |he decoder to us| 00001180 65 20 77 68 65 6e 20 74 68 65 20 6c 61 79 65 72 |e when the layer| 00001190 20 74 79 70 65 20 69 73 20 70 61 73 73 65 64 20 | type is passed | 000011a0 69 6e 20 61 73 20 61 3c 2f 73 70 61 6e 3e 0a 20 |in as a</span>. | 000011b0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 000011c0 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 44 65 63 6f |comment">// Deco| 000011d0 64 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |der.</span>. | 000011e0 44 65 63 6f 64 65 72 20 44 65 63 6f 64 65 72 0a |Decoder Decoder.| 000011f0 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c |}</pre>....<p>.L| 00001200 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 |ayerTypeMetadata| 00001210 20 63 6f 6e 74 61 69 6e 73 20 6d 65 74 61 64 61 | contains metada| 00001220 74 61 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 |ta associated wi| 00001230 74 68 20 65 61 63 68 20 4c 61 79 65 72 54 79 70 |th each LayerTyp| 00001240 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 |e..</p>.........| 00001250 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00001260 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00001270 3c 68 32 20 69 64 3d 22 4c 69 6e 6b 4c 61 79 65 |<h2 id="LinkLaye| 00001280 72 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d |r">type <a href=| 00001290 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 000012a0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 000012b0 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 |packet/base.go?s| 000012c0 3d 31 37 32 30 3a 31 37 37 32 23 4c 33 36 22 3e |=1720:1772#L36">| 000012d0 4c 69 6e 6b 4c 61 79 65 72 3c 2f 61 3e 3c 2f 68 |LinkLayer</a></h| 000012e0 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type | 000012f0 4c 69 6e 6b 4c 61 79 65 72 20 69 6e 74 65 72 66 |LinkLayer interf| 00001300 61 63 65 20 7b 0a 20 20 20 20 4c 61 79 65 72 0a |ace {. Layer.| 00001310 20 20 20 20 4c 69 6e 6b 46 6c 6f 77 28 29 20 46 | LinkFlow() F| 00001320 6c 6f 77 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |low.}</pre>....<| 00001330 70 3e 0a 4c 69 6e 6b 4c 61 79 65 72 20 69 73 20 |p>.LinkLayer is | 00001340 74 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 72 |the packet layer| 00001350 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 | corresponding t| 00001360 6f 20 54 43 50 2f 49 50 20 6c 61 79 65 72 20 31 |o TCP/IP layer 1| 00001370 20 28 4f 53 49 20 6c 61 79 65 72 20 32 29 0a 3c | (OSI layer 2).<| 00001380 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |/p>.............| 00001390 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................| 000013a0 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 | 000013b0 69 64 3d 22 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |id="NetworkLayer| 000013c0 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="| 000013d0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 000013e0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 000013f0 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d |acket/base.go?s=| 00001400 31 38 35 39 3a 31 39 31 37 23 4c 34 33 22 3e 4e |1859:1917#L43">N| 00001410 65 74 77 6f 72 6b 4c 61 79 65 72 3c 2f 61 3e 3c |etworkLayer</a><| 00001420 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 00001430 65 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 20 69 |e NetworkLayer i| 00001440 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 4c |nterface {. L| 00001450 61 79 65 72 0a 20 20 20 20 4e 65 74 77 6f 72 6b |ayer. Network| 00001460 46 6c 6f 77 28 29 20 46 6c 6f 77 0a 7d 3c 2f 70 |Flow() Flow.}</p| 00001470 72 65 3e 0a 09 09 09 3c 70 3e 0a 4e 65 74 77 6f |re>....<p>.Netwo| 00001480 72 6b 4c 61 79 65 72 20 69 73 20 74 68 65 20 70 |rkLayer is the p| 00001490 61 63 6b 65 74 20 6c 61 79 65 72 20 63 6f 72 72 |acket layer corr| 000014a0 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 54 43 50 |esponding to TCP| 000014b0 2f 49 50 20 6c 61 79 65 72 20 32 20 28 4f 53 49 |/IP layer 2 (OSI| 000014c0 0a 6c 61 79 65 72 20 33 29 0a 3c 2f 70 3e 0a 0a |.layer 3).</p>..| 000014d0 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................| 000014e0 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a |................| 000014f0 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 50 |.......<h2 id="P| 00001500 61 63 6b 65 74 22 3e 74 79 70 65 20 3c 61 20 68 |acket">type <a h| 00001510 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00001520 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00001530 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe| 00001540 74 2e 67 6f 3f 73 3d 38 33 36 3a 32 31 37 32 23 |t.go?s=836:2172#| 00001550 4c 31 38 22 3e 50 61 63 6b 65 74 3c 2f 61 3e 3c |L18">Packet</a><| 00001560 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 00001570 65 20 50 61 63 6b 65 74 20 69 6e 74 65 72 66 61 |e Packet interfa| 00001580 63 65 20 7b 0a 20 20 20 20 66 6d 74 2e 53 74 72 |ce {. fmt.Str| 00001590 69 6e 67 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 |inger. <span | 000015a0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 000015b0 2f 2f 20 44 61 74 61 20 72 65 74 75 72 6e 73 20 |// Data returns | 000015c0 61 6c 6c 20 64 61 74 61 20 61 73 73 6f 63 69 61 |all data associa| 000015d0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 |ted with this pa| 000015e0 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |cket</span>. | 000015f0 44 61 74 61 28 29 20 5b 5d 62 79 74 65 0a 20 20 |Data() []byte. | 00001600 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00001610 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 |omment">// Layer| 00001620 73 20 72 65 74 75 72 6e 73 20 61 6c 6c 20 6c 61 |s returns all la| 00001630 79 65 72 73 20 69 6e 20 74 68 69 73 20 70 61 63 |yers in this pac| 00001640 6b 65 74 2c 20 63 6f 6d 70 75 74 69 6e 67 20 74 |ket, computing t| 00001650 68 65 6d 20 61 73 20 6e 65 63 65 73 73 61 72 79 |hem as necessary| 00001660 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c 61 79 65 |</span>. Laye| 00001670 72 73 28 29 20 5b 5d 4c 61 79 65 72 0a 20 20 20 |rs() []Layer. | 00001680 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co| 00001690 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 20 |mment">// Layer | 000016a0 72 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 |returns the firs| 000016b0 74 20 6c 61 79 65 72 20 69 6e 20 74 68 69 73 20 |t layer in this | 000016c0 70 61 63 6b 65 74 20 6f 66 20 74 68 65 20 67 69 |packet of the gi| 000016d0 76 65 6e 20 74 79 70 65 2c 20 6f 72 20 6e 69 6c |ven type, or nil| 000016e0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c 61 79 65 |</span>. Laye| 000016f0 72 28 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 |r(LayerType) Lay| 00001700 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |er. <span cla| 00001710 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 00001720 4c 61 79 65 72 43 6c 61 73 73 20 72 65 74 75 72 |LayerClass retur| 00001730 6e 73 20 74 68 65 20 66 69 72 73 74 20 6c 61 79 |ns the first lay| 00001740 65 72 20 69 6e 20 74 68 69 73 20 70 61 63 6b 65 |er in this packe| 00001750 74 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 63 |t of the given c| 00001760 6c 61 73 73 2c 3c 2f 73 70 61 6e 3e 0a 20 20 20 |lass,</span>. | 00001770 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co| 00001780 6d 6d 65 6e 74 22 3e 2f 2f 20 6f 72 20 6e 69 6c |mment">// or nil| 00001790 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c 61 79 |.</span>. Lay| 000017a0 65 72 43 6c 61 73 73 28 4c 61 79 65 72 43 6c 61 |erClass(LayerCla| 000017b0 73 73 29 20 4c 61 79 65 72 0a 20 20 20 20 3c 73 |ss) Layer. <s| 000017c0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000017d0 6e 74 22 3e 2f 2f 20 43 61 70 74 75 72 65 49 6e |nt">// CaptureIn| 000017e0 66 6f 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 |fo returns the c| 000017f0 61 70 75 74 75 72 65 20 69 6e 66 6f 72 6d 61 74 |aputure informat| 00001800 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 70 61 63 |ion for this pac| 00001810 6b 65 74 2e 20 20 54 68 69 73 20 72 65 74 75 72 |ket. This retur| 00001820 6e 73 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |ns</span>. <s| 00001830 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001840 6e 74 22 3e 2f 2f 20 61 20 70 6f 69 6e 74 65 72 |nt">// a pointer| 00001850 20 74 6f 20 74 68 65 20 70 61 63 6b 65 74 26 23 | to the packet&#| 00001860 33 39 3b 73 20 73 74 72 75 63 74 2c 20 73 6f 20 |39;s struct, so | 00001870 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 62 |it can be used b| 00001880 6f 74 68 20 66 6f 72 20 72 65 61 64 69 6e 67 20 |oth for reading | 00001890 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |and</span>. <| 000018a0 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 000018b0 65 6e 74 22 3e 2f 2f 20 77 72 69 74 69 6e 67 20 |ent">// writing | 000018c0 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e |the information.| 000018d0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 43 61 70 74 |</span>. Capt| 000018e0 75 72 65 49 6e 66 6f 28 29 20 2a 43 61 70 74 75 |ureInfo() *Captu| 000018f0 72 65 49 6e 66 6f 0a 0a 20 20 20 20 3c 73 70 61 |reInfo.. <spa| 00001900 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 00001910 22 3e 2f 2f 20 4c 69 6e 6b 4c 61 79 65 72 20 72 |">// LinkLayer r| 00001920 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 |eturns the first| 00001930 20 6c 69 6e 6b 20 6c 61 79 65 72 20 69 6e 20 74 | link layer in t| 00001940 68 65 20 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e |he packet</span>| 00001950 0a 20 20 20 20 4c 69 6e 6b 4c 61 79 65 72 28 29 |. LinkLayer()| 00001960 20 4c 69 6e 6b 4c 61 79 65 72 0a 20 20 20 20 3c | LinkLayer. <| 00001970 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00001980 65 6e 74 22 3e 2f 2f 20 4e 65 74 77 6f 72 6b 4c |ent">// NetworkL| 00001990 61 79 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 |ayer returns the| 000019a0 20 66 69 72 73 74 20 6e 65 74 77 6f 72 6b 20 6c | first network l| 000019b0 61 79 65 72 20 69 6e 20 74 68 65 20 70 61 63 6b |ayer in the pack| 000019c0 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 65 |et</span>. Ne| 000019d0 74 77 6f 72 6b 4c 61 79 65 72 28 29 20 4e 65 74 |tworkLayer() Net| 000019e0 77 6f 72 6b 4c 61 79 65 72 0a 20 20 20 20 3c 73 |workLayer. <s| 000019f0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001a00 6e 74 22 3e 2f 2f 20 54 72 61 6e 73 70 6f 72 74 |nt">// Transport| 00001a10 4c 61 79 65 72 20 72 65 74 75 72 6e 73 20 74 68 |Layer returns th| 00001a20 65 20 66 69 72 73 74 20 74 72 61 6e 73 70 6f 72 |e first transpor| 00001a30 74 20 6c 61 79 65 72 20 69 6e 20 74 68 65 20 70 |t layer in the p| 00001a40 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 |acket</span>. | 00001a50 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 28 | TransportLayer(| 00001a60 29 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 |) TransportLayer| 00001a70 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class| 00001a80 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 41 70 |="comment">// Ap| 00001a90 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 20 72 |plicationLayer r| 00001aa0 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 |eturns the first| 00001ab0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c 61 79 | application lay| 00001ac0 65 72 20 69 6e 20 74 68 65 20 70 61 63 6b 65 74 |er in the packet| 00001ad0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 41 70 70 6c |</span>. Appl| 00001ae0 69 63 61 74 69 6f 6e 4c 61 79 65 72 28 29 20 41 |icationLayer() A| 00001af0 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 0a |pplicationLayer.| 00001b00 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 00001b10 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 45 72 72 |"comment">// Err| 00001b20 6f 72 4c 61 79 65 72 20 69 73 20 70 61 72 74 69 |orLayer is parti| 00001b30 63 75 6c 61 72 6c 79 20 75 73 65 66 75 6c 2c 20 |cularly useful, | 00001b40 73 69 6e 63 65 20 69 74 20 72 65 74 75 72 6e 73 |since it returns| 00001b50 20 6e 69 6c 20 69 66 20 74 68 65 20 70 61 63 6b | nil if the pack| 00001b60 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |et</span>. <s| 00001b70 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001b80 6e 74 22 3e 2f 2f 20 77 61 73 20 66 75 6c 6c 79 |nt">// was fully| 00001b90 20 64 65 63 6f 64 65 64 20 73 75 63 63 65 73 73 | decoded success| 00001ba0 66 75 6c 6c 79 2c 20 61 6e 64 20 6e 6f 6e 2d 6e |fully, and non-n| 00001bb0 69 6c 20 69 66 20 61 6e 20 65 72 72 6f 72 20 77 |il if an error w| 00001bc0 61 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 3c 2f |as encountered</| 00001bd0 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 |span>. <span | 00001be0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">| 00001bf0 2f 2f 20 69 6e 20 64 65 63 6f 64 69 6e 67 20 61 |// in decoding a| 00001c00 6e 64 20 74 68 65 20 70 61 63 6b 65 74 20 77 61 |nd the packet wa| 00001c10 73 20 6f 6e 6c 79 20 70 61 72 74 69 61 6c 6c 79 |s only partially| 00001c20 20 64 65 63 6f 64 65 64 2e 20 20 54 68 75 73 2c | decoded. Thus,| 00001c30 20 69 74 73 20 6f 75 74 70 75 74 3c 2f 73 70 61 | its output</spa| 00001c40 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla| 00001c50 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 00001c60 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 |can be used to d| 00001c70 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 |etermine if the | 00001c80 65 6e 74 69 72 65 20 70 61 63 6b 65 74 20 77 61 |entire packet wa| 00001c90 73 20 61 62 6c 65 20 74 6f 20 62 65 20 64 65 63 |s able to be dec| 00001ca0 6f 64 65 64 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |oded.</span>. | 00001cb0 20 45 72 72 6f 72 4c 61 79 65 72 28 29 20 45 72 | ErrorLayer() Er| 00001cc0 72 6f 72 4c 61 79 65 72 0a 7d 3c 2f 70 72 65 3e |rorLayer.}</pre>| 00001cd0 0a 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 20 69 |....<p>.Packet i| 00001ce0 73 20 74 68 65 20 70 72 69 6d 61 72 79 20 6f 62 |s the primary ob| 00001cf0 6a 65 63 74 20 75 73 65 64 20 62 79 20 67 6f 70 |ject used by gop| 00001d00 61 63 6b 65 74 2e 20 20 50 61 63 6b 65 74 73 20 |acket. Packets | 00001d10 61 72 65 20 63 72 65 61 74 65 64 20 62 79 20 61 |are created by a| 00001d20 0a 44 65 63 6f 64 65 72 26 23 33 39 3b 73 20 44 |.Decoder's D| 00001d30 65 63 6f 64 65 20 63 61 6c 6c 2e 20 20 41 20 70 |ecode call. A p| 00001d40 61 63 6b 65 74 20 69 73 20 6d 61 64 65 20 75 70 |acket is made up| 00001d50 20 6f 66 20 61 20 73 65 74 20 6f 66 20 44 61 74 | of a set of Dat| 00001d60 61 2c 20 77 68 69 63 68 0a 69 73 20 62 72 6f 6b |a, which.is brok| 00001d70 65 6e 20 69 6e 74 6f 20 61 20 6e 75 6d 62 65 72 |en into a number| 00001d80 20 6f 66 20 4c 61 79 65 72 73 20 61 73 20 69 74 | of Layers as it| 00001d90 20 69 73 20 64 65 63 6f 64 65 64 2e 0a 3c 2f 70 | is decoded..</p| 00001da0 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |>...............| 00001db0 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................| 00001dc0 3c 68 33 20 69 64 3d 22 4e 65 77 50 61 63 6b 65 |<h3 id="NewPacke| 00001dd0 74 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d |t">func <a href=| 00001de0 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 00001df0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 00001e00 70 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 6f |packet/packet.go| 00001e10 3f 73 3d 39 39 37 38 3a 31 30 30 36 32 23 4c 33 |?s=9978:10062#L3| 00001e20 34 30 22 3e 4e 65 77 50 61 63 6b 65 74 3c 2f 61 |40">NewPacket</a| 00001e30 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>| 00001e40 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 28 64 |func NewPacket(d| 00001e50 61 74 61 20 5b 5d 62 79 74 65 2c 20 66 69 72 73 |ata []byte, firs| 00001e60 74 4c 61 79 65 72 44 65 63 6f 64 65 72 20 44 65 |tLayerDecoder De| 00001e70 63 6f 64 65 72 2c 20 6f 70 74 69 6f 6e 73 20 44 |coder, options D| 00001e80 65 63 6f 64 65 4f 70 74 69 6f 6e 73 29 20 50 61 |ecodeOptions) Pa| 00001e90 63 6b 65 74 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |cket</pre>.....<| 00001ea0 70 3e 0a 4e 65 77 50 61 63 6b 65 74 20 63 72 65 |p>.NewPacket cre| 00001eb0 61 74 65 73 20 61 20 6e 65 77 20 50 61 63 6b 65 |ates a new Packe| 00001ec0 74 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 61 20 |t object from a | 00001ed0 73 65 74 20 6f 66 20 62 79 74 65 73 2e 20 20 54 |set of bytes. T| 00001ee0 68 65 0a 66 69 72 73 74 4c 61 79 65 72 44 65 63 |he.firstLayerDec| 00001ef0 6f 64 65 72 20 74 65 6c 6c 73 20 69 74 20 68 6f |oder tells it ho| 00001f00 77 20 74 6f 20 69 6e 74 65 72 70 72 65 74 20 74 |w to interpret t| 00001f10 68 65 20 66 69 72 73 74 20 6c 61 79 65 72 20 66 |he first layer f| 00001f20 72 6f 6d 20 74 68 65 20 62 79 74 65 73 2c 0a 66 |rom the bytes,.f| 00001f30 75 74 75 72 65 20 6c 61 79 65 72 73 20 77 69 6c |uture layers wil| 00001f40 6c 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 66 |l be generated f| 00001f50 72 6f 6d 20 74 68 61 74 20 66 69 72 73 74 20 6c |rom that first l| 00001f60 61 79 65 72 20 61 75 74 6f 6d 61 74 69 63 61 6c |ayer automatical| 00001f70 6c 79 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |ly..</p>........| 00001f80 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................| 00001f90 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 50 61 |......<h2 id="Pa| 00001fa0 63 6b 65 74 42 75 69 6c 64 65 72 22 3e 74 79 70 |cketBuilder">typ| 00001fb0 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00001fc0 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00001fd0 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00001fe0 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 36 30 32 |/decode.go?s=602| 00001ff0 3a 31 35 33 31 23 4c 31 33 22 3e 50 61 63 6b 65 |:1531#L13">Packe| 00002000 74 42 75 69 6c 64 65 72 3c 2f 61 3e 3c 2f 68 32 |tBuilder</a></h2| 00002010 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 50 |>....<pre>type P| 00002020 61 63 6b 65 74 42 75 69 6c 64 65 72 20 69 6e 74 |acketBuilder int| 00002030 65 72 66 61 63 65 20 7b 0a 20 20 20 20 3c 73 70 |erface {. <sp| 00002040 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 00002050 74 22 3e 2f 2f 20 41 64 64 4c 61 79 65 72 20 73 |t">// AddLayer s| 00002060 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 |hould be called | 00002070 62 79 20 61 20 64 65 63 6f 64 65 72 20 69 6d 6d |by a decoder imm| 00002080 65 64 69 61 74 65 6c 79 20 75 70 6f 6e 20 73 75 |ediately upon su| 00002090 63 63 65 73 73 66 75 6c 3c 2f 73 70 61 6e 3e 0a |ccessful</span>.| 000020a0 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 000020b0 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 64 65 63 |"comment">// dec| 000020c0 6f 64 69 6e 67 20 6f 66 20 61 20 6c 61 79 65 72 |oding of a layer| 000020d0 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 41 64 64 |.</span>. Add| 000020e0 4c 61 79 65 72 28 6c 20 4c 61 79 65 72 29 0a 20 |Layer(l Layer). | 000020f0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00002100 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 54 68 65 20 |comment">// The | 00002110 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e 63 74 69 |following functi| 00002120 6f 6e 73 20 73 65 74 20 74 68 65 20 76 61 72 69 |ons set the vari| 00002130 6f 75 73 20 73 70 65 63 69 66 69 63 20 6c 61 79 |ous specific lay| 00002140 65 72 73 20 69 6e 20 74 68 65 20 66 69 6e 61 6c |ers in the final| 00002150 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 00002160 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 00002170 22 3e 2f 2f 20 70 61 63 6b 65 74 2e 20 20 4e 6f |">// packet. No| 00002180 74 65 20 74 68 61 74 20 69 66 20 6d 61 6e 79 20 |te that if many | 00002190 6c 61 79 65 72 73 20 63 61 6c 6c 20 53 65 74 58 |layers call SetX| 000021a0 2c 20 74 68 65 20 66 69 72 73 74 20 63 61 6c 6c |, the first call| 000021b0 20 69 73 20 6b 65 70 74 20 61 6e 64 20 61 6c 6c | is kept and all| 000021c0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 000021d0 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 000021e0 22 3e 2f 2f 20 6f 74 68 65 72 20 63 61 6c 6c 73 |">// other calls| 000021f0 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 3c 2f 73 | are ignored.</s| 00002200 70 61 6e 3e 0a 20 20 20 20 53 65 74 4c 69 6e 6b |pan>. SetLink| 00002210 4c 61 79 65 72 28 4c 69 6e 6b 4c 61 79 65 72 29 |Layer(LinkLayer)| 00002220 0a 20 20 20 20 53 65 74 4e 65 74 77 6f 72 6b 4c |. SetNetworkL| 00002230 61 79 65 72 28 4e 65 74 77 6f 72 6b 4c 61 79 65 |ayer(NetworkLaye| 00002240 72 29 0a 20 20 20 20 53 65 74 54 72 61 6e 73 70 |r). SetTransp| 00002250 6f 72 74 4c 61 79 65 72 28 54 72 61 6e 73 70 6f |ortLayer(Transpo| 00002260 72 74 4c 61 79 65 72 29 0a 20 20 20 20 53 65 74 |rtLayer). Set| 00002270 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer| 00002280 28 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 |(ApplicationLaye| 00002290 72 29 0a 20 20 20 20 53 65 74 45 72 72 6f 72 4c |r). SetErrorL| 000022a0 61 79 65 72 28 45 72 72 6f 72 4c 61 79 65 72 29 |ayer(ErrorLayer)| 000022b0 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class| 000022c0 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 65 |="comment">// Ne| 000022d0 78 74 44 65 63 6f 64 65 72 20 73 68 6f 75 6c 64 |xtDecoder should| 000022e0 20 62 65 20 63 61 6c 6c 65 64 20 62 79 20 61 20 | be called by a | 000022f0 64 65 63 6f 64 65 72 20 77 68 65 6e 20 74 68 65 |decoder when the| 00002300 79 26 23 33 39 3b 72 65 20 64 6f 6e 65 20 64 65 |y're done de| 00002310 63 6f 64 69 6e 67 20 61 3c 2f 73 70 61 6e 3e 0a |coding a</span>.| 00002320 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=| 00002330 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 70 61 63 |"comment">// pac| 00002340 6b 65 74 20 6c 61 79 65 72 20 62 75 74 20 6e 6f |ket layer but no| 00002350 74 20 64 6f 6e 65 20 77 69 74 68 20 64 65 63 6f |t done with deco| 00002360 64 69 6e 67 20 74 68 65 20 65 6e 74 69 72 65 20 |ding the entire | 00002370 70 61 63 6b 65 74 2e 20 20 54 68 65 20 6e 65 78 |packet. The nex| 00002380 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |t</span>. <sp| 00002390 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 000023a0 74 22 3e 2f 2f 20 64 65 63 6f 64 65 72 20 77 69 |t">// decoder wi| 000023b0 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 |ll be called to | 000023c0 64 65 63 6f 64 65 20 74 68 65 20 6c 61 73 74 20 |decode the last | 000023d0 41 64 64 4c 61 79 65 72 26 23 33 39 3b 73 20 4c |AddLayer's L| 000023e0 61 79 65 72 50 61 79 6c 6f 61 64 2e 3c 2f 73 70 |ayerPayload.</sp| 000023f0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl| 00002400 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 00002410 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 | Because of this| 00002420 2c 20 4e 65 78 74 44 65 63 6f 64 65 72 20 6d 75 |, NextDecoder mu| 00002430 73 74 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 |st only be calle| 00002440 64 20 6f 6e 63 65 20 61 6c 6c 20 6f 74 68 65 72 |d once all other| 00002450 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 00002460 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 00002470 22 3e 2f 2f 20 50 61 63 6b 65 74 42 75 69 6c 64 |">// PacketBuild| 00002480 65 72 20 63 61 6c 6c 73 20 68 61 76 65 20 62 65 |er calls have be| 00002490 65 6e 20 6d 61 64 65 2e 20 20 53 65 74 2a 4c 61 |en made. Set*La| 000024a0 79 65 72 20 61 6e 64 20 41 64 64 4c 61 79 65 72 |yer and AddLayer| 000024b0 20 63 61 6c 6c 73 20 61 66 74 65 72 3c 2f 73 70 | calls after</sp| 000024c0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl| 000024d0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 000024e0 20 4e 65 78 74 44 65 63 6f 64 65 72 20 63 61 6c | NextDecoder cal| 000024f0 6c 73 20 77 69 6c 6c 20 62 65 68 61 76 65 20 69 |ls will behave i| 00002500 6e 63 6f 72 72 65 63 74 6c 79 2e 3c 2f 73 70 61 |ncorrectly.</spa| 00002510 6e 3e 0a 20 20 20 20 4e 65 78 74 44 65 63 6f 64 |n>. NextDecod| 00002520 65 72 28 6e 65 78 74 20 44 65 63 6f 64 65 72 29 |er(next Decoder)| 00002530 20 65 72 72 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 | error.}</pre>..| 00002540 09 09 3c 70 3e 0a 50 61 63 6b 65 74 42 75 69 6c |..<p>.PacketBuil| 00002550 64 65 72 20 69 73 20 75 73 65 64 20 62 79 20 6c |der is used by l| 00002560 61 79 65 72 20 64 65 63 6f 64 65 72 73 20 74 6f |ayer decoders to| 00002570 20 73 74 6f 72 65 20 74 68 65 20 6c 61 79 65 72 | store the layer| 00002580 73 20 74 68 65 79 26 23 33 39 3b 76 65 20 64 65 |s they've de| 00002590 63 6f 64 65 64 2c 0a 61 6e 64 20 74 6f 20 64 65 |coded,.and to de| 000025a0 66 65 72 20 66 75 74 75 72 65 20 64 65 63 6f 64 |fer future decod| 000025b0 69 6e 67 20 76 69 61 20 4e 65 78 74 44 65 63 6f |ing via NextDeco| 000025c0 64 65 72 2e 0a 54 79 70 69 63 61 6c 6c 79 2c 20 |der..Typically, | 000025d0 74 68 65 20 70 61 74 74 65 72 6e 20 66 6f 72 20 |the pattern for | 000025e0 75 73 65 20 69 73 3a 0a 3c 2f 70 3e 0a 3c 70 72 |use is:.</p>.<pr| 000025f0 65 3e 66 75 6e 63 20 28 6d 20 2a 6d 79 44 65 63 |e>func (m *myDec| 00002600 6f 64 65 72 29 20 44 65 63 6f 64 65 28 64 61 74 |oder) Decode(dat| 00002610 61 20 5b 5d 62 79 74 65 2c 20 70 20 50 61 63 6b |a []byte, p Pack| 00002620 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 6f 72 |etBuilder) error| 00002630 20 7b 0a 20 20 69 66 20 6d 79 4c 61 79 65 72 2c | {. if myLayer,| 00002640 20 65 72 72 20 3a 3d 20 6d 79 44 65 63 6f 64 69 | err := myDecodi| 00002650 6e 67 4c 6f 67 69 63 28 64 61 74 61 29 3b 20 65 |ngLogic(data); e| 00002660 72 72 20 21 3d 20 6e 69 6c 20 7b 0a 20 20 20 20 |rr != nil {. | 00002670 72 65 74 75 72 6e 20 65 72 72 0a 20 20 7d 20 65 |return err. } e| 00002680 6c 73 65 20 7b 0a 20 20 20 20 70 2e 41 64 64 4c |lse {. p.AddL| 00002690 61 79 65 72 28 6d 79 4c 61 79 65 72 29 0a 20 20 |ayer(myLayer). | 000026a0 7d 0a 20 20 2f 2f 20 6d 61 79 62 65 20 64 6f 20 |}. // maybe do | 000026b0 74 68 69 73 2c 20 69 66 20 6d 79 4c 61 79 65 72 |this, if myLayer| 000026c0 20 69 73 20 61 20 4c 69 6e 6b 4c 61 79 65 72 0a | is a LinkLayer.| 000026d0 20 20 70 2e 53 65 74 4c 69 6e 6b 4c 61 79 65 72 | p.SetLinkLayer| 000026e0 28 6d 79 4c 61 79 65 72 29 0a 20 20 72 65 74 75 |(myLayer). retu| 000026f0 72 6e 20 70 2e 4e 65 78 74 44 65 63 6f 64 65 72 |rn p.NextDecoder| 00002700 28 6e 65 78 74 44 65 63 6f 64 65 72 29 0a 7d 0a |(nextDecoder).}.| 00002710 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |</pre>..........| 00002720 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 00002730 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c |...............<| 00002740 68 32 20 69 64 3d 22 50 61 63 6b 65 74 44 61 74 |h2 id="PacketDat| 00002750 61 53 6f 75 72 63 65 22 3e 74 79 70 65 20 3c 61 |aSource">type <a| 00002760 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00002770 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00002780 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 |ell/gopacket/pac| 00002790 6b 65 74 2e 67 6f 3f 73 3d 31 31 34 34 34 3a 31 |ket.go?s=11444:1| 000027a0 31 38 32 36 23 4c 33 37 37 22 3e 50 61 63 6b 65 |1826#L377">Packe| 000027b0 74 44 61 74 61 53 6f 75 72 63 65 3c 2f 61 3e 3c |tDataSource</a><| 000027c0 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 000027d0 65 20 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 |e PacketDataSour| 000027e0 63 65 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 |ce interface {. | 000027f0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00002800 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 52 65 61 64 |comment">// Read| 00002810 50 61 63 6b 65 74 44 61 74 61 20 72 65 74 75 72 |PacketData retur| 00002820 6e 73 20 74 68 65 20 6e 65 78 74 20 70 61 63 6b |ns the next pack| 00002830 65 74 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f |et available fro| 00002840 6d 20 74 68 69 73 20 64 61 74 61 20 73 6f 75 72 |m this data sour| 00002850 63 65 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |ce.</span>. <| 00002860 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00002870 65 6e 74 22 3e 2f 2f 20 49 74 20 72 65 74 75 72 |ent">// It retur| 00002880 6e 73 3a 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |ns:</span>. <| 00002890 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 000028a0 65 6e 74 22 3e 2f 2f 20 20 64 61 74 61 3a 20 20 |ent">// data: | 000028b0 54 68 65 20 62 79 74 65 73 20 6f 66 20 61 6e 20 |The bytes of an | 000028c0 69 6e 64 69 76 69 64 75 61 6c 20 70 61 63 6b 65 |individual packe| 000028d0 74 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |t.</span>. <s| 000028e0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000028f0 6e 74 22 3e 2f 2f 20 20 63 69 3a 20 20 4d 65 74 |nt">// ci: Met| 00002900 61 64 61 74 61 20 61 62 6f 75 74 20 74 68 65 20 |adata about the | 00002910 63 61 70 74 75 72 65 3c 2f 73 70 61 6e 3e 0a 20 |capture</span>. | 00002920 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00002930 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 65 72 72 |comment">// err| 00002940 3a 20 20 41 6e 20 65 72 72 6f 72 20 65 6e 63 6f |: An error enco| 00002950 75 6e 74 65 72 65 64 20 77 68 69 6c 65 20 72 65 |untered while re| 00002960 61 64 69 6e 67 20 70 61 63 6b 65 74 20 64 61 74 |ading packet dat| 00002970 61 2e 20 20 49 66 20 65 72 72 20 21 3d 20 6e 69 |a. If err != ni| 00002980 6c 2c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |l,</span>. <s| 00002990 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 000029a0 6e 74 22 3e 2f 2f 20 20 20 20 74 68 65 6e 20 64 |nt">// then d| 000029b0 61 74 61 2f 63 69 20 77 69 6c 6c 20 62 65 20 69 |ata/ci will be i| 000029c0 67 6e 6f 72 65 64 2e 3c 2f 73 70 61 6e 3e 0a 20 |gnored.</span>. | 000029d0 20 20 20 52 65 61 64 50 61 63 6b 65 74 44 61 74 | ReadPacketDat| 000029e0 61 28 29 20 28 64 61 74 61 20 5b 5d 62 79 74 65 |a() (data []byte| 000029f0 2c 20 63 69 20 43 61 70 74 75 72 65 49 6e 66 6f |, ci CaptureInfo| 00002a00 2c 20 65 72 72 20 65 72 72 6f 72 29 0a 7d 3c 2f |, err error).}</| 00002a10 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 63 6b |pre>....<p>.Pack| 00002a20 65 74 44 61 74 61 53 6f 75 72 63 65 20 69 73 20 |etDataSource is | 00002a30 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 |an interface for| 00002a40 20 73 6f 6d 65 20 73 6f 75 72 63 65 20 6f 66 20 | some source of | 00002a50 70 61 63 6b 65 74 20 64 61 74 61 2e 20 20 55 73 |packet data. Us| 00002a60 65 72 73 20 6d 61 79 0a 63 72 65 61 74 65 20 74 |ers may.create t| 00002a70 68 65 69 72 20 6f 77 6e 20 69 6d 70 6c 65 6d 65 |heir own impleme| 00002a80 6e 74 61 74 69 6f 6e 73 2c 20 6f 72 20 75 73 65 |ntations, or use| 00002a90 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 69 6d | the existing im| 00002aa0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 69 6e |plementations in| 00002ab0 0a 67 6f 70 61 63 6b 65 74 2f 70 63 61 70 20 28 |.gopacket/pcap (| 00002ac0 6c 69 62 70 63 61 70 2c 20 61 6c 6c 6f 77 73 20 |libpcap, allows | 00002ad0 72 65 61 64 69 6e 67 20 66 72 6f 6d 20 6c 69 76 |reading from liv| 00002ae0 65 20 69 6e 74 65 72 66 61 63 65 73 20 6f 72 20 |e interfaces or | 00002af0 66 72 6f 6d 0a 70 63 61 70 20 66 69 6c 65 73 29 |from.pcap files)| 00002b00 20 6f 72 20 67 6f 70 61 63 6b 65 74 2f 70 66 72 | or gopacket/pfr| 00002b10 69 6e 67 20 28 50 46 5f 52 49 4e 47 2c 20 61 6c |ing (PF_RING, al| 00002b20 6c 6f 77 73 20 72 65 61 64 69 6e 67 20 66 72 6f |lows reading fro| 00002b30 6d 20 6c 69 76 65 0a 69 6e 74 65 72 66 61 63 65 |m live.interface| 00002b40 73 29 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a |s)..</p>........| 00002b50 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................| 00002b60 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 |................| 00002b70 09 3c 68 32 20 69 64 3d 22 50 61 63 6b 65 74 53 |.<h2 id="PacketS| 00002b80 6f 75 72 63 65 22 3e 74 79 70 65 20 3c 61 20 68 |ource">type <a h| 00002b90 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00002ba0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00002bb0 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe| 00002bc0 74 2e 67 6f 3f 73 3d 31 33 31 33 38 3a 31 33 34 |t.go?s=13138:134| 00002bd0 30 35 23 4c 34 32 32 22 3e 50 61 63 6b 65 74 53 |05#L422">PacketS| 00002be0 6f 75 72 63 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 |ource</a></h2>..| 00002bf0 09 09 3c 70 72 65 3e 74 79 70 65 20 50 61 63 6b |..<pre>type Pack| 00002c00 65 74 53 6f 75 72 63 65 20 73 74 72 75 63 74 20 |etSource struct | 00002c10 7b 0a 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |{.. <span cla| 00002c20 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 00002c30 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 20 69 73 |DecodeOptions is| 00002c40 20 74 68 65 20 73 65 74 20 6f 66 20 6f 70 74 69 | the set of opti| 00002c50 6f 6e 73 20 74 6f 20 75 73 65 20 66 6f 72 20 64 |ons to use for d| 00002c60 65 63 6f 64 69 6e 67 20 65 61 63 68 20 70 69 65 |ecoding each pie| 00002c70 63 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |ce</span>. <s| 00002c80 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00002c90 6e 74 22 3e 2f 2f 20 6f 66 20 70 61 63 6b 65 74 |nt">// of packet| 00002ca0 20 64 61 74 61 2e 20 20 54 68 69 73 20 63 61 6e | data. This can| 00002cb0 2f 73 68 6f 75 6c 64 20 62 65 20 63 68 61 6e 67 |/should be chang| 00002cc0 65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 74 |ed by the user t| 00002cd0 6f 20 72 65 66 6c 65 63 74 20 74 68 65 3c 2f 73 |o reflect the</s| 00002ce0 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 |pan>. <span c| 00002cf0 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 00002d00 2f 20 77 61 79 20 70 61 63 6b 65 74 73 20 73 68 |/ way packets sh| 00002d10 6f 75 6c 64 20 62 65 20 64 65 63 6f 64 65 64 2e |ould be decoded.| 00002d20 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 44 65 63 6f |</span>. Deco| 00002d30 64 65 4f 70 74 69 6f 6e 73 0a 20 20 20 20 3c 73 |deOptions. <s| 00002d40 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00002d50 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 |nt">// contains | 00002d60 66 69 6c 74 65 72 65 64 20 6f 72 20 75 6e 65 78 |filtered or unex| 00002d70 70 6f 72 74 65 64 20 66 69 65 6c 64 73 3c 2f 73 |ported fields</s| 00002d80 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 |pan>.}</pre>....| 00002d90 3c 70 3e 0a 50 61 63 6b 65 74 53 6f 75 72 63 65 |<p>.PacketSource| 00002da0 20 72 65 61 64 73 20 69 6e 20 70 61 63 6b 65 74 | reads in packet| 00002db0 73 20 66 72 6f 6d 20 61 20 50 61 63 6b 65 74 44 |s from a PacketD| 00002dc0 61 74 61 53 6f 75 72 63 65 2c 20 64 65 63 6f 64 |ataSource, decod| 00002dd0 65 73 20 74 68 65 6d 2c 20 61 6e 64 0a 72 65 74 |es them, and.ret| 00002de0 75 72 6e 73 20 74 68 65 6d 2e 0a 3c 2f 70 3e 0a |urns them..</p>.| 00002df0 3c 70 3e 0a 54 68 65 72 65 20 61 72 65 20 63 75 |<p>.There are cu| 00002e00 72 72 65 6e 74 6c 79 20 74 77 6f 20 64 69 66 66 |rrently two diff| 00002e10 65 72 65 6e 74 20 6d 65 74 68 6f 64 73 20 66 6f |erent methods fo| 00002e20 72 20 72 65 61 64 69 6e 67 20 70 61 63 6b 65 74 |r reading packet| 00002e30 73 20 69 6e 20 74 68 72 6f 75 67 68 0a 61 20 50 |s in through.a P| 00002e40 61 63 6b 65 74 53 6f 75 72 63 65 3a 0a 3c 2f 70 |acketSource:.</p| 00002e50 3e 0a 3c 68 33 20 69 64 3d 22 52 65 61 64 69 6e |>.<h3 id="Readin| 00002e60 67 5f 57 69 74 68 5f 50 61 63 6b 65 74 73 5f 46 |g_With_Packets_F| 00002e70 75 6e 63 74 69 6f 6e 22 3e 52 65 61 64 69 6e 67 |unction">Reading| 00002e80 20 57 69 74 68 20 50 61 63 6b 65 74 73 20 46 75 | With Packets Fu| 00002e90 6e 63 74 69 6f 6e 3c 2f 68 33 3e 0a 3c 70 3e 0a |nction</h3>.<p>.| 00002ea0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 74 |This method is t| 00002eb0 68 65 20 6d 6f 73 74 20 63 6f 6e 76 65 6e 69 65 |he most convenie| 00002ec0 6e 74 20 61 6e 64 20 65 61 73 69 65 73 74 20 74 |nt and easiest t| 00002ed0 6f 20 63 6f 64 65 2c 20 62 75 74 20 6c 61 63 6b |o code, but lack| 00002ee0 73 0a 66 6c 65 78 69 62 69 6c 69 74 79 2e 20 20 |s.flexibility. | 00002ef0 50 61 63 6b 65 74 73 20 72 65 74 75 72 6e 73 20 |Packets returns | 00002f00 61 20 26 23 33 39 3b 63 68 61 6e 20 50 61 63 6b |a 'chan Pack| 00002f10 65 74 26 23 33 39 3b 2c 20 74 68 65 6e 20 61 73 |et', then as| 00002f20 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 77 72 69 |ynchronously wri| 00002f30 74 65 73 0a 70 61 63 6b 65 74 73 20 69 6e 74 6f |tes.packets into| 00002f40 20 74 68 61 74 20 63 68 61 6e 6e 65 6c 2e 20 20 | that channel. | 00002f50 50 61 63 6b 65 74 73 20 75 73 65 73 20 61 20 62 |Packets uses a b| 00002f60 6c 6f 63 6b 69 6e 67 20 63 68 61 6e 6e 65 6c 2c |locking channel,| 00002f70 20 61 6e 64 20 63 6c 6f 73 65 73 0a 69 74 20 69 | and closes.it i| 00002f80 66 20 61 6e 20 69 6f 2e 45 4f 46 20 69 73 20 72 |f an io.EOF is r| 00002f90 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 75 |eturned by the u| 00002fa0 6e 64 65 72 6c 79 69 6e 67 20 50 61 63 6b 65 74 |nderlying Packet| 00002fb0 44 61 74 61 53 6f 75 72 63 65 2e 20 20 41 6c 6c |DataSource. All| 00002fc0 20 6f 74 68 65 72 0a 50 61 63 6b 65 74 44 61 74 | other.PacketDat| 00002fd0 61 53 6f 75 72 63 65 20 65 72 72 6f 72 73 20 61 |aSource errors a| 00002fe0 72 65 20 69 67 6e 6f 72 65 64 20 61 6e 64 20 64 |re ignored and d| 00002ff0 69 73 63 61 72 64 65 64 2e 0a 3c 2f 70 3e 0a 3c |iscarded..</p>.<| 00003000 70 72 65 3e 66 6f 72 20 70 61 63 6b 65 74 20 3a |pre>for packet :| 00003010 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 53 6f |= range packetSo| 00003020 75 72 63 65 2e 50 61 63 6b 65 74 73 28 29 20 7b |urce.Packets() {| 00003030 0a 20 20 2e 2e 2e 0a 7d 0a 3c 2f 70 72 65 3e 0a |. ....}.</pre>.| 00003040 3c 68 33 20 69 64 3d 22 52 65 61 64 69 6e 67 5f |<h3 id="Reading_| 00003050 57 69 74 68 5f 4e 65 78 74 50 61 63 6b 65 74 5f |With_NextPacket_| 00003060 46 75 6e 63 74 69 6f 6e 22 3e 52 65 61 64 69 6e |Function">Readin| 00003070 67 20 57 69 74 68 20 4e 65 78 74 50 61 63 6b 65 |g With NextPacke| 00003080 74 20 46 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e 0a |t Function</h3>.| 00003090 3c 70 3e 0a 54 68 69 73 20 6d 65 74 68 6f 64 20 |<p>.This method | 000030a0 69 73 20 74 68 65 20 6d 6f 73 74 20 66 6c 65 78 |is the most flex| 000030b0 69 62 6c 65 2c 20 61 6e 64 20 65 78 70 6f 73 65 |ible, and expose| 000030c0 73 20 65 72 72 6f 72 73 20 74 68 61 74 20 6d 61 |s errors that ma| 000030d0 79 20 62 65 0a 65 6e 63 6f 75 6e 74 65 72 65 64 |y be.encountered| 000030e0 20 62 79 20 74 68 65 20 75 6e 64 65 72 6c 79 69 | by the underlyi| 000030f0 6e 67 20 50 61 63 6b 65 74 44 61 74 61 53 6f 75 |ng PacketDataSou| 00003100 72 63 65 2e 20 20 49 74 26 23 33 39 3b 73 20 61 |rce. It's a| 00003110 6c 73 6f 20 74 68 65 20 66 61 73 74 65 73 74 0a |lso the fastest.| 00003120 69 6e 20 61 20 74 69 67 68 74 20 6c 6f 6f 70 2c |in a tight loop,| 00003130 20 73 69 6e 63 65 20 69 74 20 64 6f 65 73 6e 26 | since it doesn&| 00003140 23 33 39 3b 74 20 68 61 76 65 20 74 68 65 20 6f |#39;t have the o| 00003150 76 65 72 68 65 61 64 20 6f 66 20 61 20 63 68 61 |verhead of a cha| 00003160 6e 6e 65 6c 0a 72 65 61 64 2f 77 72 69 74 65 2e |nnel.read/write.| 00003170 20 20 48 6f 77 65 76 65 72 2c 20 69 74 20 72 65 | However, it re| 00003180 71 75 69 72 65 73 20 74 68 65 20 75 73 65 72 20 |quires the user | 00003190 74 6f 20 68 61 6e 64 6c 65 20 65 72 72 6f 72 73 |to handle errors| 000031a0 2c 20 6d 6f 73 74 0a 69 6d 70 6f 72 74 61 6e 74 |, most.important| 000031b0 6c 79 20 74 68 65 20 69 6f 2e 45 4f 46 20 65 72 |ly the io.EOF er| 000031c0 72 6f 72 20 69 6e 20 63 61 73 65 73 20 77 68 65 |ror in cases whe| 000031d0 72 65 20 70 61 63 6b 65 74 73 20 61 72 65 20 62 |re packets are b| 000031e0 65 69 6e 67 20 72 65 61 64 20 66 72 6f 6d 0a 61 |eing read from.a| 000031f0 20 66 69 6c 65 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 | file..</p>.<pre| 00003200 3e 66 6f 72 20 7b 0a 20 20 70 61 63 6b 65 74 2c |>for {. packet,| 00003210 20 65 72 72 20 3a 3d 20 70 61 63 6b 65 74 53 6f | err := packetSo| 00003220 75 72 63 65 2e 4e 65 78 74 50 61 63 6b 65 74 28 |urce.NextPacket(| 00003230 29 20 7b 0a 20 20 69 66 20 65 72 72 20 3d 3d 20 |) {. if err == | 00003240 69 6f 2e 45 4f 46 20 7b 0a 20 20 20 20 62 72 65 |io.EOF {. bre| 00003250 61 6b 0a 20 20 7d 20 65 6c 73 65 20 69 66 20 65 |ak. } else if e| 00003260 72 72 20 21 3d 20 6e 69 6c 20 7b 0a 20 20 20 20 |rr != nil {. | 00003270 6c 6f 67 2e 50 72 69 6e 74 6c 6e 28 26 23 33 34 |log.Println("| 00003280 3b 45 72 72 6f 72 3a 26 23 33 34 3b 2c 20 65 72 |;Error:", er| 00003290 72 29 0a 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a |r). continue.| 000032a0 20 20 7d 0a 20 20 68 61 6e 64 6c 65 50 61 63 6b | }. handlePack| 000032b0 65 74 28 70 61 63 6b 65 74 29 20 20 2f 2f 20 44 |et(packet) // D| 000032c0 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 |o something with| 000032d0 20 65 61 63 68 20 70 61 63 6b 65 74 2e 0a 7d 0a | each packet..}.| 000032e0 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |</pre>..........| 000032f0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 |................| 00003300 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 |.....<h3 id="New| 00003310 50 61 63 6b 65 74 53 6f 75 72 63 65 22 3e 66 75 |PacketSource">fu| 00003320 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |nc <a href="/src| 00003330 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003340 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003350 74 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 33 |t/packet.go?s=13| 00003360 34 35 38 3a 31 33 35 33 34 23 4c 34 33 32 22 3e |458:13534#L432">| 00003370 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 3c |NewPacketSource<| 00003380 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 |/a></h3>.....<pr| 00003390 65 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 |e>func NewPacket| 000033a0 53 6f 75 72 63 65 28 73 6f 75 72 63 65 20 50 61 |Source(source Pa| 000033b0 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2c 20 |cketDataSource, | 000033c0 64 65 63 6f 64 65 72 20 44 65 63 6f 64 65 72 29 |decoder Decoder)| 000033d0 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 3c 2f | *PacketSource</| 000033e0 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 |pre>.....<p>.New| 000033f0 50 61 63 6b 65 74 53 6f 75 72 63 65 20 63 72 65 |PacketSource cre| 00003400 61 74 65 73 20 61 20 70 61 63 6b 65 74 20 64 61 |ates a packet da| 00003410 74 61 20 73 6f 75 72 63 65 2e 0a 3c 2f 70 3e 0a |ta source..</p>.| 00003420 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 |................| 00003430 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="| 00003440 50 61 63 6b 65 74 53 6f 75 72 63 65 2e 4e 65 78 |PacketSource.Nex| 00003450 74 50 61 63 6b 65 74 22 3e 66 75 6e 63 20 28 2a |tPacket">func (*| 00003460 50 61 63 6b 65 74 53 6f 75 72 63 65 29 20 3c 61 |PacketSource) <a| 00003470 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00003480 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00003490 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 |ell/gopacket/pac| 000034a0 6b 65 74 2e 67 6f 3f 73 3d 31 33 37 33 33 3a 31 |ket.go?s=13733:1| 000034b0 33 37 38 34 23 4c 34 34 31 22 3e 4e 65 78 74 50 |3784#L441">NextP| 000034c0 61 63 6b 65 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |acket</a></h3>..| 000034d0 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 70 20 |...<pre>func (p | 000034e0 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 29 20 4e |*PacketSource) N| 000034f0 65 78 74 50 61 63 6b 65 74 28 29 20 28 50 61 63 |extPacket() (Pac| 00003500 6b 65 74 2c 20 65 72 72 6f 72 29 3c 2f 70 72 65 |ket, error)</pre| 00003510 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 78 74 50 61 |>.....<p>.NextPa| 00003520 63 6b 65 74 20 72 65 74 75 72 6e 73 20 74 68 65 |cket returns the| 00003530 20 6e 65 78 74 20 64 65 63 6f 64 65 64 20 70 61 | next decoded pa| 00003540 63 6b 65 74 20 66 72 6f 6d 20 74 68 65 20 50 61 |cket from the Pa| 00003550 63 6b 65 74 53 6f 75 72 63 65 2e 20 20 4f 6e 20 |cketSource. On | 00003560 65 72 72 6f 72 2c 0a 69 74 20 72 65 74 75 72 6e |error,.it return| 00003570 73 20 61 20 6e 69 6c 20 70 61 63 6b 65 74 20 61 |s a nil packet a| 00003580 6e 64 20 61 20 6e 6f 6e 2d 6e 69 6c 20 65 72 72 |nd a non-nil err| 00003590 6f 72 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |or..</p>........| 000035a0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 000035b0 09 3c 68 33 20 69 64 3d 22 50 61 63 6b 65 74 53 |.<h3 id="PacketS| 000035c0 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 22 3e 66 |ource.Packets">f| 000035d0 75 6e 63 20 28 2a 50 61 63 6b 65 74 53 6f 75 72 |unc (*PacketSour| 000035e0 63 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ce) <a href="/sr| 000035f0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00003600 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00003610 65 74 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 |et/packet.go?s=1| 00003620 34 38 34 31 3a 31 34 38 38 35 23 4c 34 37 35 22 |4841:14885#L475"| 00003630 3e 50 61 63 6b 65 74 73 3c 2f 61 3e 3c 2f 68 33 |>Packets</a></h3| 00003640 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00003650 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 |(p *PacketSource| 00003660 29 20 50 61 63 6b 65 74 73 28 29 20 63 68 61 6e |) Packets() chan| 00003670 20 50 61 63 6b 65 74 3c 2f 70 72 65 3e 0a 09 09 | Packet</pre>...| 00003680 09 09 3c 70 3e 0a 50 61 63 6b 65 74 73 20 72 65 |..<p>.Packets re| 00003690 74 75 72 6e 73 20 61 20 62 6c 6f 63 6b 69 6e 67 |turns a blocking| 000036a0 20 63 68 61 6e 6e 65 6c 20 6f 66 20 70 61 63 6b | channel of pack| 000036b0 65 74 73 2c 20 61 6c 6c 6f 77 69 6e 67 20 65 61 |ets, allowing ea| 000036c0 73 79 20 69 74 65 72 61 74 69 6e 67 20 6f 76 65 |sy iterating ove| 000036d0 72 0a 70 61 63 6b 65 74 73 2e 20 20 50 61 63 6b |r.packets. Pack| 000036e0 65 74 73 20 77 69 6c 6c 20 62 65 20 61 73 79 6e |ets will be asyn| 000036f0 63 68 72 6f 6e 6f 75 73 6c 79 20 72 65 61 64 20 |chronously read | 00003700 69 6e 20 66 72 6f 6d 20 74 68 65 20 75 6e 64 65 |in from the unde| 00003710 72 6c 79 69 6e 67 0a 50 61 63 6b 65 74 44 61 74 |rlying.PacketDat| 00003720 61 53 6f 75 72 63 65 20 61 6e 64 20 77 72 69 74 |aSource and writ| 00003730 74 65 6e 20 74 6f 20 74 68 65 20 72 65 74 75 72 |ten to the retur| 00003740 6e 65 64 20 63 68 61 6e 6e 65 6c 2e 20 20 49 66 |ned channel. If| 00003750 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a | the underlying.| 00003760 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 |PacketDataSource| 00003770 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6f 2e 45 | returns an io.E| 00003780 4f 46 20 65 72 72 6f 72 2c 20 74 68 65 20 63 68 |OF error, the ch| 00003790 61 6e 6e 65 6c 20 77 69 6c 6c 20 62 65 20 63 6c |annel will be cl| 000037a0 6f 73 65 64 2e 0a 49 66 20 61 6e 79 20 6f 74 68 |osed..If any oth| 000037b0 65 72 20 65 72 72 6f 72 20 69 73 20 65 6e 63 6f |er error is enco| 000037c0 75 6e 74 65 72 65 64 2c 20 69 74 20 69 73 20 69 |untered, it is i| 000037d0 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 3c 70 72 |gnored..</p>.<pr| 000037e0 65 3e 66 6f 72 20 70 61 63 6b 65 74 20 3a 3d 20 |e>for packet := | 000037f0 72 61 6e 67 65 20 70 61 63 6b 65 74 53 6f 75 72 |range packetSour| 00003800 63 65 2e 50 61 63 6b 65 74 73 28 29 20 7b 0a 20 |ce.Packets() {. | 00003810 20 68 61 6e 64 6c 65 50 61 63 6b 65 74 28 70 61 | handlePacket(pa| 00003820 63 6b 65 74 29 20 20 2f 2f 20 44 6f 20 73 6f 6d |cket) // Do som| 00003830 65 74 68 69 6e 67 20 77 69 74 68 20 65 61 63 68 |ething with each| 00003840 20 70 61 63 6b 65 74 2e 0a 7d 0a 3c 2f 70 72 65 | packet..}.</pre| 00003850 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............| 00003860 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c |...............<| 00003870 68 32 20 69 64 3d 22 50 61 79 6c 6f 61 64 22 3e |h2 id="Payload">| 00003880 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 |type <a href="/s| 00003890 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 000038a0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 000038b0 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 31 |ket/base.go?s=11| 000038c0 32 30 3a 31 31 35 36 23 4c 32 31 22 3e 50 61 79 |20:1156#L21">Pay| 000038d0 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |load</a></h2>...| 000038e0 09 3c 70 72 65 3e 74 79 70 65 20 50 61 79 6c 6f |.<pre>type Paylo| 000038f0 61 64 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 |ad struct {. | 00003900 44 61 74 61 20 5b 5d 62 79 74 65 0a 7d 3c 2f 70 |Data []byte.}</p| 00003910 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 79 6c 6f |re>....<p>.Paylo| 00003920 61 64 20 69 73 20 61 20 4c 61 79 65 72 20 63 6f |ad is a Layer co| 00003930 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 61 79 |ntaining the pay| 00003940 6c 6f 61 64 20 6f 66 20 61 20 70 61 63 6b 65 74 |load of a packet| 00003950 2e 20 20 54 68 65 20 64 65 66 69 6e 69 74 69 6f |. The definitio| 00003960 6e 20 6f 66 0a 77 68 61 74 20 63 6f 6e 73 74 69 |n of.what consti| 00003970 74 75 74 65 73 20 74 68 65 20 70 61 79 6c 6f 61 |tutes the payloa| 00003980 64 20 6f 66 20 61 20 70 61 63 6b 65 74 20 64 65 |d of a packet de| 00003990 70 65 6e 64 73 20 6f 6e 20 70 72 65 76 69 6f 75 |pends on previou| 000039a0 73 20 6c 61 79 65 72 73 3b 20 66 6f 72 0a 54 43 |s layers; for.TC| 000039b0 50 20 61 6e 64 20 55 44 50 2c 20 77 65 20 73 74 |P and UDP, we st| 000039c0 6f 70 20 64 65 63 6f 64 69 6e 67 20 61 62 6f 76 |op decoding abov| 000039d0 65 20 6c 61 79 65 72 20 34 20 61 6e 64 20 72 65 |e layer 4 and re| 000039e0 74 75 72 6e 20 74 68 65 20 72 65 6d 61 69 6e 69 |turn the remaini| 000039f0 6e 67 0a 62 79 74 65 73 20 61 73 20 61 20 50 61 |ng.bytes as a Pa| 00003a00 79 6c 6f 61 64 2e 20 20 50 61 79 6c 6f 61 64 20 |yload. Payload | 00003a10 69 73 20 61 6e 20 41 70 70 6c 69 63 61 74 69 6f |is an Applicatio| 00003a20 6e 4c 61 79 65 72 2e 0a 3c 2f 70 3e 0a 0a 0a 09 |nLayer..</p>....| 00003a30 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00003a40 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................| 00003a50 3c 68 33 20 69 64 3d 22 50 61 79 6c 6f 61 64 2e |<h3 id="Payload.| 00003a60 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 22 3e 66 |LayerContents">f| 00003a70 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 3c |unc (*Payload) <| 00003a80 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg| 00003a90 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon| 00003aa0 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 |nell/gopacket/ba| 00003ab0 73 65 2e 67 6f 3f 73 3d 31 32 36 35 3a 31 33 30 |se.go?s=1265:130| 00003ac0 35 23 4c 32 37 22 3e 4c 61 79 65 72 43 6f 6e 74 |5#L27">LayerCont| 00003ad0 65 6e 74 73 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |ents</a></h3>...| 00003ae0 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 70 20 2a |..<pre>func (p *| 00003af0 50 61 79 6c 6f 61 64 29 20 4c 61 79 65 72 43 6f |Payload) LayerCo| 00003b00 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 74 65 3c |ntents() []byte<| 00003b10 2f 70 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a |/pre>...........| 00003b20 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................| 00003b30 09 09 3c 68 33 20 69 64 3d 22 50 61 79 6c 6f 61 |..<h3 id="Payloa| 00003b40 64 2e 4c 61 79 65 72 50 61 79 6c 6f 61 64 22 3e |d.LayerPayload">| 00003b50 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 |func (*Payload) | 00003b60 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00003b70 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00003b80 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 |nnell/gopacket/b| 00003b90 61 73 65 2e 67 6f 3f 73 3d 31 33 32 34 3a 31 33 |ase.go?s=1324:13| 00003ba0 36 33 23 4c 32 38 22 3e 4c 61 79 65 72 50 61 79 |63#L28">LayerPay| 00003bb0 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |load</a></h3>...| 00003bc0 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 70 20 2a |..<pre>func (p *| 00003bd0 50 61 79 6c 6f 61 64 29 20 4c 61 79 65 72 50 61 |Payload) LayerPa| 00003be0 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 3c 2f |yload() []byte</| 00003bf0 70 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 |pre>............| 00003c00 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00003c10 09 3c 68 33 20 69 64 3d 22 50 61 79 6c 6f 61 64 |.<h3 id="Payload| 00003c20 2e 4c 61 79 65 72 54 79 70 65 22 3e 66 75 6e 63 |.LayerType">func| 00003c30 20 28 2a 50 61 79 6c 6f 61 64 29 20 3c 61 20 68 | (*Payload) <a h| 00003c40 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00003c50 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00003c60 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e |l/gopacket/base.| 00003c70 67 6f 3f 73 3d 31 31 39 36 3a 31 32 33 35 23 4c |go?s=1196:1235#L| 00003c80 32 36 22 3e 4c 61 79 65 72 54 79 70 65 3c 2f 61 |26">LayerType</a| 00003c90 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>| 00003ca0 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 |func (p *Payload| 00003cb0 29 20 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 |) LayerType() La| 00003cc0 79 65 72 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 |yerType</pre>...| 00003cd0 09 09 3c 70 3e 0a 4c 61 79 65 72 54 79 70 65 20 |..<p>.LayerType | 00003ce0 72 65 74 75 72 6e 73 20 4c 61 79 65 72 54 79 70 |returns LayerTyp| 00003cf0 65 50 61 79 6c 6f 61 64 0a 3c 2f 70 3e 0a 0a 09 |ePayload.</p>...| 00003d00 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00003d10 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 |......<h3 id="Pa| 00003d20 79 6c 6f 61 64 2e 50 61 79 6c 6f 61 64 22 3e 66 |yload.Payload">f| 00003d30 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 3c |unc (*Payload) <| 00003d40 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg| 00003d50 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon| 00003d60 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 |nell/gopacket/ba| 00003d70 73 65 2e 67 6f 3f 73 3d 31 33 38 30 3a 31 34 31 |se.go?s=1380:141| 00003d80 34 23 4c 32 39 22 3e 50 61 79 6c 6f 61 64 3c 2f |4#L29">Payload</| 00003d90 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 |a></h3>.....<pre| 00003da0 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 |>func (p *Payloa| 00003db0 64 29 20 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 |d) Payload() []b| 00003dc0 79 74 65 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 |yte</pre>.......| 00003dd0 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00003de0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 |......<h3 id="Pa| 00003df0 79 6c 6f 61 64 2e 53 74 72 69 6e 67 22 3e 66 75 |yload.String">fu| 00003e00 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 3c 61 |nc (*Payload) <a| 00003e10 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00003e20 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00003e30 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 |ell/gopacket/bas| 00003e40 65 2e 67 6f 3f 73 3d 31 34 33 39 3a 31 34 37 32 |e.go?s=1439:1472| 00003e50 23 4c 33 30 22 3e 53 74 72 69 6e 67 3c 2f 61 3e |#L30">String</a>| 00003e60 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 00003e70 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 |unc (p *Payload)| 00003e80 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e 67 | String() string| 00003e90 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 |</pre>..........| 00003ea0 0a 09 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 |................| 00003eb0 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="| 00003ec0 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 22 3e |TransportLayer">| 00003ed0 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 |type <a href="/s| 00003ee0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co| 00003ef0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac| 00003f00 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 32 30 |ket/base.go?s=20| 00003f10 31 30 3a 32 30 37 32 23 4c 35 30 22 3e 54 72 61 |10:2072#L50">Tra| 00003f20 6e 73 70 6f 72 74 4c 61 79 65 72 3c 2f 61 3e 3c |nsportLayer</a><| 00003f30 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 00003f40 65 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 |e TransportLayer| 00003f50 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 | interface {. | 00003f60 20 4c 61 79 65 72 0a 20 20 20 20 54 72 61 6e 73 | Layer. Trans| 00003f70 70 6f 72 74 46 6c 6f 77 28 29 20 46 6c 6f 77 0a |portFlow() Flow.| 00003f80 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 54 |}</pre>....<p>.T| 00003f90 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 69 73 |ransportLayer is| 00003fa0 20 74 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 | the packet laye| 00003fb0 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 |r corresponding | 00003fc0 74 6f 20 74 68 65 20 54 43 50 2f 49 50 20 6c 61 |to the TCP/IP la| 00003fd0 79 65 72 20 33 20 28 4f 53 49 0a 6c 61 79 65 72 |yer 3 (OSI.layer| 00003fe0 20 34 29 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a | 4).</p>........| 00003ff0 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................| 00004000 09 09 0a 09 |....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..16384..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..16344..] Version=6 TrafficClass=0 FlowLabel=100497 Length=16344 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 3f d8 06 40 00 00 00 00 00 00 00 00 |`...?..@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..16312..] SrcPort=8080(http-alt) DstPort=58799 Seq=174454367 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=16352 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 65 f6 5f 08 97 18 4a 80 10 23 02 |.....e._...J..#.| 00000010 3f e0 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |?...............| --- Layer 4 --- Payload 16312 byte(s) 00000000 70 72 65 3e 66 75 6e 63 20 4e 65 77 4c 61 79 65 |pre>func NewLaye| 00000010 72 43 6c 61 73 73 4d 61 70 28 74 79 70 65 73 20 |rClassMap(types | 00000020 5b 5d 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 |[]LayerType) Lay| 00000030 65 72 43 6c 61 73 73 4d 61 70 3c 2f 70 72 65 3e |erClassMap</pre>| 00000040 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 4c 61 79 65 |.....<p>.NewLaye| 00000050 72 43 6c 61 73 73 4d 61 70 20 63 72 65 61 74 65 |rClassMap create| 00000060 73 20 61 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 |s a LayerClassMa| 00000070 70 20 61 6e 64 20 73 65 74 73 20 6d 61 70 5b 74 |p and sets map[t| 00000080 5d 20 74 6f 20 74 72 75 65 20 66 6f 72 20 65 61 |] to true for ea| 00000090 63 68 0a 74 79 70 65 20 69 6e 20 74 79 70 65 73 |ch.type in types| 000000a0 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........| 000000b0 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<| 000000c0 68 33 20 69 64 3d 22 4c 61 79 65 72 43 6c 61 73 |h3 id="LayerClas| 000000d0 73 4d 61 70 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 |sMap.Contains">f| 000000e0 75 6e 63 20 28 4c 61 79 65 72 43 6c 61 73 73 4d |unc (LayerClassM| 000000f0 61 70 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ap) <a href="/sr| 00000100 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00000110 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000120 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f |et/layerclass.go| 00000130 3f 73 3d 31 32 39 30 3a 31 33 33 39 23 4c 33 35 |?s=1290:1339#L35| 00000140 22 3e 43 6f 6e 74 61 69 6e 73 3c 2f 61 3e 3c 2f |">Contains</a></| 00000150 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun| 00000160 63 20 28 6d 20 4c 61 79 65 72 43 6c 61 73 73 4d |c (m LayerClassM| 00000170 61 70 29 20 43 6f 6e 74 61 69 6e 73 28 74 20 4c |ap) Contains(t L| 00000180 61 79 65 72 54 79 70 65 29 20 62 6f 6f 6c 3c 2f |ayerType) bool</| 00000190 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 43 6f 6e |pre>.....<p>.Con| 000001a0 74 61 69 6e 73 20 72 65 74 75 72 6e 73 20 74 72 |tains returns tr| 000001b0 75 65 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 |ue if the given | 000001c0 6c 61 79 65 72 20 74 79 70 65 20 73 68 6f 75 6c |layer type shoul| 000001d0 64 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64 20 |d be considered | 000001e0 70 61 72 74 0a 6f 66 20 74 68 69 73 20 6c 61 79 |part.of this lay| 000001f0 65 72 20 63 6c 61 73 73 2e 0a 3c 2f 70 3e 0a 0a |er class..</p>..| 00000200 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 00000210 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 | 00000220 69 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 53 6c |id="LayerClassSl| 00000230 69 63 65 22 3e 74 79 70 65 20 3c 61 20 68 72 65 |ice">type <a hre| 00000240 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith| 00000250 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/| 00000260 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c |gopacket/layercl| 00000270 61 73 73 2e 67 6f 3f 73 3d 33 39 35 3a 34 32 32 |ass.go?s=395:422| 00000280 23 4c 34 22 3e 4c 61 79 65 72 43 6c 61 73 73 53 |#L4">LayerClassS| 00000290 6c 69 63 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |lice</a></h2>...| 000002a0 09 3c 70 72 65 3e 74 79 70 65 20 4c 61 79 65 72 |.<pre>type Layer| 000002b0 43 6c 61 73 73 53 6c 69 63 65 20 5b 5d 62 6f 6f |ClassSlice []boo| 000002c0 6c 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c |l</pre>....<p>.L| 000002d0 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 20 69 |ayerClassSlice i| 000002e0 6d 70 6c 65 6d 65 6e 74 73 20 61 20 4c 61 79 65 |mplements a Laye| 000002f0 72 43 6c 61 73 73 20 77 69 74 68 20 61 20 73 6c |rClass with a sl| 00000300 69 63 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |ice..</p>.......| 00000310 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 |................| 00000320 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="| 00000330 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |NewLayerClassSli| 00000340 63 65 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 |ce">func <a href| 00000350 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00000360 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00000370 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 |opacket/layercla| 00000380 73 73 2e 67 6f 3f 73 3d 38 36 34 3a 39 32 32 23 |ss.go?s=864:922#| 00000390 4c 31 36 22 3e 4e 65 77 4c 61 79 65 72 43 6c 61 |L16">NewLayerCla| 000003a0 73 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f 68 33 3e |ssSlice</a></h3>| 000003b0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 4e |.....<pre>func N| 000003c0 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 |ewLayerClassSlic| 000003d0 65 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 72 54 |e(types []LayerT| 000003e0 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 73 53 |ype) LayerClassS| 000003f0 6c 69 63 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |lice</pre>.....<| 00000400 70 3e 0a 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 |p>.NewLayerClass| 00000410 53 6c 69 63 65 20 63 72 65 61 74 65 73 20 61 20 |Slice creates a | 00000420 6e 65 77 20 4c 61 79 65 72 43 6c 61 73 73 53 6c |new LayerClassSl| 00000430 69 63 65 20 62 79 20 63 72 65 61 74 69 6e 67 20 |ice by creating | 00000440 61 20 73 6c 69 63 65 20 6f 66 0a 73 69 7a 65 20 |a slice of.size | 00000450 6d 61 78 28 74 79 70 65 73 29 20 61 6e 64 20 73 |max(types) and s| 00000460 65 74 74 69 6e 67 20 73 6c 69 63 65 5b 74 5d 20 |etting slice[t] | 00000470 74 6f 20 74 72 75 65 20 66 6f 72 20 65 61 63 68 |to true for each| 00000480 20 74 79 70 65 20 74 2e 20 20 4e 6f 74 65 2c 20 | type t. Note, | 00000490 69 66 0a 79 6f 75 20 69 6d 70 6c 65 6d 65 6e 74 |if.you implement| 000004a0 20 79 6f 75 72 20 6f 77 6e 20 4c 61 79 65 72 54 | your own LayerT| 000004b0 79 70 65 20 61 6e 64 20 67 69 76 65 20 69 74 20 |ype and give it | 000004c0 61 20 68 69 67 68 20 76 61 6c 75 65 2c 20 74 68 |a high value, th| 000004d0 69 73 20 57 49 4c 4c 20 63 72 65 61 74 65 0a 61 |is WILL create.a| 000004e0 20 76 65 72 79 20 6c 61 72 67 65 20 73 6c 69 63 | very large slic| 000004f0 65 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 |e..</p>.........| 00000500 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................| 00000510 3c 68 33 20 69 64 3d 22 4c 61 79 65 72 43 6c 61 |<h3 id="LayerCla| 00000520 73 73 53 6c 69 63 65 2e 43 6f 6e 74 61 69 6e 73 |ssSlice.Contains| 00000530 22 3e 66 75 6e 63 20 28 4c 61 79 65 72 43 6c 61 |">func (LayerCla| 00000540 73 73 53 6c 69 63 65 29 20 3c 61 20 68 72 65 66 |ssSlice) <a href| 00000550 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00000560 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00000570 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 |opacket/layercla| 00000580 73 73 2e 67 6f 3f 73 3d 35 32 33 3a 35 37 34 23 |ss.go?s=523:574#| 00000590 4c 38 22 3e 43 6f 6e 74 61 69 6e 73 3c 2f 61 3e |L8">Contains</a>| 000005a0 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 000005b0 75 6e 63 20 28 73 20 4c 61 79 65 72 43 6c 61 73 |unc (s LayerClas| 000005c0 73 53 6c 69 63 65 29 20 43 6f 6e 74 61 69 6e 73 |sSlice) Contains| 000005d0 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 62 6f |(t LayerType) bo| 000005e0 6f 6c 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ol</pre>.....<p>| 000005f0 0a 43 6f 6e 74 61 69 6e 73 20 72 65 74 75 72 6e |.Contains return| 00000600 73 20 74 72 75 65 20 69 66 20 74 68 65 20 67 69 |s true if the gi| 00000610 76 65 6e 20 6c 61 79 65 72 20 74 79 70 65 20 73 |ven layer type s| 00000620 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 64 65 |hould be conside| 00000630 72 65 64 20 70 61 72 74 0a 6f 66 20 74 68 69 73 |red part.of this| 00000640 20 6c 61 79 65 72 20 63 6c 61 73 73 2e 0a 3c 2f | layer class..</| 00000650 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |p>..............| 00000660 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00000670 3c 68 32 20 69 64 3d 22 4c 61 79 65 72 54 79 70 |<h2 id="LayerTyp| 00000680 65 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d |e">type <a href=| 00000690 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 000006a0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 000006b0 70 61 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 |packet/layertype| 000006c0 2e 67 6f 3f 73 3d 34 38 38 3a 35 30 38 23 4c 36 |.go?s=488:508#L6| 000006d0 22 3e 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c |">LayerType</a><| 000006e0 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ| 000006f0 65 20 4c 61 79 65 72 54 79 70 65 20 69 6e 74 36 |e LayerType int6| 00000700 34 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c |4</pre>....<p>.L| 00000710 61 79 65 72 54 79 70 65 20 69 73 20 61 20 75 6e |ayerType is a un| 00000720 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 20 |ique identifier | 00000730 66 6f 72 20 65 61 63 68 20 74 79 70 65 20 6f 66 |for each type of| 00000740 20 6c 61 79 65 72 2e 20 20 54 68 69 73 20 65 6e | layer. This en| 00000750 75 6d 65 72 61 74 69 6f 6e 0a 64 6f 65 73 20 6e |umeration.does n| 00000760 6f 74 20 6d 61 74 63 68 20 77 69 74 68 20 61 6e |ot match with an| 00000770 79 20 65 78 74 65 72 6e 61 6c 6c 79 20 61 76 61 |y externally ava| 00000780 69 6c 61 62 6c 65 20 6e 75 6d 62 65 72 69 6e 67 |ilable numbering| 00000790 20 73 63 68 65 6d 65 2e 2e 2e 20 69 74 26 23 33 | scheme... it| 000007a0 39 3b 73 20 73 6f 6c 65 6c 79 0a 75 73 61 62 6c |9;s solely.usabl| 000007b0 65 2f 75 73 65 66 75 6c 20 77 69 74 68 69 6e 20 |e/useful within | 000007c0 74 68 69 73 20 6c 69 62 72 61 72 79 20 61 73 20 |this library as | 000007d0 61 20 6d 65 61 6e 73 20 66 6f 72 20 72 65 71 75 |a means for requ| 000007e0 65 73 74 69 6e 67 20 6c 61 79 65 72 20 74 79 70 |esting layer typ| 000007f0 65 73 0a 28 73 65 65 20 50 61 63 6b 65 74 2e 4c |es.(see Packet.L| 00000800 61 79 65 72 29 20 61 6e 64 20 64 65 74 65 72 6d |ayer) and determ| 00000810 69 6e 69 6e 67 20 77 68 69 63 68 20 74 79 70 65 |ining which type| 00000820 73 20 6f 66 20 6c 61 79 65 72 73 20 68 61 76 65 |s of layers have| 00000830 20 62 65 65 6e 20 64 65 63 6f 64 65 64 2e 0a 3c | been decoded..<| 00000840 2f 70 3e 0a 3c 70 3e 0a 4e 65 77 20 4c 61 79 65 |/p>.<p>.New Laye| 00000850 72 54 79 70 65 73 20 6d 61 79 20 62 65 20 63 72 |rTypes may be cr| 00000860 65 61 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 |eated by calling| 00000870 20 67 6f 70 61 63 6b 65 74 2e 52 65 67 69 73 74 | gopacket.Regist| 00000880 65 72 4c 61 79 65 72 54 79 70 65 2e 0a 3c 2f 70 |erLayerType..</p| 00000890 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |>...............| 000008a0 09 3c 70 72 65 3e 76 61 72 20 4c 61 79 65 72 54 |.<pre>var LayerT| 000008b0 79 70 65 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |ypeDecodeFailure| 000008c0 20 4c 61 79 65 72 54 79 70 65 20 3d 20 52 65 67 | LayerType = Reg| 000008d0 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 28 30 |isterLayerType(0| 000008e0 2c 20 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 |, LayerTypeMetad| 000008f0 61 74 61 7b 26 23 33 34 3b 44 65 63 6f 64 65 20 |ata{"Decode | 00000900 46 61 69 6c 75 72 65 26 23 33 34 3b 2c 20 44 65 |Failure", De| 00000910 63 6f 64 65 55 6e 6b 6e 6f 77 6e 7d 29 3c 2f 70 |codeUnknown})</p| 00000920 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 |re>.....<p>.Laye| 00000930 72 54 79 70 65 44 65 63 6f 64 65 46 61 69 6c 75 |rTypeDecodeFailu| 00000940 72 65 20 69 73 20 74 68 65 20 6c 61 79 65 72 20 |re is the layer | 00000950 74 79 70 65 20 66 6f 72 20 74 68 65 20 64 65 66 |type for the def| 00000960 61 75 6c 74 20 65 72 72 6f 72 20 6c 61 79 65 72 |ault error layer| 00000970 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 09 09 09 09 |..</p>..........| 00000980 3c 70 72 65 3e 76 61 72 20 4c 61 79 65 72 54 79 |<pre>var LayerTy| 00000990 70 65 50 61 79 6c 6f 61 64 20 4c 61 79 65 72 54 |pePayload LayerT| 000009a0 79 70 65 20 3d 20 52 65 67 69 73 74 65 72 4c 61 |ype = RegisterLa| 000009b0 79 65 72 54 79 70 65 28 31 2c 20 4c 61 79 65 72 |yerType(1, Layer| 000009c0 54 79 70 65 4d 65 74 61 64 61 74 61 7b 26 23 33 |TypeMetadata{| 000009d0 34 3b 50 61 79 6c 6f 61 64 26 23 33 34 3b 2c 20 |4;Payload", | 000009e0 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 7d 29 3c |DecodePayload})<| 000009f0 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 |/pre>.....<p>.La| 00000a00 79 65 72 54 79 70 65 50 61 79 6c 6f 61 64 20 69 |yerTypePayload i| 00000a10 73 20 74 68 65 20 6c 61 79 65 72 20 74 79 70 65 |s the layer type| 00000a20 20 66 6f 72 20 61 20 70 61 79 6c 6f 61 64 20 74 | for a payload t| 00000a30 68 61 74 20 77 65 20 64 6f 6e 26 23 33 39 3b 74 |hat we don't| 00000a40 20 74 72 79 20 74 6f 20 64 65 63 6f 64 65 0a 62 | try to decode.b| 00000a50 75 74 20 74 72 65 61 74 20 61 73 20 61 20 73 75 |ut treat as a su| 00000a60 63 63 65 73 73 2c 20 49 45 3a 20 61 6e 20 61 70 |ccess, IE: an ap| 00000a70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 |plication-level | 00000a80 70 61 79 6c 6f 61 64 2e 0a 3c 2f 70 3e 0a 0a 09 |payload..</p>...| 00000a90 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................| 00000aa0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 52 65 |......<h3 id="Re| 00000ab0 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 22 |gisterLayerType"| 00000ac0 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f |>func <a href="/| 00000ad0 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 00000ae0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 00000af0 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 |cket/layertype.g| 00000b00 6f 3f 73 3d 31 34 35 37 3a 31 35 32 32 23 4c 33 |o?s=1457:1522#L3| 00000b10 34 22 3e 52 65 67 69 73 74 65 72 4c 61 79 65 72 |4">RegisterLayer| 00000b20 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |Type</a></h3>...| 00000b30 09 09 3c 70 72 65 3e 66 75 6e 63 20 52 65 67 69 |..<pre>func Regi| 00000b40 73 74 65 72 4c 61 79 65 72 54 79 70 65 28 6e 75 |sterLayerType(nu| 00000b50 6d 20 69 6e 74 2c 20 6d 65 74 61 20 4c 61 79 65 |m int, meta Laye| 00000b60 72 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 4c |rTypeMetadata) L| 00000b70 61 79 65 72 54 79 70 65 3c 2f 70 72 65 3e 0a 09 |ayerType</pre>..| 00000b80 09 09 09 3c 70 3e 0a 52 65 67 69 73 74 65 72 4c |...<p>.RegisterL| 00000b90 61 79 65 72 54 79 70 65 20 63 72 65 61 74 65 73 |ayerType creates| 00000ba0 20 61 20 6e 65 77 20 6c 61 79 65 72 20 74 79 70 | a new layer typ| 00000bb0 65 20 61 6e 64 20 72 65 67 69 73 74 65 72 73 20 |e and registers | 00000bc0 69 74 20 67 6c 6f 62 61 6c 6c 79 2e 0a 54 68 65 |it globally..The| 00000bd0 20 6e 75 6d 62 65 72 20 70 61 73 73 65 64 20 69 | number passed i| 00000be0 6e 20 6d 75 73 74 20 62 65 20 75 6e 69 71 75 65 |n must be unique| 00000bf0 2c 20 6f 72 20 61 20 72 75 6e 74 69 6d 65 20 70 |, or a runtime p| 00000c00 61 6e 69 63 20 77 69 6c 6c 20 6f 63 63 75 72 2e |anic will occur.| 00000c10 20 20 4e 75 6d 62 65 72 73 0a 30 2d 39 39 39 20 | Numbers.0-999 | 00000c20 61 72 65 20 72 65 73 65 72 76 65 64 20 66 6f 72 |are reserved for| 00000c30 20 74 68 65 20 67 6f 70 61 63 6b 65 74 20 6c 69 | the gopacket li| 00000c40 62 72 61 72 79 2e 20 20 4e 75 6d 62 65 72 73 20 |brary. Numbers | 00000c50 31 30 30 30 2d 31 39 39 39 20 73 68 6f 75 6c 64 |1000-1999 should| 00000c60 20 62 65 0a 75 73 65 64 20 66 6f 72 20 63 6f 6d | be.used for com| 00000c70 6d 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d |mon application-| 00000c80 73 70 65 63 69 66 69 63 20 74 79 70 65 73 2c 20 |specific types, | 00000c90 61 6e 64 20 61 72 65 20 76 65 72 79 20 66 61 73 |and are very fas| 00000ca0 74 2e 20 20 41 6e 79 20 6f 74 68 65 72 0a 6e 75 |t. Any other.nu| 00000cb0 6d 62 65 72 20 28 6e 65 67 61 74 69 76 65 20 6f |mber (negative o| 00000cc0 72 20 26 67 74 3b 3d 20 32 30 30 30 29 20 6d 61 |r >= 2000) ma| 00000cd0 79 20 62 65 20 75 73 65 64 20 66 6f 72 20 75 6e |y be used for un| 00000ce0 63 6f 6d 6d 6f 6e 20 61 70 70 6c 69 63 61 74 69 |common applicati| 00000cf0 6f 6e 2d 73 70 65 63 69 66 69 63 0a 74 79 70 65 |on-specific.type| 00000d00 73 2c 20 61 6e 64 20 61 72 65 20 73 6f 6d 65 77 |s, and are somew| 00000d10 68 61 74 20 73 6c 6f 77 65 72 20 28 74 68 65 79 |hat slower (they| 00000d20 20 72 65 71 75 69 72 65 20 61 20 6d 61 70 20 6c | require a map l| 00000d30 6f 6f 6b 75 70 20 6f 76 65 72 20 61 6e 20 61 72 |ookup over an ar| 00000d40 72 61 79 0a 69 6e 64 65 78 29 2e 0a 3c 2f 70 3e |ray.index)..</p>| 00000d50 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a |................| 00000d60 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=| 00000d70 22 4c 61 79 65 72 54 79 70 65 2e 44 65 63 6f 64 |"LayerType.Decod| 00000d80 65 22 3e 66 75 6e 63 20 28 4c 61 79 65 72 54 79 |e">func (LayerTy| 00000d90 70 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |pe) <a href="/sr| 00000da0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00000db0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00000dc0 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 3f |et/layertype.go?| 00000dd0 73 3d 32 30 33 39 3a 32 31 30 30 23 4c 35 37 22 |s=2039:2100#L57"| 00000de0 3e 44 65 63 6f 64 65 3c 2f 61 3e 3c 2f 68 33 3e |>Decode</a></h3>| 00000df0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (| 00000e00 74 20 4c 61 79 65 72 54 79 70 65 29 20 44 65 63 |t LayerType) Dec| 00000e10 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c |ode(data []byte,| 00000e20 20 63 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 | c PacketBuilder| 00000e30 29 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 |) error</pre>...| 00000e40 09 09 3c 70 3e 0a 44 65 63 6f 64 65 20 64 65 63 |..<p>.Decode dec| 00000e50 6f 64 65 73 20 74 68 65 20 67 69 76 65 6e 20 64 |odes the given d| 00000e60 61 74 61 20 75 73 69 6e 67 20 74 68 65 20 64 65 |ata using the de| 00000e70 63 6f 64 65 72 20 72 65 67 69 73 74 65 72 65 64 |coder registered| 00000e80 20 77 69 74 68 20 74 68 65 20 6c 61 79 65 72 0a | with the layer.| 00000e90 74 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 |type..</p>......| 00000ea0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................| 00000eb0 09 09 09 3c 68 33 20 69 64 3d 22 4c 61 79 65 72 |...<h3 id="Layer| 00000ec0 54 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |Type.String">fun| 00000ed0 63 20 28 4c 61 79 65 72 54 79 70 65 29 20 3c 61 |c (LayerType) <a| 00000ee0 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/| 00000ef0 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn| 00000f00 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 |ell/gopacket/lay| 00000f10 65 72 74 79 70 65 2e 67 6f 3f 73 3d 32 34 30 35 |ertype.go?s=2405| 00000f20 3a 32 34 34 33 23 4c 37 31 22 3e 53 74 72 69 6e |:2443#L71">Strin| 00000f30 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |g</a></h3>.....<| 00000f40 70 72 65 3e 66 75 6e 63 20 28 74 20 4c 61 79 65 |pre>func (t Laye| 00000f50 72 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 20 |rType) String() | 00000f60 28 73 20 73 74 72 69 6e 67 29 3c 2f 70 72 65 3e |(s string)</pre>| 00000f70 0a 09 09 09 09 3c 70 3e 0a 53 74 72 69 6e 67 20 |.....<p>.String | 00000f80 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 |returns the stri| 00000f90 6e 67 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 |ng associated wi| 00000fa0 74 68 20 74 68 69 73 20 6c 61 79 65 72 20 74 79 |th this layer ty| 00000fb0 70 65 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |pe..</p>........| 00000fc0 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................| 00000fd0 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 61 |......<h2 id="La| 00000fe0 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 22 |yerTypeMetadata"| 00000ff0 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/| 00001000 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 00001010 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 00001020 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 |cket/layertype.g| 00001030 6f 3f 73 3d 35 38 31 3a 37 39 37 23 4c 39 22 3e |o?s=581:797#L9">| 00001040 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 |LayerTypeMetadat| 00001050 61 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 |a</a></h2>....<p| 00001060 72 65 3e 74 79 70 65 20 4c 61 79 65 72 54 79 70 |re>type LayerTyp| 00001070 65 4d 65 74 61 64 61 74 61 20 73 74 72 75 63 74 |eMetadata struct| 00001080 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 | {. <span cla| 00001090 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 000010a0 4e 61 6d 65 20 69 73 20 74 68 65 20 73 74 72 69 |Name is the stri| 000010b0 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 65 |ng returned by e| 000010c0 61 63 68 20 6c 61 79 65 72 20 74 79 70 65 26 23 |ach layer type&#| 000010d0 33 39 3b 73 20 53 74 72 69 6e 67 20 6d 65 74 68 |39;s String meth| 000010e0 6f 64 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e |od.</span>. N| 000010f0 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 3c |ame string. <| 00001100 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm| 00001110 65 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 65 72 20 |ent">// Decoder | 00001120 69 73 20 74 68 65 20 64 65 63 6f 64 65 72 20 74 |is the decoder t| 00001130 6f 20 75 73 65 20 77 68 65 6e 20 74 68 65 20 6c |o use when the l| 00001140 61 79 65 72 20 74 79 70 65 20 69 73 20 70 61 73 |ayer type is pas| 00001150 73 65 64 20 69 6e 20 61 73 20 61 3c 2f 73 70 61 |sed in as a</spa| 00001160 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla| 00001170 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 00001180 44 65 63 6f 64 65 72 2e 3c 2f 73 70 61 6e 3e 0a |Decoder.</span>.| 00001190 20 20 20 20 44 65 63 6f 64 65 72 20 44 65 63 6f | Decoder Deco| 000011a0 64 65 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |der.}</pre>....<| 000011b0 70 3e 0a 4c 61 79 65 72 54 79 70 65 4d 65 74 61 |p>.LayerTypeMeta| 000011c0 64 61 74 61 20 63 6f 6e 74 61 69 6e 73 20 6d 65 |data contains me| 000011d0 74 61 64 61 74 61 20 61 73 73 6f 63 69 61 74 65 |tadata associate| 000011e0 64 20 77 69 74 68 20 65 61 63 68 20 4c 61 79 65 |d with each Laye| 000011f0 72 54 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |rType..</p>.....| 00001200 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 00001210 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................| 00001220 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 69 6e 6b |....<h2 id="Link| 00001230 4c 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 |Layer">type <a h| 00001240 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00001250 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00001260 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e |l/gopacket/base.| 00001270 67 6f 3f 73 3d 31 37 32 30 3a 31 37 37 32 23 4c |go?s=1720:1772#L| 00001280 33 36 22 3e 4c 69 6e 6b 4c 61 79 65 72 3c 2f 61 |36">LinkLayer</a| 00001290 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t| 000012a0 79 70 65 20 4c 69 6e 6b 4c 61 79 65 72 20 69 6e |ype LinkLayer in| 000012b0 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 4c 61 |terface {. La| 000012c0 79 65 72 0a 20 20 20 20 4c 69 6e 6b 46 6c 6f 77 |yer. LinkFlow| 000012d0 28 29 20 46 6c 6f 77 0a 7d 3c 2f 70 72 65 3e 0a |() Flow.}</pre>.| 000012e0 09 09 09 3c 70 3e 0a 4c 69 6e 6b 4c 61 79 65 72 |...<p>.LinkLayer| 000012f0 20 69 73 20 74 68 65 20 70 61 63 6b 65 74 20 6c | is the packet l| 00001300 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 |ayer correspondi| 00001310 6e 67 20 74 6f 20 54 43 50 2f 49 50 20 6c 61 79 |ng to TCP/IP lay| 00001320 65 72 20 31 20 28 4f 53 49 20 6c 61 79 65 72 20 |er 1 (OSI layer | 00001330 32 29 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 |2).</p>.........| 00001340 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00001350 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00001360 3c 68 32 20 69 64 3d 22 4e 65 74 77 6f 72 6b 4c |<h2 id="NetworkL| 00001370 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 |ayer">type <a hr| 00001380 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git| 00001390 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 000013a0 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g| 000013b0 6f 3f 73 3d 31 38 35 39 3a 31 39 31 37 23 4c 34 |o?s=1859:1917#L4| 000013c0 33 22 3e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 3c |3">NetworkLayer<| 000013d0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 000013e0 3e 74 79 70 65 20 4e 65 74 77 6f 72 6b 4c 61 79 |>type NetworkLay| 000013f0 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 |er interface {. | 00001400 20 20 20 4c 61 79 65 72 0a 20 20 20 20 4e 65 74 | Layer. Net| 00001410 77 6f 72 6b 46 6c 6f 77 28 29 20 46 6c 6f 77 0a |workFlow() Flow.| 00001420 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4e |}</pre>....<p>.N| 00001430 65 74 77 6f 72 6b 4c 61 79 65 72 20 69 73 20 74 |etworkLayer is t| 00001440 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 |he packet layer | 00001450 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f |corresponding to| 00001460 20 54 43 50 2f 49 50 20 6c 61 79 65 72 20 32 20 | TCP/IP layer 2 | 00001470 28 4f 53 49 0a 6c 61 79 65 72 20 33 29 0a 3c 2f |(OSI.layer 3).</| 00001480 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |p>..............| 00001490 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a |................| 000014a0 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i| 000014b0 64 3d 22 50 61 63 6b 65 74 22 3e 74 79 70 65 20 |d="Packet">type | 000014c0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 000014d0 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 000014e0 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 |nnell/gopacket/p| 000014f0 61 63 6b 65 74 2e 67 6f 3f 73 3d 38 33 36 3a 32 |acket.go?s=836:2| 00001500 31 37 32 23 4c 31 38 22 3e 50 61 63 6b 65 74 3c |172#L18">Packet<| 00001510 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 00001520 3e 74 79 70 65 20 50 61 63 6b 65 74 20 69 6e 74 |>type Packet int| 00001530 65 72 66 61 63 65 20 7b 0a 20 20 20 20 66 6d 74 |erface {. fmt| 00001540 2e 53 74 72 69 6e 67 65 72 0a 20 20 20 20 3c 73 |.Stringer. <s| 00001550 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001560 6e 74 22 3e 2f 2f 20 44 61 74 61 20 72 65 74 75 |nt">// Data retu| 00001570 72 6e 73 20 61 6c 6c 20 64 61 74 61 20 61 73 73 |rns all data ass| 00001580 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 |ociated with thi| 00001590 73 20 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a |s packet</span>.| 000015a0 20 20 20 20 44 61 74 61 28 29 20 5b 5d 62 79 74 | Data() []byt| 000015b0 65 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |e. <span clas| 000015c0 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c |s="comment">// L| 000015d0 61 79 65 72 73 20 72 65 74 75 72 6e 73 20 61 6c |ayers returns al| 000015e0 6c 20 6c 61 79 65 72 73 20 69 6e 20 74 68 69 73 |l layers in this| 000015f0 20 70 61 63 6b 65 74 2c 20 63 6f 6d 70 75 74 69 | packet, computi| 00001600 6e 67 20 74 68 65 6d 20 61 73 20 6e 65 63 65 73 |ng them as neces| 00001610 73 61 72 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |sary</span>. | 00001620 4c 61 79 65 72 73 28 29 20 5b 5d 4c 61 79 65 72 |Layers() []Layer| 00001630 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class| 00001640 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 |="comment">// La| 00001650 79 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 |yer returns the | 00001660 66 69 72 73 74 20 6c 61 79 65 72 20 69 6e 20 74 |first layer in t| 00001670 68 69 73 20 70 61 63 6b 65 74 20 6f 66 20 74 68 |his packet of th| 00001680 65 20 67 69 76 65 6e 20 74 79 70 65 2c 20 6f 72 |e given type, or| 00001690 20 6e 69 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 | nil</span>. | 000016a0 4c 61 79 65 72 28 4c 61 79 65 72 54 79 70 65 29 |Layer(LayerType)| 000016b0 20 4c 61 79 65 72 0a 20 20 20 20 3c 73 70 61 6e | Layer. <span| 000016c0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 000016d0 3e 2f 2f 20 4c 61 79 65 72 43 6c 61 73 73 20 72 |>// LayerClass r| 000016e0 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 |eturns the first| 000016f0 20 6c 61 79 65 72 20 69 6e 20 74 68 69 73 20 70 | layer in this p| 00001700 61 63 6b 65 74 20 6f 66 20 74 68 65 20 67 69 76 |acket of the giv| 00001710 65 6e 20 63 6c 61 73 73 2c 3c 2f 73 70 61 6e 3e |en class,</span>| 00001720 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class| 00001730 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f 72 |="comment">// or| 00001740 20 6e 69 6c 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 | nil.</span>. | 00001750 20 4c 61 79 65 72 43 6c 61 73 73 28 4c 61 79 65 | LayerClass(Laye| 00001760 72 43 6c 61 73 73 29 20 4c 61 79 65 72 0a 20 20 |rClass) Layer. | 00001770 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00001780 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 43 61 70 74 75 |omment">// Captu| 00001790 72 65 49 6e 66 6f 20 72 65 74 75 72 6e 73 20 74 |reInfo returns t| 000017a0 68 65 20 63 61 70 75 74 75 72 65 20 69 6e 66 6f |he caputure info| 000017b0 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 |rmation for this| 000017c0 20 70 61 63 6b 65 74 2e 20 20 54 68 69 73 20 72 | packet. This r| 000017d0 65 74 75 72 6e 73 3c 2f 73 70 61 6e 3e 0a 20 20 |eturns</span>. | 000017e0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 000017f0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 61 20 70 6f 69 |omment">// a poi| 00001800 6e 74 65 72 20 74 6f 20 74 68 65 20 70 61 63 6b |nter to the pack| 00001810 65 74 26 23 33 39 3b 73 20 73 74 72 75 63 74 2c |et's struct,| 00001820 20 73 6f 20 69 74 20 63 61 6e 20 62 65 20 75 73 | so it can be us| 00001830 65 64 20 62 6f 74 68 20 66 6f 72 20 72 65 61 64 |ed both for read| 00001840 69 6e 67 20 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 |ing and</span>. | 00001850 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00001860 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 77 72 69 74 |comment">// writ| 00001870 69 6e 67 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 |ing the informat| 00001880 69 6f 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ion.</span>. | 00001890 43 61 70 74 75 72 65 49 6e 66 6f 28 29 20 2a 43 |CaptureInfo() *C| 000018a0 61 70 74 75 72 65 49 6e 66 6f 0a 0a 20 20 20 20 |aptureInfo.. | 000018b0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 000018c0 6d 65 6e 74 22 3e 2f 2f 20 4c 69 6e 6b 4c 61 79 |ment">// LinkLay| 000018d0 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 |er returns the f| 000018e0 69 72 73 74 20 6c 69 6e 6b 20 6c 61 79 65 72 20 |irst link layer | 000018f0 69 6e 20 74 68 65 20 70 61 63 6b 65 74 3c 2f 73 |in the packet</s| 00001900 70 61 6e 3e 0a 20 20 20 20 4c 69 6e 6b 4c 61 79 |pan>. LinkLay| 00001910 65 72 28 29 20 4c 69 6e 6b 4c 61 79 65 72 0a 20 |er() LinkLayer. | 00001920 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00001930 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 65 74 77 |comment">// Netw| 00001940 6f 72 6b 4c 61 79 65 72 20 72 65 74 75 72 6e 73 |orkLayer returns| 00001950 20 74 68 65 20 66 69 72 73 74 20 6e 65 74 77 6f | the first netwo| 00001960 72 6b 20 6c 61 79 65 72 20 69 6e 20 74 68 65 20 |rk layer in the | 00001970 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 |packet</span>. | 00001980 20 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 28 29 | NetworkLayer()| 00001990 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 0a 20 20 | NetworkLayer. | 000019a0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 000019b0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 54 72 61 6e 73 |omment">// Trans| 000019c0 70 6f 72 74 4c 61 79 65 72 20 72 65 74 75 72 6e |portLayer return| 000019d0 73 20 74 68 65 20 66 69 72 73 74 20 74 72 61 6e |s the first tran| 000019e0 73 70 6f 72 74 20 6c 61 79 65 72 20 69 6e 20 74 |sport layer in t| 000019f0 68 65 20 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e |he packet</span>| 00001a00 0a 20 20 20 20 54 72 61 6e 73 70 6f 72 74 4c 61 |. TransportLa| 00001a10 79 65 72 28 29 20 54 72 61 6e 73 70 6f 72 74 4c |yer() TransportL| 00001a20 61 79 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 63 |ayer. <span c| 00001a30 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 00001a40 2f 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 |/ ApplicationLay| 00001a50 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 |er returns the f| 00001a60 69 72 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e |irst application| 00001a70 20 6c 61 79 65 72 20 69 6e 20 74 68 65 20 70 61 | layer in the pa| 00001a80 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |cket</span>. | 00001a90 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer| 00001aa0 28 29 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 |() ApplicationLa| 00001ab0 79 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |yer. <span cl| 00001ac0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 00001ad0 20 45 72 72 6f 72 4c 61 79 65 72 20 69 73 20 70 | ErrorLayer is p| 00001ae0 61 72 74 69 63 75 6c 61 72 6c 79 20 75 73 65 66 |articularly usef| 00001af0 75 6c 2c 20 73 69 6e 63 65 20 69 74 20 72 65 74 |ul, since it ret| 00001b00 75 72 6e 73 20 6e 69 6c 20 69 66 20 74 68 65 20 |urns nil if the | 00001b10 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 |packet</span>. | 00001b20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00001b30 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 77 61 73 20 66 |omment">// was f| 00001b40 75 6c 6c 79 20 64 65 63 6f 64 65 64 20 73 75 63 |ully decoded suc| 00001b50 63 65 73 73 66 75 6c 6c 79 2c 20 61 6e 64 20 6e |cessfully, and n| 00001b60 6f 6e 2d 6e 69 6c 20 69 66 20 61 6e 20 65 72 72 |on-nil if an err| 00001b70 6f 72 20 77 61 73 20 65 6e 63 6f 75 6e 74 65 72 |or was encounter| 00001b80 65 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |ed</span>. <s| 00001b90 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme| 00001ba0 6e 74 22 3e 2f 2f 20 69 6e 20 64 65 63 6f 64 69 |nt">// in decodi| 00001bb0 6e 67 20 61 6e 64 20 74 68 65 20 70 61 63 6b 65 |ng and the packe| 00001bc0 74 20 77 61 73 20 6f 6e 6c 79 20 70 61 72 74 69 |t was only parti| 00001bd0 61 6c 6c 79 20 64 65 63 6f 64 65 64 2e 20 20 54 |ally decoded. T| 00001be0 68 75 73 2c 20 69 74 73 20 6f 75 74 70 75 74 3c |hus, its output<| 00001bf0 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e |/span>. <span| 00001c00 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 00001c10 3e 2f 2f 20 63 61 6e 20 62 65 20 75 73 65 64 20 |>// can be used | 00001c20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 |to determine if | 00001c30 74 68 65 20 65 6e 74 69 72 65 20 70 61 63 6b 65 |the entire packe| 00001c40 74 20 77 61 73 20 61 62 6c 65 20 74 6f 20 62 65 |t was able to be| 00001c50 20 64 65 63 6f 64 65 64 2e 3c 2f 73 70 61 6e 3e | decoded.</span>| 00001c60 0a 20 20 20 20 45 72 72 6f 72 4c 61 79 65 72 28 |. ErrorLayer(| 00001c70 29 20 45 72 72 6f 72 4c 61 79 65 72 0a 7d 3c 2f |) ErrorLayer.}</| 00001c80 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 63 6b |pre>....<p>.Pack| 00001c90 65 74 20 69 73 20 74 68 65 20 70 72 69 6d 61 72 |et is the primar| 00001ca0 79 20 6f 62 6a 65 63 74 20 75 73 65 64 20 62 79 |y object used by| 00001cb0 20 67 6f 70 61 63 6b 65 74 2e 20 20 50 61 63 6b | gopacket. Pack| 00001cc0 65 74 73 20 61 72 65 20 63 72 65 61 74 65 64 20 |ets are created | 00001cd0 62 79 20 61 0a 44 65 63 6f 64 65 72 26 23 33 39 |by a.Decoder'| 00001ce0 3b 73 20 44 65 63 6f 64 65 20 63 61 6c 6c 2e 20 |;s Decode call. | 00001cf0 20 41 20 70 61 63 6b 65 74 20 69 73 20 6d 61 64 | A packet is mad| 00001d00 65 20 75 70 20 6f 66 20 61 20 73 65 74 20 6f 66 |e up of a set of| 00001d10 20 44 61 74 61 2c 20 77 68 69 63 68 0a 69 73 20 | Data, which.is | 00001d20 62 72 6f 6b 65 6e 20 69 6e 74 6f 20 61 20 6e 75 |broken into a nu| 00001d30 6d 62 65 72 20 6f 66 20 4c 61 79 65 72 73 20 61 |mber of Layers a| 00001d40 73 20 69 74 20 69 73 20 64 65 63 6f 64 65 64 2e |s it is decoded.| 00001d50 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........| 00001d60 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a |................| 00001d70 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 50 |....<h3 id="NewP| 00001d80 61 63 6b 65 74 22 3e 66 75 6e 63 20 3c 61 20 68 |acket">func <a h| 00001d90 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi| 00001da0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel| 00001db0 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe| 00001dc0 74 2e 67 6f 3f 73 3d 39 39 37 38 3a 31 30 30 36 |t.go?s=9978:1006| 00001dd0 32 23 4c 33 34 30 22 3e 4e 65 77 50 61 63 6b 65 |2#L340">NewPacke| 00001de0 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<| 00001df0 70 72 65 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b |pre>func NewPack| 00001e00 65 74 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 |et(data []byte, | 00001e10 66 69 72 73 74 4c 61 79 65 72 44 65 63 6f 64 65 |firstLayerDecode| 00001e20 72 20 44 65 63 6f 64 65 72 2c 20 6f 70 74 69 6f |r Decoder, optio| 00001e30 6e 73 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |ns DecodeOptions| 00001e40 29 20 50 61 63 6b 65 74 3c 2f 70 72 65 3e 0a 09 |) Packet</pre>..| 00001e50 09 09 09 3c 70 3e 0a 4e 65 77 50 61 63 6b 65 74 |...<p>.NewPacket| 00001e60 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 50 | creates a new P| 00001e70 61 63 6b 65 74 20 6f 62 6a 65 63 74 20 66 72 6f |acket object fro| 00001e80 6d 20 61 20 73 65 74 20 6f 66 20 62 79 74 65 73 |m a set of bytes| 00001e90 2e 20 20 54 68 65 0a 66 69 72 73 74 4c 61 79 65 |. The.firstLaye| 00001ea0 72 44 65 63 6f 64 65 72 20 74 65 6c 6c 73 20 69 |rDecoder tells i| 00001eb0 74 20 68 6f 77 20 74 6f 20 69 6e 74 65 72 70 72 |t how to interpr| 00001ec0 65 74 20 74 68 65 20 66 69 72 73 74 20 6c 61 79 |et the first lay| 00001ed0 65 72 20 66 72 6f 6d 20 74 68 65 20 62 79 74 65 |er from the byte| 00001ee0 73 2c 0a 66 75 74 75 72 65 20 6c 61 79 65 72 73 |s,.future layers| 00001ef0 20 77 69 6c 6c 20 62 65 20 67 65 6e 65 72 61 74 | will be generat| 00001f00 65 64 20 66 72 6f 6d 20 74 68 61 74 20 66 69 72 |ed from that fir| 00001f10 73 74 20 6c 61 79 65 72 20 61 75 74 6f 6d 61 74 |st layer automat| 00001f20 69 63 61 6c 6c 79 2e 0a 3c 2f 70 3e 0a 0a 09 09 |ically..</p>....| 00001f30 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 |................| 00001f40 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 |..........<h2 id| 00001f50 3d 22 50 61 63 6b 65 74 42 75 69 6c 64 65 72 22 |="PacketBuilder"| 00001f60 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/| 00001f70 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c| 00001f80 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 00001f90 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 |cket/decode.go?s| 00001fa0 3d 36 30 32 3a 31 35 33 31 23 4c 31 33 22 3e 50 |=602:1531#L13">P| 00001fb0 61 63 6b 65 74 42 75 69 6c 64 65 72 3c 2f 61 3e |acketBuilder</a>| 00001fc0 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 |</h2>....<pre>ty| 00001fd0 70 65 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 |pe PacketBuilder| 00001fe0 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 | interface {. | 00001ff0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co| 00002000 6d 6d 65 6e 74 22 3e 2f 2f 20 41 64 64 4c 61 79 |mment">// AddLay| 00002010 65 72 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c |er should be cal| 00002020 6c 65 64 20 62 79 20 61 20 64 65 63 6f 64 65 72 |led by a decoder| 00002030 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 75 70 6f | immediately upo| 00002040 6e 20 73 75 63 63 65 73 73 66 75 6c 3c 2f 73 70 |n successful</sp| 00002050 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl| 00002060 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 00002070 20 64 65 63 6f 64 69 6e 67 20 6f 66 20 61 20 6c | decoding of a l| 00002080 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |ayer.</span>. | 00002090 20 41 64 64 4c 61 79 65 72 28 6c 20 4c 61 79 65 | AddLayer(l Laye| 000020a0 72 29 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |r). <span cla| 000020b0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 000020c0 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 |The following fu| 000020d0 6e 63 74 69 6f 6e 73 20 73 65 74 20 74 68 65 20 |nctions set the | 000020e0 76 61 72 69 6f 75 73 20 73 70 65 63 69 66 69 63 |various specific| 000020f0 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65 20 66 | layers in the f| 00002100 69 6e 61 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |inal</span>. | 00002110 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00002120 6d 65 6e 74 22 3e 2f 2f 20 70 61 63 6b 65 74 2e |ment">// packet.| 00002130 20 20 4e 6f 74 65 20 74 68 61 74 20 69 66 20 6d | Note that if m| 00002140 61 6e 79 20 6c 61 79 65 72 73 20 63 61 6c 6c 20 |any layers call | 00002150 53 65 74 58 2c 20 74 68 65 20 66 69 72 73 74 20 |SetX, the first | 00002160 63 61 6c 6c 20 69 73 20 6b 65 70 74 20 61 6e 64 |call is kept and| 00002170 20 61 6c 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 | all</span>. | 00002180 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00002190 6d 65 6e 74 22 3e 2f 2f 20 6f 74 68 65 72 20 63 |ment">// other c| 000021a0 61 6c 6c 73 20 61 72 65 20 69 67 6e 6f 72 65 64 |alls are ignored| 000021b0 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 53 65 74 |.</span>. Set| 000021c0 4c 69 6e 6b 4c 61 79 65 72 28 4c 69 6e 6b 4c 61 |LinkLayer(LinkLa| 000021d0 79 65 72 29 0a 20 20 20 20 53 65 74 4e 65 74 77 |yer). SetNetw| 000021e0 6f 72 6b 4c 61 79 65 72 28 4e 65 74 77 6f 72 6b |orkLayer(Network| 000021f0 4c 61 79 65 72 29 0a 20 20 20 20 53 65 74 54 72 |Layer). SetTr| 00002200 61 6e 73 70 6f 72 74 4c 61 79 65 72 28 54 72 61 |ansportLayer(Tra| 00002210 6e 73 70 6f 72 74 4c 61 79 65 72 29 0a 20 20 20 |nsportLayer). | 00002220 20 53 65 74 41 70 70 6c 69 63 61 74 69 6f 6e 4c | SetApplicationL| 00002230 61 79 65 72 28 41 70 70 6c 69 63 61 74 69 6f 6e |ayer(Application| 00002240 4c 61 79 65 72 29 0a 20 20 20 20 53 65 74 45 72 |Layer). SetEr| 00002250 72 6f 72 4c 61 79 65 72 28 45 72 72 6f 72 4c 61 |rorLayer(ErrorLa| 00002260 79 65 72 29 0a 20 20 20 20 3c 73 70 61 6e 20 63 |yer). <span c| 00002270 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/| 00002280 2f 20 4e 65 78 74 44 65 63 6f 64 65 72 20 73 68 |/ NextDecoder sh| 00002290 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 62 |ould be called b| 000022a0 79 20 61 20 64 65 63 6f 64 65 72 20 77 68 65 6e |y a decoder when| 000022b0 20 74 68 65 79 26 23 33 39 3b 72 65 20 64 6f 6e | they're don| 000022c0 65 20 64 65 63 6f 64 69 6e 67 20 61 3c 2f 73 70 |e decoding a</sp| 000022d0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl| 000022e0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//| 000022f0 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 62 75 | packet layer bu| 00002300 74 20 6e 6f 74 20 64 6f 6e 65 20 77 69 74 68 20 |t not done with | 00002310 64 65 63 6f 64 69 6e 67 20 74 68 65 20 65 6e 74 |decoding the ent| 00002320 69 72 65 20 70 61 63 6b 65 74 2e 20 20 54 68 65 |ire packet. The| 00002330 20 6e 65 78 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 | next</span>. | 00002340 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co| 00002350 6d 6d 65 6e 74 22 3e 2f 2f 20 64 65 63 6f 64 65 |mment">// decode| 00002360 72 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 |r will be called| 00002370 20 74 6f 20 64 65 63 6f 64 65 20 74 68 65 20 6c | to decode the l| 00002380 61 73 74 20 41 64 64 4c 61 79 65 72 26 23 33 39 |ast AddLayer'| 00002390 3b 73 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 2e |;s LayerPayload.| 000023a0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 000023b0 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 000023c0 22 3e 2f 2f 20 42 65 63 61 75 73 65 20 6f 66 20 |">// Because of | 000023d0 74 68 69 73 2c 20 4e 65 78 74 44 65 63 6f 64 65 |this, NextDecode| 000023e0 72 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65 20 63 |r must only be c| 000023f0 61 6c 6c 65 64 20 6f 6e 63 65 20 61 6c 6c 20 6f |alled once all o| 00002400 74 68 65 72 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ther</span>. | 00002410 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com| 00002420 6d 65 6e 74 22 3e 2f 2f 20 50 61 63 6b 65 74 42 |ment">// PacketB| 00002430 75 69 6c 64 65 72 20 63 61 6c 6c 73 20 68 61 76 |uilder calls hav| 00002440 65 20 62 65 65 6e 20 6d 61 64 65 2e 20 20 53 65 |e been made. Se| 00002450 74 2a 4c 61 79 65 72 20 61 6e 64 20 41 64 64 4c |t*Layer and AddL| 00002460 61 79 65 72 20 63 61 6c 6c 73 20 61 66 74 65 72 |ayer calls after| 00002470 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa| 00002480 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment| 00002490 22 3e 2f 2f 20 4e 65 78 74 44 65 63 6f 64 65 72 |">// NextDecoder| 000024a0 20 63 61 6c 6c 73 20 77 69 6c 6c 20 62 65 68 61 | calls will beha| 000024b0 76 65 20 69 6e 63 6f 72 72 65 63 74 6c 79 2e 3c |ve incorrectly.<| 000024c0 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 65 78 74 44 |/span>. NextD| 000024d0 65 63 6f 64 65 72 28 6e 65 78 74 20 44 65 63 6f |ecoder(next Deco| 000024e0 64 65 72 29 20 65 72 72 6f 72 0a 7d 3c 2f 70 72 |der) error.}</pr| 000024f0 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 |e>....<p>.Packet| 00002500 42 75 69 6c 64 65 72 20 69 73 20 75 73 65 64 20 |Builder is used | 00002510 62 79 20 6c 61 79 65 72 20 64 65 63 6f 64 65 72 |by layer decoder| 00002520 73 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6c |s to store the l| 00002530 61 79 65 72 73 20 74 68 65 79 26 23 33 39 3b 76 |ayers they'v| 00002540 65 20 64 65 63 6f 64 65 64 2c 0a 61 6e 64 20 74 |e decoded,.and t| 00002550 6f 20 64 65 66 65 72 20 66 75 74 75 72 65 20 64 |o defer future d| 00002560 65 63 6f 64 69 6e 67 20 76 69 61 20 4e 65 78 74 |ecoding via Next| 00002570 44 65 63 6f 64 65 72 2e 0a 54 79 70 69 63 61 6c |Decoder..Typical| 00002580 6c 79 2c 20 74 68 65 20 70 61 74 74 65 72 6e 20 |ly, the pattern | 00002590 66 6f 72 20 75 73 65 20 69 73 3a 0a 3c 2f 70 3e |for use is:.</p>| 000025a0 0a 3c 70 72 65 3e 66 75 6e 63 20 28 6d 20 2a 6d |.<pre>func (m *m| 000025b0 79 44 65 63 6f 64 65 72 29 20 44 65 63 6f 64 65 |yDecoder) Decode| 000025c0 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 20 |(data []byte, p | 000025d0 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 |PacketBuilder) e| 000025e0 72 72 6f 72 20 7b 0a 20 20 69 66 20 6d 79 4c 61 |rror {. if myLa| 000025f0 79 65 72 2c 20 65 72 72 20 3a 3d 20 6d 79 44 65 |yer, err := myDe| 00002600 63 6f 64 69 6e 67 4c 6f 67 69 63 28 64 61 74 61 |codingLogic(data| 00002610 29 3b 20 65 72 72 20 21 3d 20 6e 69 6c 20 7b 0a |); err != nil {.| 00002620 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 0a 20 | return err. | 00002630 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 70 2e | } else {. p.| 00002640 41 64 64 4c 61 79 65 72 28 6d 79 4c 61 79 65 72 |AddLayer(myLayer| 00002650 29 0a 20 20 7d 0a 20 20 2f 2f 20 6d 61 79 62 65 |). }. // maybe| 00002660 20 64 6f 20 74 68 69 73 2c 20 69 66 20 6d 79 4c | do this, if myL| 00002670 61 79 65 72 20 69 73 20 61 20 4c 69 6e 6b 4c 61 |ayer is a LinkLa| 00002680 79 65 72 0a 20 20 70 2e 53 65 74 4c 69 6e 6b 4c |yer. p.SetLinkL| 00002690 61 79 65 72 28 6d 79 4c 61 79 65 72 29 0a 20 20 |ayer(myLayer). | 000026a0 72 65 74 75 72 6e 20 70 2e 4e 65 78 74 44 65 63 |return p.NextDec| 000026b0 6f 64 65 72 28 6e 65 78 74 44 65 63 6f 64 65 72 |oder(nextDecoder| 000026c0 29 0a 7d 0a 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 |).}.</pre>......| 000026d0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 000026e0 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a |................| 000026f0 09 09 09 3c 68 32 20 69 64 3d 22 50 61 63 6b 65 |...<h2 id="Packe| 00002700 74 44 61 74 61 53 6f 75 72 63 65 22 3e 74 79 70 |tDataSource">typ| 00002710 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/| 00002720 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00002730 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00002740 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 31 34 |/packet.go?s=114| 00002750 34 34 3a 31 31 38 32 36 23 4c 33 37 37 22 3e 50 |44:11826#L377">P| 00002760 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 3c |acketDataSource<| 00002770 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 00002780 3e 74 79 70 65 20 50 61 63 6b 65 74 44 61 74 61 |>type PacketData| 00002790 53 6f 75 72 63 65 20 69 6e 74 65 72 66 61 63 65 |Source interface| 000027a0 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 | {. <span cla| 000027b0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 000027c0 52 65 61 64 50 61 63 6b 65 74 44 61 74 61 20 72 |ReadPacketData r| 000027d0 65 74 75 72 6e 73 20 74 68 65 20 6e 65 78 74 20 |eturns the next | 000027e0 70 61 63 6b 65 74 20 61 76 61 69 6c 61 62 6c 65 |packet available| 000027f0 20 66 72 6f 6d 20 74 68 69 73 20 64 61 74 61 20 | from this data | 00002800 73 6f 75 72 63 65 2e 3c 2f 73 70 61 6e 3e 0a 20 |source.</span>. | 00002810 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00002820 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 49 74 20 72 |comment">// It r| 00002830 65 74 75 72 6e 73 3a 3c 2f 73 70 61 6e 3e 0a 20 |eturns:</span>. | 00002840 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="| 00002850 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 64 61 74 |comment">// dat| 00002860 61 3a 20 20 54 68 65 20 62 79 74 65 73 20 6f 66 |a: The bytes of| 00002870 20 61 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 70 | an individual p| 00002880 61 63 6b 65 74 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |acket.</span>. | 00002890 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 000028a0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 63 69 3a 20 |omment">// ci: | 000028b0 20 4d 65 74 61 64 61 74 61 20 61 62 6f 75 74 20 | Metadata about | 000028c0 74 68 65 20 63 61 70 74 75 72 65 3c 2f 73 70 61 |the capture</spa| 000028d0 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla| 000028e0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// | 000028f0 20 65 72 72 3a 20 20 41 6e 20 65 72 72 6f 72 20 | err: An error | 00002900 65 6e 63 6f 75 6e 74 65 72 65 64 20 77 68 69 6c |encountered whil| 00002910 65 20 72 65 61 64 69 6e 67 20 70 61 63 6b 65 74 |e reading packet| 00002920 20 64 61 74 61 2e 20 20 49 66 20 65 72 72 20 21 | data. If err !| 00002930 3d 20 6e 69 6c 2c 3c 2f 73 70 61 6e 3e 0a 20 20 |= nil,</span>. | 00002940 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00002950 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 20 20 74 68 |omment">// th| 00002960 65 6e 20 64 61 74 61 2f 63 69 20 77 69 6c 6c 20 |en data/ci will | 00002970 62 65 20 69 67 6e 6f 72 65 64 2e 3c 2f 73 70 61 |be ignored.</spa| 00002980 6e 3e 0a 20 20 20 20 52 65 61 64 50 61 63 6b 65 |n>. ReadPacke| 00002990 74 44 61 74 61 28 29 20 28 64 61 74 61 20 5b 5d |tData() (data []| 000029a0 62 79 74 65 2c 20 63 69 20 43 61 70 74 75 72 65 |byte, ci Capture| 000029b0 49 6e 66 6f 2c 20 65 72 72 20 65 72 72 6f 72 29 |Info, err error)| 000029c0 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a |.}</pre>....<p>.| 000029d0 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 |PacketDataSource| 000029e0 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61 63 65 | is an interface| 000029f0 20 66 6f 72 20 73 6f 6d 65 20 73 6f 75 72 63 65 | for some source| 00002a00 20 6f 66 20 70 61 63 6b 65 74 20 64 61 74 61 2e | of packet data.| 00002a10 20 20 55 73 65 72 73 20 6d 61 79 0a 63 72 65 61 | Users may.crea| 00002a20 74 65 20 74 68 65 69 72 20 6f 77 6e 20 69 6d 70 |te their own imp| 00002a30 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2c 20 6f 72 |lementations, or| 00002a40 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69 6e | use the existin| 00002a50 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e |g implementation| 00002a60 73 20 69 6e 0a 67 6f 70 61 63 6b 65 74 2f 70 63 |s in.gopacket/pc| 00002a70 61 70 20 28 6c 69 62 70 63 61 70 2c 20 61 6c 6c |ap (libpcap, all| 00002a80 6f 77 73 20 72 65 61 64 69 6e 67 20 66 72 6f 6d |ows reading from| 00002a90 20 6c 69 76 65 20 69 6e 74 65 72 66 61 63 65 73 | live interfaces| 00002aa0 20 6f 72 20 66 72 6f 6d 0a 70 63 61 70 20 66 69 | or from.pcap fi| 00002ab0 6c 65 73 29 20 6f 72 20 67 6f 70 61 63 6b 65 74 |les) or gopacket| 00002ac0 2f 70 66 72 69 6e 67 20 28 50 46 5f 52 49 4e 47 |/pfring (PF_RING| 00002ad0 2c 20 61 6c 6c 6f 77 73 20 72 65 61 64 69 6e 67 |, allows reading| 00002ae0 20 66 72 6f 6d 20 6c 69 76 65 0a 69 6e 74 65 72 | from live.inter| 00002af0 66 61 63 65 73 29 2e 0a 3c 2f 70 3e 0a 0a 0a 09 |faces)..</p>....| 00002b00 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00002b10 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 |................| 00002b20 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 50 61 63 |.....<h2 id="Pac| 00002b30 6b 65 74 53 6f 75 72 63 65 22 3e 74 79 70 65 20 |ketSource">type | 00002b40 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00002b50 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00002b60 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 |nnell/gopacket/p| 00002b70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 33 31 33 38 |acket.go?s=13138| 00002b80 3a 31 33 34 30 35 23 4c 34 32 32 22 3e 50 61 63 |:13405#L422">Pac| 00002b90 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 68 |ketSource</a></h| 00002ba0 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type | 00002bb0 50 61 63 6b 65 74 53 6f 75 72 63 65 20 73 74 72 |PacketSource str| 00002bc0 75 63 74 20 7b 0a 0a 20 20 20 20 3c 73 70 61 6e |uct {.. <span| 00002bd0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"| 00002be0 3e 2f 2f 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e |>// DecodeOption| 00002bf0 73 20 69 73 20 74 68 65 20 73 65 74 20 6f 66 20 |s is the set of | 00002c00 6f 70 74 69 6f 6e 73 20 74 6f 20 75 73 65 20 66 |options to use f| 00002c10 6f 72 20 64 65 63 6f 64 69 6e 67 20 65 61 63 68 |or decoding each| 00002c20 20 70 69 65 63 65 3c 2f 73 70 61 6e 3e 0a 20 20 | piece</span>. | 00002c30 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00002c40 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f 66 20 70 61 |omment">// of pa| 00002c50 63 6b 65 74 20 64 61 74 61 2e 20 20 54 68 69 73 |cket data. This| 00002c60 20 63 61 6e 2f 73 68 6f 75 6c 64 20 62 65 20 63 | can/should be c| 00002c70 68 61 6e 67 65 64 20 62 79 20 74 68 65 20 75 73 |hanged by the us| 00002c80 65 72 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 |er to reflect th| 00002c90 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |e</span>. <sp| 00002ca0 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen| 00002cb0 74 22 3e 2f 2f 20 77 61 79 20 70 61 63 6b 65 74 |t">// way packet| 00002cc0 73 20 73 68 6f 75 6c 64 20 62 65 20 64 65 63 6f |s should be deco| 00002cd0 64 65 64 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ded.</span>. | 00002ce0 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 0a 20 20 |DecodeOptions. | 00002cf0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c| 00002d00 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 |omment">// conta| 00002d10 69 6e 73 20 66 69 6c 74 65 72 65 64 20 6f 72 20 |ins filtered or | 00002d20 75 6e 65 78 70 6f 72 74 65 64 20 66 69 65 6c 64 |unexported field| 00002d30 73 3c 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e |s</span>.}</pre>| 00002d40 0a 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 53 6f |....<p>.PacketSo| 00002d50 75 72 63 65 20 72 65 61 64 73 20 69 6e 20 70 61 |urce reads in pa| 00002d60 63 6b 65 74 73 20 66 72 6f 6d 20 61 20 50 61 63 |ckets from a Pac| 00002d70 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2c 20 64 |ketDataSource, d| 00002d80 65 63 6f 64 65 73 20 74 68 65 6d 2c 20 61 6e 64 |ecodes them, and| 00002d90 0a 72 65 74 75 72 6e 73 20 74 68 65 6d 2e 0a 3c |.returns them..<| 00002da0 2f 70 3e 0a 3c 70 3e 0a 54 68 65 72 65 20 61 72 |/p>.<p>.There ar| 00002db0 65 20 63 75 72 72 65 6e 74 6c 79 20 74 77 6f 20 |e currently two | 00002dc0 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 |different method| 00002dd0 73 20 66 6f 72 20 72 65 61 64 69 6e 67 20 70 61 |s for reading pa| 00002de0 63 6b 65 74 73 20 69 6e 20 74 68 72 6f 75 67 68 |ckets in through| 00002df0 0a 61 20 50 61 63 6b 65 74 53 6f 75 72 63 65 3a |.a PacketSource:| 00002e00 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 52 65 |.</p>.<h3 id="Re| 00002e10 61 64 69 6e 67 5f 57 69 74 68 5f 50 61 63 6b 65 |ading_With_Packe| 00002e20 74 73 5f 46 75 6e 63 74 69 6f 6e 22 3e 52 65 61 |ts_Function">Rea| 00002e30 64 69 6e 67 20 57 69 74 68 20 50 61 63 6b 65 74 |ding With Packet| 00002e40 73 20 46 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e 0a |s Function</h3>.| 00002e50 3c 70 3e 0a 54 68 69 73 20 6d 65 74 68 6f 64 20 |<p>.This method | 00002e60 69 73 20 74 68 65 20 6d 6f 73 74 20 63 6f 6e 76 |is the most conv| 00002e70 65 6e 69 65 6e 74 20 61 6e 64 20 65 61 73 69 65 |enient and easie| 00002e80 73 74 20 74 6f 20 63 6f 64 65 2c 20 62 75 74 20 |st to code, but | 00002e90 6c 61 63 6b 73 0a 66 6c 65 78 69 62 69 6c 69 74 |lacks.flexibilit| 00002ea0 79 2e 20 20 50 61 63 6b 65 74 73 20 72 65 74 75 |y. Packets retu| 00002eb0 72 6e 73 20 61 20 26 23 33 39 3b 63 68 61 6e 20 |rns a 'chan | 00002ec0 50 61 63 6b 65 74 26 23 33 39 3b 2c 20 74 68 65 |Packet', the| 00002ed0 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 |n asynchronously| 00002ee0 20 77 72 69 74 65 73 0a 70 61 63 6b 65 74 73 20 | writes.packets | 00002ef0 69 6e 74 6f 20 74 68 61 74 20 63 68 61 6e 6e 65 |into that channe| 00002f00 6c 2e 20 20 50 61 63 6b 65 74 73 20 75 73 65 73 |l. Packets uses| 00002f10 20 61 20 62 6c 6f 63 6b 69 6e 67 20 63 68 61 6e | a blocking chan| 00002f20 6e 65 6c 2c 20 61 6e 64 20 63 6c 6f 73 65 73 0a |nel, and closes.| 00002f30 69 74 20 69 66 20 61 6e 20 69 6f 2e 45 4f 46 20 |it if an io.EOF | 00002f40 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 |is returned by t| 00002f50 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 50 61 |he underlying Pa| 00002f60 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2e 20 |cketDataSource. | 00002f70 20 41 6c 6c 20 6f 74 68 65 72 0a 50 61 63 6b 65 | All other.Packe| 00002f80 74 44 61 74 61 53 6f 75 72 63 65 20 65 72 72 6f |tDataSource erro| 00002f90 72 73 20 61 72 65 20 69 67 6e 6f 72 65 64 20 61 |rs are ignored a| 00002fa0 6e 64 20 64 69 73 63 61 72 64 65 64 2e 0a 3c 2f |nd discarded..</| 00002fb0 70 3e 0a 3c 70 72 65 3e 66 6f 72 20 70 61 63 6b |p>.<pre>for pack| 00002fc0 65 74 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b |et := range pack| 00002fd0 65 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 |etSource.Packets| 00002fe0 28 29 20 7b 0a 20 20 2e 2e 2e 0a 7d 0a 3c 2f 70 |() {. ....}.</p| 00002ff0 72 65 3e 0a 3c 68 33 20 69 64 3d 22 52 65 61 64 |re>.<h3 id="Read| 00003000 69 6e 67 5f 57 69 74 68 5f 4e 65 78 74 50 61 63 |ing_With_NextPac| 00003010 6b 65 74 5f 46 75 6e 63 74 69 6f 6e 22 3e 52 65 |ket_Function">Re| 00003020 61 64 69 6e 67 20 57 69 74 68 20 4e 65 78 74 50 |ading With NextP| 00003030 61 63 6b 65 74 20 46 75 6e 63 74 69 6f 6e 3c 2f |acket Function</| 00003040 68 33 3e 0a 3c 70 3e 0a 54 68 69 73 20 6d 65 74 |h3>.<p>.This met| 00003050 68 6f 64 20 69 73 20 74 68 65 20 6d 6f 73 74 20 |hod is the most | 00003060 66 6c 65 78 69 62 6c 65 2c 20 61 6e 64 20 65 78 |flexible, and ex| 00003070 70 6f 73 65 73 20 65 72 72 6f 72 73 20 74 68 61 |poses errors tha| 00003080 74 20 6d 61 79 20 62 65 0a 65 6e 63 6f 75 6e 74 |t may be.encount| 00003090 65 72 65 64 20 62 79 20 74 68 65 20 75 6e 64 65 |ered by the unde| 000030a0 72 6c 79 69 6e 67 20 50 61 63 6b 65 74 44 61 74 |rlying PacketDat| 000030b0 61 53 6f 75 72 63 65 2e 20 20 49 74 26 23 33 39 |aSource. It'| 000030c0 3b 73 20 61 6c 73 6f 20 74 68 65 20 66 61 73 74 |;s also the fast| 000030d0 65 73 74 0a 69 6e 20 61 20 74 69 67 68 74 20 6c |est.in a tight l| 000030e0 6f 6f 70 2c 20 73 69 6e 63 65 20 69 74 20 64 6f |oop, since it do| 000030f0 65 73 6e 26 23 33 39 3b 74 20 68 61 76 65 20 74 |esn't have t| 00003100 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 61 |he overhead of a| 00003110 20 63 68 61 6e 6e 65 6c 0a 72 65 61 64 2f 77 72 | channel.read/wr| 00003120 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 |ite. However, i| 00003130 74 20 72 65 71 75 69 72 65 73 20 74 68 65 20 75 |t requires the u| 00003140 73 65 72 20 74 6f 20 68 61 6e 64 6c 65 20 65 72 |ser to handle er| 00003150 72 6f 72 73 2c 20 6d 6f 73 74 0a 69 6d 70 6f 72 |rors, most.impor| 00003160 74 61 6e 74 6c 79 20 74 68 65 20 69 6f 2e 45 4f |tantly the io.EO| 00003170 46 20 65 72 72 6f 72 20 69 6e 20 63 61 73 65 73 |F error in cases| 00003180 20 77 68 65 72 65 20 70 61 63 6b 65 74 73 20 61 | where packets a| 00003190 72 65 20 62 65 69 6e 67 20 72 65 61 64 20 66 72 |re being read fr| 000031a0 6f 6d 0a 61 20 66 69 6c 65 2e 0a 3c 2f 70 3e 0a |om.a file..</p>.| 000031b0 3c 70 72 65 3e 66 6f 72 20 7b 0a 20 20 70 61 63 |<pre>for {. pac| 000031c0 6b 65 74 2c 20 65 72 72 20 3a 3d 20 70 61 63 6b |ket, err := pack| 000031d0 65 74 53 6f 75 72 63 65 2e 4e 65 78 74 50 61 63 |etSource.NextPac| 000031e0 6b 65 74 28 29 20 7b 0a 20 20 69 66 20 65 72 72 |ket() {. if err| 000031f0 20 3d 3d 20 69 6f 2e 45 4f 46 20 7b 0a 20 20 20 | == io.EOF {. | 00003200 20 62 72 65 61 6b 0a 20 20 7d 20 65 6c 73 65 20 | break. } else | 00003210 69 66 20 65 72 72 20 21 3d 20 6e 69 6c 20 7b 0a |if err != nil {.| 00003220 20 20 20 20 6c 6f 67 2e 50 72 69 6e 74 6c 6e 28 | log.Println(| 00003230 26 23 33 34 3b 45 72 72 6f 72 3a 26 23 33 34 3b |"Error:"| 00003240 2c 20 65 72 72 29 0a 20 20 20 20 63 6f 6e 74 69 |, err). conti| 00003250 6e 75 65 0a 20 20 7d 0a 20 20 68 61 6e 64 6c 65 |nue. }. handle| 00003260 50 61 63 6b 65 74 28 70 61 63 6b 65 74 29 20 20 |Packet(packet) | 00003270 2f 2f 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 |// Do something | 00003280 77 69 74 68 20 65 61 63 68 20 70 61 63 6b 65 74 |with each packet| 00003290 2e 0a 7d 0a 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 |..}.</pre>......| 000032a0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................| 000032b0 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=| 000032c0 22 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |"NewPacketSource| 000032d0 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="| 000032e0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.| 000032f0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 00003300 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 6f 3f |acket/packet.go?| 00003310 73 3d 31 33 34 35 38 3a 31 33 35 33 34 23 4c 34 |s=13458:13534#L4| 00003320 33 32 22 3e 4e 65 77 50 61 63 6b 65 74 53 6f 75 |32">NewPacketSou| 00003330 72 63 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 |rce</a></h3>....| 00003340 09 3c 70 72 65 3e 66 75 6e 63 20 4e 65 77 50 61 |.<pre>func NewPa| 00003350 63 6b 65 74 53 6f 75 72 63 65 28 73 6f 75 72 63 |cketSource(sourc| 00003360 65 20 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 |e PacketDataSour| 00003370 63 65 2c 20 64 65 63 6f 64 65 72 20 44 65 63 6f |ce, decoder Deco| 00003380 64 65 72 29 20 2a 50 61 63 6b 65 74 53 6f 75 72 |der) *PacketSour| 00003390 63 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ce</pre>.....<p>| 000033a0 0a 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |.NewPacketSource| 000033b0 20 63 72 65 61 74 65 73 20 61 20 70 61 63 6b 65 | creates a packe| 000033c0 74 20 64 61 74 61 20 73 6f 75 72 63 65 2e 0a 3c |t data source..<| 000033d0 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 |/p>.............| 000033e0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 | 000033f0 69 64 3d 22 50 61 63 6b 65 74 53 6f 75 72 63 65 |id="PacketSource| 00003400 2e 4e 65 78 74 50 61 63 6b 65 74 22 3e 66 75 6e |.NextPacket">fun| 00003410 63 20 28 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 |c (*PacketSource| 00003420 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/| 00003430 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00003440 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00003450 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 33 37 |/packet.go?s=137| 00003460 33 33 3a 31 33 37 38 34 23 4c 34 34 31 22 3e 4e |33:13784#L441">N| 00003470 65 78 74 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 68 |extPacket</a></h| 00003480 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func| 00003490 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 | (p *PacketSourc| 000034a0 65 29 20 4e 65 78 74 50 61 63 6b 65 74 28 29 20 |e) NextPacket() | 000034b0 28 50 61 63 6b 65 74 2c 20 65 72 72 6f 72 29 3c |(Packet, error)<| 000034c0 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne| 000034d0 78 74 50 61 63 6b 65 74 20 72 65 74 75 72 6e 73 |xtPacket returns| 000034e0 20 74 68 65 20 6e 65 78 74 20 64 65 63 6f 64 65 | the next decode| 000034f0 64 20 70 61 63 6b 65 74 20 66 72 6f 6d 20 74 68 |d packet from th| 00003500 65 20 50 61 63 6b 65 74 53 6f 75 72 63 65 2e 20 |e PacketSource. | 00003510 20 4f 6e 20 65 72 72 6f 72 2c 0a 69 74 20 72 65 | On error,.it re| 00003520 74 75 72 6e 73 20 61 20 6e 69 6c 20 70 61 63 6b |turns a nil pack| 00003530 65 74 20 61 6e 64 20 61 20 6e 6f 6e 2d 6e 69 6c |et and a non-nil| 00003540 20 65 72 72 6f 72 2e 0a 3c 2f 70 3e 0a 0a 09 09 | error..</p>....| 00003550 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 00003560 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 63 |.....<h3 id="Pac| 00003570 6b 65 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 |ketSource.Packet| 00003580 73 22 3e 66 75 6e 63 20 28 2a 50 61 63 6b 65 74 |s">func (*Packet| 00003590 53 6f 75 72 63 65 29 20 3c 61 20 68 72 65 66 3d |Source) <a href=| 000035a0 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github| 000035b0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go| 000035c0 70 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 6f |packet/packet.go| 000035d0 3f 73 3d 31 34 38 34 31 3a 31 34 38 38 35 23 4c |?s=14841:14885#L| 000035e0 34 37 35 22 3e 50 61 63 6b 65 74 73 3c 2f 61 3e |475">Packets</a>| 000035f0 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f| 00003600 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f |unc (p *PacketSo| 00003610 75 72 63 65 29 20 50 61 63 6b 65 74 73 28 29 20 |urce) Packets() | 00003620 63 68 61 6e 20 50 61 63 6b 65 74 3c 2f 70 72 65 |chan Packet</pre| 00003630 3e 0a 09 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 |>.....<p>.Packet| 00003640 73 20 72 65 74 75 72 6e 73 20 61 20 62 6c 6f 63 |s returns a bloc| 00003650 6b 69 6e 67 20 63 68 61 6e 6e 65 6c 20 6f 66 20 |king channel of | 00003660 70 61 63 6b 65 74 73 2c 20 61 6c 6c 6f 77 69 6e |packets, allowin| 00003670 67 20 65 61 73 79 20 69 74 65 72 61 74 69 6e 67 |g easy iterating| 00003680 20 6f 76 65 72 0a 70 61 63 6b 65 74 73 2e 20 20 | over.packets. | 00003690 50 61 63 6b 65 74 73 20 77 69 6c 6c 20 62 65 20 |Packets will be | 000036a0 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 72 |asynchronously r| 000036b0 65 61 64 20 69 6e 20 66 72 6f 6d 20 74 68 65 20 |ead in from the | 000036c0 75 6e 64 65 72 6c 79 69 6e 67 0a 50 61 63 6b 65 |underlying.Packe| 000036d0 74 44 61 74 61 53 6f 75 72 63 65 20 61 6e 64 20 |tDataSource and | 000036e0 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 72 |written to the r| 000036f0 65 74 75 72 6e 65 64 20 63 68 61 6e 6e 65 6c 2e |eturned channel.| 00003700 20 20 49 66 20 74 68 65 20 75 6e 64 65 72 6c 79 | If the underly| 00003710 69 6e 67 0a 50 61 63 6b 65 74 44 61 74 61 53 6f |ing.PacketDataSo| 00003720 75 72 63 65 20 72 65 74 75 72 6e 73 20 61 6e 20 |urce returns an | 00003730 69 6f 2e 45 4f 46 20 65 72 72 6f 72 2c 20 74 68 |io.EOF error, th| 00003740 65 20 63 68 61 6e 6e 65 6c 20 77 69 6c 6c 20 62 |e channel will b| 00003750 65 20 63 6c 6f 73 65 64 2e 0a 49 66 20 61 6e 79 |e closed..If any| 00003760 20 6f 74 68 65 72 20 65 72 72 6f 72 20 69 73 20 | other error is | 00003770 65 6e 63 6f 75 6e 74 65 72 65 64 2c 20 69 74 20 |encountered, it | 00003780 69 73 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e |is ignored..</p>| 00003790 0a 3c 70 72 65 3e 66 6f 72 20 70 61 63 6b 65 74 |.<pre>for packet| 000037a0 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 | := range packet| 000037b0 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 28 29 |Source.Packets()| 000037c0 20 7b 0a 20 20 68 61 6e 64 6c 65 50 61 63 6b 65 | {. handlePacke| 000037d0 74 28 70 61 63 6b 65 74 29 20 20 2f 2f 20 44 6f |t(packet) // Do| 000037e0 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 | something with | 000037f0 65 61 63 68 20 70 61 63 6b 65 74 2e 0a 7d 0a 3c |each packet..}.<| 00003800 2f 70 72 65 3e 0a 0a 09 09 09 09 0a 09 09 09 09 |/pre>...........| 00003810 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a |................| 00003820 09 09 09 3c 68 32 20 69 64 3d 22 50 61 79 6c 6f |...<h2 id="Paylo| 00003830 61 64 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |ad">type <a href| 00003840 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00003850 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00003860 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f |opacket/base.go?| 00003870 73 3d 31 31 32 30 3a 31 31 35 36 23 4c 32 31 22 |s=1120:1156#L21"| 00003880 3e 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 32 |>Payload</a></h2| 00003890 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 50 |>....<pre>type P| 000038a0 61 79 6c 6f 61 64 20 73 74 72 75 63 74 20 7b 0a |ayload struct {.| 000038b0 20 20 20 20 44 61 74 61 20 5b 5d 62 79 74 65 0a | Data []byte.| 000038c0 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 |}</pre>....<p>.P| 000038d0 61 79 6c 6f 61 64 20 69 73 20 61 20 4c 61 79 65 |ayload is a Laye| 000038e0 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 |r containing the| 000038f0 20 70 61 79 6c 6f 61 64 20 6f 66 20 61 20 70 61 | payload of a pa| 00003900 63 6b 65 74 2e 20 20 54 68 65 20 64 65 66 69 6e |cket. The defin| 00003910 69 74 69 6f 6e 20 6f 66 0a 77 68 61 74 20 63 6f |ition of.what co| 00003920 6e 73 74 69 74 75 74 65 73 20 74 68 65 20 70 61 |nstitutes the pa| 00003930 79 6c 6f 61 64 20 6f 66 20 61 20 70 61 63 6b 65 |yload of a packe| 00003940 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 70 72 65 |t depends on pre| 00003950 76 69 6f 75 73 20 6c 61 79 65 72 73 3b 20 66 6f |vious layers; fo| 00003960 72 0a 54 43 50 20 61 6e 64 20 55 44 50 2c 20 77 |r.TCP and UDP, w| 00003970 65 20 73 74 6f 70 20 64 65 63 6f 64 69 6e 67 20 |e stop decoding | 00003980 61 62 6f 76 65 20 6c 61 79 65 72 20 34 20 61 6e |above layer 4 an| 00003990 64 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 6d |d return the rem| 000039a0 61 69 6e 69 6e 67 0a 62 79 74 65 73 20 61 73 20 |aining.bytes as | 000039b0 61 20 50 61 79 6c 6f 61 64 2e 20 20 50 61 79 6c |a Payload. Payl| 000039c0 6f 61 64 20 69 73 20 61 6e 20 41 70 70 6c 69 63 |oad is an Applic| 000039d0 61 74 69 6f 6e 4c 61 79 65 72 2e 0a 3c 2f 70 3e |ationLayer..</p>| 000039e0 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................| 000039f0 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a |................| 00003a00 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 79 6c |....<h3 id="Payl| 00003a10 6f 61 64 2e 4c 61 79 65 72 43 6f 6e 74 65 6e 74 |oad.LayerContent| 00003a20 73 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 |s">func (*Payloa| 00003a30 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |d) <a href="/src| 00003a40 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003a50 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003a60 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 32 36 35 |t/base.go?s=1265| 00003a70 3a 31 33 30 35 23 4c 32 37 22 3e 4c 61 79 65 72 |:1305#L27">Layer| 00003a80 43 6f 6e 74 65 6e 74 73 3c 2f 61 3e 3c 2f 68 33 |Contents</a></h3| 00003a90 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00003aa0 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 |(p *Payload) Lay| 00003ab0 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 |erContents() []b| 00003ac0 79 74 65 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 |yte</pre>.......| 00003ad0 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................| 00003ae0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 |......<h3 id="Pa| 00003af0 79 6c 6f 61 64 2e 4c 61 79 65 72 50 61 79 6c 6f |yload.LayerPaylo| 00003b00 61 64 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f |ad">func (*Paylo| 00003b10 61 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ad) <a href="/sr| 00003b20 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com| 00003b30 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack| 00003b40 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 33 32 |et/base.go?s=132| 00003b50 34 3a 31 33 36 33 23 4c 32 38 22 3e 4c 61 79 65 |4:1363#L28">Laye| 00003b60 72 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 33 |rPayload</a></h3| 00003b70 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func | 00003b80 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 |(p *Payload) Lay| 00003b90 65 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |erPayload() []by| 00003ba0 74 65 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 09 |te</pre>........| 00003bb0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................| 00003bc0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 79 |.....<h3 id="Pay| 00003bd0 6c 6f 61 64 2e 4c 61 79 65 72 54 79 70 65 22 3e |load.LayerType">| 00003be0 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 |func (*Payload) | 00003bf0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk| 00003c00 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco| 00003c10 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 |nnell/gopacket/b| 00003c20 61 73 65 2e 67 6f 3f 73 3d 31 31 39 36 3a 31 32 |ase.go?s=1196:12| 00003c30 33 35 23 4c 32 36 22 3e 4c 61 79 65 72 54 79 70 |35#L26">LayerTyp| 00003c40 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |e</a></h3>.....<| 00003c50 70 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 |pre>func (p *Pay| 00003c60 6c 6f 61 64 29 20 4c 61 79 65 72 54 79 70 65 28 |load) LayerType(| 00003c70 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 70 72 65 |) LayerType</pre| 00003c80 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 72 54 |>.....<p>.LayerT| 00003c90 79 70 65 20 72 65 74 75 72 6e 73 20 4c 61 79 65 |ype returns Laye| 00003ca0 72 54 79 70 65 50 61 79 6c 6f 61 64 0a 3c 2f 70 |rTypePayload.</p| 00003cb0 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............| 00003cc0 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00003cd0 3d 22 50 61 79 6c 6f 61 64 2e 50 61 79 6c 6f 61 |="Payload.Payloa| 00003ce0 64 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 |d">func (*Payloa| 00003cf0 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |d) <a href="/src| 00003d00 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/| 00003d10 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke| 00003d20 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 33 38 30 |t/base.go?s=1380| 00003d30 3a 31 34 31 34 23 4c 32 39 22 3e 50 61 79 6c 6f |:1414#L29">Paylo| 00003d40 61 64 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |ad</a></h3>.....| 00003d50 3c 70 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 |<pre>func (p *Pa| 00003d60 79 6c 6f 61 64 29 20 50 61 79 6c 6f 61 64 28 29 |yload) Payload()| 00003d70 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a 09 09 | []byte</pre>...| 00003d80 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................| 00003d90 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id| 00003da0 3d 22 50 61 79 6c 6f 61 64 2e 53 74 72 69 6e 67 |="Payload.String| 00003db0 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 |">func (*Payload| 00003dc0 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/| 00003dd0 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g| 00003de0 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket| 00003df0 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 34 33 39 3a |/base.go?s=1439:| 00003e00 31 34 37 32 23 4c 33 30 22 3e 53 74 72 69 6e 67 |1472#L30">String| 00003e10 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 |</a></h3>.....<p| 00003e20 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c |re>func (p *Payl| 00003e30 6f 61 64 29 20 53 74 72 69 6e 67 28 29 20 73 74 |oad) String() st| 00003e40 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 0a |ring</pre>......| 00003e50 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................| 00003e60 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 | 00003e70 69 64 3d 22 54 72 61 6e 73 70 6f 72 74 4c 61 79 |id="TransportLay| 00003e80 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |er">type <a href| 00003e90 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu| 00003ea0 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g| 00003eb0 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f |opacket/base.go?| 00003ec0 73 3d 32 30 31 30 3a 32 30 37 32 23 4c 35 30 22 |s=2010:2072#L50"| 00003ed0 3e 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 3c |>TransportLayer<| 00003ee0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre| 00003ef0 3e 74 79 70 65 20 54 72 61 6e 73 70 6f 72 74 4c |>type TransportL| 00003f00 61 79 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b |ayer interface {| 00003f10 0a 20 20 20 20 4c 61 79 65 72 0a 20 20 20 20 54 |. Layer. T| 00003f20 72 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 20 46 |ransportFlow() F| 00003f30 6c 6f 77 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |low.}</pre>....<| 00003f40 70 3e 0a 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |p>.TransportLaye| 00003f50 72 20 69 73 20 74 68 65 20 70 61 63 6b 65 74 20 |r is the packet | 00003f60 6c 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 |layer correspond| 00003f70 69 6e 67 20 74 6f 20 74 68 65 20 54 43 50 2f 49 |ing to the TCP/I| 00003f80 50 20 6c 61 79 65 72 20 33 20 28 4f 53 49 0a 6c |P layer 3 (OSI.l| 00003f90 61 79 65 72 20 34 29 0a 3c 2f 70 3e 0a 0a 0a 09 |ayer 4).</p>....| 00003fa0 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................| 00003fb0 09 0a 0a 09 09 09 0a 09 |........| pcap_test.go:110: -- FULL PACKET DATA (1006 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 03 c2 06 40 00 00 00 00 |....`......@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 36 17 08 97 18 4a 80 18 23 02 03 ca 00 00 |.f6....J..#.....| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 09 0a 09 09 |................| 00000050 3c 2f 64 69 76 3e 0a 09 0a 0a 09 0a 0a 0a 0a 0a |</div>..........| 00000060 0a 0a 0a 09 0a 09 0a 09 09 3c 68 32 20 69 64 3d |.........<h2 id=| 00000070 22 70 6b 67 2d 73 75 62 64 69 72 65 63 74 6f 72 |"pkg-subdirector| 00000080 69 65 73 22 3e 53 75 62 64 69 72 65 63 74 6f 72 |ies">Subdirector| 00000090 69 65 73 3c 2f 68 32 3e 0a 09 0a 09 3c 74 61 62 |ies</h2>....<tab| 000000a0 6c 65 20 63 6c 61 73 73 3d 22 64 69 72 22 3e 0a |le class="dir">.| 000000b0 09 3c 74 72 3e 0a 09 3c 74 68 3e 4e 61 6d 65 3c |.<tr>..<th>Name<| 000000c0 2f 74 68 3e 0a 09 3c 74 68 3e 26 6e 62 73 70 3b |/th>..<th> | 000000d0 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 | &nbs| 000000e0 70 3b 3c 2f 74 68 3e 0a 09 3c 74 68 20 73 74 79 |p;</th>..<th sty| 000000f0 6c 65 3d 22 74 65 78 74 2d 61 6c 69 67 6e 3a 20 |le="text-align: | 00000100 6c 65 66 74 3b 20 77 69 64 74 68 3a 20 61 75 74 |left; width: aut| 00000110 6f 22 3e 53 79 6e 6f 70 73 69 73 3c 2f 74 68 3e |o">Synopsis</th>| 00000120 0a 09 3c 2f 74 72 3e 0a 09 0a 09 09 3c 74 72 3e |..</tr>.....<tr>| 00000130 0a 09 09 3c 74 64 3e 3c 61 20 68 72 65 66 3d 22 |...<td><a href="| 00000140 2e 2e 22 3e 2e 2e 3c 2f 61 3e 3c 2f 74 64 3e 0a |..">..</a></td>.| 00000150 09 09 3c 2f 74 72 3e 0a 09 0a 09 0a 09 09 0a 09 |..</tr>.........| 00000160 09 09 3c 74 72 3e 0a 09 09 09 3c 74 64 20 63 6c |..<tr>....<td cl| 00000170 61 73 73 3d 22 6e 61 6d 65 22 3e 3c 61 20 68 72 |ass="name"><a hr| 00000180 65 66 3d 22 6c 61 79 65 72 73 2f 22 3e 6c 61 79 |ef="layers/">lay| 00000190 65 72 73 3c 2f 61 3e 3c 2f 74 64 3e 0a 09 09 09 |ers</a></td>....| 000001a0 3c 74 64 3e 26 6e 62 73 70 3b 26 6e 62 73 70 3b |<td> | 000001b0 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 2f 74 64 | </td| 000001c0 3e 0a 09 09 09 3c 74 64 20 73 74 79 6c 65 3d 22 |>....<td style="| 000001d0 77 69 64 74 68 3a 20 61 75 74 6f 22 3e 50 61 63 |width: auto">Pac| 000001e0 6b 61 67 65 20 6c 61 79 65 72 73 20 70 72 6f 76 |kage layers prov| 000001f0 69 64 65 73 20 64 65 63 6f 64 69 6e 67 20 6c 61 |ides decoding la| 00000200 79 65 72 73 20 66 6f 72 20 6d 61 6e 79 20 63 6f |yers for many co| 00000210 6d 6d 6f 6e 20 70 72 6f 74 6f 63 6f 6c 73 2e 3c |mmon protocols.<| 00000220 2f 74 64 3e 0a 09 09 09 3c 2f 74 72 3e 0a 09 09 |/td>....</tr>...| 00000230 0a 09 0a 09 09 0a 09 09 09 3c 74 72 3e 0a 09 09 |.........<tr>...| 00000240 09 3c 74 64 20 63 6c 61 73 73 3d 22 6e 61 6d 65 |.<td class="name| 00000250 22 3e 3c 61 20 68 72 65 66 3d 22 70 63 61 70 2f |"><a href="pcap/| 00000260 22 3e 70 63 61 70 3c 2f 61 3e 3c 2f 74 64 3e 0a |">pcap</a></td>.| 00000270 09 09 09 3c 74 64 3e 26 6e 62 73 70 3b 26 6e 62 |...<td> &nb| 00000280 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c |sp; <| 00000290 2f 74 64 3e 0a 09 09 09 3c 74 64 20 73 74 79 6c |/td>....<td styl| 000002a0 65 3d 22 77 69 64 74 68 3a 20 61 75 74 6f 22 3e |e="width: auto">| 000002b0 50 61 63 6b 61 67 65 20 70 63 61 70 20 61 6c 6c |Package pcap all| 000002c0 6f 77 73 20 75 73 65 72 73 20 6f 66 20 67 6f 70 |ows users of gop| 000002d0 61 63 6b 65 74 20 74 6f 20 72 65 61 64 20 70 61 |acket to read pa| 000002e0 63 6b 65 74 73 20 6f 66 66 20 74 68 65 20 77 69 |ckets off the wi| 000002f0 72 65 20 6f 72 20 66 72 6f 6d 20 70 63 61 70 20 |re or from pcap | 00000300 66 69 6c 65 73 2e 3c 2f 74 64 3e 0a 09 09 09 3c |files.</td>....<| 00000310 2f 74 72 3e 0a 09 09 0a 09 0a 09 09 0a 09 09 09 |/tr>............| 00000320 3c 74 72 3e 0a 09 09 09 3c 74 64 20 63 6c 61 73 |<tr>....<td clas| 00000330 73 3d 22 6e 61 6d 65 22 3e 3c 61 20 68 72 65 66 |s="name"><a href| 00000340 3d 22 70 66 72 69 6e 67 2f 22 3e 70 66 72 69 6e |="pfring/">pfrin| 00000350 67 3c 2f 61 3e 3c 2f 74 64 3e 0a 09 09 09 3c 74 |g</a></td>....<t| 00000360 64 3e 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e |d> &n| 00000370 62 73 70 3b 26 6e 62 73 70 3b 3c 2f 74 64 3e 0a |bsp; </td>.| 00000380 09 09 09 3c 74 64 20 73 74 79 6c 65 3d 22 77 69 |...<td style="wi| 00000390 64 74 68 3a 20 61 75 74 6f 22 3e 50 61 63 6b 61 |dth: auto">Packa| 000003a0 67 65 20 70 66 72 69 6e 67 20 77 72 61 70 73 20 |ge pfring wraps | 000003b0 74 68 65 20 50 46 5f 52 49 4e 47 20 43 20 6c 69 |the PF_RING C li| 000003c0 62 72 61 72 79 20 66 6f 72 20 47 6f 2e 3c 2f 74 |brary for Go.</t| 000003d0 64 3e 0a 09 09 09 3c 2f 74 72 3e 0a 09 09 0a 09 |d>....</tr>.....| 000003e0 0a 09 3c 2f 74 61 62 6c 65 3e 0a 09 0a 0a |..</table>....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..1002..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..962..] Version=6 TrafficClass=0 FlowLabel=100497 Length=962 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 03 c2 06 40 00 00 00 00 00 00 00 00 |`......@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..930..] SrcPort=8080(http-alt) DstPort=58799 Seq=174470679 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=970 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 66 36 17 08 97 18 4a 80 18 23 02 |.....f6....J..#.| 00000010 03 ca 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |................| --- Layer 4 --- Payload 930 byte(s) 00000000 09 0a 09 09 3c 2f 64 69 76 3e 0a 09 0a 0a 09 0a |....</div>......| 00000010 0a 0a 0a 0a 0a 0a 0a 09 0a 09 0a 09 09 3c 68 32 |.............<h2| 00000020 20 69 64 3d 22 70 6b 67 2d 73 75 62 64 69 72 65 | id="pkg-subdire| 00000030 63 74 6f 72 69 65 73 22 3e 53 75 62 64 69 72 65 |ctories">Subdire| 00000040 63 74 6f 72 69 65 73 3c 2f 68 32 3e 0a 09 0a 09 |ctories</h2>....| 00000050 3c 74 61 62 6c 65 20 63 6c 61 73 73 3d 22 64 69 |<table class="di| 00000060 72 22 3e 0a 09 3c 74 72 3e 0a 09 3c 74 68 3e 4e |r">..<tr>..<th>N| 00000070 61 6d 65 3c 2f 74 68 3e 0a 09 3c 74 68 3e 26 6e |ame</th>..<th>&n| 00000080 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b |bsp; | 00000090 26 6e 62 73 70 3b 3c 2f 74 68 3e 0a 09 3c 74 68 | </th>..<th| 000000a0 20 73 74 79 6c 65 3d 22 74 65 78 74 2d 61 6c 69 | style="text-ali| 000000b0 67 6e 3a 20 6c 65 66 74 3b 20 77 69 64 74 68 3a |gn: left; width:| 000000c0 20 61 75 74 6f 22 3e 53 79 6e 6f 70 73 69 73 3c | auto">Synopsis<| 000000d0 2f 74 68 3e 0a 09 3c 2f 74 72 3e 0a 09 0a 09 09 |/th>..</tr>.....| 000000e0 3c 74 72 3e 0a 09 09 3c 74 64 3e 3c 61 20 68 72 |<tr>...<td><a hr| 000000f0 65 66 3d 22 2e 2e 22 3e 2e 2e 3c 2f 61 3e 3c 2f |ef="..">..</a></| 00000100 74 64 3e 0a 09 09 3c 2f 74 72 3e 0a 09 0a 09 0a |td>...</tr>.....| 00000110 09 09 0a 09 09 09 3c 74 72 3e 0a 09 09 09 3c 74 |......<tr>....<t| 00000120 64 20 63 6c 61 73 73 3d 22 6e 61 6d 65 22 3e 3c |d class="name"><| 00000130 61 20 68 72 65 66 3d 22 6c 61 79 65 72 73 2f 22 |a href="layers/"| 00000140 3e 6c 61 79 65 72 73 3c 2f 61 3e 3c 2f 74 64 3e |>layers</a></td>| 00000150 0a 09 09 09 3c 74 64 3e 26 6e 62 73 70 3b 26 6e |....<td> &n| 00000160 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b |bsp; | 00000170 3c 2f 74 64 3e 0a 09 09 09 3c 74 64 20 73 74 79 |</td>....<td sty| 00000180 6c 65 3d 22 77 69 64 74 68 3a 20 61 75 74 6f 22 |le="width: auto"| 00000190 3e 50 61 63 6b 61 67 65 20 6c 61 79 65 72 73 20 |>Package layers | 000001a0 70 72 6f 76 69 64 65 73 20 64 65 63 6f 64 69 6e |provides decodin| 000001b0 67 20 6c 61 79 65 72 73 20 66 6f 72 20 6d 61 6e |g layers for man| 000001c0 79 20 63 6f 6d 6d 6f 6e 20 70 72 6f 74 6f 63 6f |y common protoco| 000001d0 6c 73 2e 3c 2f 74 64 3e 0a 09 09 09 3c 2f 74 72 |ls.</td>....</tr| 000001e0 3e 0a 09 09 0a 09 0a 09 09 0a 09 09 09 3c 74 72 |>............<tr| 000001f0 3e 0a 09 09 09 3c 74 64 20 63 6c 61 73 73 3d 22 |>....<td class="| 00000200 6e 61 6d 65 22 3e 3c 61 20 68 72 65 66 3d 22 70 |name"><a href="p| 00000210 63 61 70 2f 22 3e 70 63 61 70 3c 2f 61 3e 3c 2f |cap/">pcap</a></| 00000220 74 64 3e 0a 09 09 09 3c 74 64 3e 26 6e 62 73 70 |td>....<td> | 00000230 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 |; &nb| 00000240 73 70 3b 3c 2f 74 64 3e 0a 09 09 09 3c 74 64 20 |sp;</td>....<td | 00000250 73 74 79 6c 65 3d 22 77 69 64 74 68 3a 20 61 75 |style="width: au| 00000260 74 6f 22 3e 50 61 63 6b 61 67 65 20 70 63 61 70 |to">Package pcap| 00000270 20 61 6c 6c 6f 77 73 20 75 73 65 72 73 20 6f 66 | allows users of| 00000280 20 67 6f 70 61 63 6b 65 74 20 74 6f 20 72 65 61 | gopacket to rea| 00000290 64 20 70 61 63 6b 65 74 73 20 6f 66 66 20 74 68 |d packets off th| 000002a0 65 20 77 69 72 65 20 6f 72 20 66 72 6f 6d 20 70 |e wire or from p| 000002b0 63 61 70 20 66 69 6c 65 73 2e 3c 2f 74 64 3e 0a |cap files.</td>.| 000002c0 09 09 09 3c 2f 74 72 3e 0a 09 09 0a 09 0a 09 09 |...</tr>........| 000002d0 0a 09 09 09 3c 74 72 3e 0a 09 09 09 3c 74 64 20 |....<tr>....<td | 000002e0 63 6c 61 73 73 3d 22 6e 61 6d 65 22 3e 3c 61 20 |class="name"><a | 000002f0 68 72 65 66 3d 22 70 66 72 69 6e 67 2f 22 3e 70 |href="pfring/">p| 00000300 66 72 69 6e 67 3c 2f 61 3e 3c 2f 74 64 3e 0a 09 |fring</a></td>..| 00000310 09 09 3c 74 64 3e 26 6e 62 73 70 3b 26 6e 62 73 |..<td> &nbs| 00000320 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 2f |p; </| 00000330 74 64 3e 0a 09 09 09 3c 74 64 20 73 74 79 6c 65 |td>....<td style| 00000340 3d 22 77 69 64 74 68 3a 20 61 75 74 6f 22 3e 50 |="width: auto">P| 00000350 61 63 6b 61 67 65 20 70 66 72 69 6e 67 20 77 72 |ackage pfring wr| 00000360 61 70 73 20 74 68 65 20 50 46 5f 52 49 4e 47 20 |aps the PF_RING | 00000370 43 20 6c 69 62 72 61 72 79 20 66 6f 72 20 47 6f |C library for Go| 00000380 2e 3c 2f 74 64 3e 0a 09 09 09 3c 2f 74 72 3e 0a |.</td>....</tr>.| 00000390 09 09 0a 09 0a 09 3c 2f 74 61 62 6c 65 3e 0a 09 |......</table>..| 000003a0 0a 0a |..| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 18 4a 0a 65 76 ef 80 10 27 e9 00 28 00 00 |...J.ev...'..(..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144119882 Ack=174421743 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=10217 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505270 0x05c08db605c08db6)] Padding=[]} 00000000 e5 af 1f 90 08 97 18 4a 0a 65 76 ef 80 10 27 e9 |.......J.ev...'.| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (848 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 03 24 06 40 00 00 00 00 |....`....$.@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 39 b9 08 97 18 4a 80 18 23 02 03 2c 00 00 |.f9....J..#..,..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8c fc 0d 0a 32 61 |..............2a| 00000050 0d 0a 0a 0a 3c 2f 64 69 76 3e 0a 0a 3c 64 69 76 |....</div>..<div| 00000060 20 69 64 3d 22 66 6f 6f 74 65 72 22 3e 0a 42 75 | id="footer">.Bu| 00000070 69 6c 64 20 76 65 72 73 69 6f 6e 20 0d 0a 37 0d |ild version ..7.| 00000080 0a 67 6f 31 2e 30 2e 33 0d 0a 32 62 61 0d 0a 2e |.go1.0.3..2ba...| 00000090 3c 62 72 3e 0a 45 78 63 65 70 74 20 61 73 20 3c |<br>.Except as <| 000000a0 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 63 |a href="http://c| 000000b0 6f 64 65 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 70 |ode.google.com/p| 000000c0 6f 6c 69 63 69 65 73 2e 68 74 6d 6c 23 72 65 73 |olicies.html#res| 000000d0 74 72 69 63 74 69 6f 6e 73 22 3e 6e 6f 74 65 64 |trictions">noted| 000000e0 3c 2f 61 3e 2c 0a 74 68 65 20 63 6f 6e 74 65 6e |</a>,.the conten| 000000f0 74 20 6f 66 20 74 68 69 73 20 70 61 67 65 20 69 |t of this page i| 00000100 73 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 |s licensed under| 00000110 20 74 68 65 0a 43 72 65 61 74 69 76 65 20 43 6f | the.Creative Co| 00000120 6d 6d 6f 6e 73 20 41 74 74 72 69 62 75 74 69 6f |mmons Attributio| 00000130 6e 20 33 2e 30 20 4c 69 63 65 6e 73 65 2c 0a 61 |n 3.0 License,.a| 00000140 6e 64 20 63 6f 64 65 20 69 73 20 6c 69 63 65 6e |nd code is licen| 00000150 73 65 64 20 75 6e 64 65 72 20 61 20 3c 61 20 68 |sed under a <a h| 00000160 72 65 66 3d 22 2f 4c 49 43 45 4e 53 45 22 3e 42 |ref="/LICENSE">B| 00000170 53 44 20 6c 69 63 65 6e 73 65 3c 2f 61 3e 2e 3c |SD license</a>.<| 00000180 62 72 3e 0a 3c 61 20 68 72 65 66 3d 22 2f 64 6f |br>.<a href="/do| 00000190 63 2f 74 6f 73 2e 68 74 6d 6c 22 3e 54 65 72 6d |c/tos.html">Term| 000001a0 73 20 6f 66 20 53 65 72 76 69 63 65 3c 2f 61 3e |s of Service</a>| 000001b0 20 7c 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 | | .<a href="htt| 000001c0 70 3a 2f 2f 77 77 77 2e 67 6f 6f 67 6c 65 2e 63 |p://www.google.c| 000001d0 6f 6d 2f 69 6e 74 6c 2f 65 6e 2f 70 6f 6c 69 63 |om/intl/en/polic| 000001e0 69 65 73 2f 70 72 69 76 61 63 79 2f 22 3e 50 72 |ies/privacy/">Pr| 000001f0 69 76 61 63 79 20 50 6f 6c 69 63 79 3c 2f 61 3e |ivacy Policy</a>| 00000200 0a 3c 2f 64 69 76 3e 0a 0a 3c 2f 62 6f 64 79 3e |.</div>..</body>| 00000210 0a 3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 |.<script type="t| 00000220 65 78 74 2f 6a 61 76 61 73 63 72 69 70 74 22 3e |ext/javascript">| 00000230 0a 20 20 28 66 75 6e 63 74 69 6f 6e 28 29 20 7b |. (function() {| 00000240 0a 20 20 20 20 76 61 72 20 70 6f 20 3d 20 64 6f |. var po = do| 00000250 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 |cument.createEle| 00000260 6d 65 6e 74 28 27 73 63 72 69 70 74 27 29 3b 20 |ment('script'); | 00000270 70 6f 2e 74 79 70 65 20 3d 20 27 74 65 78 74 2f |po.type = 'text/| 00000280 6a 61 76 61 73 63 72 69 70 74 27 3b 20 70 6f 2e |javascript'; po.| 00000290 61 73 79 6e 63 20 3d 20 74 72 75 65 3b 0a 20 20 |async = true;. | 000002a0 20 20 70 6f 2e 73 72 63 20 3d 20 27 68 74 74 70 | po.src = 'http| 000002b0 73 3a 2f 2f 61 70 69 73 2e 67 6f 6f 67 6c 65 2e |s://apis.google.| 000002c0 63 6f 6d 2f 6a 73 2f 70 6c 75 73 6f 6e 65 2e 6a |com/js/plusone.j| 000002d0 73 27 3b 0a 20 20 20 20 76 61 72 20 73 20 3d 20 |s';. var s = | 000002e0 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d |document.getElem| 000002f0 65 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 27 73 |entsByTagName('s| 00000300 63 72 69 70 74 27 29 5b 30 5d 3b 20 73 2e 70 61 |cript')[0]; s.pa| 00000310 72 65 6e 74 4e 6f 64 65 2e 69 6e 73 65 72 74 42 |rentNode.insertB| 00000320 65 66 6f 72 65 28 70 6f 2c 20 73 29 3b 0a 20 20 |efore(po, s);. | 00000330 7d 29 28 29 3b 0a 3c 2f 73 63 72 69 70 74 3e 0a |})();.</script>.| 00000340 3c 2f 68 74 6d 6c 3e 0a 0a 0d 0a 30 0d 0a 0d 0a |</html>....0....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..844..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..804..] Version=6 TrafficClass=0 FlowLabel=100497 Length=804 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 03 24 06 40 00 00 00 00 00 00 00 00 |`....$.@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..772..] SrcPort=8080(http-alt) DstPort=58799 Seq=174471609 Ack=144119882 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=8962 Checksum=812 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505084 0x05c08db605c08cfc)] Padding=[]} 00000000 1f 90 e5 af 0a 66 39 b9 08 97 18 4a 80 18 23 02 |.....f9....J..#.| 00000010 03 2c 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8c fc |.,..............| --- Layer 4 --- Payload 772 byte(s) 00000000 0d 0a 32 61 0d 0a 0a 0a 3c 2f 64 69 76 3e 0a 0a |..2a....</div>..| 00000010 3c 64 69 76 20 69 64 3d 22 66 6f 6f 74 65 72 22 |<div id="footer"| 00000020 3e 0a 42 75 69 6c 64 20 76 65 72 73 69 6f 6e 20 |>.Build version | 00000030 0d 0a 37 0d 0a 67 6f 31 2e 30 2e 33 0d 0a 32 62 |..7..go1.0.3..2b| 00000040 61 0d 0a 2e 3c 62 72 3e 0a 45 78 63 65 70 74 20 |a...<br>.Except | 00000050 61 73 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 |as <a href="http| 00000060 3a 2f 2f 63 6f 64 65 2e 67 6f 6f 67 6c 65 2e 63 |://code.google.c| 00000070 6f 6d 2f 70 6f 6c 69 63 69 65 73 2e 68 74 6d 6c |om/policies.html| 00000080 23 72 65 73 74 72 69 63 74 69 6f 6e 73 22 3e 6e |#restrictions">n| 00000090 6f 74 65 64 3c 2f 61 3e 2c 0a 74 68 65 20 63 6f |oted</a>,.the co| 000000a0 6e 74 65 6e 74 20 6f 66 20 74 68 69 73 20 70 61 |ntent of this pa| 000000b0 67 65 20 69 73 20 6c 69 63 65 6e 73 65 64 20 75 |ge is licensed u| 000000c0 6e 64 65 72 20 74 68 65 0a 43 72 65 61 74 69 76 |nder the.Creativ| 000000d0 65 20 43 6f 6d 6d 6f 6e 73 20 41 74 74 72 69 62 |e Commons Attrib| 000000e0 75 74 69 6f 6e 20 33 2e 30 20 4c 69 63 65 6e 73 |ution 3.0 Licens| 000000f0 65 2c 0a 61 6e 64 20 63 6f 64 65 20 69 73 20 6c |e,.and code is l| 00000100 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 61 20 |icensed under a | 00000110 3c 61 20 68 72 65 66 3d 22 2f 4c 49 43 45 4e 53 |<a href="/LICENS| 00000120 45 22 3e 42 53 44 20 6c 69 63 65 6e 73 65 3c 2f |E">BSD license</| 00000130 61 3e 2e 3c 62 72 3e 0a 3c 61 20 68 72 65 66 3d |a>.<br>.<a href=| 00000140 22 2f 64 6f 63 2f 74 6f 73 2e 68 74 6d 6c 22 3e |"/doc/tos.html">| 00000150 54 65 72 6d 73 20 6f 66 20 53 65 72 76 69 63 65 |Terms of Service| 00000160 3c 2f 61 3e 20 7c 20 0a 3c 61 20 68 72 65 66 3d |</a> | .<a href=| 00000170 22 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6f 6f 67 |"http://www.goog| 00000180 6c 65 2e 63 6f 6d 2f 69 6e 74 6c 2f 65 6e 2f 70 |le.com/intl/en/p| 00000190 6f 6c 69 63 69 65 73 2f 70 72 69 76 61 63 79 2f |olicies/privacy/| 000001a0 22 3e 50 72 69 76 61 63 79 20 50 6f 6c 69 63 79 |">Privacy Policy| 000001b0 3c 2f 61 3e 0a 3c 2f 64 69 76 3e 0a 0a 3c 2f 62 |</a>.</div>..</b| 000001c0 6f 64 79 3e 0a 3c 73 63 72 69 70 74 20 74 79 70 |ody>.<script typ| 000001d0 65 3d 22 74 65 78 74 2f 6a 61 76 61 73 63 72 69 |e="text/javascri| 000001e0 70 74 22 3e 0a 20 20 28 66 75 6e 63 74 69 6f 6e |pt">. (function| 000001f0 28 29 20 7b 0a 20 20 20 20 76 61 72 20 70 6f 20 |() {. var po | 00000200 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 |= document.creat| 00000210 65 45 6c 65 6d 65 6e 74 28 27 73 63 72 69 70 74 |eElement('script| 00000220 27 29 3b 20 70 6f 2e 74 79 70 65 20 3d 20 27 74 |'); po.type = 't| 00000230 65 78 74 2f 6a 61 76 61 73 63 72 69 70 74 27 3b |ext/javascript';| 00000240 20 70 6f 2e 61 73 79 6e 63 20 3d 20 74 72 75 65 | po.async = true| 00000250 3b 0a 20 20 20 20 70 6f 2e 73 72 63 20 3d 20 27 |;. po.src = '| 00000260 68 74 74 70 73 3a 2f 2f 61 70 69 73 2e 67 6f 6f |https://apis.goo| 00000270 67 6c 65 2e 63 6f 6d 2f 6a 73 2f 70 6c 75 73 6f |gle.com/js/pluso| 00000280 6e 65 2e 6a 73 27 3b 0a 20 20 20 20 76 61 72 20 |ne.js';. var | 00000290 73 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 |s = document.get| 000002a0 45 6c 65 6d 65 6e 74 73 42 79 54 61 67 4e 61 6d |ElementsByTagNam| 000002b0 65 28 27 73 63 72 69 70 74 27 29 5b 30 5d 3b 20 |e('script')[0]; | 000002c0 73 2e 70 61 72 65 6e 74 4e 6f 64 65 2e 69 6e 73 |s.parentNode.ins| 000002d0 65 72 74 42 65 66 6f 72 65 28 70 6f 2c 20 73 29 |ertBefore(po, s)| 000002e0 3b 0a 20 20 7d 29 28 29 3b 0a 3c 2f 73 63 72 69 |;. })();.</scri| 000002f0 70 74 3e 0a 3c 2f 68 74 6d 6c 3e 0a 0a 0d 0a 30 |pt>.</html>....0| 00000300 0d 0a 0d 0a |....| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 18 4a 0a 65 f6 5f 80 10 1f f2 00 28 00 00 |...J.e._.....(..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144119882 Ack=174454367 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8178 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505270 0x05c08db605c08db6)] Padding=[]} 00000000 e5 af 1f 90 08 97 18 4a 0a 65 f6 5f 80 10 1f f2 |.......J.e._....| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 18 4a 0a 66 39 b9 80 10 3b 98 00 28 00 00 |...J.f9...;..(..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144119882 Ack=174471609 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=15256 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505270 0x05c08db605c08db6)] Padding=[]} 00000000 e5 af 1f 90 08 97 18 4a 0a 66 39 b9 80 10 3b 98 |.......J.f9...;.| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 18 4a 0a 66 3c bd 80 10 3b 68 00 28 00 00 |...J.f<...;h.(..| 00000040 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144119882 Ack=174472381 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=15208 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505270/96505270 0x05c08db605c08db6)] Padding=[]} 00000000 e5 af 1f 90 08 97 18 4a 0a 66 3c bd 80 10 3b 68 |.......J.f<...;h| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d b6 05 c0 8d b6 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (574 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 02 12 06 40 00 00 00 00 |....`......@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 18 4a 0a 66 3c bd 80 18 3b 68 02 1a 00 00 |...J.f<...;h....| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d b6 47 45 54 20 |............GET | 00000050 2f 64 6f 63 2f 73 74 79 6c 65 2e 63 73 73 20 48 |/doc/style.css H| 00000060 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 6c |TTP/1.1..Host: l| 00000070 6f 63 61 6c 68 6f 73 74 3a 38 30 38 30 0d 0a 43 |ocalhost:8080..C| 00000080 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b 65 65 70 2d |onnection: keep-| 00000090 61 6c 69 76 65 0d 0a 43 61 63 68 65 2d 43 6f 6e |alive..Cache-Con| 000000a0 74 72 6f 6c 3a 20 6d 61 78 2d 61 67 65 3d 30 0d |trol: max-age=0.| 000000b0 0a 49 66 2d 4d 6f 64 69 66 69 65 64 2d 53 69 6e |.If-Modified-Sin| 000000c0 63 65 3a 20 53 61 74 2c 20 30 31 20 44 65 63 20 |ce: Sat, 01 Dec | 000000d0 32 30 31 32 20 31 38 3a 30 35 3a 35 39 20 47 4d |2012 18:05:59 GM| 000000e0 54 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 4d |T..User-Agent: M| 000000f0 6f 7a 69 6c 6c 61 2f 35 2e 30 20 28 4d 61 63 69 |ozilla/5.0 (Maci| 00000100 6e 74 6f 73 68 3b 20 49 6e 74 65 6c 20 4d 61 63 |ntosh; Intel Mac| 00000110 20 4f 53 20 58 20 31 30 5f 38 5f 32 29 20 41 70 | OS X 10_8_2) Ap| 00000120 70 6c 65 57 65 62 4b 69 74 2f 35 33 37 2e 31 31 |pleWebKit/537.11| 00000130 20 28 4b 48 54 4d 4c 2c 20 6c 69 6b 65 20 47 65 | (KHTML, like Ge| 00000140 63 6b 6f 29 20 43 68 72 6f 6d 65 2f 32 33 2e 30 |cko) Chrome/23.0| 00000150 2e 31 32 37 31 2e 31 30 31 20 53 61 66 61 72 69 |.1271.101 Safari| 00000160 2f 35 33 37 2e 31 31 0d 0a 41 63 63 65 70 74 3a |/537.11..Accept:| 00000170 20 74 65 78 74 2f 63 73 73 2c 2a 2f 2a 3b 71 3d | text/css,*/*;q=| 00000180 30 2e 31 0d 0a 52 65 66 65 72 65 72 3a 20 68 74 |0.1..Referer: ht| 00000190 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 38 |tp://localhost:8| 000001a0 30 38 30 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |080/pkg/github.c| 000001b0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa| 000001c0 63 6b 65 74 2f 0d 0a 41 63 63 65 70 74 2d 45 6e |cket/..Accept-En| 000001d0 63 6f 64 69 6e 67 3a 20 67 7a 69 70 2c 64 65 66 |coding: gzip,def| 000001e0 6c 61 74 65 2c 73 64 63 68 0d 0a 41 63 63 65 70 |late,sdch..Accep| 000001f0 74 2d 4c 61 6e 67 75 61 67 65 3a 20 65 6e 2d 55 |t-Language: en-U| 00000200 53 2c 65 6e 3b 71 3d 30 2e 38 0d 0a 41 63 63 65 |S,en;q=0.8..Acce| 00000210 70 74 2d 43 68 61 72 73 65 74 3a 20 49 53 4f 2d |pt-Charset: ISO-| 00000220 38 38 35 39 2d 31 2c 75 74 66 2d 38 3b 71 3d 30 |8859-1,utf-8;q=0| 00000230 2e 37 2c 2a 3b 71 3d 30 2e 33 0d 0a 0d 0a |.7,*;q=0.3....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..570..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..530..] Version=6 TrafficClass=0 FlowLabel=0 Length=530 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 02 12 06 40 00 00 00 00 00 00 00 00 |`......@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..498..] SrcPort=58799 DstPort=8080(http-alt) Seq=144119882 Ack=174472381 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=15208 Checksum=538 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505270 0x05c08de005c08db6)] Padding=[]} 00000000 e5 af 1f 90 08 97 18 4a 0a 66 3c bd 80 18 3b 68 |.......J.f<...;h| 00000010 02 1a 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d b6 |................| --- Layer 4 --- Payload 498 byte(s) 00000000 47 45 54 20 2f 64 6f 63 2f 73 74 79 6c 65 2e 63 |GET /doc/style.c| 00000010 73 73 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 |ss HTTP/1.1..Hos| 00000020 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 38 |t: localhost:808| 00000030 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b |0..Connection: k| 00000040 65 65 70 2d 61 6c 69 76 65 0d 0a 43 61 63 68 65 |eep-alive..Cache| 00000050 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 2d 61 67 |-Control: max-ag| 00000060 65 3d 30 0d 0a 49 66 2d 4d 6f 64 69 66 69 65 64 |e=0..If-Modified| 00000070 2d 53 69 6e 63 65 3a 20 53 61 74 2c 20 30 31 20 |-Since: Sat, 01 | 00000080 44 65 63 20 32 30 31 32 20 31 38 3a 30 35 3a 35 |Dec 2012 18:05:5| 00000090 39 20 47 4d 54 0d 0a 55 73 65 72 2d 41 67 65 6e |9 GMT..User-Agen| 000000a0 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 30 20 28 |t: Mozilla/5.0 (| 000000b0 4d 61 63 69 6e 74 6f 73 68 3b 20 49 6e 74 65 6c |Macintosh; Intel| 000000c0 20 4d 61 63 20 4f 53 20 58 20 31 30 5f 38 5f 32 | Mac OS X 10_8_2| 000000d0 29 20 41 70 70 6c 65 57 65 62 4b 69 74 2f 35 33 |) AppleWebKit/53| 000000e0 37 2e 31 31 20 28 4b 48 54 4d 4c 2c 20 6c 69 6b |7.11 (KHTML, lik| 000000f0 65 20 47 65 63 6b 6f 29 20 43 68 72 6f 6d 65 2f |e Gecko) Chrome/| 00000100 32 33 2e 30 2e 31 32 37 31 2e 31 30 31 20 53 61 |23.0.1271.101 Sa| 00000110 66 61 72 69 2f 35 33 37 2e 31 31 0d 0a 41 63 63 |fari/537.11..Acc| 00000120 65 70 74 3a 20 74 65 78 74 2f 63 73 73 2c 2a 2f |ept: text/css,*/| 00000130 2a 3b 71 3d 30 2e 31 0d 0a 52 65 66 65 72 65 72 |*;q=0.1..Referer| 00000140 3a 20 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f |: http://localho| 00000150 73 74 3a 38 30 38 30 2f 70 6b 67 2f 67 69 74 68 |st:8080/pkg/gith| 00000160 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/| 00000170 67 6f 70 61 63 6b 65 74 2f 0d 0a 41 63 63 65 70 |gopacket/..Accep| 00000180 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 |t-Encoding: gzip| 00000190 2c 64 65 66 6c 61 74 65 2c 73 64 63 68 0d 0a 41 |,deflate,sdch..A| 000001a0 63 63 65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 |ccept-Language: | 000001b0 65 6e 2d 55 53 2c 65 6e 3b 71 3d 30 2e 38 0d 0a |en-US,en;q=0.8..| 000001c0 41 63 63 65 70 74 2d 43 68 61 72 73 65 74 3a 20 |Accept-Charset: | 000001d0 49 53 4f 2d 38 38 35 39 2d 31 2c 75 74 66 2d 38 |ISO-8859-1,utf-8| 000001e0 3b 71 3d 30 2e 37 2c 2a 3b 71 3d 30 2e 33 0d 0a |;q=0.7,*;q=0.3..| 000001f0 0d 0a |..| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 3c bd 08 97 1a 3c 80 10 22 e3 00 28 00 00 |.f<....<.."..(..| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=100497 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=8080(http-alt) DstPort=58799 Seq=174472381 Ack=144120380 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8931 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505312 0x05c08de005c08de0)] Padding=[]} 00000000 1f 90 e5 af 0a 66 3c bd 08 97 1a 3c 80 10 22 e3 |.....f<....<..".| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (142 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 00 62 06 40 00 00 00 00 |....`....b.@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 3c bd 08 97 1a 3c 80 18 22 e3 00 6a 00 00 |.f<....<.."..j..| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 48 54 54 50 |............HTTP| 00000050 2f 31 2e 31 20 33 30 34 20 4e 6f 74 20 4d 6f 64 |/1.1 304 Not Mod| 00000060 69 66 69 65 64 0d 0a 44 61 74 65 3a 20 53 75 6e |ified..Date: Sun| 00000070 2c 20 30 36 20 4a 61 6e 20 32 30 31 33 20 31 37 |, 06 Jan 2013 17| 00000080 3a 32 32 3a 33 32 20 47 4d 54 0d 0a 0d 0a |:22:32 GMT....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..138..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..98..] Version=6 TrafficClass=0 FlowLabel=100497 Length=98 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 00 62 06 40 00 00 00 00 00 00 00 00 |`....b.@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..66..] SrcPort=8080(http-alt) DstPort=58799 Seq=174472381 Ack=144120380 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=8931 Checksum=106 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505312 0x05c08de005c08de0)] Padding=[]} 00000000 1f 90 e5 af 0a 66 3c bd 08 97 1a 3c 80 18 22 e3 |.....f<....<..".| 00000010 00 6a 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |.j..............| --- Layer 4 --- Payload 66 byte(s) 00000000 48 54 54 50 2f 31 2e 31 20 33 30 34 20 4e 6f 74 |HTTP/1.1 304 Not| 00000010 20 4d 6f 64 69 66 69 65 64 0d 0a 44 61 74 65 3a | Modified..Date:| 00000020 20 53 75 6e 2c 20 30 36 20 4a 61 6e 20 32 30 31 | Sun, 06 Jan 201| 00000030 33 20 31 37 3a 32 32 3a 33 32 20 47 4d 54 0d 0a |3 17:22:32 GMT..| 00000040 0d 0a |..| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 1a 3c 0a 66 3c ff 80 10 3b 64 00 28 00 00 |...<.f<...;d.(..| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144120380 Ack=174472447 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=15204 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505312 0x05c08de005c08de0)] Padding=[]} 00000000 e5 af 1f 90 08 97 1a 3c 0a 66 3c ff 80 10 3b 64 |.......<.f<...;d| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 2c 06 40 00 00 00 00 |....`....,.@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 b6 1f 90 |................| 00000030 67 e3 4c 90 00 00 00 00 b0 02 ff ff 00 34 00 00 |g.L..........4..| 00000040 02 04 3f c4 01 03 03 04 01 01 08 0a 05 c0 8d e0 |..?.............| 00000050 00 00 00 00 04 02 00 00 |........| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..84..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..44..] Version=6 TrafficClass=0 FlowLabel=0 Length=44 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 2c 06 40 00 00 00 00 00 00 00 00 |`....,.@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..44..] Payload=[] SrcPort=58806 DstPort=8080(http-alt) Seq=1742949520 Ack=0 DataOffset=11 FIN=false SYN=true RST=false PSH=false ACK=false URG=false ECE=false CWR=false NS=false Window=65535 Checksum=52 Urgent=0 Options=[..8..] Padding=[0]} 00000000 e5 b6 1f 90 67 e3 4c 90 00 00 00 00 b0 02 ff ff |....g.L.........| 00000010 00 34 00 00 02 04 3f c4 01 03 03 04 01 01 08 0a |.4....?.........| 00000020 05 c0 8d e0 00 00 00 00 04 02 00 00 |............| pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 94 00 2c 06 40 00 00 00 00 |....`....,.@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 b6 |................| 00000030 26 47 47 6c 67 e3 4c 91 b0 12 ff ff 00 34 00 00 |&GGlg.L......4..| 00000040 02 04 3f c4 01 03 03 04 01 01 08 0a 05 c0 8d e0 |..?.............| 00000050 05 c0 8d e0 04 02 00 00 |........| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..84..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..44..] Version=6 TrafficClass=0 FlowLabel=100500 Length=44 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 94 00 2c 06 40 00 00 00 00 00 00 00 00 |`....,.@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..44..] Payload=[] SrcPort=8080(http-alt) DstPort=58806 Seq=642205548 Ack=1742949521 DataOffset=11 FIN=false SYN=true RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=65535 Checksum=52 Urgent=0 Options=[..8..] Padding=[0]} 00000000 1f 90 e5 b6 26 47 47 6c 67 e3 4c 91 b0 12 ff ff |....&GGlg.L.....| 00000010 00 34 00 00 02 04 3f c4 01 03 03 04 01 01 08 0a |.4....?.........| 00000020 05 c0 8d e0 05 c0 8d e0 04 02 00 00 |............| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 b6 1f 90 |................| 00000030 67 e3 4c 91 26 47 47 6d 80 10 23 d7 00 28 00 00 |g.L.&GGm..#..(..| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58806 DstPort=8080(http-alt) Seq=1742949521 Ack=642205549 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=9175 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505312 0x05c08de005c08de0)] Padding=[]} 00000000 e5 b6 1f 90 67 e3 4c 91 26 47 47 6d 80 10 23 d7 |....g.L.&GGm..#.| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 94 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 b6 |................| 00000030 26 47 47 6d 67 e3 4c 91 80 10 23 d7 00 28 00 00 |&GGmg.L...#..(..| 00000040 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=100500 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 94 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=8080(http-alt) DstPort=58806 Seq=642205549 Ack=1742949521 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=9175 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505312/96505312 0x05c08de005c08de0)] Padding=[]} 00000000 1f 90 e5 b6 26 47 47 6d 67 e3 4c 91 80 10 23 d7 |....&GGmg.L...#.| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e0 05 c0 8d e0 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (559 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 02 03 06 40 00 00 00 00 |....`......@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 1a 3c 0a 66 3c ff 80 18 3b 64 02 0b 00 00 |...<.f<...;d....| 00000040 01 01 08 0a 05 c0 8d e1 05 c0 8d e0 47 45 54 20 |............GET | 00000050 2f 64 6f 63 2f 67 6f 64 6f 63 73 2e 6a 73 20 48 |/doc/godocs.js H| 00000060 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 6c |TTP/1.1..Host: l| 00000070 6f 63 61 6c 68 6f 73 74 3a 38 30 38 30 0d 0a 43 |ocalhost:8080..C| 00000080 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b 65 65 70 2d |onnection: keep-| 00000090 61 6c 69 76 65 0d 0a 43 61 63 68 65 2d 43 6f 6e |alive..Cache-Con| 000000a0 74 72 6f 6c 3a 20 6d 61 78 2d 61 67 65 3d 30 0d |trol: max-age=0.| 000000b0 0a 49 66 2d 4d 6f 64 69 66 69 65 64 2d 53 69 6e |.If-Modified-Sin| 000000c0 63 65 3a 20 4d 6f 6e 2c 20 31 34 20 4d 61 79 20 |ce: Mon, 14 May | 000000d0 32 30 31 32 20 30 36 3a 35 37 3a 35 37 20 47 4d |2012 06:57:57 GM| 000000e0 54 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 4d |T..User-Agent: M| 000000f0 6f 7a 69 6c 6c 61 2f 35 2e 30 20 28 4d 61 63 69 |ozilla/5.0 (Maci| 00000100 6e 74 6f 73 68 3b 20 49 6e 74 65 6c 20 4d 61 63 |ntosh; Intel Mac| 00000110 20 4f 53 20 58 20 31 30 5f 38 5f 32 29 20 41 70 | OS X 10_8_2) Ap| 00000120 70 6c 65 57 65 62 4b 69 74 2f 35 33 37 2e 31 31 |pleWebKit/537.11| 00000130 20 28 4b 48 54 4d 4c 2c 20 6c 69 6b 65 20 47 65 | (KHTML, like Ge| 00000140 63 6b 6f 29 20 43 68 72 6f 6d 65 2f 32 33 2e 30 |cko) Chrome/23.0| 00000150 2e 31 32 37 31 2e 31 30 31 20 53 61 66 61 72 69 |.1271.101 Safari| 00000160 2f 35 33 37 2e 31 31 0d 0a 41 63 63 65 70 74 3a |/537.11..Accept:| 00000170 20 2a 2f 2a 0d 0a 52 65 66 65 72 65 72 3a 20 68 | */*..Referer: h| 00000180 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a |ttp://localhost:| 00000190 38 30 38 30 2f 70 6b 67 2f 67 69 74 68 75 62 2e |8080/pkg/github.| 000001a0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop| 000001b0 61 63 6b 65 74 2f 0d 0a 41 63 63 65 70 74 2d 45 |acket/..Accept-E| 000001c0 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 2c 64 65 |ncoding: gzip,de| 000001d0 66 6c 61 74 65 2c 73 64 63 68 0d 0a 41 63 63 65 |flate,sdch..Acce| 000001e0 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 65 6e 2d |pt-Language: en-| 000001f0 55 53 2c 65 6e 3b 71 3d 30 2e 38 0d 0a 41 63 63 |US,en;q=0.8..Acc| 00000200 65 70 74 2d 43 68 61 72 73 65 74 3a 20 49 53 4f |ept-Charset: ISO| 00000210 2d 38 38 35 39 2d 31 2c 75 74 66 2d 38 3b 71 3d |-8859-1,utf-8;q=| 00000220 30 2e 37 2c 2a 3b 71 3d 30 2e 33 0d 0a 0d 0a |0.7,*;q=0.3....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..555..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..515..] Version=6 TrafficClass=0 FlowLabel=0 Length=515 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 02 03 06 40 00 00 00 00 00 00 00 00 |`......@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..483..] SrcPort=58799 DstPort=8080(http-alt) Seq=144120380 Ack=174472447 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=15204 Checksum=523 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505313/96505312 0x05c08de105c08de0)] Padding=[]} 00000000 e5 af 1f 90 08 97 1a 3c 0a 66 3c ff 80 18 3b 64 |.......<.f<...;d| 00000010 02 0b 00 00 01 01 08 0a 05 c0 8d e1 05 c0 8d e0 |................| --- Layer 4 --- Payload 483 byte(s) 00000000 47 45 54 20 2f 64 6f 63 2f 67 6f 64 6f 63 73 2e |GET /doc/godocs.| 00000010 6a 73 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 |js HTTP/1.1..Hos| 00000020 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 38 |t: localhost:808| 00000030 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b |0..Connection: k| 00000040 65 65 70 2d 61 6c 69 76 65 0d 0a 43 61 63 68 65 |eep-alive..Cache| 00000050 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 2d 61 67 |-Control: max-ag| 00000060 65 3d 30 0d 0a 49 66 2d 4d 6f 64 69 66 69 65 64 |e=0..If-Modified| 00000070 2d 53 69 6e 63 65 3a 20 4d 6f 6e 2c 20 31 34 20 |-Since: Mon, 14 | 00000080 4d 61 79 20 32 30 31 32 20 30 36 3a 35 37 3a 35 |May 2012 06:57:5| 00000090 37 20 47 4d 54 0d 0a 55 73 65 72 2d 41 67 65 6e |7 GMT..User-Agen| 000000a0 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 30 20 28 |t: Mozilla/5.0 (| 000000b0 4d 61 63 69 6e 74 6f 73 68 3b 20 49 6e 74 65 6c |Macintosh; Intel| 000000c0 20 4d 61 63 20 4f 53 20 58 20 31 30 5f 38 5f 32 | Mac OS X 10_8_2| 000000d0 29 20 41 70 70 6c 65 57 65 62 4b 69 74 2f 35 33 |) AppleWebKit/53| 000000e0 37 2e 31 31 20 28 4b 48 54 4d 4c 2c 20 6c 69 6b |7.11 (KHTML, lik| 000000f0 65 20 47 65 63 6b 6f 29 20 43 68 72 6f 6d 65 2f |e Gecko) Chrome/| 00000100 32 33 2e 30 2e 31 32 37 31 2e 31 30 31 20 53 61 |23.0.1271.101 Sa| 00000110 66 61 72 69 2f 35 33 37 2e 31 31 0d 0a 41 63 63 |fari/537.11..Acc| 00000120 65 70 74 3a 20 2a 2f 2a 0d 0a 52 65 66 65 72 65 |ept: */*..Refere| 00000130 72 3a 20 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 |r: http://localh| 00000140 6f 73 74 3a 38 30 38 30 2f 70 6b 67 2f 67 69 74 |ost:8080/pkg/git| 00000150 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell| 00000160 2f 67 6f 70 61 63 6b 65 74 2f 0d 0a 41 63 63 65 |/gopacket/..Acce| 00000170 70 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 |pt-Encoding: gzi| 00000180 70 2c 64 65 66 6c 61 74 65 2c 73 64 63 68 0d 0a |p,deflate,sdch..| 00000190 41 63 63 65 70 74 2d 4c 61 6e 67 75 61 67 65 3a |Accept-Language:| 000001a0 20 65 6e 2d 55 53 2c 65 6e 3b 71 3d 30 2e 38 0d | en-US,en;q=0.8.| 000001b0 0a 41 63 63 65 70 74 2d 43 68 61 72 73 65 74 3a |.Accept-Charset:| 000001c0 20 49 53 4f 2d 38 38 35 39 2d 31 2c 75 74 66 2d | ISO-8859-1,utf-| 000001d0 38 3b 71 3d 30 2e 37 2c 2a 3b 71 3d 30 2e 33 0d |8;q=0.7,*;q=0.3.| 000001e0 0a 0d 0a |...| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 3c ff 08 97 1c 1f 80 10 22 c4 00 28 00 00 |.f<......."..(..| 00000040 01 01 08 0a 05 c0 8d e1 05 c0 8d e1 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=100497 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=8080(http-alt) DstPort=58799 Seq=174472447 Ack=144120863 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=8900 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505313/96505313 0x05c08de105c08de1)] Padding=[]} 00000000 1f 90 e5 af 0a 66 3c ff 08 97 1c 1f 80 10 22 c4 |.....f<.......".| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e1 05 c0 8d e1 |.(..............| pcap_test.go:110: -- FULL PACKET DATA (142 bytes) ------------------------------------ 00000000 1e 00 00 00 60 01 88 91 00 62 06 40 00 00 00 00 |....`....b.@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 1f 90 e5 af |................| 00000030 0a 66 3c ff 08 97 1c 1f 80 18 22 c4 00 6a 00 00 |.f<......."..j..| 00000040 01 01 08 0a 05 c0 8d e2 05 c0 8d e1 48 54 54 50 |............HTTP| 00000050 2f 31 2e 31 20 33 30 34 20 4e 6f 74 20 4d 6f 64 |/1.1 304 Not Mod| 00000060 69 66 69 65 64 0d 0a 44 61 74 65 3a 20 53 75 6e |ified..Date: Sun| 00000070 2c 20 30 36 20 4a 61 6e 20 32 30 31 33 20 31 37 |, 06 Jan 2013 17| 00000080 3a 32 32 3a 33 32 20 47 4d 54 0d 0a 0d 0a |:22:32 GMT....| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..138..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..98..] Version=6 TrafficClass=0 FlowLabel=100497 Length=98 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 01 88 91 00 62 06 40 00 00 00 00 00 00 00 00 |`....b.@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..66..] SrcPort=8080(http-alt) DstPort=58799 Seq=174472447 Ack=144120863 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=8900 Checksum=106 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505314/96505313 0x05c08de205c08de1)] Padding=[]} 00000000 1f 90 e5 af 0a 66 3c ff 08 97 1c 1f 80 18 22 c4 |.....f<.......".| 00000010 00 6a 00 00 01 01 08 0a 05 c0 8d e2 05 c0 8d e1 |.j..............| --- Layer 4 --- Payload 66 byte(s) 00000000 48 54 54 50 2f 31 2e 31 20 33 30 34 20 4e 6f 74 |HTTP/1.1 304 Not| 00000010 20 4d 6f 64 69 66 69 65 64 0d 0a 44 61 74 65 3a | Modified..Date:| 00000020 20 53 75 6e 2c 20 30 36 20 4a 61 6e 20 32 30 31 | Sun, 06 Jan 201| 00000030 33 20 31 37 3a 32 32 3a 33 32 20 47 4d 54 0d 0a |3 17:22:32 GMT..| 00000040 0d 0a |..| pcap_test.go:110: -- FULL PACKET DATA (76 bytes) ------------------------------------ 00000000 1e 00 00 00 60 00 00 00 00 20 06 40 00 00 00 00 |....`.... .@....| 00000010 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 e5 af 1f 90 |................| 00000030 08 97 1c 1f 0a 66 3d 41 80 10 3b 60 00 28 00 00 |.....f=A..;`.(..| 00000040 01 01 08 0a 05 c0 8d e2 05 c0 8d e2 |............| --- Layer 1 --- Loopback {Contents=[30, 0, 0, 0] Payload=[..72..] Family=IPv6} 00000000 1e 00 00 00 |....| --- Layer 2 --- IPv6 {Contents=[..40..] Payload=[..32..] Version=6 TrafficClass=0 FlowLabel=0 Length=32 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil} 00000000 60 00 00 00 00 20 06 40 00 00 00 00 00 00 00 00 |`.... .@........| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 01 |........| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=58799 DstPort=8080(http-alt) Seq=144120863 Ack=174472513 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=15200 Checksum=40 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:96505314/96505314 0x05c08de205c08de2)] Padding=[]} 00000000 e5 af 1f 90 08 97 1c 1f 0a 66 3d 41 80 10 3b 60 |.........f=A..;`| 00000010 00 28 00 00 01 01 08 0a 05 c0 8d e2 05 c0 8d e2 |.(..............| pcap_test.go:86: Processing file test_ethernet.pcap pcap_test.go:110: -- FULL PACKET DATA (74 bytes) ------------------------------------ 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.| 00000010 00 3c 5b 9f 40 00 40 06 c9 18 0a 01 01 02 0a 01 |.<[.@.@.........| 00000020 01 01 ae 64 00 50 93 49 c8 30 00 00 00 00 a0 02 |...d.P.I.0......| 00000030 72 10 e4 7d 00 00 02 04 05 b4 04 02 08 0a 3d 8f |r..}..........=.| 00000040 93 af 00 00 00 00 01 03 03 07 |..........| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..60..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0} 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..40..] Version=4 IHL=5 TOS=0 Length=60 Id=23455 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51480 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]} 00000000 45 00 00 3c 5b 9f 40 00 40 06 c9 18 0a 01 01 02 |E..<[.@.@.......| 00000010 0a 01 01 01 |....| --- Layer 3 --- TCP {Contents=[..40..] Payload=[] SrcPort=44644 DstPort=80(http) Seq=2471086128 Ack=0 DataOffset=10 FIN=false SYN=true RST=false PSH=false ACK=false URG=false ECE=false CWR=false NS=false Window=29200 Checksum=58493 Urgent=0 Options=[..5..] Padding=[]} 00000000 ae 64 00 50 93 49 c8 30 00 00 00 00 a0 02 72 10 |.d.P.I.0......r.| 00000010 e4 7d 00 00 02 04 05 b4 04 02 08 0a 3d 8f 93 af |.}..........=...| 00000020 00 00 00 00 01 03 03 07 |........| pcap_test.go:110: -- FULL PACKET DATA (74 bytes) ------------------------------------ 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.| 00000010 00 3c 00 00 40 00 40 06 24 b8 0a 01 01 01 0a 01 |.<..@.@.$.......| 00000020 01 02 00 50 ae 64 f9 a8 17 da 93 49 c8 31 a0 12 |...P.d.....I.1..| 00000030 16 a0 21 e6 00 00 02 04 05 b4 04 02 08 0a 03 74 |..!............t| 00000040 09 03 3d 8f 93 af 01 03 03 04 |..=.......| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..60..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0} 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..40..] Version=4 IHL=5 TOS=0 Length=60 Id=0 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=9400 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]} 00000000 45 00 00 3c 00 00 40 00 40 06 24 b8 0a 01 01 01 |E..<..@.@.$.....| 00000010 0a 01 01 02 |....| --- Layer 3 --- TCP {Contents=[..40..] Payload=[] SrcPort=80(http) DstPort=44644 Seq=4188542938 Ack=2471086129 DataOffset=10 FIN=false SYN=true RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=5792 Checksum=8678 Urgent=0 Options=[..5..] Padding=[]} 00000000 00 50 ae 64 f9 a8 17 da 93 49 c8 31 a0 12 16 a0 |.P.d.....I.1....| 00000010 21 e6 00 00 02 04 05 b4 04 02 08 0a 03 74 09 03 |!............t..| 00000020 3d 8f 93 af 01 03 03 04 |=.......| pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------ 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.| 00000010 00 34 5b a0 40 00 40 06 c9 1f 0a 01 01 02 0a 01 |.4[.@.@.........| 00000020 01 01 ae 64 00 50 93 49 c8 31 f9 a8 17 db 80 10 |...d.P.I.1......| 00000030 00 e5 66 69 00 00 01 01 08 0a 3d 8f 93 b0 03 74 |..fi......=....t| 00000040 09 03 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0} 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=23456 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51487 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]} 00000000 45 00 00 34 5b a0 40 00 40 06 c9 1f 0a 01 01 02 |E..4[.@.@.......| 00000010 0a 01 01 01 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=44644 DstPort=80(http) Seq=2471086129 Ack=4188542939 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=229 Checksum=26217 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819632/57936131 0x3d8f93b003740903)] Padding=[]} 00000000 ae 64 00 50 93 49 c8 31 f9 a8 17 db 80 10 00 e5 |.d.P.I.1........| 00000010 66 69 00 00 01 01 08 0a 3d 8f 93 b0 03 74 09 03 |fi......=....t..| pcap_test.go:110: -- FULL PACKET DATA (138 bytes) ------------------------------------ 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.| 00000010 00 7c 5b a1 40 00 40 06 c8 d6 0a 01 01 02 0a 01 |.|[.@.@.........| 00000020 01 01 ae 64 00 50 93 49 c8 31 f9 a8 17 db 80 18 |...d.P.I.1......| 00000030 00 e5 92 4f 00 00 01 01 08 0a 3d 8f 93 b0 03 74 |...O......=....t| 00000040 09 03 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 |..GET / HTTP/1.1| 00000050 0d 0a 48 6f 73 74 3a 20 31 30 2e 31 2e 31 2e 31 |..Host: 10.1.1.1| 00000060 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 |..User-Agent: cu| 00000070 72 6c 2f 37 2e 34 37 2e 30 0d 0a 41 63 63 65 70 |rl/7.47.0..Accep| 00000080 74 3a 20 2a 2f 2a 0d 0a 0d 0a |t: */*....| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..124..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0} 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..104..] Version=4 IHL=5 TOS=0 Length=124 Id=23457 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51414 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]} 00000000 45 00 00 7c 5b a1 40 00 40 06 c8 d6 0a 01 01 02 |E..|[.@.@.......| 00000010 0a 01 01 01 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..72..] SrcPort=44644 DstPort=80(http) Seq=2471086129 Ack=4188542939 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=229 Checksum=37455 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819632/57936131 0x3d8f93b003740903)] Padding=[]} 00000000 ae 64 00 50 93 49 c8 31 f9 a8 17 db 80 18 00 e5 |.d.P.I.1........| 00000010 92 4f 00 00 01 01 08 0a 3d 8f 93 b0 03 74 09 03 |.O......=....t..| --- Layer 4 --- Payload 72 byte(s) 00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..| 00000010 48 6f 73 74 3a 20 31 30 2e 31 2e 31 2e 31 0d 0a |Host: 10.1.1.1..| 00000020 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c |User-Agent: curl| 00000030 2f 37 2e 34 37 2e 30 0d 0a 41 63 63 65 70 74 3a |/7.47.0..Accept:| 00000040 20 2a 2f 2a 0d 0a 0d 0a | */*....| pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------ 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.| 00000010 00 34 1e d8 40 00 40 06 05 e8 0a 01 01 01 0a 01 |.4..@.@.........| 00000020 01 02 00 50 ae 64 f9 a8 17 db 93 49 c8 79 80 10 |...P.d.....I.y..| 00000030 01 6a 65 9c 00 00 01 01 08 0a 03 74 09 03 3d 8f |.je........t..=.| 00000040 93 b0 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0} 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=7896 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1512 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]} 00000000 45 00 00 34 1e d8 40 00 40 06 05 e8 0a 01 01 01 |E..4..@.@.......| 00000010 0a 01 01 02 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=80(http) DstPort=44644 Seq=4188542939 Ack=2471086201 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=26012 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819632 0x037409033d8f93b0)] Padding=[]} 00000000 00 50 ae 64 f9 a8 17 db 93 49 c8 79 80 10 01 6a |.P.d.....I.y...j| 00000010 65 9c 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b0 |e........t..=...| pcap_test.go:110: -- FULL PACKET DATA (89 bytes) ------------------------------------ 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.| 00000010 00 4b 1e d9 40 00 40 06 05 d0 0a 01 01 01 0a 01 |.K..@.@.........| 00000020 01 02 00 50 ae 64 f9 a8 17 db 93 49 c8 79 80 18 |...P.d.....I.y..| 00000030 01 6a 48 78 00 00 01 01 08 0a 03 74 09 03 3d 8f |.jHx.......t..=.| 00000040 93 b0 48 54 54 50 2f 31 2e 30 20 33 30 32 20 52 |..HTTP/1.0 302 R| 00000050 65 64 69 72 65 63 74 0d 0a |edirect..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..75..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0} 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..55..] Version=4 IHL=5 TOS=0 Length=75 Id=7897 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1488 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]} 00000000 45 00 00 4b 1e d9 40 00 40 06 05 d0 0a 01 01 01 |E..K..@.@.......| 00000010 0a 01 01 02 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..23..] SrcPort=80(http) DstPort=44644 Seq=4188542939 Ack=2471086201 DataOffset=8 FIN=false SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=18552 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819632 0x037409033d8f93b0)] Padding=[]} 00000000 00 50 ae 64 f9 a8 17 db 93 49 c8 79 80 18 01 6a |.P.d.....I.y...j| 00000010 48 78 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b0 |Hx.......t..=...| --- Layer 4 --- Payload 23 byte(s) 00000000 48 54 54 50 2f 31 2e 30 20 33 30 32 20 52 65 64 |HTTP/1.0 302 Red| 00000010 69 72 65 63 74 0d 0a |irect..| pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------ 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.| 00000010 00 34 5b a2 40 00 40 06 c9 1d 0a 01 01 02 0a 01 |.4[.@.@.........| 00000020 01 01 ae 64 00 50 93 49 c8 79 f9 a8 17 f2 80 10 |...d.P.I.y......| 00000030 00 e5 66 0a 00 00 01 01 08 0a 3d 8f 93 b0 03 74 |..f.......=....t| 00000040 09 03 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0} 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=23458 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51485 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]} 00000000 45 00 00 34 5b a2 40 00 40 06 c9 1d 0a 01 01 02 |E..4[.@.@.......| 00000010 0a 01 01 01 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=44644 DstPort=80(http) Seq=2471086201 Ack=4188542962 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=229 Checksum=26122 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819632/57936131 0x3d8f93b003740903)] Padding=[]} 00000000 ae 64 00 50 93 49 c8 79 f9 a8 17 f2 80 10 00 e5 |.d.P.I.y........| 00000010 66 0a 00 00 01 01 08 0a 3d 8f 93 b0 03 74 09 03 |f.......=....t..| pcap_test.go:110: -- FULL PACKET DATA (421 bytes) ------------------------------------ 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.| 00000010 01 97 1e da 40 00 40 06 04 83 0a 01 01 01 0a 01 |....@.@.........| 00000020 01 02 00 50 ae 64 f9 a8 17 f2 93 49 c8 79 80 19 |...P.d.....I.y..| 00000030 01 6a 92 5f 00 00 01 01 08 0a 03 74 09 03 3d 8f |.j._.......t..=.| 00000040 93 b0 53 65 72 76 65 72 3a 20 47 6f 41 68 65 61 |..Server: GoAhea| 00000050 64 2d 57 65 62 73 0d 0a 44 61 74 65 3a 20 57 65 |d-Webs..Date: We| 00000060 64 20 44 65 63 20 31 33 20 31 35 3a 32 39 3a 30 |d Dec 13 15:29:0| 00000070 30 20 32 30 31 37 0d 0a 50 72 61 67 6d 61 3a 20 |0 2017..Pragma: | 00000080 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d |no-cache..Cache-| 00000090 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 |Control: no-cach| 000000a0 65 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a |e..Content-Type:| 000000b0 20 74 65 78 74 2f 68 74 6d 6c 0d 0a 4c 6f 63 61 | text/html..Loca| 000000c0 74 69 6f 6e 3a 20 68 74 74 70 3a 2f 2f 31 30 2e |tion: http://10.| 000000d0 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 70 0d |1.1.1/login.asp.| 000000e0 0a 0d 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c |...<html><head><| 000000f0 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0d 0a 09 09 |/head><body>....| 00000100 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 68 61 |This document ha| 00000110 73 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 65 77 |s moved to a new| 00000120 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f | <a href="http:/| 00000130 2f 31 30 2e 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e |/10.1.1.1/login.| 00000140 61 73 70 22 3e 6c 6f 63 61 74 69 6f 6e 3c 2f 61 |asp">location</a| 00000150 3e 2e 0d 0a 09 09 50 6c 65 61 73 65 20 75 70 64 |>.....Please upd| 00000160 61 74 65 20 79 6f 75 72 20 64 6f 63 75 6d 65 6e |ate your documen| 00000170 74 73 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 |ts to reflect th| 00000180 65 20 6e 65 77 20 6c 6f 63 61 74 69 6f 6e 2e 0d |e new location..| 00000190 0a 09 09 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c |...</body></html| 000001a0 3e 0d 0a 0d 0a |>....| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..407..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0} 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..387..] Version=4 IHL=5 TOS=0 Length=407 Id=7898 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1155 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]} 00000000 45 00 01 97 1e da 40 00 40 06 04 83 0a 01 01 01 |E.....@.@.......| 00000010 0a 01 01 02 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[..355..] SrcPort=80(http) DstPort=44644 Seq=4188542962 Ack=2471086201 DataOffset=8 FIN=true SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=37471 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819632 0x037409033d8f93b0)] Padding=[]} 00000000 00 50 ae 64 f9 a8 17 f2 93 49 c8 79 80 19 01 6a |.P.d.....I.y...j| 00000010 92 5f 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b0 |._.......t..=...| --- Layer 4 --- Payload 355 byte(s) 00000000 53 65 72 76 65 72 3a 20 47 6f 41 68 65 61 64 2d |Server: GoAhead-| 00000010 57 65 62 73 0d 0a 44 61 74 65 3a 20 57 65 64 20 |Webs..Date: Wed | 00000020 44 65 63 20 31 33 20 31 35 3a 32 39 3a 30 30 20 |Dec 13 15:29:00 | 00000030 32 30 31 37 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f |2017..Pragma: no| 00000040 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f |-cache..Cache-Co| 00000050 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d |ntrol: no-cache.| 00000060 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 |.Content-Type: t| 00000070 65 78 74 2f 68 74 6d 6c 0d 0a 4c 6f 63 61 74 69 |ext/html..Locati| 00000080 6f 6e 3a 20 68 74 74 70 3a 2f 2f 31 30 2e 31 2e |on: http://10.1.| 00000090 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 70 0d 0a 0d |1.1/login.asp...| 000000a0 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 2f 68 |.<html><head></h| 000000b0 65 61 64 3e 3c 62 6f 64 79 3e 0d 0a 09 09 54 68 |ead><body>....Th| 000000c0 69 73 20 64 6f 63 75 6d 65 6e 74 20 68 61 73 20 |is document has | 000000d0 6d 6f 76 65 64 20 74 6f 20 61 20 6e 65 77 20 3c |moved to a new <| 000000e0 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 31 |a href="http://1| 000000f0 30 2e 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 |0.1.1.1/login.as| 00000100 70 22 3e 6c 6f 63 61 74 69 6f 6e 3c 2f 61 3e 2e |p">location</a>.| 00000110 0d 0a 09 09 50 6c 65 61 73 65 20 75 70 64 61 74 |....Please updat| 00000120 65 20 79 6f 75 72 20 64 6f 63 75 6d 65 6e 74 73 |e your documents| 00000130 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65 20 | to reflect the | 00000140 6e 65 77 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 09 |new location....| 00000150 09 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 0d |.</body></html>.| 00000160 0a 0d 0a |...| pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------ 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.| 00000010 00 34 5b a3 40 00 40 06 c9 1c 0a 01 01 02 0a 01 |.4[.@.@.........| 00000020 01 01 ae 64 00 50 93 49 c8 79 f9 a8 19 56 80 11 |...d.P.I.y...V..| 00000030 00 ed 64 9c 00 00 01 01 08 0a 3d 8f 93 b1 03 74 |..d.......=....t| 00000040 09 03 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0} 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=23459 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51484 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]} 00000000 45 00 00 34 5b a3 40 00 40 06 c9 1c 0a 01 01 02 |E..4[.@.@.......| 00000010 0a 01 01 01 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=44644 DstPort=80(http) Seq=2471086201 Ack=4188543318 DataOffset=8 FIN=true SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=237 Checksum=25756 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819633/57936131 0x3d8f93b103740903)] Padding=[]} 00000000 ae 64 00 50 93 49 c8 79 f9 a8 19 56 80 11 00 ed |.d.P.I.y...V....| 00000010 64 9c 00 00 01 01 08 0a 3d 8f 93 b1 03 74 09 03 |d.......=....t..| pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------ 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.| 00000010 00 34 1e db 40 00 40 06 05 e5 0a 01 01 01 0a 01 |.4..@.@.........| 00000020 01 02 00 50 ae 64 f9 a8 19 56 93 49 c8 7a 80 10 |...P.d...V.I.z..| 00000030 01 6a 64 1f 00 00 01 01 08 0a 03 74 09 03 3d 8f |.jd........t..=.| 00000040 93 b1 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0} 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=7899 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1509 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]} 00000000 45 00 00 34 1e db 40 00 40 06 05 e5 0a 01 01 01 |E..4..@.@.......| 00000010 0a 01 01 02 |....| --- Layer 3 --- TCP {Contents=[..32..] Payload=[] SrcPort=80(http) DstPort=44644 Seq=4188543318 Ack=2471086202 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=25631 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819633 0x037409033d8f93b1)] Padding=[]} 00000000 00 50 ae 64 f9 a8 19 56 93 49 c8 7a 80 10 01 6a |.P.d...V.I.z...j| 00000010 64 1f 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b1 |d........t..=...| pcap_test.go:86: Processing file test_dns.pcap pcap_test.go:110: -- FULL PACKET DATA (82 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 44 89 c4 00 00 38 11 2f 3d 6d c2 a0 04 5f d3 |.D....8./=m..._.| 00000020 5c 0e e1 a6 00 35 00 30 a5 97 f6 18 00 10 00 01 |\....5.0........| 00000030 00 00 00 00 00 01 08 70 69 63 73 6c 69 66 65 02 |.......picslife.| 00000040 72 75 00 00 01 00 01 00 00 29 10 00 00 00 80 00 |ru.......)......| 00000050 00 00 |..| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..68..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..48..] Version=4 IHL=5 TOS=0 Length=68 Id=35268 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=12093 SrcIP=109.194.160.4 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 44 89 c4 00 00 38 11 2f 3d 6d c2 a0 04 |E..D....8./=m...| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..40..] SrcPort=57766 DstPort=53(domain) Length=48 Checksum=42391} 00000000 e1 a6 00 35 00 30 a5 97 |...5.0..| --- Layer 4 --- DNS {Contents=[..40..] Payload=[] ID=63000 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..11..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 f6 18 00 10 00 01 00 00 00 00 00 01 08 70 69 63 |.............pic| 00000010 73 6c 69 66 65 02 72 75 00 00 01 00 01 00 00 29 |slife.ru.......)| 00000020 10 00 00 00 80 00 00 00 |........| pcap_test.go:110: -- FULL PACKET DATA (78 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 40 5e 9a 00 00 3a 11 78 f2 6d 3c 80 02 5f d3 |.@^...:.x.m<.._.| 00000020 5c 0f ef d4 00 35 00 2c b2 1b b2 73 00 00 00 01 |\....5.,...s....| 00000030 00 00 00 00 00 00 07 66 69 6e 61 6e 63 65 07 76 |.......finance.v| 00000040 74 6f 6d 73 6b 65 02 72 75 00 00 01 00 01 |tomske.ru.....| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..44..] Version=4 IHL=5 TOS=0 Length=64 Id=24218 Flags= FragOffset=0 TTL=58 Protocol=UDP Checksum=30962 SrcIP=109.60.128.2 DstIP=95.211.92.15 Options=[] Padding=[]} 00000000 45 00 00 40 5e 9a 00 00 3a 11 78 f2 6d 3c 80 02 |E..@^...:.x.m<..| 00000010 5f d3 5c 0f |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..36..] SrcPort=61396 DstPort=53(domain) Length=44 Checksum=45595} 00000000 ef d4 00 35 00 2c b2 1b |...5.,..| --- Layer 4 --- DNS {Contents=[..36..] Payload=[] ID=45683 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..18..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[]} 00000000 b2 73 00 00 00 01 00 00 00 00 00 00 07 66 69 6e |.s...........fin| 00000010 61 6e 63 65 07 76 74 6f 6d 73 6b 65 02 72 75 00 |ance.vtomske.ru.| 00000020 00 01 00 01 |....| pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 4a 7a 1b 40 00 34 11 1f 4b d0 45 21 15 5f d3 |.Jz.@.4..K.E!._.| 00000020 5c 0f 4a 28 00 35 00 36 03 4f 30 6f 00 00 00 01 |\.J(.5.6.O0o....| 00000030 00 00 00 00 00 01 04 6d 61 69 6c 08 67 75 72 75 |.......mail.guru| 00000040 2d 6e 65 74 03 63 6f 6d 00 00 1c 00 01 00 00 29 |-net.com.......)| 00000050 05 82 00 00 00 00 00 00 |........| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..74..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..54..] Version=4 IHL=5 TOS=0 Length=74 Id=31259 Flags=DF FragOffset=0 TTL=52 Protocol=UDP Checksum=8011 SrcIP=208.69.33.21 DstIP=95.211.92.15 Options=[] Padding=[]} 00000000 45 00 00 4a 7a 1b 40 00 34 11 1f 4b d0 45 21 15 |E..Jz.@.4..K.E!.| 00000010 5f d3 5c 0f |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..46..] SrcPort=18984 DstPort=53(domain) Length=54 Checksum=847} 00000000 4a 28 00 35 00 36 03 4f |J(.5.6.O| --- Layer 4 --- DNS {Contents=[..46..] Payload=[] ID=12399 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..17..] Type=AAAA Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=0 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 30 6f 00 00 00 01 00 00 00 00 00 01 04 6d 61 69 |0o...........mai| 00000010 6c 08 67 75 72 75 2d 6e 65 74 03 63 6f 6d 00 00 |l.guru-net.com..| 00000020 1c 00 01 00 00 29 05 82 00 00 00 00 00 00 |.....)........| pcap_test.go:110: -- FULL PACKET DATA (67 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 35 f4 7d 40 00 38 11 e1 71 50 46 60 a1 5f d3 |.5.}@.8..qPF`._.| 00000020 5c 0e 49 60 00 35 00 21 15 25 d9 d0 00 00 00 01 |\.I`.5.!.%......| 00000030 00 00 00 00 00 00 04 78 61 67 65 02 72 75 00 00 |.......xage.ru..| 00000040 1c 00 01 |...| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..53..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..33..] Version=4 IHL=5 TOS=0 Length=53 Id=62589 Flags=DF FragOffset=0 TTL=56 Protocol=UDP Checksum=57713 SrcIP=80.70.96.161 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 35 f4 7d 40 00 38 11 e1 71 50 46 60 a1 |E..5.}@.8..qPF`.| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..25..] SrcPort=18784 DstPort=53(domain) Length=33 Checksum=5413} 00000000 49 60 00 35 00 21 15 25 |I`.5.!.%| --- Layer 4 --- DNS {Contents=[..25..] Payload=[] ID=55760 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..7..] Type=AAAA Class=IN}] Answers=[] Authorities=[] Additionals=[]} 00000000 d9 d0 00 00 00 01 00 00 00 00 00 00 04 78 61 67 |.............xag| 00000010 65 02 72 75 00 00 1c 00 01 |e.ru.....| pcap_test.go:110: -- FULL PACKET DATA (85 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 47 63 8f 00 00 38 11 1a c6 4d 25 fb 4a 5f d3 |.Gc...8...M%.J_.| 00000020 5c 0e 57 96 00 35 00 33 a3 22 37 a5 00 10 00 01 |\.W..5.3."7.....| 00000030 00 00 00 00 00 01 0b 6f 6b 6e 61 6b 6f 6e 73 61 |.......oknakonsa| 00000040 6c 74 02 72 75 00 00 01 00 01 00 00 29 10 00 00 |lt.ru.......)...| 00000050 00 80 00 00 00 |.....| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..71..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..51..] Version=4 IHL=5 TOS=0 Length=71 Id=25487 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=6854 SrcIP=77.37.251.74 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 47 63 8f 00 00 38 11 1a c6 4d 25 fb 4a |E..Gc...8...M%.J| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..43..] SrcPort=22422 DstPort=53(domain) Length=51 Checksum=41762} 00000000 57 96 00 35 00 33 a3 22 |W..5.3."| --- Layer 4 --- DNS {Contents=[..43..] Payload=[] ID=14245 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..14..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 37 a5 00 10 00 01 00 00 00 00 00 01 0b 6f 6b 6e |7............okn| 00000010 61 6b 6f 6e 73 61 6c 74 02 72 75 00 00 01 00 01 |akonsalt.ru.....| 00000020 00 00 29 10 00 00 00 80 00 00 00 |..)........| pcap_test.go:110: -- FULL PACKET DATA (80 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 42 48 af 00 00 35 11 03 be 25 09 58 54 5f d3 |.BH...5...%.XT_.| 00000020 5c 0e 14 b5 00 35 00 2e 0c 9f f7 c5 00 00 00 01 |\....5..........| 00000030 00 00 00 00 00 01 05 37 33 64 6f 6d 03 63 6f 6d |.......73dom.com| 00000040 00 00 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |.......)........| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..66..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..46..] Version=4 IHL=5 TOS=0 Length=66 Id=18607 Flags= FragOffset=0 TTL=53 Protocol=UDP Checksum=958 SrcIP=37.9.88.84 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 42 48 af 00 00 35 11 03 be 25 09 58 54 |E..BH...5...%.XT| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..38..] SrcPort=5301(hacl-gs) DstPort=53(domain) Length=46 Checksum=3231} 00000000 14 b5 00 35 00 2e 0c 9f |...5....| --- Layer 4 --- DNS {Contents=[..38..] Payload=[] ID=63429 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..9..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 f7 c5 00 00 00 01 00 00 00 00 00 01 05 37 33 64 |.............73d| 00000010 6f 6d 03 63 6f 6d 00 00 01 00 01 00 00 29 10 00 |om.com.......)..| 00000020 00 00 80 00 00 00 |......| pcap_test.go:110: -- FULL PACKET DATA (77 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 3f 5e 9b 00 00 3a 11 78 f2 6d 3c 80 02 5f d3 |.?^...:.x.m<.._.| 00000020 5c 0f 42 db 00 35 00 2b eb 84 ae d8 00 00 00 01 |\.B..5.+........| 00000030 00 00 00 00 00 00 06 70 6f 67 6f 64 61 07 76 74 |.......pogoda.vt| 00000040 6f 6d 73 6b 65 02 72 75 00 00 01 00 01 |omske.ru.....| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..63..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..43..] Version=4 IHL=5 TOS=0 Length=63 Id=24219 Flags= FragOffset=0 TTL=58 Protocol=UDP Checksum=30962 SrcIP=109.60.128.2 DstIP=95.211.92.15 Options=[] Padding=[]} 00000000 45 00 00 3f 5e 9b 00 00 3a 11 78 f2 6d 3c 80 02 |E..?^...:.x.m<..| 00000010 5f d3 5c 0f |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..35..] SrcPort=17115 DstPort=53(domain) Length=43 Checksum=60292} 00000000 42 db 00 35 00 2b eb 84 |B..5.+..| --- Layer 4 --- DNS {Contents=[..35..] Payload=[] ID=44760 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..17..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[]} 00000000 ae d8 00 00 00 01 00 00 00 00 00 00 06 70 6f 67 |.............pog| 00000010 6f 64 61 07 76 74 6f 6d 73 6b 65 02 72 75 00 00 |oda.vtomske.ru..| 00000020 01 00 01 |...| pcap_test.go:110: -- FULL PACKET DATA (89 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 4b d4 46 00 00 36 11 2e f7 05 2d c0 56 5f d3 |.K.F..6....-.V_.| 00000020 5c 0e 14 b5 00 35 00 37 ea 4e 54 8c 00 00 00 01 |\....5.7.NT.....| 00000030 00 00 00 00 00 01 03 72 70 70 0b 6e 61 73 68 61 |.......rpp.nasha| 00000040 75 63 68 65 62 61 02 72 75 00 00 01 00 01 00 00 |ucheba.ru.......| 00000050 29 10 00 00 00 80 00 00 00 |)........| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..75..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..55..] Version=4 IHL=5 TOS=0 Length=75 Id=54342 Flags= FragOffset=0 TTL=54 Protocol=UDP Checksum=12023 SrcIP=5.45.192.86 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 4b d4 46 00 00 36 11 2e f7 05 2d c0 56 |E..K.F..6....-.V| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..47..] SrcPort=5301(hacl-gs) DstPort=53(domain) Length=55 Checksum=59982} 00000000 14 b5 00 35 00 37 ea 4e |...5.7.N| --- Layer 4 --- DNS {Contents=[..47..] Payload=[] ID=21644 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..18..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 54 8c 00 00 00 01 00 00 00 00 00 01 03 72 70 70 |T............rpp| 00000010 0b 6e 61 73 68 61 75 63 68 65 62 61 02 72 75 00 |.nashaucheba.ru.| 00000020 00 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |......)........| pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 4a 15 eb 00 00 51 11 9a 5c ad fc 4f 7e 5f d3 |.J....Q..\..O~_.| 00000020 5c 0e 55 00 00 35 00 36 63 cf f1 80 00 10 00 01 |\.U..5.6c.......| 00000030 00 00 00 00 00 01 04 6d 61 69 6c 08 79 61 72 69 |.......mail.yari| 00000040 73 76 65 74 03 63 6f 6d 00 00 01 00 01 00 00 29 |svet.com.......)| 00000050 10 00 00 00 80 00 00 00 |........| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..74..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..54..] Version=4 IHL=5 TOS=0 Length=74 Id=5611 Flags= FragOffset=0 TTL=81 Protocol=UDP Checksum=39516 SrcIP=173.252.79.126 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 4a 15 eb 00 00 51 11 9a 5c ad fc 4f 7e |E..J....Q..\..O~| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..46..] SrcPort=21760 DstPort=53(domain) Length=54 Checksum=25551} 00000000 55 00 00 35 00 36 63 cf |U..5.6c.| --- Layer 4 --- DNS {Contents=[..46..] Payload=[] ID=61824 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..17..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 f1 80 00 10 00 01 00 00 00 00 00 01 04 6d 61 69 |.............mai| 00000010 6c 08 79 61 72 69 73 76 65 74 03 63 6f 6d 00 00 |l.yarisvet.com..| 00000020 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |.....)........| pcap_test.go:110: -- FULL PACKET DATA (83 bytes) ------------------------------------ 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5..@..E.| 00000010 00 45 c7 ef 00 00 38 11 f6 cb c2 09 46 02 5f d3 |.E....8.....F._.| 00000020 5c 0e dd f2 00 35 00 31 5a 23 8e 36 00 10 00 01 |\....5.1Z#.6....| 00000030 00 00 00 00 00 01 09 6b 75 6b 6c 61 7a 69 6e 65 |.......kuklazine| 00000040 02 72 75 00 00 01 00 01 00 00 29 10 00 00 00 80 |.ru.......).....| 00000050 00 00 00 |...| --- Layer 1 --- Ethernet {Contents=[..14..] Payload=[..69..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0} 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5..@..| --- Layer 2 --- IPv4 {Contents=[..20..] Payload=[..49..] Version=4 IHL=5 TOS=0 Length=69 Id=51183 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=63179 SrcIP=194.9.70.2 DstIP=95.211.92.14 Options=[] Padding=[]} 00000000 45 00 00 45 c7 ef 00 00 38 11 f6 cb c2 09 46 02 |E..E....8.....F.| 00000010 5f d3 5c 0e |_.\.| --- Layer 3 --- UDP {Contents=[..8..] Payload=[..41..] SrcPort=56818 DstPort=53(domain) Length=49 Checksum=23075} 00000000 dd f2 00 35 00 31 5a 23 |...5.1Z#| --- Layer 4 --- DNS {Contents=[..41..] Payload=[] ID=36406 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..12..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]} 00000000 8e 36 00 10 00 01 00 00 00 00 00 01 09 6b 75 6b |.6...........kuk| 00000010 6c 61 7a 69 6e 65 02 72 75 00 00 01 00 01 00 00 |lazine.ru.......| 00000020 29 10 00 00 00 80 00 00 00 |)........| pcap_test.go:86: Processing file /tmp/invalid.pcap1338155158 --- PASS: TestPcapFileRead (0.02s) === RUN TestBPF pcap_test.go:141: Testing filter foobar pcap_test.go:141: Testing filter tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack) pcap_test.go:141: Testing filter tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack pcap_test.go:141: Testing filter udp pcap_test.go:141: Testing filter udp --- PASS: TestBPF (0.00s) === RUN TestBPFInstruction pcap_test.go:231: Testing BpfInstruction filter 1 pcap_test.go:243: Testing dead bpf filter 1 pcap_test.go:231: Testing BpfInstruction filter 2 pcap_test.go:243: Testing dead bpf filter 2 pcap_test.go:231: Testing BpfInstruction filter 3 pcap_test.go:243: Testing dead bpf filter 3 pcap_test.go:231: Testing BpfInstruction filter 4 pcap_test.go:243: Testing dead bpf filter 4 pcap_test.go:256: expected instruction 1 = {21 0 5 34525}, got {21 0 2 2048} pcap_test.go:256: expected instruction 2 = {48 0 0 20}, got {48 0 0 23} pcap_test.go:256: expected instruction 3 = {21 6 0 17}, got {21 6 7 17} pcap_test.go:256: expected instruction 4 = {21 0 6 44}, got {21 0 6 34525} pcap_test.go:256: expected instruction 5 = {48 0 0 54}, got {48 0 0 20} pcap_test.go:256: expected instruction 6 = {21 3 4 17}, got {21 3 0 17} pcap_test.go:256: expected instruction 7 = {21 0 3 2048}, got {21 0 3 44} pcap_test.go:256: expected instruction 8 = {48 0 0 23}, got {48 0 0 54} pcap_test.go:231: Testing BpfInstruction filter 5 --- PASS: TestBPFInstruction (0.00s) === RUN TestPCAPGoWrite --- PASS: TestPCAPGoWrite (0.00s) === RUN TestPCAPGoNgWrite --- PASS: TestPCAPGoNgWrite (0.00s) === RUN ExampleBPF --- PASS: ExampleBPF (0.00s) PASS ok github.com/google/gopacket/pcap 0.026s === RUN TestNgFileReadBE --- PASS: TestNgFileReadBE (0.00s) === RUN TestNgFileReadLE --- PASS: TestNgFileReadLE (0.00s) === RUN TestNgFileReadBEZero --- PASS: TestNgFileReadBEZero (0.00s) === RUN TestNgFileReadLEZero --- PASS: TestNgFileReadLEZero (0.00s) === RUN TestNgWriteSimple --- PASS: TestNgWriteSimple (0.00s) === RUN TestNgWriteComplex --- PASS: TestNgWriteComplex (0.00s) === RUN TestCreatePcapReader --- PASS: TestCreatePcapReader (0.00s) === RUN TestCreatePcapReaderBigEndian --- PASS: TestCreatePcapReaderBigEndian (0.00s) === RUN TestCreatePcapReaderFail --- PASS: TestCreatePcapReaderFail (0.00s) === RUN TestPacket --- PASS: TestPacket (0.00s) === RUN TestPacketNano --- PASS: TestPacketNano (0.00s) === RUN TestGzipPacket --- PASS: TestGzipPacket (0.00s) === RUN TestTruncatedGzipPacket --- PASS: TestTruncatedGzipPacket (0.00s) === RUN TestPacketBufferReuse --- PASS: TestPacketBufferReuse (0.00s) === RUN TestPacketZeroCopy --- PASS: TestPacketZeroCopy (0.00s) === RUN TestReadHeader --- PASS: TestReadHeader (0.00s) === RUN TestBadHeader --- PASS: TestBadHeader (0.00s) === RUN TestReadPacket --- PASS: TestReadPacket (0.00s) === RUN TestZeroCopy --- PASS: TestZeroCopy (0.00s) === RUN TestPacketHeader --- PASS: TestPacketHeader (0.00s) === RUN TestBadPacketHeader --- PASS: TestBadPacketHeader (0.00s) === RUN TestBigPacketData --- PASS: TestBigPacketData (0.00s) === RUN TestLinkType --- PASS: TestLinkType (0.00s) === RUN TestNotOverlapBuf --- PASS: TestNotOverlapBuf (0.00s) === RUN TestWriteHeaderNanos --- PASS: TestWriteHeaderNanos (0.00s) === RUN TestWriteHeader --- PASS: TestWriteHeader (0.00s) === RUN TestWritePacket --- PASS: TestWritePacket (0.00s) === RUN TestCaptureInfoErrors --- PASS: TestCaptureInfoErrors (0.00s) PASS ok github.com/google/gopacket/pcapgo 0.011s === RUN TestReorder --- PASS: TestReorder (0.00s) === RUN TestMaxPerSkip --- PASS: TestMaxPerSkip (0.00s) === RUN TestReorderFast --- PASS: TestReorderFast (0.00s) === RUN TestOverlap --- PASS: TestOverlap (0.00s) === RUN TestBufferedOverlap1 --- PASS: TestBufferedOverlap1 (0.00s) === RUN TestBufferedOverlapCase6 --- PASS: TestBufferedOverlapCase6 (0.00s) === RUN TestBufferedOverlapExisting --- PASS: TestBufferedOverlapExisting (0.00s) === RUN TestBufferedOverlapReemit --- PASS: TestBufferedOverlapReemit (0.00s) === RUN TestReorderRetransmission2 --- PASS: TestReorderRetransmission2 (0.00s) === RUN TestOverrun1 --- PASS: TestOverrun1 (0.00s) === RUN TestOverrun2 --- PASS: TestOverrun2 (0.00s) === RUN TestCacheLargePacket --- PASS: TestCacheLargePacket (0.00s) === RUN TestFlush --- PASS: TestFlush (0.00s) === RUN TestKeepSimpleOnBoundary --- PASS: TestKeepSimpleOnBoundary (0.00s) === RUN TestKeepSimpleNotBoundaryLive --- PASS: TestKeepSimpleNotBoundaryLive (0.00s) === RUN TestKeepSimpleNotBoundaryAlreadyKept --- PASS: TestKeepSimpleNotBoundaryAlreadyKept (0.00s) === RUN TestKeepLonger --- PASS: TestKeepLonger (0.00s) === RUN TestKeepWithFlush --- PASS: TestKeepWithFlush (0.00s) === RUN TestKeepWithOutOfOrderPacketAndManualFlush --- PASS: TestKeepWithOutOfOrderPacketAndManualFlush (0.00s) === RUN TestFSMnormalFlow --- PASS: TestFSMnormalFlow (0.00s) === RUN TestFSMearlyRST --- PASS: TestFSMearlyRST (0.00s) === RUN TestFSMestablishedThenRST --- PASS: TestFSMestablishedThenRST (0.00s) === RUN TestFSMmissingSYNACK --- PASS: TestFSMmissingSYNACK (0.00s) === RUN TestMemoryShrink --- PASS: TestMemoryShrink (0.02s) === RUN TestFullyOrderedAndCompleteStreamDoesNotAlloc --- PASS: TestFullyOrderedAndCompleteStreamDoesNotAlloc (0.00s) === RUN TestReassemblyObjectCaptureInfo --- PASS: TestReassemblyObjectCaptureInfo (0.00s) === RUN TestCheckFSM --- PASS: TestCheckFSM (0.00s) === RUN TestCheckFSMmissingSYNACK --- PASS: TestCheckFSMmissingSYNACK (0.00s) === RUN TestCheckFSMmissingSYN --- PASS: TestCheckFSMmissingSYN (0.00s) === RUN TestCheckOptions --- PASS: TestCheckOptions (0.00s) PASS ok github.com/google/gopacket/reassembly 0.075s ? github.com/google/gopacket/routing [no test files] === RUN TestSequenceOverflow --- PASS: TestSequenceOverflow (0.00s) === RUN TestReorder --- PASS: TestReorder (0.00s) === RUN TestMaxPerSkip --- PASS: TestMaxPerSkip (0.00s) === RUN TestReorderFast --- PASS: TestReorderFast (0.00s) === RUN TestOverlap --- PASS: TestOverlap (0.00s) === RUN TestBufferedOverlap --- PASS: TestBufferedOverlap (0.00s) === RUN TestOverrun1 --- PASS: TestOverrun1 (0.00s) === RUN TestOverrun2 --- PASS: TestOverrun2 (0.00s) === RUN TestCacheLargePacket --- PASS: TestCacheLargePacket (0.00s) PASS ok github.com/google/gopacket/tcpassembly 0.029s === RUN TestRead Waiting for read 0 Assembling 0 Got read Waiting for read 1 Assembly done Assembling 1 Assembly done Got read All done reads --- PASS: TestRead (0.00s) === RUN TestReadSmallChunks Waiting for read 0 Assembling 0 Got read Waiting for read 1 Got read Waiting for read 2 Assembly done Assembling 1 Assembly done Got read All done reads --- PASS: TestReadSmallChunks (0.00s) === RUN ExampleDiscardBytesToEOF --- PASS: ExampleDiscardBytesToEOF (0.00s) PASS ok github.com/google/gopacket/tcpassembly/tcpreader 0.013s create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=golang dh_prep -O--buildsystem=golang dh_auto_install --destdir=debian/golang-github-google-gopacket-dev/ -O--buildsystem=golang dh_installdocs -O--buildsystem=golang dh_installchangelogs -O--buildsystem=golang dh_installsystemduser -O--buildsystem=golang dh_perl -O--buildsystem=golang dh_link -O--buildsystem=golang dh_strip_nondeterminism -O--buildsystem=golang dh_compress -O--buildsystem=golang dh_fixperms -O--buildsystem=golang dh_missing -O--buildsystem=golang dh_installdeb -O--buildsystem=golang dh_golang -O--buildsystem=golang dh_gencontrol -O--buildsystem=golang dpkg-gencontrol: warning: Depends field of package golang-github-google-gopacket-dev: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -O--buildsystem=golang dh_builddeb -O--buildsystem=golang dpkg-deb: building package 'golang-github-google-gopacket-dev' in '../golang-github-google-gopacket-dev_1.1.19-3_all.deb'. dpkg-genbuildinfo --build=binary -O../gopacket_1.1.19-3_i386.buildinfo dpkg-genchanges --build=binary -O../gopacket_1.1.19-3_i386.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: user script /srv/workspace/pbuilder/14772/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/14772/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/14772 and its subdirectories I: Current time: Fri Jul 12 21:09:58 +14 2024 I: pbuilder-time-stamp: 1720768198