[pkg-go] Bug#1028841: gopacket: FTBFS: pcap_test.go:26: Error returned for nonexistent file: /path/to/nonexistent/file: No such file or directory

Lucas Nussbaum lucas at debian.org
Sat Jan 14 12:58:45 GMT 2023


Source: gopacket
Version: 1.1.19-2
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20230113 ftbfs-bookworm

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_configure
> 	Copy time.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/time.go
> 	Copy layerclass.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layerclass.go
> 	Copy doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/doc.go
> 	Copy packet_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/packet_test.go
> 	Copy flows.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/flows.go
> 	Copy gen.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/gen.go
> 	Copy benchmark_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/benchmark_test.go
> 	Copy layers_decoder.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers_decoder.go
> 	Copy decode.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/decode.go
> 	Copy go.mod -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/go.mod
> 	Copy writer.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/writer.go
> 	Copy parser.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/parser.go
> 	Copy base.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/base.go
> 	Copy go.sum -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/go.sum
> 	Copy writer_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/writer_test.go
> 	Copy time_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/time_test.go
> 	Copy layertype.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layertype.go
> 	Copy packet.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/packet.go
> 	Copy layers/lldp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/lldp_test.go
> 	Copy layers/layertypes.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/layertypes.go
> 	Copy layers/tls.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls.go
> 	Copy layers/tls_cipherspec.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls_cipherspec.go
> 	Copy layers/erspan2.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/erspan2.go
> 	Copy layers/dns_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dns_test.go
> 	Copy layers/asf_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/asf_test.go
> 	Copy layers/vrrp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/vrrp.go
> 	Copy layers/vxlan_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/vxlan_test.go
> 	Copy layers/cdp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/cdp.go
> 	Copy layers/doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/doc.go
> 	Copy layers/ntp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ntp.go
> 	Copy layers/asf.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/asf.go
> 	Copy layers/radius.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/radius.go
> 	Copy layers/radius_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/radius_test.go
> 	Copy layers/pppoe.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/pppoe.go
> 	Copy layers/icmp4.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp4.go
> 	Copy layers/base_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/base_test.go
> 	Copy layers/igmp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/igmp_test.go
> 	Copy layers/mldv1_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mldv1_test.go
> 	Copy layers/eapol_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/eapol_test.go
> 	Copy layers/tcp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tcp.go
> 	Copy layers/pflog.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/pflog.go
> 	Copy layers/eap.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/eap.go
> 	Copy layers/vxlan.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/vxlan.go
> 	Copy layers/dot1q_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dot1q_test.go
> 	Copy layers/gen.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gen.go
> 	Copy layers/prism_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/prism_test.go
> 	Copy layers/lcm_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/lcm_test.go
> 	Copy layers/gre_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gre_test.go
> 	Copy layers/sip.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/sip.go
> 	Copy layers/geneve_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/geneve_test.go
> 	Copy layers/tcp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tcp_test.go
> 	Copy layers/usb.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/usb.go
> 	Copy layers/rmcp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/rmcp.go
> 	Copy layers/ppp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ppp.go
> 	Copy layers/etherip.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/etherip.go
> 	Copy layers/prism.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/prism.go
> 	Copy layers/tls_handshake.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls_handshake.go
> 	Copy layers/rudp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/rudp.go
> 	Copy layers/gtp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gtp_test.go
> 	Copy layers/icmp6hopbyhop_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6hopbyhop_test.go
> 	Copy layers/icmp6msg_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6msg_test.go
> 	Copy layers/asf_presencepong.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/asf_presencepong.go
> 	Copy layers/icmp6_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6_test.go
> 	Copy layers/icmp6NDflags_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6NDflags_test.go
> 	Copy layers/ipsec_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ipsec_test.go
> 	Copy layers/ctp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ctp.go
> 	Copy layers/ip4_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ip4_test.go
> 	Copy layers/decode_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/decode_test.go
> 	Copy layers/ip6_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ip6_test.go
> 	Copy layers/loopback.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/loopback.go
> 	Copy layers/ip4.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ip4.go
> 	Copy layers/dot1q.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dot1q.go
> 	Copy layers/lcm.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/lcm.go
> 	Copy layers/enums_generated.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/enums_generated.go
> 	Copy layers/arp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/arp.go
> 	Copy layers/ip6.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ip6.go
> 	Copy layers/dns.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dns.go
> 	Copy layers/llc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/llc.go
> 	Copy layers/lldp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/lldp.go
> 	Copy layers/ospf.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ospf.go
> 	Copy layers/dot11_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dot11_test.go
> 	Copy layers/udplite.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/udplite.go
> 	Copy layers/tls_alert.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls_alert.go
> 	Copy layers/vrrp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/vrrp_test.go
> 	Copy layers/mldv2_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mldv2_test.go
> 	Copy layers/ospf_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ospf_test.go
> 	Copy layers/igmp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/igmp.go
> 	Copy layers/dhcp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dhcp_test.go
> 	Copy layers/dhcpv6_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dhcpv6_test.go
> 	Copy layers/icmp6msg.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6msg.go
> 	Copy layers/endpoints_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/endpoints_test.go
> 	Copy layers/bfd.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/bfd.go
> 	Copy layers/endpoints.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/endpoints.go
> 	Copy layers/dhcpv6.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dhcpv6.go
> 	Copy layers/sip_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/sip_test.go
> 	Copy layers/udp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/udp.go
> 	Copy layers/iana_ports.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/iana_ports.go
> 	Copy layers/tls_appdata.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls_appdata.go
> 	Copy layers/tcpip.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tcpip.go
> 	Copy layers/dhcpv4.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dhcpv4.go
> 	Copy layers/asf_presencepong_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/asf_presencepong_test.go
> 	Copy layers/modbustcp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/modbustcp.go
> 	Copy layers/sctp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/sctp.go
> 	Copy layers/usb_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/usb_test.go
> 	Copy layers/udp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/udp_test.go
> 	Copy layers/ntp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ntp_test.go
> 	Copy layers/base.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/base.go
> 	Copy layers/dhcpv6_options.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dhcpv6_options.go
> 	Copy layers/tls_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tls_test.go
> 	Copy layers/ports.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ports.go
> 	Copy layers/radiotap.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/radiotap.go
> 	Copy layers/gre.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gre.go
> 	Copy layers/rmcp_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/rmcp_test.go
> 	Copy layers/eapol.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/eapol.go
> 	Copy layers/mldv2.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mldv2.go
> 	Copy layers/mpls.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mpls.go
> 	Copy layers/erspan2_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/erspan2_test.go
> 	Copy layers/fuzz_layer.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/fuzz_layer.go
> 	Copy layers/dot11.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/dot11.go
> 	Copy layers/gen2.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gen2.go
> 	Copy layers/enums.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/enums.go
> 	Copy layers/stp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/stp.go
> 	Copy layers/fddi.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/fddi.go
> 	Copy layers/icmp6.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/icmp6.go
> 	Copy layers/ipsec.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ipsec.go
> 	Copy layers/sflow_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/sflow_test.go
> 	Copy layers/geneve.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/geneve.go
> 	Copy layers/bfd_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/bfd_test.go
> 	Copy layers/sflow.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/sflow.go
> 	Copy layers/linux_sll.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/linux_sll.go
> 	Copy layers/tcpip_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/tcpip_test.go
> 	Copy layers/mpls_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mpls_test.go
> 	Copy layers/mldv1.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/mldv1.go
> 	Copy layers/ethernet.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ethernet.go
> 	Copy layers/ndp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/ndp.go
> 	Copy layers/radiotap_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/radiotap_test.go
> 	Copy layers/gtp.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/layers/gtp.go
> 	Copy pcap/bpf_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/bpf_test.go
> 	Copy pcap/doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/doc.go
> 	Copy pcap/pcap_tester.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcap_tester.go
> 	Copy pcap/pcap_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcap_test.go
> 	Copy pcap/defs_windows_amd64.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/defs_windows_amd64.go
> 	Copy pcap/pcapgo_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcapgo_test.go
> 	Copy pcap/pcap_windows.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcap_windows.go
> 	Copy pcap/generate_defs.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/generate_defs.go
> 	Copy pcap/pcap.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcap.go
> 	Copy pcap/pcap_unix.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcap_unix.go
> 	Copy pcap/defs_windows_386.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/defs_windows_386.go
> 	Copy pcap/pcapnggo_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/pcapnggo_test.go
> 	Copy pcap/gopacket_benchmark/benchmark.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go
> 	Copy defrag/lcmdefrag/lcmdefrag_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go
> 	Copy defrag/lcmdefrag/lcmdefrag.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag.go
> 	Copy routing/routing.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/routing/routing.go
> 	Copy routing/other.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/routing/other.go
> 	Copy routing/common.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/routing/common.go
> 	Copy pcapgo/ngread.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/ngread.go
> 	Copy pcapgo/write.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/write.go
> 	Copy pcapgo/snoop.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/snoop.go
> 	Copy pcapgo/doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/doc.go
> 	Copy pcapgo/capture.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/capture.go
> 	Copy pcapgo/pcapng.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/pcapng.go
> 	Copy pcapgo/ngread_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/ngread_test.go
> 	Copy pcapgo/ngwrite.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/ngwrite.go
> 	Copy pcapgo/write_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/write_test.go
> 	Copy pcapgo/read_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/read_test.go
> 	Copy pcapgo/read.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/read.go
> 	Copy pcapgo/snoop_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/snoop_test.go
> 	Copy pcapgo/capture_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/capture_test.go
> 	Copy pcapgo/ngwrite_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcapgo/ngwrite_test.go
> 	Copy ip4defrag/defrag.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/ip4defrag/defrag.go
> 	Copy ip4defrag/defrag_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/ip4defrag/defrag_test.go
> 	Copy examples/arpscan/arpscan.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/arpscan/arpscan.go
> 	Copy examples/synscan/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/synscan/main.go
> 	Copy examples/util/util.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/util/util.go
> 	Copy examples/statsassembly/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/statsassembly/main.go
> 	Copy examples/afpacket/afpacket.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/afpacket/afpacket.go
> 	Copy examples/pfdump/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/pfdump/main.go
> 	Copy examples/pcapdump/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/pcapdump/main.go
> 	Copy examples/bidirectional/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/bidirectional/main.go
> 	Copy examples/snoopread/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/snoopread/main.go
> 	Copy examples/reassemblydump/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/reassemblydump/main.go
> 	Copy examples/pcaplay/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/pcaplay/main.go
> 	Copy examples/httpassembly/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/httpassembly/main.go
> 	Copy examples/bytediff/main.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/examples/bytediff/main.go
> 	Copy bsdbpf/bsd_bpf_sniffer.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go
> 	Copy tcpassembly/assembly_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/tcpassembly/assembly_test.go
> 	Copy tcpassembly/assembly.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/tcpassembly/assembly.go
> 	Copy tcpassembly/tcpreader/reader_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go
> 	Copy tcpassembly/tcpreader/reader.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/tcpassembly/tcpreader/reader.go
> 	Copy afpacket/options.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/afpacket/options.go
> 	Copy afpacket/sockopt_linux.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/afpacket/sockopt_linux.go
> 	Copy afpacket/afpacket.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/afpacket/afpacket.go
> 	Copy afpacket/header.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/afpacket/header.go
> 	Copy afpacket/afpacket_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/afpacket/afpacket_test.go
> 	Copy pfring/doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pfring/doc.go
> 	Copy pfring/pfring_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pfring/pfring_test.go
> 	Copy pfring/pfring.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/pfring/pfring.go
> 	Copy macs/doc.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/macs/doc.go
> 	Copy macs/gen.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/macs/gen.go
> 	Copy macs/benchmark_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/macs/benchmark_test.go
> 	Copy macs/valid_mac_prefixes.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/macs/valid_mac_prefixes.go
> 	Copy reassembly/tcpassembly.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/tcpassembly.go
> 	Copy reassembly/tcpcheck_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/tcpcheck_test.go
> 	Copy reassembly/memory.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/memory.go
> 	Copy reassembly/tcpassembly_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/tcpassembly_test.go
> 	Copy reassembly/tcpcheck.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/tcpcheck.go
> 	Copy reassembly/cap2test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/reassembly/cap2test.go
> 	Copy dumpcommand/tcpdump.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/dumpcommand/tcpdump.go
> 	Copy bytediff/bytediff.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/bytediff/bytediff.go
> 	Copy bytediff/bytediff_test.go -> obj-x86_64-linux-gnu/src/github.com/google/gopacket/bytediff/bytediff_test.go
> 	Symlink /usr/share/gocode/src/code.google.com -> obj-x86_64-linux-gnu/src/code.google.com
> 	Symlink /usr/share/gocode/src/golang.org -> obj-x86_64-linux-gnu/src/golang.org
> rm -rf obj-*/src/github.com/google/gopacket/examples obj-*/src/github.com/google/gopacket/pcap/gopacket_benchmark
> # Copy test files to build dir
> cp pcap/*.pcap obj-x86_64-linux-gnu/src/github.com/google/gopacket/pcap/
> cp -r pcapgo obj-x86_64-linux-gnu/src/github.com/google/gopacket/
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_build -O--buildsystem=golang
> 	cd obj-x86_64-linux-gnu && go version
> go version go1.19.4 linux/amd64
> 	cd obj-x86_64-linux-gnu && go env
> GO111MODULE="off"
> GOARCH="amd64"
> GOBIN=""
> GOCACHE="/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/go-build"
> GOENV="/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.config/go/env"
> GOEXE=""
> GOEXPERIMENT=""
> GOFLAGS=""
> GOHOSTARCH="amd64"
> GOHOSTOS="linux"
> GOINSECURE=""
> GOMODCACHE="/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/pkg/mod"
> GONOPROXY=""
> GONOSUMDB=""
> GOOS="linux"
> GOPATH="/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu"
> GOPRIVATE=""
> GOPROXY="off"
> GOROOT="/usr/lib/go-1.19"
> GOSUMDB="sum.golang.org"
> GOTMPDIR=""
> GOTOOLDIR="/usr/lib/go-1.19/pkg/tool/linux_amd64"
> GOVCS=""
> GOVERSION="go1.19.4"
> GCCGO="gccgo"
> GOAMD64="v1"
> AR="ar"
> CC="gcc"
> CXX="g++"
> CGO_ENABLED="1"
> GOMOD=""
> GOWORK=""
> CGO_CFLAGS="-g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security"
> CGO_CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2"
> CGO_CXXFLAGS="-g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security"
> CGO_FFLAGS="-g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=."
> CGO_LDFLAGS="-Wl,-z,relro"
> PKG_CONFIG="pkg-config"
> GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3359670367=/tmp/go-build -gno-record-gcc-switches"
> 	cd obj-x86_64-linux-gnu && go install -trimpath -v -p 8 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/pfring github.com/google/gopacket/reassembly github.com/google/gopacket/routing github.com/google/gopacket/tcpassembly github.com/google/gopacket/tcpassembly/tcpreader
> internal/unsafeheader
> internal/goos
> internal/goexperiment
> internal/goarch
> internal/race
> internal/cpu
> runtime/internal/syscall
> runtime/internal/atomic
> sync/atomic
> unicode
> internal/abi
> runtime/internal/math
> runtime/internal/sys
> unicode/utf8
> internal/itoa
> math/bits
> internal/nettrace
> encoding
> container/list
> github.com/google/gopacket/pfring
> github.com/google/gopacket/macs
> internal/bytealg
> math
> runtime
> internal/reflectlite
> sync
> internal/singleflight
> internal/testlog
> runtime/cgo
> errors
> sort
> io
> internal/oserror
> strconv
> internal/safefilepath
> path
> vendor/golang.org/x/net/dns/dnsmessage
> syscall
> strings
> hash
> bytes
> hash/crc32
> reflect
> bufio
> internal/syscall/execenv
> internal/syscall/unix
> time
> io/fs
> context
> internal/poll
> os
> encoding/binary
> internal/fmtsort
> golang.org/x/sys/unix
> internal/godebug
> fmt
> internal/intern
> net/netip
> net
> encoding/hex
> runtime/debug
> golang.org/x/net/bpf
> github.com/google/gopacket/bytediff
> flag
> log
> compress/flate
> 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/reassembly
> github.com/google/gopacket/tcpassembly
> github.com/google/gopacket/pcap
> github.com/google/gopacket/ip4defrag
> github.com/google/gopacket/pcapgo
> github.com/google/gopacket/dumpcommand
> github.com/google/gopacket/tcpassembly/tcpreader
>    dh_auto_test -O--buildsystem=golang
> 	cd obj-x86_64-linux-gnu && go test -vet=off -v -p 8 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/pfring 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.002s
> === 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.031s
> ?   	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.020s
> === 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.038s
> 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  |....`...... at ....|
>         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  |`...... at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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(&#3|
>         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&#3|
>         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(&#34|
>         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  |....`...?.. at ....|
>         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(&#3|
>         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>&nbsp|
>         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>  &nbsp|
>         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>  &nbsp|
>         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>&nbsp|
>         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  |`...?.. at ........|
>         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&#39|
>         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&#39|
>         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!&#34|
>         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, &#3|
>         00001ea0  34 3b 4d 79 4c 61 79 65  72 54 79 70 65 26 23 33  |4;MyLayerType&#3|
>         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>  &nbsp|
>         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>  &nbsp|
>         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>  &nbsp|
>         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>  &nbsp|
>         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>  &nbsp|
>         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  |....`...?.. at ....|
>         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&#39|
>         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&#3|
>         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  |`...?.. at ........|
>         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&#39|
>         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&#39|
>         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&#3|
>         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&#3|
>         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  |....`...?.. at ....|
>         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(&#34|
>         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  |`...?.. at ........|
>         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&#3|
>         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{&#3|
>         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&#39|
>         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&#39|
>         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&#39|
>         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  |....`...... at ....|
>         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  |`...... at ........|
>         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>&nbsp|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`....$. at ....|
>         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  |`....$. at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`...... at ....|
>         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  |`...... at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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. at ....|
>         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. at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`....,. at ....|
>         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  |`....,. at ........|
>         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  |....`....,. at ....|
>         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  |`....,. at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |....`...... at ....|
>         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  |`...... at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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. at ....|
>         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. at ........|
>         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  |....`.... . at ....|
>         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  |`.... . at ........|
>         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  |.<[. at .@.........|
>         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..<[. at .@.......|
>         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  |.<.. at .@.$.......|
>         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..<.. at .@.$.....|
>         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[. at .@.........|
>         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[. at .@.......|
>         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  |.|[. at .@.........|
>         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..|[. at .@.......|
>         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.. at .@.........|
>         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.. at .@.......|
>         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.. at .@.........|
>         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.. at .@.......|
>         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[. at .@.........|
>         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[. at .@.......|
>         00000010  0a 01 01 01                                       |....|
>         --- Layer 3 ---
>         TCP	{Contents=[..32..] Payload=[