[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(|
> 00000ca0 34 3b 54 68 69 73 20 69 73 20 61 20 54 43 50 20 |4;This is a TCP |
> 00000cb0 70 61 63 6b 65 74 21 26 23 33 34 3b 29 0a 20 20 |packet!"). |
> 00000cc0 2f 2f 20 47 65 74 20 61 63 74 75 61 6c 20 54 43 |// Get actual TC|
> 00000cd0 50 20 64 61 74 61 20 66 72 6f 6d 20 74 68 69 73 |P data from this|
> 00000ce0 20 6c 61 79 65 72 0a 20 20 74 63 70 2c 20 5f 20 | layer. tcp, _ |
> 00000cf0 3a 3d 20 74 63 70 4c 61 79 65 72 2e 28 2a 6c 61 |:= tcpLayer.(*la|
> 00000d00 79 65 72 73 2e 54 43 50 29 0a 20 20 66 6d 74 2e |yers.TCP). fmt.|
> 00000d10 50 72 69 6e 74 66 28 26 23 33 34 3b 46 72 6f 6d |Printf("From|
> 00000d20 20 73 72 63 20 70 6f 72 74 20 25 64 20 74 6f 20 | src port %d to |
> 00000d30 64 73 74 20 70 6f 72 74 20 25 64 5c 6e 26 23 33 |dst port %d\n|
> 00000d40 34 3b 2c 20 74 63 70 2e 53 72 63 50 6f 72 74 2c |4;, tcp.SrcPort,|
> 00000d50 20 74 63 70 2e 44 73 74 50 6f 72 74 29 0a 7d 0a | tcp.DstPort).}.|
> 00000d60 2f 2f 20 49 74 65 72 61 74 65 20 6f 76 65 72 20 |// Iterate over |
> 00000d70 61 6c 6c 20 6c 61 79 65 72 73 2c 20 70 72 69 6e |all layers, prin|
> 00000d80 74 69 6e 67 20 6f 75 74 20 65 61 63 68 20 6c 61 |ting out each la|
> 00000d90 79 65 72 20 74 79 70 65 0a 66 6f 72 20 6c 61 79 |yer type.for lay|
> 00000da0 65 72 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b |er := range pack|
> 00000db0 65 74 2e 4c 61 79 65 72 73 28 29 20 7b 0a 20 20 |et.Layers() {. |
> 00000dc0 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 23 33 34 |fmt.Println("|
> 00000dd0 3b 50 41 43 4b 45 54 20 4c 41 59 45 52 3a 26 23 |;PACKET LAYER:&#|
> 00000de0 33 34 3b 2c 20 6c 61 79 65 72 2e 4c 61 79 65 72 |34;, layer.Layer|
> 00000df0 54 79 70 65 28 29 29 0a 7d 0a 3c 2f 70 72 65 3e |Type()).}.</pre>|
> 00000e00 0a 3c 70 3e 0a 50 61 63 6b 65 74 73 20 63 61 6e |.<p>.Packets can|
> 00000e10 20 62 65 20 64 65 63 6f 64 65 64 20 66 72 6f 6d | be decoded from|
> 00000e20 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 73 74 61 | a number of sta|
> 00000e30 72 74 69 6e 67 20 70 6f 69 6e 74 73 2e 20 20 4d |rting points. M|
> 00000e40 61 6e 79 20 6f 66 20 6f 75 72 20 62 61 73 65 0a |any of our base.|
> 00000e50 74 79 70 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 |types implement |
> 00000e60 44 65 63 6f 64 65 72 2c 20 77 68 69 63 68 20 61 |Decoder, which a|
> 00000e70 6c 6c 6f 77 20 75 73 20 74 6f 20 64 65 63 6f 64 |llow us to decod|
> 00000e80 65 20 70 61 63 6b 65 74 73 20 66 6f 72 20 77 68 |e packets for wh|
> 00000e90 69 63 68 0a 77 65 20 64 6f 6e 26 23 33 39 3b 74 |ich.we don't|
> 00000ea0 20 68 61 76 65 20 66 75 6c 6c 20 64 61 74 61 2e | have full data.|
> 00000eb0 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 44 65 |.</p>.<pre>// De|
> 00000ec0 63 6f 64 65 20 61 6e 20 65 74 68 65 72 6e 65 74 |code an ethernet|
> 00000ed0 20 70 61 63 6b 65 74 0a 65 74 68 50 20 3a 3d 20 | packet.ethP := |
> 00000ee0 67 6f 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b |gopacket.NewPack|
> 00000ef0 65 74 28 70 31 2c 20 6c 61 79 65 72 73 2e 4c 61 |et(p1, layers.La|
> 00000f00 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 74 2c |yerTypeEthernet,|
> 00000f10 20 67 6f 70 61 63 6b 65 74 2e 44 65 66 61 75 6c | gopacket.Defaul|
> 00000f20 74 29 0a 2f 2f 20 44 65 63 6f 64 65 20 61 6e 20 |t).// Decode an |
> 00000f30 49 50 76 36 20 68 65 61 64 65 72 20 61 6e 64 20 |IPv6 header and |
> 00000f40 65 76 65 72 79 74 68 69 6e 67 20 69 74 20 63 6f |everything it co|
> 00000f50 6e 74 61 69 6e 73 0a 69 70 50 20 3a 3d 20 67 6f |ntains.ipP := go|
> 00000f60 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 |packet.NewPacket|
> 00000f70 28 70 32 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 |(p2, layers.Laye|
> 00000f80 72 54 79 70 65 49 50 76 36 2c 20 67 6f 70 61 63 |rTypeIPv6, gopac|
> 00000f90 6b 65 74 2e 44 65 66 61 75 6c 74 29 0a 2f 2f 20 |ket.Default).// |
> 00000fa0 44 65 63 6f 64 65 20 61 20 54 43 50 20 68 65 61 |Decode a TCP hea|
> 00000fb0 64 65 72 20 61 6e 64 20 69 74 73 20 70 61 79 6c |der and its payl|
> 00000fc0 6f 61 64 0a 74 63 70 50 20 3a 3d 20 67 6f 70 61 |oad.tcpP := gopa|
> 00000fd0 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 70 |cket.NewPacket(p|
> 00000fe0 33 2c 20 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 |3, layers.LayerT|
> 00000ff0 79 70 65 54 43 50 2c 20 67 6f 70 61 63 6b 65 74 |ypeTCP, gopacket|
>
> pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------
> 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?.. 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(|
> 00001d00 34 3b 46 6f 75 6e 64 20 74 68 61 74 20 55 44 50 |4;Found that UDP|
> 00001d10 20 66 6c 6f 77 20 49 20 77 61 73 20 6c 6f 6f 6b | flow I was look|
> 00001d20 69 6e 67 20 66 6f 72 21 26 23 33 34 3b 29 0a 7d |ing for!").}|
> 00001d30 0a 3c 2f 70 72 65 3e 0a 3c 68 33 20 69 64 3d 22 |.</pre>.<h3 id="|
> 00001d40 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 5f 59 6f 75 |Implementing_You|
> 00001d50 72 5f 4f 77 6e 5f 44 65 63 6f 64 65 72 22 3e 49 |r_Own_Decoder">I|
> 00001d60 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 59 6f 75 72 |mplementing Your|
> 00001d70 20 4f 77 6e 20 44 65 63 6f 64 65 72 3c 2f 68 33 | Own Decoder</h3|
> 00001d80 3e 0a 3c 70 3e 0a 49 66 20 79 6f 75 72 20 6e 65 |>.<p>.If your ne|
> 00001d90 74 77 6f 72 6b 20 68 61 73 20 73 6f 6d 65 20 73 |twork has some s|
> 00001da0 74 72 61 6e 67 65 20 65 6e 63 61 70 73 75 6c 61 |trange encapsula|
> 00001db0 74 69 6f 6e 2c 20 79 6f 75 20 63 61 6e 20 69 6d |tion, you can im|
> 00001dc0 70 6c 65 6d 65 6e 74 20 79 6f 75 72 20 6f 77 6e |plement your own|
> 00001dd0 0a 64 65 63 6f 64 65 72 2e 20 20 49 6e 20 74 68 |.decoder. In th|
> 00001de0 69 73 20 65 78 61 6d 70 6c 65 2c 20 77 65 20 68 |is example, we h|
> 00001df0 61 6e 64 6c 65 20 45 74 68 65 72 6e 65 74 20 70 |andle Ethernet p|
> 00001e00 61 63 6b 65 74 73 20 77 68 69 63 68 20 61 72 65 |ackets which are|
> 00001e10 20 65 6e 63 61 70 73 75 6c 61 74 65 64 0a 69 6e | encapsulated.in|
> 00001e20 20 61 20 34 2d 62 79 74 65 20 68 65 61 64 65 72 | a 4-byte header|
> 00001e30 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f 2f 20 43 |..</p>.<pre>// C|
> 00001e40 72 65 61 74 65 20 61 20 6c 61 79 65 72 20 74 79 |reate a layer ty|
> 00001e50 70 65 2c 20 73 68 6f 75 6c 64 20 62 65 20 75 6e |pe, should be un|
> 00001e60 69 71 75 65 20 61 6e 64 20 68 69 67 68 2c 20 73 |ique and high, s|
> 00001e70 6f 20 69 74 20 64 6f 65 73 6e 26 23 33 39 3b 74 |o it doesn't|
> 00001e80 20 63 6f 6e 66 6c 69 63 74 2c 0a 2f 2f 20 67 69 | conflict,.// gi|
> 00001e90 76 69 6e 67 20 69 74 20 61 20 6e 61 6d 65 20 61 |ving it a name a|
> 00001ea0 6e 64 20 61 20 64 65 63 6f 64 65 72 20 74 6f 20 |nd a decoder to |
> 00001eb0 75 73 65 2e 0a 76 61 72 20 4d 79 4c 61 79 65 72 |use..var MyLayer|
> 00001ec0 54 79 70 65 20 3d 20 67 6f 70 61 63 6b 65 74 2e |Type = gopacket.|
> 00001ed0 52 65 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 |RegisterLayerTyp|
> 00001ee0 65 28 31 32 33 34 35 2c 20 26 23 33 34 3b 4d 79 |e(12345, "My|
> 00001ef0 4c 61 79 65 72 54 79 70 65 26 23 33 34 3b 2c 20 |LayerType", |
> 00001f00 67 6f 70 61 63 6b 65 74 2e 44 65 63 6f 64 65 46 |gopacket.DecodeF|
> 00001f10 75 6e 63 28 64 65 63 6f 64 65 4d 79 4c 61 79 65 |unc(decodeMyLaye|
> 00001f20 72 29 29 0a 0a 2f 2f 20 49 6d 70 6c 65 6d 65 6e |r))..// Implemen|
> 00001f30 74 20 6d 79 20 6c 61 79 65 72 0a 74 79 70 65 20 |t my layer.type |
> 00001f40 4d 79 4c 61 79 65 72 20 73 74 72 75 63 74 20 7b |MyLayer struct {|
> 00001f50 0a 20 20 53 74 72 61 6e 67 65 48 65 61 64 65 72 |. StrangeHeader|
> 00001f60 20 5b 5d 62 79 74 65 0a 20 20 70 61 79 6c 6f 61 | []byte. payloa|
> 00001f70 64 20 5b 5d 62 79 74 65 0a 7d 0a 66 75 6e 63 20 |d []byte.}.func |
> 00001f80 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 65 |(m MyLayer) Laye|
> 00001f90 72 54 79 70 65 28 29 20 4c 61 79 65 72 54 79 70 |rType() LayerTyp|
> 00001fa0 65 20 7b 20 72 65 74 75 72 6e 20 4d 79 4c 61 79 |e { return MyLay|
> 00001fb0 65 72 54 79 70 65 20 7d 0a 66 75 6e 63 20 28 6d |erType }.func (m|
> 00001fc0 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 65 72 43 | MyLayer) LayerC|
> 00001fd0 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 74 65 |ontents() []byte|
> 00001fe0 20 7b 20 72 65 74 75 72 6e 20 6d 2e 53 74 72 61 | { return m.Stra|
> 00001ff0 6e 67 65 48 65 61 64 65 72 20 7d 0a 66 75 6e 63 |ngeHeader }.func|
> 00002000 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 79 | (m MyLayer) Lay|
> 00002010 65 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |erPayload() []by|
> 00002020 74 65 20 7b 20 72 65 74 75 72 6e 20 6d 2e 70 61 |te { return m.pa|
> 00002030 79 6c 6f 61 64 20 7d 0a 0a 2f 2f 20 4e 6f 77 20 |yload }..// Now |
> 00002040 69 6d 70 6c 65 6d 65 6e 74 20 61 20 64 65 63 6f |implement a deco|
> 00002050 64 65 72 2e 2e 2e 20 74 68 69 73 20 6f 6e 65 20 |der... this one |
> 00002060 73 74 72 69 70 73 20 6f 66 66 20 74 68 65 20 66 |strips off the f|
> 00002070 69 72 73 74 20 34 20 62 79 74 65 73 20 6f 66 20 |irst 4 bytes of |
> 00002080 74 68 65 0a 2f 2f 20 70 61 63 6b 65 74 2e 0a 66 |the.// packet..f|
> 00002090 75 6e 63 20 64 65 63 6f 64 65 4d 79 4c 61 79 65 |unc decodeMyLaye|
> 000020a0 72 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 |r(data []byte, p|
> 000020b0 20 67 6f 70 61 63 6b 65 74 2e 50 61 63 6b 65 74 | gopacket.Packet|
> 000020c0 42 75 69 6c 64 65 72 29 20 65 72 72 6f 72 20 7b |Builder) error {|
> 000020d0 0a 20 20 2f 2f 20 43 72 65 61 74 65 20 6d 79 20 |. // Create my |
> 000020e0 6c 61 79 65 72 0a 20 20 70 2e 41 64 64 4c 61 79 |layer. p.AddLay|
> 000020f0 65 72 28 26 61 6d 70 3b 4d 79 4c 61 79 65 72 7b |er(&MyLayer{|
> 00002100 64 61 74 61 5b 3a 34 5d 2c 20 64 61 74 61 5b 34 |data[:4], data[4|
> 00002110 3a 5d 7d 29 0a 20 20 2f 2f 20 44 65 74 65 72 6d |:]}). // Determ|
> 00002120 69 6e 65 20 68 6f 77 20 74 6f 20 68 61 6e 64 6c |ine how to handl|
> 00002130 65 20 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 |e the rest of th|
> 00002140 65 20 70 61 63 6b 65 74 0a 20 20 72 65 74 75 72 |e packet. retur|
> 00002150 6e 20 70 2e 4e 65 78 74 44 65 63 6f 64 65 72 28 |n p.NextDecoder(|
> 00002160 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 65 |layers.LayerType|
> 00002170 45 74 68 65 72 6e 65 74 29 0a 7d 0a 0a 2f 2f 20 |Ethernet).}..// |
> 00002180 46 69 6e 61 6c 6c 79 2c 20 64 65 63 6f 64 65 20 |Finally, decode |
> 00002190 79 6f 75 72 20 70 61 63 6b 65 74 73 3a 0a 70 20 |your packets:.p |
> 000021a0 3a 3d 20 67 6f 70 61 63 6b 65 74 2e 4e 65 77 50 |:= gopacket.NewP|
> 000021b0 61 63 6b 65 74 28 64 61 74 61 2c 20 4d 79 4c 61 |acket(data, MyLa|
> 000021c0 79 65 72 54 79 70 65 2c 20 67 6f 70 61 63 6b 65 |yerType, gopacke|
> 000021d0 74 2e 4c 61 7a 79 29 0a 3c 2f 70 72 65 3e 0a 3c |t.Lazy).</pre>.<|
> 000021e0 70 3e 0a 53 65 65 20 74 68 65 20 64 6f 63 73 20 |p>.See the docs |
> 000021f0 66 6f 72 20 44 65 63 6f 64 65 72 20 61 6e 64 20 |for Decoder and |
> 00002200 50 61 63 6b 65 74 42 75 69 6c 64 65 72 20 66 6f |PacketBuilder fo|
> 00002210 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 20 6f |r more details o|
> 00002220 6e 20 68 6f 77 20 63 6f 64 69 6e 67 0a 64 65 63 |n how coding.dec|
> 00002230 6f 64 65 72 73 20 77 6f 72 6b 73 2c 20 6f 72 20 |oders works, or |
> 00002240 6c 6f 6f 6b 20 61 74 20 52 65 67 69 73 74 65 72 |look at Register|
> 00002250 4c 61 79 65 72 54 79 70 65 20 61 6e 64 20 52 65 |LayerType and Re|
> 00002260 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy|
> 00002270 70 65 20 74 6f 20 73 65 65 20 68 6f 77 0a 74 6f |pe to see how.to|
> 00002280 20 61 64 64 20 6c 61 79 65 72 2f 65 6e 64 70 6f | add layer/endpo|
> 00002290 69 6e 74 20 74 79 70 65 73 20 74 6f 20 67 6f 70 |int types to gop|
> 000022a0 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |acket..</p>.....|
> 000022b0 3c 2f 64 69 76 3e 0a 09 09 3c 2f 64 69 76 3e 0a |</div>...</div>.|
> 000022c0 09 09 0a 09 0a 09 09 3c 68 32 20 69 64 3d 22 70 |.......<h2 id="p|
> 000022d0 6b 67 2d 69 6e 64 65 78 22 3e 49 6e 64 65 78 3c |kg-index">Index<|
> 000022e0 2f 68 32 3e 0a 09 09 3c 21 2d 2d 20 54 61 62 6c |/h2>...<!-- Tabl|
> 000022f0 65 20 6f 66 20 63 6f 6e 74 65 6e 74 73 20 66 6f |e of contents fo|
> 00002300 72 20 41 50 49 3b 20 6d 75 73 74 20 62 65 20 6e |r API; must be n|
> 00002310 61 6d 65 64 20 6d 61 6e 75 61 6c 2d 6e 61 76 20 |amed manual-nav |
> 00002320 74 6f 20 74 75 72 6e 20 6f 66 66 20 61 75 74 6f |to turn off auto|
> 00002330 20 6e 61 76 2e 20 2d 2d 3e 0a 09 09 3c 64 69 76 | nav. -->...<div|
> 00002340 20 69 64 3d 22 6d 61 6e 75 61 6c 2d 6e 61 76 22 | id="manual-nav"|
> 00002350 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 09 0a 09 09 |>....<dl>.......|
> 00002360 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 |......<dd><a hre|
> 00002370 66 3d 22 23 70 6b 67 2d 76 61 72 69 61 62 6c 65 |f="#pkg-variable|
> 00002380 73 22 3e 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e |s">Variables</a>|
> 00002390 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 09 0a 09 09 |</dd>...........|
> 000023a0 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><|
> 000023b0 61 20 68 72 65 66 3d 22 23 41 70 70 6c 69 63 61 |a href="#Applica|
> 000023c0 74 69 6f 6e 4c 61 79 65 72 22 3e 74 79 70 65 20 |tionLayer">type |
> 000023d0 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer|
> 000023e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 000023f0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002400 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 43 |.<dd><a href="#C|
> 00002410 61 70 74 75 72 65 49 6e 66 6f 22 3e 74 79 70 65 |aptureInfo">type|
> 00002420 20 43 61 70 74 75 72 65 49 6e 66 6f 3c 2f 61 3e | CaptureInfo</a>|
> 00002430 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 00002440 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 00002450 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod|
> 00002460 65 46 61 69 6c 75 72 65 22 3e 74 79 70 65 20 44 |eFailure">type D|
> 00002470 65 63 6f 64 65 46 61 69 6c 75 72 65 3c 2f 61 3e |ecodeFailure</a>|
> 00002480 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 00002490 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 000024a0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 000024b0 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai|
> 000024c0 6c 75 72 65 2e 45 72 72 6f 72 22 3e 66 75 6e 63 |lure.Error">func|
> 000024d0 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 | (d *DecodeFailu|
> 000024e0 72 65 29 20 45 72 72 6f 72 28 29 20 65 72 72 6f |re) Error() erro|
> 000024f0 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |r</a></dd>......|
> 00002500 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00002510 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00002520 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai|
> 00002530 6c 75 72 65 2e 4c 61 79 65 72 43 6f 6e 74 65 6e |lure.LayerConten|
> 00002540 74 73 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |ts">func (d *Dec|
> 00002550 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye|
> 00002560 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 |rContents() []by|
> 00002570 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....|
> 00002580 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00002590 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 000025a0 20 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 | href="#DecodeFa|
> 000025b0 69 6c 75 72 65 2e 4c 61 79 65 72 50 61 79 6c 6f |ilure.LayerPaylo|
> 000025c0 61 64 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |ad">func (d *Dec|
> 000025d0 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye|
> 000025e0 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 |rPayload() []byt|
> 000025f0 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......|
> 00002600 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00002610 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00002620 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai|
> 00002630 6c 75 72 65 2e 4c 61 79 65 72 54 79 70 65 22 3e |lure.LayerType">|
> 00002640 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 |func (d *DecodeF|
> 00002650 61 69 6c 75 72 65 29 20 4c 61 79 65 72 54 79 70 |ailure) LayerTyp|
> 00002660 65 28 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 61 |e() LayerType</a|
> 00002670 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........|
> 00002680 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 |.......<dd> |
> 00002690 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 |; <a href|
> 000026a0 3d 22 23 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |="#DecodeFailure|
> 000026b0 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 64 |.String">func (d|
> 000026c0 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 | *DecodeFailure)|
> 000026d0 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e 67 | String() string|
> 000026e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 000026f0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e |............<dd>|
> 00002700 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 65 |<a href="#Decode|
> 00002710 46 75 6e 63 22 3e 74 79 70 65 20 44 65 63 6f 64 |Func">type Decod|
> 00002720 65 46 75 6e 63 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |eFunc</a></dd>..|
> 00002730 09 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |................|
> 00002740 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &|
> 00002750 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#|
> 00002760 44 65 63 6f 64 65 46 75 6e 63 2e 44 65 63 6f 64 |DecodeFunc.Decod|
> 00002770 65 22 3e 66 75 6e 63 20 28 64 20 44 65 63 6f 64 |e">func (d Decod|
> 00002780 65 46 75 6e 63 29 20 44 65 63 6f 64 65 28 64 61 |eFunc) Decode(da|
> 00002790 74 61 20 5b 5d 62 79 74 65 2c 20 70 20 50 61 63 |ta []byte, p Pac|
> 000027a0 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 6f |ketBuilder) erro|
> 000027b0 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |r</a></dd>......|
> 000027c0 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 000027d0 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod|
> 000027e0 65 4f 70 74 69 6f 6e 73 22 3e 74 79 70 65 20 44 |eOptions">type D|
> 000027f0 65 63 6f 64 65 4f 70 74 69 6f 6e 73 3c 2f 61 3e |ecodeOptions</a>|
> 00002800 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 00002810 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 00002820 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 |><a href="#Decod|
> 00002830 65 72 22 3e 74 79 70 65 20 44 65 63 6f 64 65 72 |er">type Decoder|
> 00002840 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00002850 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002860 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 |.<dd><a href="#E|
> 00002870 6e 64 70 6f 69 6e 74 22 3e 74 79 70 65 20 45 6e |ndpoint">type En|
> 00002880 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 64 64 3e 0a |dpoint</a></dd>.|
> 00002890 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 000028a0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 000028b0 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 45 |; <a href="#NewE|
> 000028c0 6e 64 70 6f 69 6e 74 22 3e 66 75 6e 63 20 4e 65 |ndpoint">func Ne|
> 000028d0 77 45 6e 64 70 6f 69 6e 74 28 74 79 70 20 45 6e |wEndpoint(typ En|
> 000028e0 64 70 6f 69 6e 74 54 79 70 65 2c 20 72 61 77 20 |dpointType, raw |
> 000028f0 5b 5d 62 79 74 65 29 20 45 6e 64 70 6f 69 6e 74 |[]byte) Endpoint|
> 00002900 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00002910 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002920 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002930 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo|
> 00002940 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 |int.EndpointType|
> 00002950 22 3e 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 |">func (e Endpoi|
> 00002960 6e 74 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 |nt) EndpointType|
> 00002970 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c |() EndpointType<|
> 00002980 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........|
> 00002990 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb|
> 000029a0 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr|
> 000029b0 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 2e 4c 65 |ef="#Endpoint.Le|
> 000029c0 73 73 54 68 61 6e 22 3e 66 75 6e 63 20 28 61 20 |ssThan">func (a |
> 000029d0 45 6e 64 70 6f 69 6e 74 29 20 4c 65 73 73 54 68 |Endpoint) LessTh|
> 000029e0 61 6e 28 62 20 45 6e 64 70 6f 69 6e 74 29 20 62 |an(b Endpoint) b|
> 000029f0 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ool</a></dd>....|
> 00002a00 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd|
> 00002a10 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <|
> 00002a20 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e |a href="#Endpoin|
> 00002a30 74 2e 52 61 77 22 3e 66 75 6e 63 20 28 65 20 45 |t.Raw">func (e E|
> 00002a40 6e 64 70 6f 69 6e 74 29 20 52 61 77 28 29 20 5b |ndpoint) Raw() [|
> 00002a50 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..|
> 00002a60 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002a70 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002a80 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo|
> 00002a90 69 6e 74 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |int.String">func|
> 00002aa0 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 53 74 | (e Endpoint) St|
> 00002ab0 72 69 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 61 |ring() string</a|
> 00002ac0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a |></dd>..........|
> 00002ad0 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a |
> 00002ae0 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 54 |href="#EndpointT|
> 00002af0 79 70 65 22 3e 74 79 70 65 20 45 6e 64 70 6f 69 |ype">type Endpoi|
> 00002b00 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |ntType</a></dd>.|
> 00002b10 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 00002b20 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 00002b30 3b 20 3c 61 20 68 72 65 66 3d 22 23 52 65 67 69 |; <a href="#Regi|
> 00002b40 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 |sterEndpointType|
> 00002b50 22 3e 66 75 6e 63 20 52 65 67 69 73 74 65 72 45 |">func RegisterE|
> 00002b60 6e 64 70 6f 69 6e 74 54 79 70 65 28 6e 75 6d 20 |ndpointType(num |
> 00002b70 69 6e 74 2c 20 6d 65 74 61 20 45 6e 64 70 6f 69 |int, meta Endpoi|
> 00002b80 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 |ntTypeMetadata) |
> 00002b90 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f 61 3e |EndpointType</a>|
> 00002ba0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 00002bb0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00002bc0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00002bd0 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e 74 54 |href="#EndpointT|
> 00002be0 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |ype.String">func|
> 00002bf0 20 28 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 | (e EndpointType|
> 00002c00 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e |) String() strin|
> 00002c10 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |g</a></dd>......|
> 00002c20 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 00002c30 3e 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f |><a href="#Endpo|
> 00002c40 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 22 |intTypeMetadata"|
> 00002c50 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 54 79 |>type EndpointTy|
> 00002c60 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c 2f |peMetadata</a></|
> 00002c70 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............|
> 00002c80 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><|
> 00002c90 61 20 68 72 65 66 3d 22 23 45 72 72 6f 72 4c 61 |a href="#ErrorLa|
> 00002ca0 79 65 72 22 3e 74 79 70 65 20 45 72 72 6f 72 4c |yer">type ErrorL|
> 00002cb0 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ayer</a></dd>...|
> 00002cc0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 00002cd0 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href|
> 00002ce0 3d 22 23 46 6c 6f 77 22 3e 74 79 70 65 20 46 6c |="#Flow">type Fl|
> 00002cf0 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ow</a></dd>.....|
> 00002d00 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00002d10 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00002d20 20 68 72 65 66 3d 22 23 46 6c 6f 77 46 72 6f 6d | href="#FlowFrom|
> 00002d30 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 |Endpoints">func |
> 00002d40 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint|
> 00002d50 73 28 73 72 63 2c 20 64 73 74 20 45 6e 64 70 6f |s(src, dst Endpo|
> 00002d60 69 6e 74 29 20 28 5f 20 46 6c 6f 77 2c 20 65 72 |int) (_ Flow, er|
> 00002d70 72 20 65 72 72 6f 72 29 3c 2f 61 3e 3c 2f 64 64 |r error)</a></dd|
> 00002d80 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 |>...............|
> 00002d90 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 |..<dd> &nb|
> 00002da0 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 |sp; <a href="#Ne|
> 00002db0 77 46 6c 6f 77 22 3e 66 75 6e 63 20 4e 65 77 46 |wFlow">func NewF|
> 00002dc0 6c 6f 77 28 74 20 45 6e 64 70 6f 69 6e 74 54 79 |low(t EndpointTy|
> 00002dd0 70 65 2c 20 73 72 63 2c 20 64 73 74 20 5b 5d 62 |pe, src, dst []b|
> 00002de0 79 74 65 29 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 |yte) Flow</a></d|
> 00002df0 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............|
> 00002e00 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs|
> 00002e10 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre|
> 00002e20 66 3d 22 23 46 6c 6f 77 2e 44 73 74 22 3e 66 75 |f="#Flow.Dst">fu|
> 00002e30 6e 63 20 28 66 20 46 6c 6f 77 29 20 44 73 74 28 |nc (f Flow) Dst(|
> 00002e40 29 20 28 64 73 74 20 45 6e 64 70 6f 69 6e 74 29 |) (dst Endpoint)|
> 00002e50 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00002e60 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n|
> 00002e70 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h|
> 00002e80 72 65 66 3d 22 23 46 6c 6f 77 2e 45 6e 64 70 6f |ref="#Flow.Endpo|
> 00002e90 69 6e 74 54 79 70 65 22 3e 66 75 6e 63 20 28 66 |intType">func (f|
> 00002ea0 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 54 | Flow) EndpointT|
> 00002eb0 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 |ype() EndpointTy|
> 00002ec0 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |pe</a></dd>.....|
> 00002ed0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00002ee0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00002ef0 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 45 6e 64 | href="#Flow.End|
> 00002f00 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 28 66 20 |points">func (f |
> 00002f10 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 73 28 |Flow) Endpoints(|
> 00002f20 29 20 28 73 72 63 2c 20 64 73 74 20 45 6e 64 70 |) (src, dst Endp|
> 00002f30 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |oint)</a></dd>..|
> 00002f40 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002f50 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002f60 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e | <a href="#Flow.|
> 00002f70 52 65 76 65 72 73 65 22 3e 66 75 6e 63 20 28 66 |Reverse">func (f|
> 00002f80 20 46 6c 6f 77 29 20 52 65 76 65 72 73 65 28 29 | Flow) Reverse()|
> 00002f90 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 | Flow</a></dd>..|
> 00002fa0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002fb0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002fc0 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e | <a href="#Flow.|
> 00002fd0 53 72 63 22 3e 66 75 6e 63 20 28 66 20 46 6c 6f |Src">func (f Flo|
> 00002fe0 77 29 20 53 72 63 28 29 20 28 73 72 63 20 45 6e |w) Src() (src En|
> 00002ff0 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e |dpoint)</a></dd>|
> 00003000 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................|
> 00003010 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs|
> 00003020 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f |p; <a href="#Flo|
> 00003030 77 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |w.String">func (|
> 00003040 66 20 46 6c 6f 77 29 20 53 74 72 69 6e 67 28 29 |f Flow) String()|
> 00003050 20 73 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e | string</a></dd>|
> 00003060 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00003070 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="|
> 00003080 23 4c 61 79 65 72 22 3e 74 79 70 65 20 4c 61 79 |#Layer">type Lay|
> 00003090 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....|
> 000030a0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 000030b0 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="|
> 000030c0 23 4c 61 79 65 72 43 6c 61 73 73 22 3e 74 79 70 |#LayerClass">typ|
> 000030d0 65 20 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |e LayerClass</a>|
> 000030e0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 |</dd>...........|
> 000030f0 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b |......<dd> |
> 00003100 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d | <a href=|
> 00003110 22 23 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 22 |"#NewLayerClass"|
> 00003120 3e 66 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c |>func NewLayerCl|
> 00003130 61 73 73 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 |ass(types []Laye|
> 00003140 72 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 |rType) LayerClas|
> 00003150 73 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |s</a></dd>......|
> 00003160 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 00003170 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 |..<dd><a href="#|
> 00003180 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 74 |LayerClassMap">t|
> 00003190 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 |ype LayerClassMa|
> 000031a0 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |p</a></dd>......|
> 000031b0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 000031c0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 000031d0 68 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 43 |href="#NewLayerC|
> 000031e0 6c 61 73 73 4d 61 70 22 3e 66 75 6e 63 20 4e 65 |lassMap">func Ne|
> 000031f0 77 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 28 74 |wLayerClassMap(t|
> 00003200 79 70 65 73 20 5b 5d 4c 61 79 65 72 54 79 70 65 |ypes []LayerType|
> 00003210 29 20 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 3c |) LayerClassMap<|
> 00003220 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........|
> 00003230 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d|
> 00003240 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> |
> 00003250 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 43 |<a href="#LayerC|
> 00003260 6c 61 73 73 4d 61 70 2e 43 6f 6e 74 61 69 6e 73 |lassMap.Contains|
> 00003270 22 3e 66 75 6e 63 20 28 6d 20 4c 61 79 65 72 43 |">func (m LayerC|
> 00003280 6c 61 73 73 4d 61 70 29 20 43 6f 6e 74 61 69 6e |lassMap) Contain|
> 00003290 73 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 62 |s(t LayerType) b|
> 000032a0 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ool</a></dd>....|
> 000032b0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 000032c0 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 |dd><a href="#Lay|
> 000032d0 65 72 43 6c 61 73 73 53 6c 69 63 65 22 3e 74 79 |erClassSlice">ty|
> 000032e0 70 65 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |pe LayerClassSli|
> 000032f0 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ce</a></dd>.....|
> 00003300 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00003310 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00003320 20 68 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 | href="#NewLayer|
> 00003330 43 6c 61 73 73 53 6c 69 63 65 22 3e 66 75 6e 63 |ClassSlice">func|
> 00003340 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 53 6c | NewLayerClassSl|
> 00003350 69 63 65 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 |ice(types []Laye|
> 00003360 72 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 |rType) LayerClas|
> 00003370 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |sSlice</a></dd>.|
> 00003380 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a |................|
> 00003390 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> |
> 000033a0 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="|
> 000033b0 23 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 |#LayerClassSlice|
> 000033c0 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 75 6e 63 20 |.Contains">func |
> 000033d0 28 73 20 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 |(s LayerClassSli|
> 000033e0 63 65 29 20 43 6f 6e 74 61 69 6e 73 28 74 20 4c |ce) Contains(t L|
> 000033f0 61 79 65 72 54 79 70 65 29 20 62 6f 6f 6c 3c 2f |ayerType) bool</|
> 00003400 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 00003410 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a|
> 00003420 20 68 72 65 66 3d 22 23 4c 61 79 65 72 54 79 70 | href="#LayerTyp|
> 00003430 65 22 3e 74 79 70 65 20 4c 61 79 65 72 54 79 70 |e">type LayerTyp|
> 00003440 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......|
> 00003450 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00003460 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00003470 68 72 65 66 3d 22 23 52 65 67 69 73 74 65 72 4c |href="#RegisterL|
> 00003480 61 79 65 72 54 79 70 65 22 3e 66 75 6e 63 20 52 |ayerType">func R|
> 00003490 65 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 |egisterLayerType|
> 000034a0 28 6e 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 4c |(num int, meta L|
> 000034b0 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 |ayerTypeMetadata|
> 000034c0 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c |) LayerType</a><|
> 000034d0 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/dd>............|
> 000034e0 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n|
> 000034f0 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h|
> 00003500 72 65 66 3d 22 23 4c 61 79 65 72 54 79 70 65 2e |ref="#LayerType.|
> 00003510 44 65 63 6f 64 65 22 3e 66 75 6e 63 20 28 74 20 |Decode">func (t |
> 00003520 4c 61 79 65 72 54 79 70 65 29 20 44 65 63 6f 64 |LayerType) Decod|
> 00003530 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 63 |e(data []byte, c|
> 00003540 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) |
> 00003550 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..|
> 00003560 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003570 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003580 20 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 | <a href="#Layer|
> 00003590 54 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |Type.String">fun|
> 000035a0 63 20 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 |c (t LayerType) |
> 000035b0 53 74 72 69 6e 67 28 29 20 28 73 20 73 74 72 69 |String() (s stri|
> 000035c0 6e 67 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ng)</a></dd>....|
> 000035d0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 000035e0 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 |dd><a href="#Lay|
> 000035f0 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 22 3e |erTypeMetadata">|
> 00003600 74 79 70 65 20 4c 61 79 65 72 54 79 70 65 4d 65 |type LayerTypeMe|
> 00003610 74 61 64 61 74 61 3c 2f 61 3e 3c 2f 64 64 3e 0a |tadata</a></dd>.|
> 00003620 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00003630 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr|
> 00003640 65 66 3d 22 23 4c 69 6e 6b 4c 61 79 65 72 22 3e |ef="#LinkLayer">|
> 00003650 74 79 70 65 20 4c 69 6e 6b 4c 61 79 65 72 3c 2f |type LinkLayer</|
> 00003660 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 00003670 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 00003680 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 4e 65 74 |dd><a href="#Net|
> 00003690 77 6f 72 6b 4c 61 79 65 72 22 3e 74 79 70 65 20 |workLayer">type |
> 000036a0 4e 65 74 77 6f 72 6b 4c 61 79 65 72 3c 2f 61 3e |NetworkLayer</a>|
> 000036b0 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 000036c0 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 000036d0 3e 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 |><a href="#Packe|
> 000036e0 74 22 3e 74 79 70 65 20 50 61 63 6b 65 74 3c 2f |t">type Packet</|
> 000036f0 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 00003700 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs|
> 00003710 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre|
> 00003720 66 3d 22 23 4e 65 77 50 61 63 6b 65 74 22 3e 66 |f="#NewPacket">f|
> 00003730 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 28 64 61 |unc NewPacket(da|
> 00003740 74 61 20 5b 5d 62 79 74 65 2c 20 66 69 72 73 74 |ta []byte, first|
> 00003750 4c 61 79 65 72 44 65 63 6f 64 65 72 20 44 65 63 |LayerDecoder Dec|
> 00003760 6f 64 65 72 2c 20 6f 70 74 69 6f 6e 73 20 44 65 |oder, options De|
> 00003770 63 6f 64 65 4f 70 74 69 6f 6e 73 29 20 50 61 63 |codeOptions) Pac|
> 00003780 6b 65 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ket</a></dd>....|
> 00003790 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................|
> 000037a0 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d |....<dd><a href=|
> 000037b0 22 23 50 61 63 6b 65 74 42 75 69 6c 64 65 72 22 |"#PacketBuilder"|
> 000037c0 3e 74 79 70 65 20 50 61 63 6b 65 74 42 75 69 6c |>type PacketBuil|
> 000037d0 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |der</a></dd>....|
> 000037e0 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................|
> 000037f0 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d |....<dd><a href=|
> 00003800 22 23 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 |"#PacketDataSour|
> 00003810 63 65 22 3e 74 79 70 65 20 50 61 63 6b 65 74 44 |ce">type PacketD|
> 00003820 61 74 61 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 64 |ataSource</a></d|
> 00003830 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............|
> 00003840 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a|
> 00003850 20 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 6f | href="#PacketSo|
> 00003860 75 72 63 65 22 3e 74 79 70 65 20 50 61 63 6b 65 |urce">type Packe|
> 00003870 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 64 64 3e |tSource</a></dd>|
> 00003880 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................|
> 00003890 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs|
> 000038a0 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 |p; <a href="#New|
> 000038b0 50 61 63 6b 65 74 53 6f 75 72 63 65 22 3e 66 75 |PacketSource">fu|
> 000038c0 6e 63 20 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 |nc NewPacketSour|
> 000038d0 63 65 28 73 6f 75 72 63 65 20 50 61 63 6b 65 74 |ce(source Packet|
> 000038e0 44 61 74 61 53 6f 75 72 63 65 2c 20 64 65 63 6f |DataSource, deco|
> 000038f0 64 65 72 20 44 65 63 6f 64 65 72 29 20 2a 50 61 |der Decoder) *Pa|
> 00003900 63 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f |cketSource</a></|
> 00003910 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............|
> 00003920 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb|
> 00003930 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr|
> 00003940 65 66 3d 22 23 50 61 63 6b 65 74 53 6f 75 72 63 |ef="#PacketSourc|
> 00003950 65 2e 4e 65 78 74 50 61 63 6b 65 74 22 3e 66 75 |e.NextPacket">fu|
> 00003960 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 |nc (p *PacketSou|
> 00003970 72 63 65 29 20 4e 65 78 74 50 61 63 6b 65 74 28 |rce) NextPacket(|
> 00003980 29 20 28 50 61 63 6b 65 74 2c 20 65 72 72 6f 72 |) (Packet, error|
> 00003990 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |)</a></dd>......|
> 000039a0 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 000039b0 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 000039c0 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 6f 75 |href="#PacketSou|
> 000039d0 72 63 65 2e 50 61 63 6b 65 74 73 22 3e 66 75 6e |rce.Packets">fun|
> 000039e0 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 72 |c (p *PacketSour|
> 000039f0 63 65 29 20 50 61 63 6b 65 74 73 28 29 20 63 68 |ce) Packets() ch|
> 00003a00 61 6e 20 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 64 |an Packet</a></d|
> 00003a10 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |d>..............|
> 00003a20 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href|
> 00003a30 3d 22 23 50 61 79 6c 6f 61 64 22 3e 74 79 70 65 |="#Payload">type|
> 00003a40 20 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 64 64 | Payload</a></dd|
> 00003a50 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |>...............|
> 00003a60 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 |.......<dd> |
> 00003a70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 |; <a href|
> 00003a80 3d 22 23 50 61 79 6c 6f 61 64 2e 4c 61 79 65 72 |="#Payload.Layer|
> 00003a90 43 6f 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 |Contents">func (|
> 00003aa0 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 65 |p *Payload) Laye|
> 00003ab0 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 79 |rContents() []by|
> 00003ac0 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....|
> 00003ad0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00003ae0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00003af0 20 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e | href="#Payload.|
> 00003b00 4c 61 79 65 72 50 61 79 6c 6f 61 64 22 3e 66 75 |LayerPayload">fu|
> 00003b10 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) |
> 00003b20 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 5b |LayerPayload() [|
> 00003b30 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..|
> 00003b40 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003b50 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003b60 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c 6f | <a href="#Paylo|
> 00003b70 61 64 2e 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |ad.LayerType">fu|
> 00003b80 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) |
> 00003b90 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 65 |LayerType() Laye|
> 00003ba0 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rType</a></dd>..|
> 00003bb0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003bc0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003bd0 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c 6f | <a href="#Paylo|
> 00003be0 61 64 2e 50 61 79 6c 6f 61 64 22 3e 66 75 6e 63 |ad.Payload">func|
> 00003bf0 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 50 61 | (p *Payload) Pa|
> 00003c00 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 3c 2f |yload() []byte</|
> 00003c10 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 00003c20 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs|
> 00003c30 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre|
> 00003c40 66 3d 22 23 50 61 79 6c 6f 61 64 2e 53 74 72 69 |f="#Payload.Stri|
> 00003c50 6e 67 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 |ng">func (p *Pay|
> 00003c60 6c 6f 61 64 29 20 53 74 72 69 6e 67 28 29 20 73 |load) String() s|
> 00003c70 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |tring</a></dd>..|
> 00003c80 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00003c90 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 54 |.<dd><a href="#T|
> 00003ca0 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 22 3e 74 |ransportLayer">t|
> 00003cb0 79 70 65 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 |ype TransportLay|
> 00003cc0 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....|
> 00003cd0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00003ce0 3c 2f 64 6c 3e 0a 0a 09 09 0a 0a 09 09 0a 09 09 |</dl>...........|
> 00003cf0 09 3c 68 34 3e 50 61 63 6b 61 67 65 20 66 69 6c |.<h4>Package fil|
> 00003d00 65 73 3c 2f 68 34 3e 0a 09 09 09 3c 70 3e 0a 09 |es</h4>....<p>..|
> 00003d10 09 09 3c 73 70 61 6e 20 73 74 79 6c 65 3d 22 66 |..<span style="f|
> 00003d20 6f 6e 74 2d 73 69 7a 65 3a 39 30 25 22 3e 0a 09 |ont-size:90%">..|
> 00003d30 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="|
> 00003d40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003d50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003d60 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 22 3e 62 |acket/base.go">b|
> 00003d70 61 73 65 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ase.go</a>......|
> 00003d80 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src|
> 00003d90 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003da0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003db0 74 2f 64 65 63 6f 64 65 2e 67 6f 22 3e 64 65 63 |t/decode.go">dec|
> 00003dc0 6f 64 65 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ode.go</a>......|
> 00003dd0 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src|
> 00003de0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003df0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003e00 74 2f 64 6f 63 2e 67 6f 22 3e 64 6f 63 2e 67 6f |t/doc.go">doc.go|
> 00003e10 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a |
> 00003e20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 00003e30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 00003e40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow|
> 00003e50 73 2e 67 6f 22 3e 66 6c 6f 77 73 2e 67 6f 3c 2f |s.go">flows.go</|
> 00003e60 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 |a>.........<a hr|
> 00003e70 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00003e80 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 00003e90 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 |/gopacket/layerc|
> 00003ea0 6c 61 73 73 2e 67 6f 22 3e 6c 61 79 65 72 63 6c |lass.go">layercl|
> 00003eb0 61 73 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 |ass.go</a>......|
> 00003ec0 09 09 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |...<a href="/src|
> 00003ed0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003ee0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003ef0 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 22 3e |t/layertype.go">|
> 00003f00 6c 61 79 65 72 74 79 70 65 2e 67 6f 3c 2f 61 3e |layertype.go</a>|
> 00003f10 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 |.........<a href|
> 00003f20 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 00003f30 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 00003f40 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 |opacket/packet.g|
> 00003f50 6f 22 3e 70 61 63 6b 65 74 2e 67 6f 3c 2f 61 3e |o">packet.go</a>|
> 00003f60 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 |.........<a href|
> 00003f70 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 00003f80 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 00003f90 6f 70 61 63 6b 65 74 2f 76 61 6c 69 64 5f 6d 61 |opacket/valid_ma|
> 00003fa0 63 5f 70 72 65 66 69 78 65 73 2e 67 6f 22 3e 76 |c_prefixes.go">v|
> 00003fb0 61 6c 69 64 5f 6d 61 63 5f 70 72 65 66 69 78 65 |alid_mac_prefixe|
> 00003fc0 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 |s.go</a>........|
> 00003fd0 3c 2f 73 70 61 6e 3e 0a 09 09 09 3c 2f 70 3e 0a |</span>....</p>.|
> 00003fe0 09 09 0a 09 0a 09 09 0a 09 09 0a 09 09 09 3c 68 |..............<h|
> 00003ff0 32 20 69 64 3d 22 70 6b 67 2d 76 61 72 69 61 62 |2 id="pkg-variab|
> 00004000 6c 65 73 22 |les"|
> --- Layer 1 ---
> Loopback {Contents=[30, 0, 0, 0] Payload=[..16384..] Family=IPv6}
> 00000000 1e 00 00 00 |....|
> --- Layer 2 ---
> IPv6 {Contents=[..40..] Payload=[..16344..] Version=6 TrafficClass=0 FlowLabel=100497 Length=16344 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil}
> 00000000 60 01 88 91 3f d8 06 40 00 00 00 00 00 00 00 00 |`...?.. 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'|
> 00000160 3b 6c 6c 20 6e 65 65 64 20 74 6f 20 63 6f 6e 73 |;ll need to cons|
> 00000170 74 72 75 63 74 20 61 6e 20 6f 62 6a 65 63 74 20 |truct an object |
> 00000180 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 |that implements |
> 00000190 74 68 65 20 50 61 63 6b 65 74 44 61 74 61 53 6f |the PacketDataSo|
> 000001a0 75 72 63 65 0a 69 6e 74 65 72 66 61 63 65 2e 20 |urce.interface. |
> 000001b0 20 54 68 65 72 65 20 61 72 65 20 69 6d 70 6c 65 | There are imple|
> 000001c0 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 |mentations of th|
> 000001d0 69 73 20 69 6e 74 65 72 66 61 63 65 20 62 75 6e |is interface bun|
> 000001e0 64 6c 65 64 20 77 69 74 68 20 67 6f 70 61 63 6b |dled with gopack|
> 000001f0 65 74 0a 69 6e 20 74 68 65 20 67 6f 70 61 63 6b |et.in the gopack|
> 00000200 65 74 2f 70 63 61 70 20 61 6e 64 20 67 6f 70 61 |et/pcap and gopa|
> 00000210 63 6b 65 74 2f 70 66 72 69 6e 67 20 73 75 62 70 |cket/pfring subp|
> 00000220 61 63 6b 61 67 65 73 2e 2e 2e 20 73 65 65 20 74 |ackages... see t|
> 00000230 68 65 69 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 |heir documentati|
> 00000240 6f 6e 0a 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f |on.for more info|
> 00000250 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 69 72 |rmation on their|
> 00000260 20 75 73 61 67 65 2e 20 20 4f 6e 63 65 20 79 6f | usage. Once yo|
> 00000270 75 20 68 61 76 65 20 61 20 50 61 63 6b 65 74 44 |u have a PacketD|
> 00000280 61 74 61 53 6f 75 72 63 65 2c 20 79 6f 75 20 63 |ataSource, you c|
> 00000290 61 6e 0a 70 61 73 73 20 69 74 20 69 6e 74 6f 20 |an.pass it into |
> 000002a0 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 2c |NewPacketSource,|
> 000002b0 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 44 65 | along with a De|
> 000002c0 63 6f 64 65 72 20 6f 66 20 79 6f 75 72 20 63 68 |coder of your ch|
> 000002d0 6f 69 63 65 2c 20 74 6f 20 63 72 65 61 74 65 0a |oice, to create.|
> 000002e0 61 20 50 61 63 6b 65 74 53 6f 75 72 63 65 2e 0a |a PacketSource..|
> 000002f0 3c 2f 70 3e 0a 3c 70 3e 0a 4f 6e 63 65 20 79 6f |</p>.<p>.Once yo|
> 00000300 75 20 68 61 76 65 20 61 20 50 61 63 6b 65 74 53 |u have a PacketS|
> 00000310 6f 75 72 63 65 2c 20 79 6f 75 20 63 61 6e 20 72 |ource, you can r|
> 00000320 65 61 64 20 70 61 63 6b 65 74 73 20 66 72 6f 6d |ead packets from|
> 00000330 20 69 74 20 69 6e 20 6d 75 6c 74 69 70 6c 65 20 | it in multiple |
> 00000340 77 61 79 73 2e 0a 53 65 65 20 74 68 65 20 64 6f |ways..See the do|
> 00000350 63 73 20 66 6f 72 20 50 61 63 6b 65 74 53 6f 75 |cs for PacketSou|
> 00000360 72 63 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 |rce for more det|
> 00000370 61 69 6c 73 2e 20 20 54 68 65 20 65 61 73 69 65 |ails. The easie|
> 00000380 73 74 20 6d 65 74 68 6f 64 20 69 73 20 74 68 65 |st method is the|
> 00000390 0a 50 61 63 6b 65 74 73 20 66 75 6e 63 74 69 6f |.Packets functio|
> 000003a0 6e 2c 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 |n, which returns|
> 000003b0 20 61 20 63 68 61 6e 6e 65 6c 2c 20 74 68 65 6e | a channel, then|
> 000003c0 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 | asynchronously |
> 000003d0 77 72 69 74 65 73 20 6e 65 77 0a 70 61 63 6b 65 |writes new.packe|
> 000003e0 74 73 20 69 6e 74 6f 20 74 68 61 74 20 63 68 61 |ts into that cha|
> 000003f0 6e 6e 65 6c 2c 20 63 6c 6f 73 69 6e 67 20 74 68 |nnel, closing th|
> 00000400 65 20 63 68 61 6e 6e 65 6c 20 69 66 20 74 68 65 |e channel if the|
> 00000410 20 70 61 63 6b 65 74 53 6f 75 72 63 65 20 68 69 | packetSource hi|
> 00000420 74 73 20 61 6e 0a 65 6e 64 2d 6f 66 2d 66 69 6c |ts an.end-of-fil|
> 00000430 65 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 63 |e..</p>.<pre>pac|
> 00000440 6b 65 74 53 6f 75 72 63 65 20 3a 3d 20 2e 2e 2e |ketSource := ...|
> 00000450 20 20 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20 75 | // construct u|
> 00000460 73 69 6e 67 20 70 63 61 70 20 6f 72 20 70 66 72 |sing pcap or pfr|
> 00000470 69 6e 67 0a 66 6f 72 20 70 61 63 6b 65 74 20 3a |ing.for packet :|
> 00000480 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 53 6f |= range packetSo|
> 00000490 75 72 63 65 2e 50 61 63 6b 65 74 73 28 29 20 7b |urce.Packets() {|
> 000004a0 0a 20 20 68 61 6e 64 6c 65 50 61 63 6b 65 74 28 |. handlePacket(|
> 000004b0 70 61 63 6b 65 74 29 20 20 2f 2f 20 64 6f 20 73 |packet) // do s|
> 000004c0 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 65 61 |omething with ea|
> 000004d0 63 68 20 70 61 63 6b 65 74 0a 7d 0a 3c 2f 70 72 |ch packet.}.</pr|
> 000004e0 65 3e 0a 3c 70 3e 0a 59 6f 75 20 63 61 6e 20 63 |e>.<p>.You can c|
> 000004f0 68 61 6e 67 65 20 74 68 65 20 64 65 63 6f 64 69 |hange the decodi|
> 00000500 6e 67 20 6f 70 74 69 6f 6e 73 20 6f 66 20 74 68 |ng options of th|
> 00000510 65 20 70 61 63 6b 65 74 53 6f 75 72 63 65 20 62 |e packetSource b|
> 00000520 79 20 73 65 74 74 69 6e 67 20 66 69 65 6c 64 73 |y setting fields|
> 00000530 20 69 6e 0a 70 61 63 6b 65 74 53 6f 75 72 63 65 | in.packetSource|
> 00000540 2e 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 2e 2e |.DecodeOptions..|
> 00000550 2e 20 73 65 65 20 74 68 65 20 66 6f 6c 6c 6f 77 |. see the follow|
> 00000560 69 6e 67 20 73 65 63 74 69 6f 6e 73 20 66 6f 72 |ing sections for|
> 00000570 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 3c | more details..<|
> 00000580 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 4c 61 7a 79 |/p>.<h3 id="Lazy|
> 00000590 5f 44 65 63 6f 64 69 6e 67 22 3e 4c 61 7a 79 20 |_Decoding">Lazy |
> 000005a0 44 65 63 6f 64 69 6e 67 3c 2f 68 33 3e 0a 3c 70 |Decoding</h3>.<p|
> 000005b0 3e 0a 67 6f 70 61 63 6b 65 74 20 6f 70 74 69 6f |>.gopacket optio|
> 000005c0 6e 61 6c 6c 79 20 64 65 63 6f 64 65 73 20 70 61 |nally decodes pa|
> 000005d0 63 6b 65 74 20 64 61 74 61 20 6c 61 7a 69 6c 79 |cket data lazily|
> 000005e0 2c 20 6d 65 61 6e 69 6e 67 20 69 74 0a 6f 6e 6c |, meaning it.onl|
> 000005f0 79 20 64 65 63 6f 64 65 73 20 61 20 70 61 63 6b |y decodes a pack|
> 00000600 65 74 20 6c 61 79 65 72 20 77 68 65 6e 20 69 74 |et layer when it|
> 00000610 20 6e 65 65 64 73 20 74 6f 20 74 6f 20 68 61 6e | needs to to han|
> 00000620 64 6c 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 63 |dle a function c|
> 00000630 61 6c 6c 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 2f |all..</p>.<pre>/|
> 00000640 2f 20 43 72 65 61 74 65 20 61 20 70 61 63 6b 65 |/ Create a packe|
> 00000650 74 2c 20 62 75 74 20 64 6f 6e 26 23 33 39 3b 74 |t, but don't|
> 00000660 20 61 63 74 75 61 6c 6c 79 20 64 65 63 6f 64 65 | actually decode|
> 00000670 20 61 6e 79 74 68 69 6e 67 20 79 65 74 0a 70 61 | anything yet.pa|
> 00000680 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket|
> 00000690 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac|
> 000006a0 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.|
> 000006b0 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne|
> 000006c0 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 |t, gopacket.Lazy|
> 000006d0 29 0a 2f 2f 20 4e 6f 77 2c 20 64 65 63 6f 64 65 |).// Now, decode|
> 000006e0 20 74 68 65 20 70 61 63 6b 65 74 20 75 70 20 74 | the packet up t|
> 000006f0 6f 20 74 68 65 20 66 69 72 73 74 20 49 50 76 34 |o the first IPv4|
> 00000700 20 6c 61 79 65 72 20 66 6f 75 6e 64 20 62 75 74 | layer found but|
> 00000710 20 6e 6f 20 66 75 72 74 68 65 72 2e 0a 2f 2f 20 | no further..// |
> 00000720 49 66 20 6e 6f 20 49 50 76 34 20 6c 61 79 65 72 |If no IPv4 layer|
> 00000730 20 77 61 73 20 66 6f 75 6e 64 2c 20 74 68 65 20 | was found, the |
> 00000740 77 68 6f 6c 65 20 70 61 63 6b 65 74 20 77 69 6c |whole packet wil|
> 00000750 6c 20 62 65 20 64 65 63 6f 64 65 64 20 6c 6f 6f |l be decoded loo|
> 00000760 6b 69 6e 67 20 66 6f 72 0a 2f 2f 20 69 74 2e 0a |king for.// it..|
> 00000770 69 70 34 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 |ip4 := packet.La|
> 00000780 79 65 72 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 |yer(layers.Layer|
> 00000790 54 79 70 65 49 50 76 34 29 0a 2f 2f 20 44 65 63 |TypeIPv4).// Dec|
> 000007a0 6f 64 65 20 61 6c 6c 20 6c 61 79 65 72 73 20 61 |ode all layers a|
> 000007b0 6e 64 20 72 65 74 75 72 6e 20 74 68 65 6d 2e 20 |nd return them. |
> 000007c0 20 54 68 65 20 6c 61 79 65 72 73 20 75 70 20 74 | The layers up t|
> 000007d0 6f 20 74 68 65 20 66 69 72 73 74 20 49 50 76 34 |o the first IPv4|
> 000007e0 20 6c 61 79 65 72 0a 2f 2f 20 61 72 65 20 61 6c | layer.// are al|
> 000007f0 72 65 61 64 79 20 64 65 63 6f 64 65 64 2c 20 61 |ready decoded, a|
> 00000800 6e 64 20 77 69 6c 6c 20 6e 6f 74 20 72 65 71 75 |nd will not requ|
> 00000810 69 72 65 20 64 65 63 6f 64 69 6e 67 20 61 20 73 |ire decoding a s|
> 00000820 65 63 6f 6e 64 20 74 69 6d 65 2e 0a 6c 61 79 65 |econd time..laye|
> 00000830 72 73 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 |rs := packet.Lay|
> 00000840 65 72 73 28 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e |ers().</pre>.<p>|
> 00000850 0a 4c 61 7a 69 6c 79 2d 64 65 63 6f 64 65 64 20 |.Lazily-decoded |
> 00000860 70 61 63 6b 65 74 73 20 61 72 65 20 6e 6f 74 20 |packets are not |
> 00000870 63 6f 6e 63 75 72 72 65 6e 63 79 2d 73 61 66 65 |concurrency-safe|
> 00000880 2e 20 20 53 69 6e 63 65 20 6c 61 79 65 72 73 20 |. Since layers |
> 00000890 68 61 76 65 20 6e 6f 74 20 61 6c 6c 20 62 65 65 |have not all bee|
> 000008a0 6e 0a 64 65 63 6f 64 65 64 2c 20 65 61 63 68 20 |n.decoded, each |
> 000008b0 63 61 6c 6c 20 74 6f 20 4c 61 79 65 72 28 29 20 |call to Layer() |
> 000008c0 6f 72 20 4c 61 79 65 72 73 28 29 20 68 61 73 20 |or Layers() has |
> 000008d0 74 68 65 20 70 6f 74 65 6e 74 69 61 6c 20 74 6f |the potential to|
> 000008e0 20 6d 75 74 61 74 65 20 74 68 65 20 70 61 63 6b | mutate the pack|
> 000008f0 65 74 0a 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 |et.in order to d|
> 00000900 65 63 6f 64 65 20 74 68 65 20 6e 65 78 74 20 6c |ecode the next l|
> 00000910 61 79 65 72 2e 20 20 49 66 20 61 20 70 61 63 6b |ayer. If a pack|
> 00000920 65 74 20 69 73 20 75 73 65 64 0a 69 6e 20 6d 75 |et is used.in mu|
> 00000930 6c 74 69 70 6c 65 20 67 6f 72 6f 75 74 69 6e 65 |ltiple goroutine|
> 00000940 73 20 63 6f 6e 63 75 72 72 65 6e 74 6c 79 2c 20 |s concurrently, |
> 00000950 64 6f 6e 26 23 33 39 3b 74 20 75 73 65 20 67 6f |don't use go|
> 00000960 70 61 63 6b 65 74 2e 4c 61 7a 79 2e 20 20 54 68 |packet.Lazy. Th|
> 00000970 65 6e 20 67 6f 70 61 63 6b 65 74 0a 77 69 6c 6c |en gopacket.will|
> 00000980 20 64 65 63 6f 64 65 20 74 68 65 20 70 61 63 6b | decode the pack|
> 00000990 65 74 20 66 75 6c 6c 79 2c 20 61 6e 64 20 61 6c |et fully, and al|
> 000009a0 6c 20 66 75 74 75 72 65 20 66 75 6e 63 74 69 6f |l future functio|
> 000009b0 6e 20 63 61 6c 6c 73 20 77 6f 6e 26 23 33 39 3b |n calls won'|
> 000009c0 74 20 6d 75 74 61 74 65 20 74 68 65 0a 6f 62 6a |t mutate the.obj|
> 000009d0 65 63 74 2e 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 |ect..</p>.<h3 id|
> 000009e0 3d 22 4e 6f 43 6f 70 79 5f 44 65 63 6f 64 69 6e |="NoCopy_Decodin|
> 000009f0 67 22 3e 4e 6f 43 6f 70 79 20 44 65 63 6f 64 69 |g">NoCopy Decodi|
> 00000a00 6e 67 3c 2f 68 33 3e 0a 3c 70 3e 0a 42 79 20 64 |ng</h3>.<p>.By d|
> 00000a10 65 66 61 75 6c 74 2c 20 67 6f 70 61 63 6b 65 74 |efault, gopacket|
> 00000a20 20 77 69 6c 6c 20 63 6f 70 79 20 74 68 65 20 73 | will copy the s|
> 00000a30 6c 69 63 65 20 70 61 73 73 65 64 20 74 6f 20 4e |lice passed to N|
> 00000a40 65 77 50 61 63 6b 65 74 20 61 6e 64 20 73 74 6f |ewPacket and sto|
> 00000a50 72 65 20 74 68 65 0a 63 6f 70 79 20 77 69 74 68 |re the.copy with|
> 00000a60 69 6e 20 74 68 65 20 70 61 63 6b 65 74 2c 20 73 |in the packet, s|
> 00000a70 6f 20 66 75 74 75 72 65 20 6d 75 74 61 74 69 6f |o future mutatio|
> 00000a80 6e 73 20 74 6f 20 74 68 65 20 62 79 74 65 73 20 |ns to the bytes |
> 00000a90 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 73 |underlying the s|
> 00000aa0 6c 69 63 65 0a 64 6f 6e 26 23 33 39 3b 74 20 61 |lice.don't a|
> 00000ab0 66 66 65 63 74 20 74 68 65 20 70 61 63 6b 65 74 |ffect the packet|
> 00000ac0 20 61 6e 64 20 69 74 73 20 6c 61 79 65 72 73 2e | and its layers.|
> 00000ad0 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 61 | If you can gua|
> 00000ae0 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 0a |rantee that the.|
> 00000af0 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 65 |underlying slice|
> 00000b00 20 62 79 74 65 73 20 77 6f 6e 26 23 33 39 3b 74 | bytes won't|
> 00000b10 20 62 65 20 63 68 61 6e 67 65 64 2c 20 79 6f 75 | be changed, you|
> 00000b20 20 63 61 6e 20 75 73 65 20 4e 6f 43 6f 70 79 20 | can use NoCopy |
> 00000b30 74 6f 20 74 65 6c 6c 0a 67 6f 70 61 63 6b 65 74 |to tell.gopacket|
> 00000b40 2e 4e 65 77 50 61 63 6b 65 74 2c 20 61 6e 64 20 |.NewPacket, and |
> 00000b50 69 74 26 23 33 39 3b 6c 6c 20 75 73 65 20 74 68 |it'll use th|
> 00000b60 65 20 70 61 73 73 65 64 2d 69 6e 20 73 6c 69 63 |e passed-in slic|
> 00000b70 65 20 69 74 73 65 6c 66 2e 0a 3c 2f 70 3e 0a 3c |e itself..</p>.<|
> 00000b80 70 72 65 3e 2f 2f 20 54 68 69 73 20 63 68 61 6e |pre>// This chan|
> 00000b90 6e 65 6c 20 72 65 74 75 72 6e 73 20 6e 65 77 20 |nel returns new |
> 00000ba0 62 79 74 65 20 73 6c 69 63 65 73 2c 20 65 61 63 |byte slices, eac|
> 00000bb0 68 20 6f 66 20 77 68 69 63 68 20 70 6f 69 6e 74 |h of which point|
> 00000bc0 73 20 74 6f 20 61 20 6e 65 77 0a 2f 2f 20 6d 65 |s to a new.// me|
> 00000bd0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74 68 |mory location th|
> 00000be0 61 74 26 23 33 39 3b 73 20 67 75 61 72 61 6e 74 |at's guarant|
> 00000bf0 65 65 64 20 69 6d 6d 75 74 61 62 6c 65 20 66 6f |eed immutable fo|
> 00000c00 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f |r the duration o|
> 00000c10 66 20 74 68 65 0a 2f 2f 20 70 61 63 6b 65 74 2e |f the.// packet.|
> 00000c20 0a 66 6f 72 20 64 61 74 61 20 3a 3d 20 72 61 6e |.for data := ran|
> 00000c30 67 65 20 6d 79 42 79 74 65 53 6c 69 63 65 43 68 |ge myByteSliceCh|
> 00000c40 61 6e 6e 65 6c 20 7b 0a 20 20 70 20 3a 3d 20 67 |annel {. p := g|
> 00000c50 6f 70 61 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 |opacket.NewPacke|
> 00000c60 74 28 64 61 74 61 2c 20 6c 61 79 65 72 73 2e 4c |t(data, layers.L|
> 00000c70 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 74 |ayerTypeEthernet|
> 00000c80 2c 20 67 6f 70 61 63 6b 65 74 2e 4e 6f 43 6f 70 |, gopacket.NoCop|
> 00000c90 79 29 0a 20 20 64 6f 53 6f 6d 65 74 68 69 6e 67 |y). doSomething|
> 00000ca0 57 69 74 68 50 61 63 6b 65 74 28 70 29 0a 7d 0a |WithPacket(p).}.|
> 00000cb0 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 54 68 65 20 66 |</pre>.<p>.The f|
> 00000cc0 61 73 74 65 73 74 20 6d 65 74 68 6f 64 20 6f 66 |astest method of|
> 00000cd0 20 64 65 63 6f 64 69 6e 67 20 69 73 20 74 6f 20 | decoding is to |
> 00000ce0 75 73 65 20 62 6f 74 68 20 4c 61 7a 79 20 61 6e |use both Lazy an|
> 00000cf0 64 20 4e 6f 43 6f 70 79 2c 20 62 75 74 20 6e 6f |d NoCopy, but no|
> 00000d00 74 65 20 66 72 6f 6d 0a 74 68 65 20 6d 61 6e 79 |te from.the many|
> 00000d10 20 63 61 76 65 61 74 73 20 61 62 6f 76 65 20 74 | caveats above t|
> 00000d20 68 61 74 20 66 6f 72 20 73 6f 6d 65 20 69 6d 70 |hat for some imp|
> 00000d30 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68 65 |lementations the|
> 00000d40 79 20 6d 61 79 20 62 65 20 64 61 6e 67 65 72 6f |y may be dangero|
> 00000d50 75 73 0a 65 69 74 68 65 72 20 6f 72 20 62 6f 74 |us.either or bot|
> 00000d60 68 20 6d 61 79 20 62 65 20 64 61 6e 67 65 72 6f |h may be dangero|
> 00000d70 75 73 2e 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d |us..</p>.<h3 id=|
> 00000d80 22 50 6f 69 6e 74 65 72 73 5f 54 6f 5f 4b 6e 6f |"Pointers_To_Kno|
> 00000d90 77 6e 5f 4c 61 79 65 72 73 22 3e 50 6f 69 6e 74 |wn_Layers">Point|
> 00000da0 65 72 73 20 54 6f 20 4b 6e 6f 77 6e 20 4c 61 79 |ers To Known Lay|
> 00000db0 65 72 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 44 75 72 |ers</h3>.<p>.Dur|
> 00000dc0 69 6e 67 20 64 65 63 6f 64 69 6e 67 2c 20 63 65 |ing decoding, ce|
> 00000dd0 72 74 61 69 6e 20 6c 61 79 65 72 73 20 61 72 65 |rtain layers are|
> 00000de0 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 70 | stored in the p|
> 00000df0 61 63 6b 65 74 20 61 73 20 77 65 6c 6c 2d 6b 6e |acket as well-kn|
> 00000e00 6f 77 6e 0a 6c 61 79 65 72 20 74 79 70 65 73 2e |own.layer types.|
> 00000e10 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 49 | For example, I|
> 00000e20 50 76 34 20 61 6e 64 20 49 50 76 36 20 61 72 65 |Pv4 and IPv6 are|
> 00000e30 20 62 6f 74 68 20 63 6f 6e 73 69 64 65 72 65 64 | both considered|
> 00000e40 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 0a 6c 61 | NetworkLayer.la|
> 00000e50 79 65 72 73 2c 20 77 68 69 6c 65 20 54 43 50 20 |yers, while TCP |
> 00000e60 61 6e 64 20 55 44 50 20 61 72 65 20 62 6f 74 68 |and UDP are both|
> 00000e70 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 | TransportLayer |
> 00000e80 6c 61 79 65 72 73 2e 20 20 57 65 20 73 75 70 70 |layers. We supp|
> 00000e90 6f 72 74 20 34 0a 6c 61 79 65 72 73 2c 20 63 6f |ort 4.layers, co|
> 00000ea0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 |rresponding to t|
> 00000eb0 68 65 20 34 20 6c 61 79 65 72 73 20 6f 66 20 74 |he 4 layers of t|
> 00000ec0 68 65 20 54 43 50 2f 49 50 20 6c 61 79 65 72 69 |he TCP/IP layeri|
> 00000ed0 6e 67 20 73 63 68 65 6d 65 20 28 72 6f 75 67 68 |ng scheme (rough|
> 00000ee0 6c 79 0a 61 6e 61 67 61 6c 6f 75 73 20 74 6f 20 |ly.anagalous to |
> 00000ef0 6c 61 79 65 72 73 20 32 2c 20 33 2c 20 34 2c 20 |layers 2, 3, 4, |
> 00000f00 61 6e 64 20 37 20 6f 66 20 74 68 65 20 4f 53 49 |and 7 of the OSI|
> 00000f10 20 6d 6f 64 65 6c 29 2e 20 20 54 6f 20 61 63 63 | model). To acc|
> 00000f20 65 73 73 20 74 68 65 73 65 2c 0a 79 6f 75 20 63 |ess these,.you c|
> 00000f30 61 6e 20 75 73 65 20 74 68 65 20 70 61 63 6b 65 |an use the packe|
> 00000f40 74 2e 4c 69 6e 6b 4c 61 79 65 72 2c 20 70 61 63 |t.LinkLayer, pac|
> 00000f50 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer|
> 00000f60 2c 0a 70 61 63 6b 65 74 2e 54 72 61 6e 73 70 6f |,.packet.Transpo|
> 00000f70 72 74 4c 61 79 65 72 2c 20 61 6e 64 20 70 61 63 |rtLayer, and pac|
> 00000f80 6b 65 74 2e 41 70 70 6c 69 63 61 74 69 6f 6e 4c |ket.ApplicationL|
> 00000f90 61 79 65 72 20 66 75 6e 63 74 69 6f 6e 73 2e 20 |ayer functions. |
> 00000fa0 20 45 61 63 68 20 6f 66 0a 74 68 65 73 65 20 66 | Each of.these f|
> 00000fb0 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 73 |unctions returns|
> 00000fc0 20 61 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 | a corresponding|
> 00000fd0 20 69 6e 74 65 72 66 61 63 65 0a 28 67 6f 70 61 | interface.(gopa|
> 00000fe0 63 6b 65 74 2e 7b 4c 69 6e 6b 2c 4e 65 74 77 6f |cket.{Link,Netwo|
> 00000ff0 72 6b 2c 54 72 61 6e 73 70 6f 72 74 2c 41 70 70 |rk,Transport,App|
> 00001000 6c 69 63 61 74 69 6f 6e 7d 4c 61 79 65 72 29 2e |lication}Layer).|
> 00001010 20 20 54 68 65 20 66 69 72 73 74 20 74 68 72 65 | The first thre|
> 00001020 65 0a 70 72 6f 76 69 64 65 20 6d 65 74 68 6f 64 |e.provide method|
> 00001030 73 20 66 6f 72 20 67 65 74 74 69 6e 67 20 73 72 |s for getting sr|
> 00001040 63 2f 64 73 74 20 61 64 64 72 65 73 73 65 73 20 |c/dst addresses |
> 00001050 66 6f 72 20 74 68 61 74 20 70 61 72 74 69 63 75 |for that particu|
> 00001060 6c 61 72 20 6c 61 79 65 72 2c 0a 77 68 69 6c 65 |lar layer,.while|
> 00001070 20 74 68 65 20 66 69 6e 61 6c 20 6c 61 79 65 72 | the final layer|
> 00001080 20 70 72 6f 76 69 64 65 73 20 61 20 50 61 79 6c | provides a Payl|
> 00001090 6f 61 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 |oad function to |
> 000010a0 67 65 74 20 70 61 79 6c 6f 61 64 20 64 61 74 61 |get payload data|
> 000010b0 2e 0a 54 68 69 73 20 69 73 20 68 65 6c 70 66 75 |..This is helpfu|
> 000010c0 6c 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 |l, for example, |
> 000010d0 74 6f 20 67 65 74 20 70 61 79 6c 6f 61 64 73 20 |to get payloads |
> 000010e0 66 6f 72 20 61 6c 6c 20 70 61 63 6b 65 74 73 20 |for all packets |
> 000010f0 72 65 67 61 72 64 6c 65 73 73 0a 6f 66 20 74 68 |regardless.of th|
> 00001100 65 69 72 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 |eir underlying d|
> 00001110 61 74 61 20 74 79 70 65 3a 0a 3c 2f 70 3e 0a 3c |ata type:.</p>.<|
> 00001120 70 72 65 3e 2f 2f 20 47 65 74 20 70 61 63 6b 65 |pre>// Get packe|
> 00001130 74 73 20 66 72 6f 6d 20 73 6f 6d 65 20 73 6f 75 |ts from some sou|
> 00001140 72 63 65 0a 66 6f 72 20 70 61 63 6b 65 74 20 3a |rce.for packet :|
> 00001150 3d 20 72 61 6e 67 65 20 73 6f 6d 65 53 6f 75 72 |= range someSour|
> 00001160 63 65 20 7b 0a 20 20 69 66 20 61 70 70 20 3a 3d |ce {. if app :=|
> 00001170 20 70 61 63 6b 65 74 2e 41 70 70 6c 69 63 61 74 | packet.Applicat|
> 00001180 69 6f 6e 4c 61 79 65 72 28 29 3b 20 61 70 70 20 |ionLayer(); app |
> 00001190 21 3d 20 6e 69 6c 20 7b 0a 20 20 20 20 69 66 20 |!= nil {. if |
> 000011a0 73 74 72 69 6e 67 73 2e 43 6f 6e 74 61 69 6e 73 |strings.Contains|
> 000011b0 28 73 74 72 69 6e 67 28 61 70 70 2e 50 61 79 6c |(string(app.Payl|
> 000011c0 6f 61 64 28 29 29 2c 20 26 23 33 34 3b 6d 61 67 |oad()), "mag|
> 000011d0 69 63 20 73 74 72 69 6e 67 26 23 33 34 3b 29 20 |ic string") |
> 000011e0 7b 0a 20 20 20 20 20 20 66 6d 74 2e 50 72 69 6e |{. fmt.Prin|
> 000011f0 74 6c 6e 28 26 23 33 34 3b 46 6f 75 6e 64 20 6d |tln("Found m|
> 00001200 61 67 69 63 20 73 74 72 69 6e 67 20 69 6e 20 61 |agic string in a|
> 00001210 20 70 61 63 6b 65 74 21 26 23 33 34 3b 29 0a 20 | packet!"). |
> 00001220 20 20 20 7d 0a 20 20 7d 0a 7d 0a 3c 2f 70 72 65 | }. }.}.</pre|
> 00001230 3e 0a 3c 70 3e 0a 41 20 70 61 72 74 69 63 75 6c |>.<p>.A particul|
> 00001240 61 72 6c 79 20 75 73 65 66 75 6c 20 6c 61 79 65 |arly useful laye|
> 00001250 72 20 69 73 20 45 72 72 6f 72 4c 61 79 65 72 2c |r is ErrorLayer,|
> 00001260 20 77 68 69 63 68 20 69 73 20 73 65 74 20 77 68 | which is set wh|
> 00001270 65 6e 65 76 65 72 20 74 68 65 72 65 26 23 33 39 |enever there'|
> 00001280 3b 73 0a 61 6e 20 65 72 72 6f 72 20 70 61 72 73 |;s.an error pars|
> 00001290 69 6e 67 20 70 61 72 74 20 6f 66 20 74 68 65 20 |ing part of the |
> 000012a0 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 3c 70 72 |packet..</p>.<pr|
> 000012b0 65 3e 70 61 63 6b 65 74 20 3a 3d 20 67 6f 70 61 |e>packet := gopa|
> 000012c0 63 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 6d |cket.NewPacket(m|
> 000012d0 79 50 61 63 6b 65 74 44 61 74 61 2c 20 6c 61 79 |yPacketData, lay|
> 000012e0 65 72 73 2e 4c 61 79 65 72 54 79 70 65 45 74 68 |ers.LayerTypeEth|
> 000012f0 65 72 6e 65 74 2c 20 67 6f 70 61 63 6b 65 74 2e |ernet, gopacket.|
> 00001300 44 65 66 61 75 6c 74 29 0a 69 66 20 65 72 72 20 |Default).if err |
> 00001310 3a 3d 20 70 61 63 6b 65 74 2e 45 72 72 6f 72 4c |:= packet.ErrorL|
> 00001320 61 79 65 72 28 29 3b 20 65 72 72 20 21 3d 20 6e |ayer(); err != n|
> 00001330 69 6c 20 7b 0a 20 20 66 6d 74 2e 50 72 69 6e 74 |il {. fmt.Print|
> 00001340 6c 6e 28 26 23 33 34 3b 45 72 72 6f 72 20 64 65 |ln("Error de|
> 00001350 63 6f 64 69 6e 67 20 73 6f 6d 65 20 70 61 72 74 |coding some part|
> 00001360 20 6f 66 20 74 68 65 20 70 61 63 6b 65 74 3a 26 | of the packet:&|
> 00001370 23 33 34 3b 2c 20 65 72 72 29 0a 7d 0a 3c 2f 70 |#34;, err).}.</p|
> 00001380 72 65 3e 0a 3c 70 3e 0a 4e 6f 74 65 20 74 68 61 |re>.<p>.Note tha|
> 00001390 74 20 77 65 20 64 6f 6e 26 23 33 39 3b 74 20 72 |t we don't r|
> 000013a0 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72 20 66 |eturn an error f|
> 000013b0 72 6f 6d 20 4e 65 77 50 61 63 6b 65 74 20 62 65 |rom NewPacket be|
> 000013c0 63 61 75 73 65 20 77 65 20 6d 61 79 20 68 61 76 |cause we may hav|
> 000013d0 65 20 64 65 63 6f 64 65 64 0a 61 20 6e 75 6d 62 |e decoded.a numb|
> 000013e0 65 72 20 6f 66 20 6c 61 79 65 72 73 20 73 75 63 |er of layers suc|
> 000013f0 63 65 73 73 66 75 6c 6c 79 20 62 65 66 6f 72 65 |cessfully before|
> 00001400 20 72 75 6e 6e 69 6e 67 20 69 6e 74 6f 20 6f 75 | running into ou|
> 00001410 72 20 65 72 72 6f 6e 65 6f 75 73 20 6c 61 79 65 |r erroneous laye|
> 00001420 72 2e 20 20 59 6f 75 0a 6d 61 79 20 73 74 69 6c |r. You.may stil|
> 00001430 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 67 65 74 |l be able to get|
> 00001440 20 79 6f 75 72 20 45 74 68 65 72 6e 65 74 20 61 | your Ethernet a|
> 00001450 6e 64 20 49 50 76 34 20 6c 61 79 65 72 73 20 63 |nd IPv4 layers c|
> 00001460 6f 72 72 65 63 74 6c 79 2c 20 65 76 65 6e 20 69 |orrectly, even i|
> 00001470 66 0a 79 6f 75 72 20 54 43 50 20 6c 61 79 65 72 |f.your TCP layer|
> 00001480 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 2e 0a 3c | is malformed..<|
> 00001490 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 46 6c 6f 77 |/p>.<h3 id="Flow|
> 000014a0 5f 41 6e 64 5f 45 6e 64 70 6f 69 6e 74 22 3e 46 |_And_Endpoint">F|
> 000014b0 6c 6f 77 20 41 6e 64 20 45 6e 64 70 6f 69 6e 74 |low And Endpoint|
> 000014c0 3c 2f 68 33 3e 0a 3c 70 3e 0a 67 6f 70 61 63 6b |</h3>.<p>.gopack|
> 000014d0 65 74 20 68 61 73 20 74 77 6f 20 75 73 65 66 75 |et has two usefu|
> 000014e0 6c 20 6f 62 6a 65 63 74 73 2c 20 46 6c 6f 77 20 |l objects, Flow |
> 000014f0 61 6e 64 20 45 6e 64 70 6f 69 6e 74 2c 20 66 6f |and Endpoint, fo|
> 00001500 72 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6e 67 20 |r communicating |
> 00001510 69 6e 20 61 20 70 72 6f 74 6f 63 6f 6c 0a 69 6e |in a protocol.in|
> 00001520 64 65 70 65 6e 64 65 6e 74 20 6d 61 6e 6e 65 72 |dependent manner|
> 00001530 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 61 | the fact that a|
> 00001540 20 70 61 63 6b 65 74 20 69 73 20 63 6f 6d 69 6e | packet is comin|
> 00001550 67 20 66 72 6f 6d 20 41 20 61 6e 64 20 67 6f 69 |g from A and goi|
> 00001560 6e 67 20 74 6f 20 42 2e 0a 54 68 65 20 67 65 6e |ng to B..The gen|
> 00001570 65 72 61 6c 20 6c 61 79 65 72 20 74 79 70 65 73 |eral layer types|
> 00001580 20 4c 69 6e 6b 4c 61 79 65 72 2c 20 4e 65 74 77 | LinkLayer, Netw|
> 00001590 6f 72 6b 4c 61 79 65 72 2c 20 61 6e 64 20 54 72 |orkLayer, and Tr|
> 000015a0 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 61 6c 6c |ansportLayer all|
> 000015b0 20 70 72 6f 76 69 64 65 0a 6d 65 74 68 6f 64 73 | provide.methods|
> 000015c0 20 66 6f 72 20 65 78 74 72 61 63 74 69 6e 67 20 | for extracting |
> 000015d0 74 68 65 69 72 20 66 6c 6f 77 20 69 6e 66 6f 72 |their flow infor|
> 000015e0 6d 61 74 69 6f 6e 2c 20 77 69 74 68 6f 75 74 20 |mation, without |
> 000015f0 77 6f 72 72 79 69 6e 67 20 61 62 6f 75 74 20 74 |worrying about t|
> 00001600 68 65 20 74 79 70 65 0a 6f 66 20 74 68 65 20 75 |he type.of the u|
> 00001610 6e 64 65 72 6c 79 69 6e 67 20 4c 61 79 65 72 2e |nderlying Layer.|
> 00001620 0a 3c 2f 70 3e 0a 3c 70 3e 0a 41 20 46 6c 6f 77 |.</p>.<p>.A Flow|
> 00001630 20 69 73 20 61 20 73 69 6d 70 6c 65 20 6f 62 6a | is a simple obj|
> 00001640 65 63 74 20 6d 61 64 65 20 75 70 20 6f 66 20 61 |ect made up of a|
> 00001650 20 73 65 74 20 6f 66 20 74 77 6f 20 45 6e 64 70 | set of two Endp|
> 00001660 6f 69 6e 74 73 2c 20 6f 6e 65 20 73 6f 75 72 63 |oints, one sourc|
> 00001670 65 20 61 6e 64 20 6f 6e 65 0a 64 65 73 74 69 6e |e and one.destin|
> 00001680 61 74 69 6f 6e 2e 20 20 49 74 20 64 65 74 61 69 |ation. It detai|
> 00001690 6c 73 20 74 68 65 20 73 65 6e 64 65 72 20 61 6e |ls the sender an|
> 000016a0 64 20 72 65 63 65 69 76 65 72 20 6f 66 20 74 68 |d receiver of th|
> 000016b0 65 20 4c 61 79 65 72 20 6f 66 20 74 68 65 20 50 |e Layer of the P|
> 000016c0 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 3c 70 3e 0a |acket..</p>.<p>.|
> 000016d0 41 6e 20 45 6e 64 70 6f 69 6e 74 20 69 73 20 61 |An Endpoint is a|
> 000016e0 20 68 61 73 68 61 62 6c 65 20 72 65 70 72 65 73 | hashable repres|
> 000016f0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 73 6f |entation of a so|
> 00001700 75 72 63 65 20 6f 72 20 64 65 73 74 69 6e 61 74 |urce or destinat|
> 00001710 69 6f 6e 2e 20 20 46 6f 72 0a 65 78 61 6d 70 6c |ion. For.exampl|
> 00001720 65 2c 20 66 6f 72 20 4c 61 79 65 72 54 79 70 65 |e, for LayerType|
> 00001730 49 50 76 34 2c 20 61 6e 20 45 6e 64 70 6f 69 6e |IPv4, an Endpoin|
> 00001740 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 49 |t contains the I|
> 00001750 50 20 61 64 64 72 65 73 73 20 62 79 74 65 73 20 |P address bytes |
> 00001760 66 6f 72 20 61 20 76 34 0a 49 50 20 70 61 63 6b |for a v4.IP pack|
> 00001770 65 74 2e 20 20 41 20 46 6c 6f 77 20 63 61 6e 20 |et. A Flow can |
> 00001780 62 65 20 62 72 6f 6b 65 6e 20 69 6e 74 6f 20 45 |be broken into E|
> 00001790 6e 64 70 6f 69 6e 74 73 2c 20 61 6e 64 20 45 6e |ndpoints, and En|
> 000017a0 64 70 6f 69 6e 74 73 20 63 61 6e 20 62 65 20 63 |dpoints can be c|
> 000017b0 6f 6d 62 69 6e 65 64 0a 69 6e 74 6f 20 46 6c 6f |ombined.into Flo|
> 000017c0 77 73 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 70 61 |ws:.</p>.<pre>pa|
> 000017d0 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 6b 65 74 |cket := gopacket|
> 000017e0 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 50 61 63 |.NewPacket(myPac|
> 000017f0 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 72 73 2e |ketData, layers.|
> 00001800 4c 61 79 65 72 54 79 70 65 45 74 68 65 72 6e 65 |LayerTypeEtherne|
> 00001810 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c 61 7a 79 |t, gopacket.Lazy|
> 00001820 29 0a 6e 65 74 46 6c 6f 77 20 3a 3d 20 70 61 63 |).netFlow := pac|
> 00001830 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer|
> 00001840 28 29 2e 4e 65 74 77 6f 72 6b 46 6c 6f 77 28 29 |().NetworkFlow()|
> 00001850 0a 73 72 63 2c 20 64 73 74 20 3a 3d 20 6e 65 74 |.src, dst := net|
> 00001860 46 6c 6f 77 2e 45 6e 64 70 6f 69 6e 74 73 28 29 |Flow.Endpoints()|
> 00001870 0a 72 65 76 65 72 73 65 46 6c 6f 77 20 3a 3d 20 |.reverseFlow := |
> 00001880 67 6f 70 61 63 6b 65 74 2e 4e 65 77 46 6c 6f 77 |gopacket.NewFlow|
> 00001890 28 64 73 74 2c 20 73 72 63 29 0a 3c 2f 70 72 65 |(dst, src).</pre|
> 000018a0 3e 0a 3c 70 3e 0a 42 6f 74 68 20 45 6e 64 70 6f |>.<p>.Both Endpo|
> 000018b0 69 6e 74 20 61 6e 64 20 46 6c 6f 77 20 6f 62 6a |int and Flow obj|
> 000018c0 65 63 74 73 20 63 61 6e 20 62 65 20 75 73 65 64 |ects can be used|
> 000018d0 20 61 73 20 6d 61 70 20 6b 65 79 73 2c 20 61 6e | as map keys, an|
> 000018e0 64 20 74 68 65 20 65 71 75 61 6c 69 74 79 0a 6f |d the equality.o|
> 000018f0 70 65 72 61 74 6f 72 20 63 61 6e 20 63 6f 6d 70 |perator can comp|
> 00001900 61 72 65 20 74 68 65 6d 2c 20 73 6f 20 79 6f 75 |are them, so you|
> 00001910 20 63 61 6e 20 65 61 73 69 6c 79 20 67 72 6f 75 | can easily grou|
> 00001920 70 20 74 6f 67 65 74 68 65 72 20 61 6c 6c 20 70 |p together all p|
> 00001930 61 63 6b 65 74 73 0a 62 61 73 65 64 20 6f 6e 20 |ackets.based on |
> 00001940 65 6e 64 70 6f 69 6e 74 20 63 72 69 74 65 72 69 |endpoint criteri|
> 00001950 61 3a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 66 6c 6f |a:.</p>.<pre>flo|
> 00001960 77 73 20 3a 3d 20 6d 61 70 5b 67 6f 70 61 63 6b |ws := map[gopack|
> 00001970 65 74 2e 45 6e 64 70 6f 69 6e 74 5d 63 68 61 6e |et.Endpoint]chan|
> 00001980 20 67 6f 70 61 63 6b 65 74 2e 50 61 63 6b 65 74 | gopacket.Packet|
> 00001990 0a 70 61 63 6b 65 74 20 3a 3d 20 67 6f 70 61 63 |.packet := gopac|
> 000019a0 6b 65 74 2e 4e 65 77 50 61 63 6b 65 74 28 6d 79 |ket.NewPacket(my|
> 000019b0 50 61 63 6b 65 74 44 61 74 61 2c 20 6c 61 79 65 |PacketData, laye|
> 000019c0 72 73 2e 4c 61 79 65 72 54 79 70 65 45 74 68 65 |rs.LayerTypeEthe|
> 000019d0 72 6e 65 74 2c 20 67 6f 70 61 63 6b 65 74 2e 4c |rnet, gopacket.L|
> 000019e0 61 7a 79 29 0a 2f 2f 20 53 65 6e 64 20 61 6c 6c |azy).// Send all|
> 000019f0 20 54 43 50 20 70 61 63 6b 65 74 73 20 74 6f 20 | TCP packets to |
> 00001a00 63 68 61 6e 6e 65 6c 73 20 62 61 73 65 64 20 6f |channels based o|
> 00001a10 6e 20 74 68 65 69 72 20 64 65 73 74 69 6e 61 74 |n their destinat|
> 00001a20 69 6f 6e 20 70 6f 72 74 2e 0a 69 66 20 74 63 70 |ion port..if tcp|
> 00001a30 20 3a 3d 20 70 61 63 6b 65 74 2e 4c 61 79 65 72 | := packet.Layer|
> 00001a40 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 54 79 70 |(layers.LayerTyp|
> 00001a50 65 54 43 50 29 3b 20 74 63 70 20 21 3d 20 6e 69 |eTCP); tcp != ni|
> 00001a60 6c 20 7b 0a 20 20 66 6c 6f 77 73 5b 74 63 70 2e |l {. flows[tcp.|
> 00001a70 54 72 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 2e |TransportFlow().|
> 00001a80 44 73 74 28 29 5d 20 26 6c 74 3b 2d 20 70 61 63 |Dst()] <- pac|
> 00001a90 6b 65 74 0a 7d 0a 2f 2f 20 4c 6f 6f 6b 20 66 6f |ket.}.// Look fo|
> 00001aa0 72 20 61 6c 6c 20 70 61 63 6b 65 74 73 20 77 69 |r all packets wi|
> 00001ab0 74 68 20 74 68 65 20 73 61 6d 65 20 73 6f 75 72 |th the same sour|
> 00001ac0 63 65 20 61 6e 64 20 64 65 73 74 69 6e 61 74 69 |ce and destinati|
> 00001ad0 6f 6e 20 6e 65 74 77 6f 72 6b 20 61 64 64 72 65 |on network addre|
> 00001ae0 73 73 0a 69 66 20 6e 65 74 20 3a 3d 20 70 61 63 |ss.if net := pac|
> 00001af0 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ket.NetworkLayer|
> 00001b00 28 29 3b 20 6e 65 74 20 21 3d 20 6e 69 6c 20 7b |(); net != nil {|
> 00001b10 0a 20 20 73 72 63 2c 20 64 73 74 20 3a 3d 20 6e |. src, dst := n|
> 00001b20 65 74 2e 4e 65 74 77 6f 72 6b 46 6c 6f 77 28 29 |et.NetworkFlow()|
> 00001b30 2e 45 6e 64 70 6f 69 6e 74 73 28 29 0a 20 20 69 |.Endpoints(). i|
> 00001b40 66 20 73 72 63 20 3d 3d 20 64 73 74 20 7b 0a 20 |f src == dst {. |
> 00001b50 20 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e 28 26 | fmt.Println(&|
> 00001b60 23 33 34 3b 46 69 73 68 79 20 70 61 63 6b 65 74 |#34;Fishy packet|
> 00001b70 20 68 61 73 20 73 61 6d 65 20 6e 65 74 77 6f 72 | has same networ|
> 00001b80 6b 20 73 6f 75 72 63 65 20 61 6e 64 20 64 73 74 |k source and dst|
> 00001b90 3a 20 25 73 26 23 33 34 3b 2c 20 73 72 63 29 0a |: %s", src).|
> 00001ba0 20 20 7d 0a 7d 0a 2f 2f 20 46 69 6e 64 20 61 6c | }.}.// Find al|
> 00001bb0 6c 20 70 61 63 6b 65 74 73 20 63 6f 6d 69 6e 67 |l packets coming|
> 00001bc0 20 66 72 6f 6d 20 55 44 50 20 70 6f 72 74 20 31 | from UDP port 1|
> 00001bd0 30 30 30 20 74 6f 20 55 44 50 20 70 6f 72 74 20 |000 to UDP port |
> 00001be0 35 30 30 0a 69 6e 74 65 72 65 73 74 69 6e 67 46 |500.interestingF|
> 00001bf0 6c 6f 77 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e |low := gopacket.|
> 00001c00 4e 65 77 46 6c 6f 77 28 6c 61 79 65 72 73 2e 4e |NewFlow(layers.N|
> 00001c10 65 77 55 44 50 50 6f 72 74 45 6e 64 70 6f 69 6e |ewUDPPortEndpoin|
> 00001c20 74 28 31 30 30 30 29 2c 20 6c 61 79 65 72 73 2e |t(1000), layers.|
> 00001c30 4e 65 77 55 44 50 50 6f 72 74 45 6e 64 70 6f 69 |NewUDPPortEndpoi|
> 00001c40 6e 74 28 35 30 30 29 29 0a 69 66 20 74 20 3a 3d |nt(500)).if t :=|
> 00001c50 20 70 61 63 6b 65 74 2e 4e 65 74 77 6f 72 6b 4c | packet.NetworkL|
> 00001c60 61 79 65 72 28 29 3b 20 74 20 21 3d 20 6e 69 6c |ayer(); t != nil|
> 00001c70 20 26 61 6d 70 3b 26 61 6d 70 3b 20 74 2e 54 72 | && t.Tr|
> 00001c80 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 20 3d 3d |ansportFlow() ==|
> 00001c90 20 69 6e 74 65 72 65 73 74 69 6e 67 46 6c 6f 77 | interestingFlow|
> 00001ca0 20 7b 0a 20 20 66 6d 74 2e 50 72 69 6e 74 6c 6e | {. fmt.Println|
> 00001cb0 28 26 23 33 34 3b 46 6f 75 6e 64 20 74 68 61 74 |("Found that|
> 00001cc0 20 55 44 50 20 66 6c 6f 77 20 49 20 77 61 73 20 | UDP flow I was |
> 00001cd0 6c 6f 6f 6b 69 6e 67 20 66 6f 72 21 26 23 33 34 |looking for!"|
> 00001ce0 3b 29 0a 7d 0a 3c 2f 70 72 65 3e 0a 3c 68 33 20 |;).}.</pre>.<h3 |
> 00001cf0 69 64 3d 22 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 |id="Implementing|
> 00001d00 5f 59 6f 75 72 5f 4f 77 6e 5f 44 65 63 6f 64 65 |_Your_Own_Decode|
> 00001d10 72 22 3e 49 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 |r">Implementing |
> 00001d20 59 6f 75 72 20 4f 77 6e 20 44 65 63 6f 64 65 72 |Your Own Decoder|
> 00001d30 3c 2f 68 33 3e 0a 3c 70 3e 0a 49 66 20 79 6f 75 |</h3>.<p>.If you|
> 00001d40 72 20 6e 65 74 77 6f 72 6b 20 68 61 73 20 73 6f |r network has so|
> 00001d50 6d 65 20 73 74 72 61 6e 67 65 20 65 6e 63 61 70 |me strange encap|
> 00001d60 73 75 6c 61 74 69 6f 6e 2c 20 79 6f 75 20 63 61 |sulation, you ca|
> 00001d70 6e 20 69 6d 70 6c 65 6d 65 6e 74 20 79 6f 75 72 |n implement your|
> 00001d80 20 6f 77 6e 0a 64 65 63 6f 64 65 72 2e 20 20 49 | own.decoder. I|
> 00001d90 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 |n this example, |
> 00001da0 77 65 20 68 61 6e 64 6c 65 20 45 74 68 65 72 6e |we handle Ethern|
> 00001db0 65 74 20 70 61 63 6b 65 74 73 20 77 68 69 63 68 |et packets which|
> 00001dc0 20 61 72 65 20 65 6e 63 61 70 73 75 6c 61 74 65 | are encapsulate|
> 00001dd0 64 0a 69 6e 20 61 20 34 2d 62 79 74 65 20 68 65 |d.in a 4-byte he|
> 00001de0 61 64 65 72 2e 0a 3c 2f 70 3e 0a 3c 70 72 65 3e |ader..</p>.<pre>|
> 00001df0 2f 2f 20 43 72 65 61 74 65 20 61 20 6c 61 79 65 |// Create a laye|
> 00001e00 72 20 74 79 70 65 2c 20 73 68 6f 75 6c 64 20 62 |r type, should b|
> 00001e10 65 20 75 6e 69 71 75 65 20 61 6e 64 20 68 69 67 |e unique and hig|
> 00001e20 68 2c 20 73 6f 20 69 74 20 64 6f 65 73 6e 26 23 |h, so it doesn&#|
> 00001e30 33 39 3b 74 20 63 6f 6e 66 6c 69 63 74 2c 0a 2f |39;t conflict,./|
> 00001e40 2f 20 67 69 76 69 6e 67 20 69 74 20 61 20 6e 61 |/ giving it a na|
> 00001e50 6d 65 20 61 6e 64 20 61 20 64 65 63 6f 64 65 72 |me and a decoder|
> 00001e60 20 74 6f 20 75 73 65 2e 0a 76 61 72 20 4d 79 4c | to use..var MyL|
> 00001e70 61 79 65 72 54 79 70 65 20 3d 20 67 6f 70 61 63 |ayerType = gopac|
> 00001e80 6b 65 74 2e 52 65 67 69 73 74 65 72 4c 61 79 65 |ket.RegisterLaye|
> 00001e90 72 54 79 70 65 28 31 32 33 34 35 2c 20 26 23 33 |rType(12345, |
> 00001ea0 34 3b 4d 79 4c 61 79 65 72 54 79 70 65 26 23 33 |4;MyLayerType|
> 00001eb0 34 3b 2c 20 67 6f 70 61 63 6b 65 74 2e 44 65 63 |4;, gopacket.Dec|
> 00001ec0 6f 64 65 46 75 6e 63 28 64 65 63 6f 64 65 4d 79 |odeFunc(decodeMy|
> 00001ed0 4c 61 79 65 72 29 29 0a 0a 2f 2f 20 49 6d 70 6c |Layer))..// Impl|
> 00001ee0 65 6d 65 6e 74 20 6d 79 20 6c 61 79 65 72 0a 74 |ement my layer.t|
> 00001ef0 79 70 65 20 4d 79 4c 61 79 65 72 20 73 74 72 75 |ype MyLayer stru|
> 00001f00 63 74 20 7b 0a 20 20 53 74 72 61 6e 67 65 48 65 |ct {. StrangeHe|
> 00001f10 61 64 65 72 20 5b 5d 62 79 74 65 0a 20 20 70 61 |ader []byte. pa|
> 00001f20 79 6c 6f 61 64 20 5b 5d 62 79 74 65 0a 7d 0a 66 |yload []byte.}.f|
> 00001f30 75 6e 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 |unc (m MyLayer) |
> 00001f40 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 65 |LayerType() Laye|
> 00001f50 72 54 79 70 65 20 7b 20 72 65 74 75 72 6e 20 4d |rType { return M|
> 00001f60 79 4c 61 79 65 72 54 79 70 65 20 7d 0a 66 75 6e |yLayerType }.fun|
> 00001f70 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 20 4c 61 |c (m MyLayer) La|
> 00001f80 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d |yerContents() []|
> 00001f90 62 79 74 65 20 7b 20 72 65 74 75 72 6e 20 6d 2e |byte { return m.|
> 00001fa0 53 74 72 61 6e 67 65 48 65 61 64 65 72 20 7d 0a |StrangeHeader }.|
> 00001fb0 66 75 6e 63 20 28 6d 20 4d 79 4c 61 79 65 72 29 |func (m MyLayer)|
> 00001fc0 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 | LayerPayload() |
> 00001fd0 5b 5d 62 79 74 65 20 7b 20 72 65 74 75 72 6e 20 |[]byte { return |
> 00001fe0 6d 2e 70 61 79 6c 6f 61 64 20 7d 0a 0a 2f 2f 20 |m.payload }..// |
> 00001ff0 4e 6f 77 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 |Now implement a |
> 00002000 64 65 63 6f 64 65 72 2e 2e 2e 20 74 68 69 73 20 |decoder... this |
> 00002010 6f 6e 65 20 73 74 72 69 70 73 20 6f 66 66 20 74 |one strips off t|
> 00002020 68 65 20 66 69 72 73 74 20 34 20 62 79 74 65 73 |he first 4 bytes|
> 00002030 20 6f 66 20 74 68 65 0a 2f 2f 20 70 61 63 6b 65 | of the.// packe|
> 00002040 74 2e 0a 66 75 6e 63 20 64 65 63 6f 64 65 4d 79 |t..func decodeMy|
> 00002050 4c 61 79 65 72 28 64 61 74 61 20 5b 5d 62 79 74 |Layer(data []byt|
> 00002060 65 2c 20 70 20 67 6f 70 61 63 6b 65 74 2e 50 61 |e, p gopacket.Pa|
> 00002070 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 |cketBuilder) err|
> 00002080 6f 72 20 7b 0a 20 20 2f 2f 20 43 72 65 61 74 65 |or {. // Create|
> 00002090 20 6d 79 20 6c 61 79 65 72 0a 20 20 70 2e 41 64 | my layer. p.Ad|
> 000020a0 64 4c 61 79 65 72 28 26 61 6d 70 3b 4d 79 4c 61 |dLayer(&MyLa|
> 000020b0 79 65 72 7b 64 61 74 61 5b 3a 34 5d 2c 20 64 61 |yer{data[:4], da|
> 000020c0 74 61 5b 34 3a 5d 7d 29 0a 20 20 2f 2f 20 44 65 |ta[4:]}). // De|
> 000020d0 74 65 72 6d 69 6e 65 20 68 6f 77 20 74 6f 20 68 |termine how to h|
> 000020e0 61 6e 64 6c 65 20 74 68 65 20 72 65 73 74 20 6f |andle the rest o|
> 000020f0 66 20 74 68 65 20 70 61 63 6b 65 74 0a 20 20 72 |f the packet. r|
> 00002100 65 74 75 72 6e 20 70 2e 4e 65 78 74 44 65 63 6f |eturn p.NextDeco|
> 00002110 64 65 72 28 6c 61 79 65 72 73 2e 4c 61 79 65 72 |der(layers.Layer|
> 00002120 54 79 70 65 45 74 68 65 72 6e 65 74 29 0a 7d 0a |TypeEthernet).}.|
> 00002130 0a 2f 2f 20 46 69 6e 61 6c 6c 79 2c 20 64 65 63 |.// Finally, dec|
> 00002140 6f 64 65 20 79 6f 75 72 20 70 61 63 6b 65 74 73 |ode your packets|
> 00002150 3a 0a 70 20 3a 3d 20 67 6f 70 61 63 6b 65 74 2e |:.p := gopacket.|
> 00002160 4e 65 77 50 61 63 6b 65 74 28 64 61 74 61 2c 20 |NewPacket(data, |
> 00002170 4d 79 4c 61 79 65 72 54 79 70 65 2c 20 67 6f 70 |MyLayerType, gop|
> 00002180 61 63 6b 65 74 2e 4c 61 7a 79 29 0a 3c 2f 70 72 |acket.Lazy).</pr|
> 00002190 65 3e 0a 3c 70 3e 0a 53 65 65 20 74 68 65 20 64 |e>.<p>.See the d|
> 000021a0 6f 63 73 20 66 6f 72 20 44 65 63 6f 64 65 72 20 |ocs for Decoder |
> 000021b0 61 6e 64 20 50 61 63 6b 65 74 42 75 69 6c 64 65 |and PacketBuilde|
> 000021c0 72 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 |r for more detai|
> 000021d0 6c 73 20 6f 6e 20 68 6f 77 20 63 6f 64 69 6e 67 |ls on how coding|
> 000021e0 0a 64 65 63 6f 64 65 72 73 20 77 6f 72 6b 73 2c |.decoders works,|
> 000021f0 20 6f 72 20 6c 6f 6f 6b 20 61 74 20 52 65 67 69 | or look at Regi|
> 00002200 73 74 65 72 4c 61 79 65 72 54 79 70 65 20 61 6e |sterLayerType an|
> 00002210 64 20 52 65 67 69 73 74 65 72 45 6e 64 70 6f 69 |d RegisterEndpoi|
> 00002220 6e 74 54 79 70 65 20 74 6f 20 73 65 65 20 68 6f |ntType to see ho|
> 00002230 77 0a 74 6f 20 61 64 64 20 6c 61 79 65 72 2f 65 |w.to add layer/e|
> 00002240 6e 64 70 6f 69 6e 74 20 74 79 70 65 73 20 74 6f |ndpoint types to|
> 00002250 20 67 6f 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a | gopacket..</p>.|
> 00002260 0a 09 09 09 3c 2f 64 69 76 3e 0a 09 09 3c 2f 64 |....</div>...</d|
> 00002270 69 76 3e 0a 09 09 0a 09 0a 09 09 3c 68 32 20 69 |iv>........<h2 i|
> 00002280 64 3d 22 70 6b 67 2d 69 6e 64 65 78 22 3e 49 6e |d="pkg-index">In|
> 00002290 64 65 78 3c 2f 68 32 3e 0a 09 09 3c 21 2d 2d 20 |dex</h2>...<!-- |
> 000022a0 54 61 62 6c 65 20 6f 66 20 63 6f 6e 74 65 6e 74 |Table of content|
> 000022b0 73 20 66 6f 72 20 41 50 49 3b 20 6d 75 73 74 20 |s for API; must |
> 000022c0 62 65 20 6e 61 6d 65 64 20 6d 61 6e 75 61 6c 2d |be named manual-|
> 000022d0 6e 61 76 20 74 6f 20 74 75 72 6e 20 6f 66 66 20 |nav to turn off |
> 000022e0 61 75 74 6f 20 6e 61 76 2e 20 2d 2d 3e 0a 09 09 |auto nav. -->...|
> 000022f0 3c 64 69 76 20 69 64 3d 22 6d 61 6e 75 61 6c 2d |<div id="manual-|
> 00002300 6e 61 76 22 3e 0a 09 09 09 3c 64 6c 3e 0a 09 09 |nav">....<dl>...|
> 00002310 09 0a 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 |..........<dd><a|
> 00002320 20 68 72 65 66 3d 22 23 70 6b 67 2d 76 61 72 69 | href="#pkg-vari|
> 00002330 61 62 6c 65 73 22 3e 56 61 72 69 61 62 6c 65 73 |ables">Variables|
> 00002340 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 0a 09 09 |</a></dd>.......|
> 00002350 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 00002360 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 41 70 70 |dd><a href="#App|
> 00002370 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 22 3e 74 |licationLayer">t|
> 00002380 79 70 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c |ype ApplicationL|
> 00002390 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ayer</a></dd>...|
> 000023a0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 000023b0 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href|
> 000023c0 3d 22 23 43 61 70 74 75 72 65 49 6e 66 6f 22 3e |="#CaptureInfo">|
> 000023d0 74 79 70 65 20 43 61 70 74 75 72 65 49 6e 66 6f |type CaptureInfo|
> 000023e0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 000023f0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002400 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D|
> 00002410 65 63 6f 64 65 46 61 69 6c 75 72 65 22 3e 74 79 |ecodeFailure">ty|
> 00002420 70 65 20 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |pe DecodeFailure|
> 00002430 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00002440 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002450 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002460 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod|
> 00002470 65 46 61 69 6c 75 72 65 2e 45 72 72 6f 72 22 3e |eFailure.Error">|
> 00002480 66 75 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 |func (d *DecodeF|
> 00002490 61 69 6c 75 72 65 29 20 45 72 72 6f 72 28 29 20 |ailure) Error() |
> 000024a0 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..|
> 000024b0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 000024c0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 000024d0 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod|
> 000024e0 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 43 6f |eFailure.LayerCo|
> 000024f0 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 64 20 |ntents">func (d |
> 00002500 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) |
> 00002510 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 |LayerContents() |
> 00002520 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |[]byte</a></dd>.|
> 00002530 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 00002540 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 00002550 3b 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f |; <a href="#Deco|
> 00002560 64 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 50 |deFailure.LayerP|
> 00002570 61 79 6c 6f 61 64 22 3e 66 75 6e 63 20 28 64 20 |ayload">func (d |
> 00002580 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) |
> 00002590 4c 61 79 65 72 50 61 79 6c 6f 61 64 28 29 20 5b |LayerPayload() [|
> 000025a0 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |]byte</a></dd>..|
> 000025b0 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 000025c0 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 000025d0 20 3c 61 20 68 72 65 66 3d 22 23 44 65 63 6f 64 | <a href="#Decod|
> 000025e0 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 54 79 |eFailure.LayerTy|
> 000025f0 70 65 22 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 |pe">func (d *Dec|
> 00002600 6f 64 65 46 61 69 6c 75 72 65 29 20 4c 61 79 65 |odeFailure) Laye|
> 00002610 72 54 79 70 65 28 29 20 4c 61 79 65 72 54 79 70 |rType() LayerTyp|
> 00002620 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |e</a></dd>......|
> 00002630 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00002640 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00002650 68 72 65 66 3d 22 23 44 65 63 6f 64 65 46 61 69 |href="#DecodeFai|
> 00002660 6c 75 72 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |lure.String">fun|
> 00002670 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c |c (d *DecodeFail|
> 00002680 75 72 65 29 20 53 74 72 69 6e 67 28 29 20 73 74 |ure) String() st|
> 00002690 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |ring</a></dd>...|
> 000026a0 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 |................|
> 000026b0 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 65 |<dd><a href="#De|
> 000026c0 63 6f 64 65 46 75 6e 63 22 3e 74 79 70 65 20 44 |codeFunc">type D|
> 000026d0 65 63 6f 64 65 46 75 6e 63 3c 2f 61 3e 3c 2f 64 |ecodeFunc</a></d|
> 000026e0 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |d>..............|
> 000026f0 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 |........<dd>&nbs|
> 00002700 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 |p; <a hre|
> 00002710 66 3d 22 23 44 65 63 6f 64 65 46 75 6e 63 2e 44 |f="#DecodeFunc.D|
> 00002720 65 63 6f 64 65 22 3e 66 75 6e 63 20 28 64 20 44 |ecode">func (d D|
> 00002730 65 63 6f 64 65 46 75 6e 63 29 20 44 65 63 6f 64 |ecodeFunc) Decod|
> 00002740 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 |e(data []byte, p|
> 00002750 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) |
> 00002760 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |error</a></dd>..|
> 00002770 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002780 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D|
> 00002790 65 63 6f 64 65 4f 70 74 69 6f 6e 73 22 3e 74 79 |ecodeOptions">ty|
> 000027a0 70 65 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |pe DecodeOptions|
> 000027b0 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 000027c0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 000027d0 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 44 |.<dd><a href="#D|
> 000027e0 65 63 6f 64 65 72 22 3e 74 79 70 65 20 44 65 63 |ecoder">type Dec|
> 000027f0 6f 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |oder</a></dd>...|
> 00002800 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 00002810 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href|
> 00002820 3d 22 23 45 6e 64 70 6f 69 6e 74 22 3e 74 79 70 |="#Endpoint">typ|
> 00002830 65 20 45 6e 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f |e Endpoint</a></|
> 00002840 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |dd>.............|
> 00002850 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &|
> 00002860 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#|
> 00002870 4e 65 77 45 6e 64 70 6f 69 6e 74 22 3e 66 75 6e |NewEndpoint">fun|
> 00002880 63 20 4e 65 77 45 6e 64 70 6f 69 6e 74 28 74 79 |c NewEndpoint(ty|
> 00002890 70 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 2c 20 |p EndpointType, |
> 000028a0 72 61 77 20 5b 5d 62 79 74 65 29 20 45 6e 64 70 |raw []byte) Endp|
> 000028b0 6f 69 6e 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |oint</a></dd>...|
> 000028c0 09 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |................|
> 000028d0 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 000028e0 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 |bsp; <a href="#E|
> 000028f0 6e 64 70 6f 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 |ndpoint.Endpoint|
> 00002900 54 79 70 65 22 3e 66 75 6e 63 20 28 65 20 45 6e |Type">func (e En|
> 00002910 64 70 6f 69 6e 74 29 20 45 6e 64 70 6f 69 6e 74 |dpoint) Endpoint|
> 00002920 54 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 |Type() EndpointT|
> 00002930 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |ype</a></dd>....|
> 00002940 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd|
> 00002950 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <|
> 00002960 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f 69 6e |a href="#Endpoin|
> 00002970 74 2e 4c 65 73 73 54 68 61 6e 22 3e 66 75 6e 63 |t.LessThan">func|
> 00002980 20 28 61 20 45 6e 64 70 6f 69 6e 74 29 20 4c 65 | (a Endpoint) Le|
> 00002990 73 73 54 68 61 6e 28 62 20 45 6e 64 70 6f 69 6e |ssThan(b Endpoin|
> 000029a0 74 29 20 62 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e |t) bool</a></dd>|
> 000029b0 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 |................|
> 000029c0 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 |.<dd> &nbs|
> 000029d0 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 |p; <a href="#End|
> 000029e0 70 6f 69 6e 74 2e 52 61 77 22 3e 66 75 6e 63 20 |point.Raw">func |
> 000029f0 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 52 61 77 |(e Endpoint) Raw|
> 00002a00 28 29 20 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 |() []byte</a></d|
> 00002a10 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00002a20 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00002a30 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 45 |bsp; <a href="#E|
> 00002a40 6e 64 70 6f 69 6e 74 2e 53 74 72 69 6e 67 22 3e |ndpoint.String">|
> 00002a50 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 |func (e Endpoint|
> 00002a60 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 6e |) String() strin|
> 00002a70 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a |g</a></dd>......|
> 00002a80 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 |.............<dd|
> 00002a90 3e 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f |><a href="#Endpo|
> 00002aa0 69 6e 74 54 79 70 65 22 3e 74 79 70 65 20 45 6e |intType">type En|
> 00002ab0 64 70 6f 69 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f |dpointType</a></|
> 00002ac0 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 |dd>.............|
> 00002ad0 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 |....<dd> &|
> 00002ae0 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 |nbsp; <a href="#|
> 00002af0 52 65 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 |RegisterEndpoint|
> 00002b00 54 79 70 65 22 3e 66 75 6e 63 20 52 65 67 69 73 |Type">func Regis|
> 00002b10 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 |terEndpointType(|
> 00002b20 6e 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 45 6e |num int, meta En|
> 00002b30 64 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 61 |dpointTypeMetada|
> 00002b40 74 61 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 |ta) EndpointType|
> 00002b50 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00002b60 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00002b70 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00002b80 20 3c 61 20 68 72 65 66 3d 22 23 45 6e 64 70 6f | <a href="#Endpo|
> 00002b90 69 6e 74 54 79 70 65 2e 53 74 72 69 6e 67 22 3e |intType.String">|
> 00002ba0 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 |func (e Endpoint|
> 00002bb0 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 20 73 |Type) String() s|
> 00002bc0 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |tring</a></dd>..|
> 00002bd0 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002be0 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 |.<dd><a href="#E|
> 00002bf0 6e 64 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 |ndpointTypeMetad|
> 00002c00 61 74 61 22 3e 74 79 70 65 20 45 6e 64 70 6f 69 |ata">type Endpoi|
> 00002c10 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 3c 2f |ntTypeMetadata</|
> 00002c20 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 00002c30 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 00002c40 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 45 72 72 |dd><a href="#Err|
> 00002c50 6f 72 4c 61 79 65 72 22 3e 74 79 70 65 20 45 72 |orLayer">type Er|
> 00002c60 72 6f 72 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 |rorLayer</a></dd|
> 00002c70 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a |>...............|
> 00002c80 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a |
> 00002c90 68 72 65 66 3d 22 23 46 6c 6f 77 22 3e 74 79 70 |href="#Flow">typ|
> 00002ca0 65 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 64 3e 0a |e Flow</a></dd>.|
> 00002cb0 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 00002cc0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 00002cd0 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 |; <a href="#Flow|
> 00002ce0 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 22 3e 66 |FromEndpoints">f|
> 00002cf0 75 6e 63 20 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 |unc FlowFromEndp|
> 00002d00 6f 69 6e 74 73 28 73 72 63 2c 20 64 73 74 20 45 |oints(src, dst E|
> 00002d10 6e 64 70 6f 69 6e 74 29 20 28 5f 20 46 6c 6f 77 |ndpoint) (_ Flow|
> 00002d20 2c 20 65 72 72 20 65 72 72 6f 72 29 3c 2f 61 3e |, err error)</a>|
> 00002d30 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 |</dd>...........|
> 00002d40 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b |......<dd> |
> 00002d50 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d | <a href=|
> 00002d60 22 23 4e 65 77 46 6c 6f 77 22 3e 66 75 6e 63 20 |"#NewFlow">func |
> 00002d70 4e 65 77 46 6c 6f 77 28 74 20 45 6e 64 70 6f 69 |NewFlow(t Endpoi|
> 00002d80 6e 74 54 79 70 65 2c 20 73 72 63 2c 20 64 73 74 |ntType, src, dst|
> 00002d90 20 5b 5d 62 79 74 65 29 20 46 6c 6f 77 3c 2f 61 | []byte) Flow</a|
> 00002da0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........|
> 00002db0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00002dc0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00002dd0 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 44 73 74 | href="#Flow.Dst|
> 00002de0 22 3e 66 75 6e 63 20 28 66 20 46 6c 6f 77 29 20 |">func (f Flow) |
> 00002df0 44 73 74 28 29 20 28 64 73 74 20 45 6e 64 70 6f |Dst() (dst Endpo|
> 00002e00 69 6e 74 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 |int)</a></dd>...|
> 00002e10 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d|
> 00002e20 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> |
> 00002e30 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 2e 45 |<a href="#Flow.E|
> 00002e40 6e 64 70 6f 69 6e 74 54 79 70 65 22 3e 66 75 6e |ndpointType">fun|
> 00002e50 63 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f |c (f Flow) Endpo|
> 00002e60 69 6e 74 54 79 70 65 28 29 20 45 6e 64 70 6f 69 |intType() Endpoi|
> 00002e70 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |ntType</a></dd>.|
> 00002e80 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 00002e90 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 00002ea0 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 6c 6f 77 |; <a href="#Flow|
> 00002eb0 2e 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 |.Endpoints">func|
> 00002ec0 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 | (f Flow) Endpoi|
> 00002ed0 6e 74 73 28 29 20 28 73 72 63 2c 20 64 73 74 20 |nts() (src, dst |
> 00002ee0 45 6e 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c 2f 64 |Endpoint)</a></d|
> 00002ef0 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00002f00 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00002f10 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 |bsp; <a href="#F|
> 00002f20 6c 6f 77 2e 52 65 76 65 72 73 65 22 3e 66 75 6e |low.Reverse">fun|
> 00002f30 63 20 28 66 20 46 6c 6f 77 29 20 52 65 76 65 72 |c (f Flow) Rever|
> 00002f40 73 65 28 29 20 46 6c 6f 77 3c 2f 61 3e 3c 2f 64 |se() Flow</a></d|
> 00002f50 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00002f60 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00002f70 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 46 |bsp; <a href="#F|
> 00002f80 6c 6f 77 2e 53 72 63 22 3e 66 75 6e 63 20 28 66 |low.Src">func (f|
> 00002f90 20 46 6c 6f 77 29 20 53 72 63 28 29 20 28 73 72 | Flow) Src() (sr|
> 00002fa0 63 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 61 3e 3c |c Endpoint)</a><|
> 00002fb0 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a |/dd>............|
> 00002fc0 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> |
> 00002fd0 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="|
> 00002fe0 23 46 6c 6f 77 2e 53 74 72 69 6e 67 22 3e 66 75 |#Flow.String">fu|
> 00002ff0 6e 63 20 28 66 20 46 6c 6f 77 29 20 53 74 72 69 |nc (f Flow) Stri|
> 00003000 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 61 3e 3c |ng() string</a><|
> 00003010 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 |/dd>............|
> 00003020 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr|
> 00003030 65 66 3d 22 23 4c 61 79 65 72 22 3e 74 79 70 65 |ef="#Layer">type|
> 00003040 20 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a | Layer</a></dd>.|
> 00003050 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00003060 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 |.......<dd><a hr|
> 00003070 65 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 22 |ef="#LayerClass"|
> 00003080 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 |>type LayerClass|
> 00003090 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 000030a0 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e |..........<dd>&n|
> 000030b0 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 |bsp; <a h|
> 000030c0 72 65 66 3d 22 23 4e 65 77 4c 61 79 65 72 43 6c |ref="#NewLayerCl|
> 000030d0 61 73 73 22 3e 66 75 6e 63 20 4e 65 77 4c 61 79 |ass">func NewLay|
> 000030e0 65 72 43 6c 61 73 73 28 74 79 70 65 73 20 5b 5d |erClass(types []|
> 000030f0 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 65 72 |LayerType) Layer|
> 00003100 43 6c 61 73 73 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |Class</a></dd>..|
> 00003110 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00003120 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 |......<dd><a hre|
> 00003130 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 4d 61 |f="#LayerClassMa|
> 00003140 70 22 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 |p">type LayerCla|
> 00003150 73 73 4d 61 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |ssMap</a></dd>..|
> 00003160 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003170 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003180 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 4c 61 | <a href="#NewLa|
> 00003190 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 66 75 6e |yerClassMap">fun|
> 000031a0 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 4d |c NewLayerClassM|
> 000031b0 61 70 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 72 |ap(types []Layer|
> 000031c0 54 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 73 |Type) LayerClass|
> 000031d0 4d 61 70 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 |Map</a></dd>....|
> 000031e0 09 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 |................|
> 000031f0 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 |..<dd> &nb|
> 00003200 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4c 61 |sp; <a href="#La|
> 00003210 79 65 72 43 6c 61 73 73 4d 61 70 2e 43 6f 6e 74 |yerClassMap.Cont|
> 00003220 61 69 6e 73 22 3e 66 75 6e 63 20 28 6d 20 4c 61 |ains">func (m La|
> 00003230 79 65 72 43 6c 61 73 73 4d 61 70 29 20 43 6f 6e |yerClassMap) Con|
> 00003240 74 61 69 6e 73 28 74 20 4c 61 79 65 72 54 79 70 |tains(t LayerTyp|
> 00003250 65 29 20 62 6f 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e |e) bool</a></dd>|
> 00003260 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00003270 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="|
> 00003280 23 4c 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 |#LayerClassSlice|
> 00003290 22 3e 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 |">type LayerClas|
> 000032a0 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |sSlice</a></dd>.|
> 000032b0 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 000032c0 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 000032d0 3b 20 3c 61 20 68 72 65 66 3d 22 23 4e 65 77 4c |; <a href="#NewL|
> 000032e0 61 79 65 72 43 6c 61 73 73 53 6c 69 63 65 22 3e |ayerClassSlice">|
> 000032f0 66 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 |func NewLayerCla|
> 00003300 73 73 53 6c 69 63 65 28 74 79 70 65 73 20 5b 5d |ssSlice(types []|
> 00003310 4c 61 79 65 72 54 79 70 65 29 20 4c 61 79 65 72 |LayerType) Layer|
> 00003320 43 6c 61 73 73 53 6c 69 63 65 3c 2f 61 3e 3c 2f |ClassSlice</a></|
> 00003330 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............|
> 00003340 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 6e 62 |.........<dd>&nb|
> 00003350 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 68 72 |sp; <a hr|
> 00003360 65 66 3d 22 23 4c 61 79 65 72 43 6c 61 73 73 53 |ef="#LayerClassS|
> 00003370 6c 69 63 65 2e 43 6f 6e 74 61 69 6e 73 22 3e 66 |lice.Contains">f|
> 00003380 75 6e 63 20 28 73 20 4c 61 79 65 72 43 6c 61 73 |unc (s LayerClas|
> 00003390 73 53 6c 69 63 65 29 20 43 6f 6e 74 61 69 6e 73 |sSlice) Contains|
> 000033a0 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 62 6f |(t LayerType) bo|
> 000033b0 6f 6c 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |ol</a></dd>.....|
> 000033c0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 |..............<d|
> 000033d0 64 3e 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 |d><a href="#Laye|
> 000033e0 72 54 79 70 65 22 3e 74 79 70 65 20 4c 61 79 65 |rType">type Laye|
> 000033f0 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rType</a></dd>..|
> 00003400 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003410 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003420 20 3c 61 20 68 72 65 66 3d 22 23 52 65 67 69 73 | <a href="#Regis|
> 00003430 74 65 72 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |terLayerType">fu|
> 00003440 6e 63 20 52 65 67 69 73 74 65 72 4c 61 79 65 72 |nc RegisterLayer|
> 00003450 54 79 70 65 28 6e 75 6d 20 69 6e 74 2c 20 6d 65 |Type(num int, me|
> 00003460 74 61 20 4c 61 79 65 72 54 79 70 65 4d 65 74 61 |ta LayerTypeMeta|
> 00003470 64 61 74 61 29 20 4c 61 79 65 72 54 79 70 65 3c |data) LayerType<|
> 00003480 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 |/a></dd>........|
> 00003490 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 |..............<d|
> 000034a0 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 |d> |
> 000034b0 3c 61 20 68 72 65 66 3d 22 23 4c 61 79 65 72 54 |<a href="#LayerT|
> 000034c0 79 70 65 2e 44 65 63 6f 64 65 22 3e 66 75 6e 63 |ype.Decode">func|
> 000034d0 20 28 74 20 4c 61 79 65 72 54 79 70 65 29 20 44 | (t LayerType) D|
> 000034e0 65 63 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 |ecode(data []byt|
> 000034f0 65 2c 20 63 20 50 61 63 6b 65 74 42 75 69 6c 64 |e, c PacketBuild|
> 00003500 65 72 29 20 65 72 72 6f 72 3c 2f 61 3e 3c 2f 64 |er) error</a></d|
> 00003510 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00003520 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00003530 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 4c |bsp; <a href="#L|
> 00003540 61 79 65 72 54 79 70 65 2e 53 74 72 69 6e 67 22 |ayerType.String"|
> 00003550 3e 66 75 6e 63 20 28 74 20 4c 61 79 65 72 54 79 |>func (t LayerTy|
> 00003560 70 65 29 20 53 74 72 69 6e 67 28 29 20 28 73 20 |pe) String() (s |
> 00003570 73 74 72 69 6e 67 29 3c 2f 61 3e 3c 2f 64 64 3e |string)</a></dd>|
> 00003580 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00003590 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="|
> 000035a0 23 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 |#LayerTypeMetada|
> 000035b0 74 61 22 3e 74 79 70 65 20 4c 61 79 65 72 54 79 |ta">type LayerTy|
> 000035c0 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c 2f |peMetadata</a></|
> 000035d0 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |dd>.............|
> 000035e0 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c |...........<dd><|
> 000035f0 61 20 68 72 65 66 3d 22 23 4c 69 6e 6b 4c 61 79 |a href="#LinkLay|
> 00003600 65 72 22 3e 74 79 70 65 20 4c 69 6e 6b 4c 61 79 |er">type LinkLay|
> 00003610 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |er</a></dd>.....|
> 00003620 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00003630 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 |...<dd><a href="|
> 00003640 23 4e 65 74 77 6f 72 6b 4c 61 79 65 72 22 3e 74 |#NetworkLayer">t|
> 00003650 79 70 65 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 |ype NetworkLayer|
> 00003660 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 |</a></dd>.......|
> 00003670 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00003680 09 3c 64 64 3e 3c 61 20 68 72 65 66 3d 22 23 50 |.<dd><a href="#P|
> 00003690 61 63 6b 65 74 22 3e 74 79 70 65 20 50 61 63 6b |acket">type Pack|
> 000036a0 65 74 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |et</a></dd>.....|
> 000036b0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 000036c0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 000036d0 20 68 72 65 66 3d 22 23 4e 65 77 50 61 63 6b 65 | href="#NewPacke|
> 000036e0 74 22 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 |t">func NewPacke|
> 000036f0 74 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 66 |t(data []byte, f|
> 00003700 69 72 73 74 4c 61 79 65 72 44 65 63 6f 64 65 72 |irstLayerDecoder|
> 00003710 20 44 65 63 6f 64 65 72 2c 20 6f 70 74 69 6f 6e | Decoder, option|
> 00003720 73 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 29 |s DecodeOptions)|
> 00003730 20 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 64 64 3e | Packet</a></dd>|
> 00003740 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................|
> 00003750 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 |........<dd><a h|
> 00003760 72 65 66 3d 22 23 50 61 63 6b 65 74 42 75 69 6c |ref="#PacketBuil|
> 00003770 64 65 72 22 3e 74 79 70 65 20 50 61 63 6b 65 74 |der">type Packet|
> 00003780 42 75 69 6c 64 65 72 3c 2f 61 3e 3c 2f 64 64 3e |Builder</a></dd>|
> 00003790 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................|
> 000037a0 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 |........<dd><a h|
> 000037b0 72 65 66 3d 22 23 50 61 63 6b 65 74 44 61 74 61 |ref="#PacketData|
> 000037c0 53 6f 75 72 63 65 22 3e 74 79 70 65 20 50 61 63 |Source">type Pac|
> 000037d0 6b 65 74 44 61 74 61 53 6f 75 72 63 65 3c 2f 61 |ketDataSource</a|
> 000037e0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 |></dd>..........|
> 000037f0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 64 |..............<d|
> 00003800 64 3e 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b |d><a href="#Pack|
> 00003810 65 74 53 6f 75 72 63 65 22 3e 74 79 70 65 20 50 |etSource">type P|
> 00003820 61 63 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c |acketSource</a><|
> 00003830 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a |/dd>............|
> 00003840 09 09 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 |.....<dd> |
> 00003850 26 6e 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 | <a href="|
> 00003860 23 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |#NewPacketSource|
> 00003870 22 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b 65 74 |">func NewPacket|
> 00003880 53 6f 75 72 63 65 28 73 6f 75 72 63 65 20 50 61 |Source(source Pa|
> 00003890 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2c 20 |cketDataSource, |
> 000038a0 64 65 63 6f 64 65 72 20 44 65 63 6f 64 65 72 29 |decoder Decoder)|
> 000038b0 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 3c 2f | *PacketSource</|
> 000038c0 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 |a></dd>.........|
> 000038d0 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 |.............<dd|
> 000038e0 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c |> <|
> 000038f0 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 74 53 |a href="#PacketS|
> 00003900 6f 75 72 63 65 2e 4e 65 78 74 50 61 63 6b 65 74 |ource.NextPacket|
> 00003910 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 |">func (p *Packe|
> 00003920 74 53 6f 75 72 63 65 29 20 4e 65 78 74 50 61 63 |tSource) NextPac|
> 00003930 6b 65 74 28 29 20 28 50 61 63 6b 65 74 2c 20 65 |ket() (Packet, e|
> 00003940 72 72 6f 72 29 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 |rror)</a></dd>..|
> 00003950 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 3c |...............<|
> 00003960 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b |dd> |
> 00003970 20 3c 61 20 68 72 65 66 3d 22 23 50 61 63 6b 65 | <a href="#Packe|
> 00003980 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 22 |tSource.Packets"|
> 00003990 3e 66 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 |>func (p *Packet|
> 000039a0 53 6f 75 72 63 65 29 20 50 61 63 6b 65 74 73 28 |Source) Packets(|
> 000039b0 29 20 63 68 61 6e 20 50 61 63 6b 65 74 3c 2f 61 |) chan Packet</a|
> 000039c0 3e 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 0a |></dd>..........|
> 000039d0 09 09 09 09 0a 09 09 09 09 3c 64 64 3e 3c 61 20 |.........<dd><a |
> 000039e0 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 22 3e |href="#Payload">|
> 000039f0 74 79 70 65 20 50 61 79 6c 6f 61 64 3c 2f 61 3e |type Payload</a>|
> 00003a00 3c 2f 64 64 3e 0a 09 09 09 09 0a 09 09 09 09 0a |</dd>...........|
> 00003a10 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e 26 |...........<dd>&|
> 00003a20 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 20 |nbsp; <a |
> 00003a30 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e 4c |href="#Payload.L|
> 00003a40 61 79 65 72 43 6f 6e 74 65 6e 74 73 22 3e 66 75 |ayerContents">fu|
> 00003a50 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 |nc (p *Payload) |
> 00003a60 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 |LayerContents() |
> 00003a70 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a |[]byte</a></dd>.|
> 00003a80 09 09 09 09 0a 09 09 09 09 09 0a 09 09 09 09 09 |................|
> 00003a90 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e 62 73 70 |<dd>  |
> 00003aa0 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 61 79 6c |; <a href="#Payl|
> 00003ab0 6f 61 64 2e 4c 61 79 65 72 50 61 79 6c 6f 61 64 |oad.LayerPayload|
> 00003ac0 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f |">func (p *Paylo|
> 00003ad0 61 64 29 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 |ad) LayerPayload|
> 00003ae0 28 29 20 5b 5d 62 79 74 65 3c 2f 61 3e 3c 2f 64 |() []byte</a></d|
> 00003af0 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00003b00 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00003b10 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 |bsp; <a href="#P|
> 00003b20 61 79 6c 6f 61 64 2e 4c 61 79 65 72 54 79 70 65 |ayload.LayerType|
> 00003b30 22 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f |">func (p *Paylo|
> 00003b40 61 64 29 20 4c 61 79 65 72 54 79 70 65 28 29 20 |ad) LayerType() |
> 00003b50 4c 61 79 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 64 |LayerType</a></d|
> 00003b60 64 3e 0a 09 09 09 09 0a 09 09 09 09 09 0a 09 09 |d>..............|
> 00003b70 09 09 09 3c 64 64 3e 26 6e 62 73 70 3b 20 26 6e |...<dd> &n|
> 00003b80 62 73 70 3b 20 3c 61 20 68 72 65 66 3d 22 23 50 |bsp; <a href="#P|
> 00003b90 61 79 6c 6f 61 64 2e 50 61 79 6c 6f 61 64 22 3e |ayload.Payload">|
> 00003ba0 66 75 6e 63 20 28 70 20 2a 50 61 79 6c 6f 61 64 |func (p *Payload|
> 00003bb0 29 20 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |) Payload() []by|
> 00003bc0 74 65 3c 2f 61 3e 3c 2f 64 64 3e 0a 09 09 09 09 |te</a></dd>.....|
> 00003bd0 0a 09 09 09 09 09 0a 09 09 09 09 09 3c 64 64 3e |............<dd>|
> 00003be0 26 6e 62 73 70 3b 20 26 6e 62 73 70 3b 20 3c 61 | <a|
> 00003bf0 20 68 72 65 66 3d 22 23 50 61 79 6c 6f 61 64 2e | href="#Payload.|
> 00003c00 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 70 20 |String">func (p |
> 00003c10 2a 50 61 79 6c 6f 61 64 29 20 53 74 72 69 6e 67 |*Payload) String|
> 00003c20 28 29 20 73 74 72 69 6e 67 3c 2f 61 3e 3c 2f 64 |() string</a></d|
> 00003c30 64 3e 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |d>..............|
> 00003c40 0a 09 09 09 09 3c 64 64 3e 3c 61 20 68 72 65 66 |.....<dd><a href|
> 00003c50 3d 22 23 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |="#TransportLaye|
> 00003c60 72 22 3e 74 79 70 65 20 54 72 61 6e 73 70 6f 72 |r">type Transpor|
> 00003c70 74 4c 61 79 65 72 3c 2f 61 3e 3c 2f 64 64 3e 0a |tLayer</a></dd>.|
> 00003c80 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00003c90 09 0a 09 09 3c 2f 64 6c 3e 0a 0a 09 09 0a 0a 09 |....</dl>.......|
> 00003ca0 09 0a 09 09 09 3c 68 34 3e 50 61 63 6b 61 67 65 |.....<h4>Package|
> 00003cb0 20 66 69 6c 65 73 3c 2f 68 34 3e 0a 09 09 09 3c | files</h4>....<|
> 00003cc0 70 3e 0a 09 09 09 3c 73 70 61 6e 20 73 74 79 6c |p>....<span styl|
> 00003cd0 65 3d 22 66 6f 6e 74 2d 73 69 7a 65 3a 39 30 25 |e="font-size:90%|
> 00003ce0 22 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 68 72 |">.........<a hr|
> 00003cf0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00003d00 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 00003d10 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g|
> 00003d20 6f 22 3e 62 61 73 65 2e 67 6f 3c 2f 61 3e 0a 09 |o">base.go</a>..|
> 00003d30 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="|
> 00003d40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003d50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003d60 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 22 |acket/decode.go"|
> 00003d70 3e 64 65 63 6f 64 65 2e 67 6f 3c 2f 61 3e 0a 09 |>decode.go</a>..|
> 00003d80 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="|
> 00003d90 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003da0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003db0 61 63 6b 65 74 2f 64 6f 63 2e 67 6f 22 3e 64 6f |acket/doc.go">do|
> 00003dc0 63 2e 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 |c.go</a>........|
> 00003dd0 09 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 |.<a href="/src/p|
> 00003de0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00003df0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00003e00 66 6c 6f 77 73 2e 67 6f 22 3e 66 6c 6f 77 73 2e |flows.go">flows.|
> 00003e10 67 6f 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c |go</a>.........<|
> 00003e20 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg|
> 00003e30 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon|
> 00003e40 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 |nell/gopacket/la|
> 00003e50 79 65 72 63 6c 61 73 73 2e 67 6f 22 3e 6c 61 79 |yerclass.go">lay|
> 00003e60 65 72 63 6c 61 73 73 2e 67 6f 3c 2f 61 3e 0a 09 |erclass.go</a>..|
> 00003e70 09 09 0a 09 09 09 09 3c 61 20 68 72 65 66 3d 22 |.......<a href="|
> 00003e80 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003e90 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003ea0 61 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e |acket/layertype.|
> 00003eb0 67 6f 22 3e 6c 61 79 65 72 74 79 70 65 2e 67 6f |go">layertype.go|
> 00003ec0 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a |
> 00003ed0 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 00003ee0 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 00003ef0 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b |ll/gopacket/pack|
> 00003f00 65 74 2e 67 6f 22 3e 70 61 63 6b 65 74 2e 67 6f |et.go">packet.go|
> 00003f10 3c 2f 61 3e 0a 09 09 09 0a 09 09 09 09 3c 61 20 |</a>.........<a |
> 00003f20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 00003f30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 00003f40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 76 61 6c 69 |ll/gopacket/vali|
> 00003f50 64 5f 6d 61 63 5f 70 72 65 66 69 78 65 73 2e 67 |d_mac_prefixes.g|
> 00003f60 6f 22 3e 76 61 6c 69 64 5f 6d 61 63 5f 70 72 65 |o">valid_mac_pre|
> 00003f70 66 69 78 65 73 2e 67 6f 3c 2f 61 3e 0a 09 09 09 |fixes.go</a>....|
> 00003f80 0a 09 09 09 3c 2f 73 70 61 6e 3e 0a 09 09 09 3c |....</span>....<|
> 00003f90 2f 70 3e 0a 09 09 0a 09 0a 09 09 0a 09 09 0a 09 |/p>.............|
> 00003fa0 09 09 3c 68 32 20 69 64 3d 22 70 6b 67 2d 76 61 |..<h2 id="pkg-va|
> 00003fb0 72 69 61 62 6c 65 73 22 |riables"|
>
> pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------
> 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?.. 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'|
> 00000140 3b 74 20 73 68 6f 77 20 75 70 20 69 6e 20 67 6f |;t show up in go|
> 00000150 64 6f 63 2c 20 73 69 6e 63 65 20 69 74 26 23 33 |doc, since it|
> 00000160 39 3b 73 20 61 20 76 65 72 79 20 6c 61 72 67 65 |9;s a very large|
> 00000170 20 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a | map..</p>......|
> 00000180 09 09 0a 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00000190 0a 09 09 09 3c 68 32 20 69 64 3d 22 41 70 70 6c |....<h2 id="Appl|
> 000001a0 69 63 61 74 69 6f 6e 4c 61 79 65 72 22 3e 74 79 |icationLayer">ty|
> 000001b0 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src|
> 000001c0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 000001d0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 000001e0 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 32 32 30 32 |t/base.go?s=2202|
> 000001f0 3a 32 32 36 32 23 4c 35 37 22 3e 41 70 70 6c 69 |:2262#L57">Appli|
> 00000200 63 61 74 69 6f 6e 4c 61 79 65 72 3c 2f 61 3e 3c |cationLayer</a><|
> 00000210 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ|
> 00000220 65 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 |e ApplicationLay|
> 00000230 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 |er interface {. |
> 00000240 20 20 20 4c 61 79 65 72 0a 20 20 20 20 50 61 79 | Layer. Pay|
> 00000250 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 0a 7d 3c |load() []byte.}<|
> 00000260 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 41 70 70 |/pre>....<p>.App|
> 00000270 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 20 69 73 |licationLayer is|
> 00000280 20 74 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 | the packet laye|
> 00000290 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 |r corresponding |
> 000002a0 74 6f 20 74 68 65 20 54 43 50 2f 49 50 20 6c 61 |to the TCP/IP la|
> 000002b0 79 65 72 20 34 20 28 4f 53 49 0a 6c 61 79 65 72 |yer 4 (OSI.layer|
> 000002c0 20 37 29 2c 20 61 6c 73 6f 20 6b 6e 6f 77 6e 20 | 7), also known |
> 000002d0 61 73 20 74 68 65 20 70 61 63 6b 65 74 20 70 61 |as the packet pa|
> 000002e0 79 6c 6f 61 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |yload..</p>.....|
> 000002f0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................|
> 00000300 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00000310 0a 09 09 09 3c 68 32 20 69 64 3d 22 43 61 70 74 |....<h2 id="Capt|
> 00000320 75 72 65 49 6e 66 6f 22 3e 74 79 70 65 20 3c 61 |ureInfo">type <a|
> 00000330 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/|
> 00000340 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn|
> 00000350 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 |ell/gopacket/pac|
> 00000360 6b 65 74 2e 67 6f 3f 73 3d 33 32 38 3a 36 33 32 |ket.go?s=328:632|
> 00000370 23 4c 36 22 3e 43 61 70 74 75 72 65 49 6e 66 6f |#L6">CaptureInfo|
> 00000380 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr|
> 00000390 65 3e 74 79 70 65 20 43 61 70 74 75 72 65 49 6e |e>type CaptureIn|
> 000003a0 66 6f 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 |fo struct {. |
> 000003b0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 000003c0 6d 65 6e 74 22 3e 2f 2f 20 50 6f 70 75 6c 61 74 |ment">// Populat|
> 000003d0 65 64 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 |ed is set to tru|
> 000003e0 65 20 69 66 20 74 68 65 20 72 65 73 74 20 6f 66 |e if the rest of|
> 000003f0 20 74 68 65 20 43 61 70 74 75 72 65 49 6e 66 6f | the CaptureInfo|
> 00000400 20 68 61 73 20 62 65 65 6e 20 70 6f 70 75 6c 61 | has been popula|
> 00000410 74 65 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |ted</span>. <|
> 00000420 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm|
> 00000430 65 6e 74 22 3e 2f 2f 20 77 69 74 68 20 61 63 74 |ent">// with act|
> 00000440 75 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e |ual information.|
> 00000450 20 20 49 66 20 50 6f 70 75 6c 61 74 65 64 20 69 | If Populated i|
> 00000460 73 20 66 61 6c 73 65 2c 20 74 68 65 72 65 26 23 |s false, there&#|
> 00000470 33 39 3b 73 20 6e 6f 20 70 6f 69 6e 74 20 69 6e |39;s no point in|
> 00000480 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa|
> 00000490 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment|
> 000004a0 22 3e 2f 2f 20 72 65 61 64 69 6e 67 20 61 6e 79 |">// reading any|
> 000004b0 20 6f 66 20 74 68 65 20 6f 74 68 65 72 20 66 69 | of the other fi|
> 000004c0 65 6c 64 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |elds.</span>. |
> 000004d0 20 50 6f 70 75 6c 61 74 65 64 20 20 20 20 20 20 | Populated |
> 000004e0 20 20 20 20 20 20 20 62 6f 6f 6c 0a 20 20 20 20 | bool. |
> 000004f0 54 69 6d 65 73 74 61 6d 70 20 20 20 20 20 20 20 |Timestamp |
> 00000500 20 20 20 20 20 20 74 69 6d 65 2e 54 69 6d 65 0a | time.Time.|
> 00000510 20 20 20 20 43 61 70 74 75 72 65 4c 65 6e 67 74 | CaptureLengt|
> 00000520 68 2c 20 4c 65 6e 67 74 68 20 69 6e 74 0a 7d 3c |h, Length int.}<|
> 00000530 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 43 61 70 |/pre>....<p>.Cap|
> 00000540 74 75 72 65 49 6e 66 6f 20 63 6f 6e 74 61 69 6e |tureInfo contain|
> 00000550 73 20 63 61 70 74 75 72 65 20 6d 65 74 61 64 61 |s capture metada|
> 00000560 74 61 20 66 6f 72 20 61 20 70 61 63 6b 65 74 2e |ta for a packet.|
> 00000570 20 20 49 66 20 61 20 70 61 63 6b 65 74 20 77 61 | If a packet wa|
> 00000580 73 20 63 61 70 74 75 72 65 64 0a 6f 66 66 20 74 |s captured.off t|
> 00000590 68 65 20 77 69 72 65 20 6f 72 20 72 65 61 64 20 |he wire or read |
> 000005a0 66 72 6f 6d 20 61 20 70 63 61 70 20 66 69 6c 65 |from a pcap file|
> 000005b0 20 28 73 65 65 20 74 68 65 20 26 23 33 39 3b 70 | (see the 'p|
> 000005c0 63 61 70 26 23 33 39 3b 20 73 75 62 64 69 72 65 |cap' subdire|
> 000005d0 63 74 6f 72 79 29 2c 20 74 68 69 73 0a 69 6e 66 |ctory), this.inf|
> 000005e0 6f 72 6d 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65 |ormation will be|
> 000005f0 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 | attached to the|
> 00000600 20 70 61 63 6b 65 74 2e 0a 3c 2f 70 3e 0a 0a 0a | packet..</p>...|
> 00000610 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................|
> 00000620 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................|
> 00000630 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 44 65 |......<h2 id="De|
> 00000640 63 6f 64 65 46 61 69 6c 75 72 65 22 3e 74 79 70 |codeFailure">typ|
> 00000650 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/|
> 00000660 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00000670 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00000680 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 33 32 |/decode.go?s=332|
> 00000690 37 3a 33 33 38 31 23 4c 37 33 22 3e 44 65 63 6f |7:3381#L73">Deco|
> 000006a0 64 65 46 61 69 6c 75 72 65 3c 2f 61 3e 3c 2f 68 |deFailure</a></h|
> 000006b0 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type |
> 000006c0 44 65 63 6f 64 65 46 61 69 6c 75 72 65 20 73 74 |DecodeFailure st|
> 000006d0 72 75 63 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e |ruct {. <span|
> 000006e0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"|
> 000006f0 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 66 69 6c |>// contains fil|
> 00000700 74 65 72 65 64 20 6f 72 20 75 6e 65 78 70 6f 72 |tered or unexpor|
> 00000710 74 65 64 20 66 69 65 6c 64 73 3c 2f 73 70 61 6e |ted fields</span|
> 00000720 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |>.}</pre>....<p>|
> 00000730 0a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 20 69 |.DecodeFailure i|
> 00000740 73 20 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 |s a packet layer|
> 00000750 20 63 72 65 61 74 65 64 20 69 66 20 64 65 63 6f | created if deco|
> 00000760 64 69 6e 67 20 6f 66 20 74 68 65 20 70 61 63 6b |ding of the pack|
> 00000770 65 74 20 64 61 74 61 20 66 61 69 6c 65 64 0a 66 |et data failed.f|
> 00000780 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2e 20 |or some reason. |
> 00000790 20 49 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 45 | It implements E|
> 000007a0 72 72 6f 72 4c 61 79 65 72 2e 20 20 4c 61 79 65 |rrorLayer. Laye|
> 000007b0 72 43 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 |rContents will b|
> 000007c0 65 20 74 68 65 20 65 6e 74 69 72 65 0a 73 65 74 |e the entire.set|
> 000007d0 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 66 | of bytes that f|
> 000007e0 61 69 6c 65 64 20 74 6f 20 70 61 72 73 65 2c 20 |ailed to parse, |
> 000007f0 61 6e 64 20 45 72 72 6f 72 20 77 69 6c 6c 20 72 |and Error will r|
> 00000800 65 74 75 72 6e 20 74 68 65 20 72 65 61 73 6f 6e |eturn the reason|
> 00000810 20 70 61 72 73 69 6e 67 0a 66 61 69 6c 65 64 2e | parsing.failed.|
> 00000820 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........|
> 00000830 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 00000840 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=|
> 00000850 22 44 65 63 6f 64 65 46 61 69 6c 75 72 65 2e 45 |"DecodeFailure.E|
> 00000860 72 72 6f 72 22 3e 66 75 6e 63 20 28 2a 44 65 63 |rror">func (*Dec|
> 00000870 6f 64 65 46 61 69 6c 75 72 65 29 20 3c 61 20 68 |odeFailure) <a h|
> 00000880 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 00000890 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 000008a0 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 6f 64 |l/gopacket/decod|
> 000008b0 65 2e 67 6f 3f 73 3d 33 34 33 39 3a 33 34 37 36 |e.go?s=3439:3476|
> 000008c0 23 4c 37 39 22 3e 45 72 72 6f 72 3c 2f 61 3e 3c |#L79">Error</a><|
> 000008d0 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu|
> 000008e0 6e 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 |nc (d *DecodeFai|
> 000008f0 6c 75 72 65 29 20 45 72 72 6f 72 28 29 20 65 72 |lure) Error() er|
> 00000900 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 |ror</pre>.....<p|
> 00000910 3e 0a 45 72 72 6f 72 20 72 65 74 75 72 6e 73 20 |>.Error returns |
> 00000920 74 68 65 20 65 72 72 6f 72 20 65 6e 63 6f 75 6e |the error encoun|
> 00000930 74 65 72 65 64 20 64 75 72 69 6e 67 20 64 65 63 |tered during dec|
> 00000940 6f 64 69 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |oding..</p>.....|
> 00000950 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a |................|
> 00000960 09 09 09 09 3c 68 33 20 69 64 3d 22 44 65 63 6f |....<h3 id="Deco|
> 00000970 64 65 46 61 69 6c 75 72 65 2e 4c 61 79 65 72 43 |deFailure.LayerC|
> 00000980 6f 6e 74 65 6e 74 73 22 3e 66 75 6e 63 20 28 2a |ontents">func (*|
> 00000990 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 3c |DecodeFailure) <|
> 000009a0 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 |a href="/src/pkg|
> 000009b0 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e |/github.com/gcon|
> 000009c0 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 |nell/gopacket/de|
> 000009d0 63 6f 64 65 2e 67 6f 3f 73 3d 33 35 30 33 3a 33 |code.go?s=3503:3|
> 000009e0 35 34 39 23 4c 38 30 22 3e 4c 61 79 65 72 43 6f |549#L80">LayerCo|
> 000009f0 6e 74 65 6e 74 73 3c 2f 61 3e 3c 2f 68 33 3e 0a |ntents</a></h3>.|
> 00000a00 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 64 |....<pre>func (d|
> 00000a10 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 | *DecodeFailure)|
> 00000a20 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 | LayerContents()|
> 00000a30 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a 09 09 | []byte</pre>...|
> 00000a40 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00000a50 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00000a60 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 72 65 2e |="DecodeFailure.|
> 00000a70 4c 61 79 65 72 50 61 79 6c 6f 61 64 22 3e 66 75 |LayerPayload">fu|
> 00000a80 6e 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 |nc (*DecodeFailu|
> 00000a90 72 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |re) <a href="/sr|
> 00000aa0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com|
> 00000ab0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack|
> 00000ac0 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 |et/decode.go?s=3|
> 00000ad0 35 36 38 3a 33 36 31 33 23 4c 38 31 22 3e 4c 61 |568:3613#L81">La|
> 00000ae0 79 65 72 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f |yerPayload</a></|
> 00000af0 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun|
> 00000b00 63 20 28 64 20 2a 44 65 63 6f 64 65 46 61 69 6c |c (d *DecodeFail|
> 00000b10 75 72 65 29 20 4c 61 79 65 72 50 61 79 6c 6f 61 |ure) LayerPayloa|
> 00000b20 64 28 29 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e |d() []byte</pre>|
> 00000b30 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a |................|
> 00000b40 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 |.............<h3|
> 00000b50 20 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 | id="DecodeFailu|
> 00000b60 72 65 2e 4c 61 79 65 72 54 79 70 65 22 3e 66 75 |re.LayerType">fu|
> 00000b70 6e 63 20 28 2a 44 65 63 6f 64 65 46 61 69 6c 75 |nc (*DecodeFailu|
> 00000b80 72 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |re) <a href="/sr|
> 00000b90 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com|
> 00000ba0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack|
> 00000bb0 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 |et/decode.go?s=3|
> 00000bc0 37 35 30 3a 33 37 39 35 23 4c 38 35 22 3e 4c 61 |750:3795#L85">La|
> 00000bd0 79 65 72 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e |yerType</a></h3>|
> 00000be0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (|
> 00000bf0 64 20 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |d *DecodeFailure|
> 00000c00 29 20 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 |) LayerType() La|
> 00000c10 79 65 72 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 |yerType</pre>...|
> 00000c20 09 09 3c 70 3e 0a 4c 61 79 65 72 54 79 70 65 20 |..<p>.LayerType |
> 00000c30 72 65 74 75 72 6e 73 20 4c 61 79 65 72 54 79 70 |returns LayerTyp|
> 00000c40 65 44 65 63 6f 64 65 46 61 69 6c 75 72 65 0a 3c |eDecodeFailure.<|
> 00000c50 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/p>.............|
> 00000c60 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 |
> 00000c70 69 64 3d 22 44 65 63 6f 64 65 46 61 69 6c 75 72 |id="DecodeFailur|
> 00000c80 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |e.String">func (|
> 00000c90 2a 44 65 63 6f 64 65 46 61 69 6c 75 72 65 29 20 |*DecodeFailure) |
> 00000ca0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 00000cb0 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 00000cc0 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 |nnell/gopacket/d|
> 00000cd0 65 63 6f 64 65 2e 67 6f 3f 73 3d 33 36 33 30 3a |ecode.go?s=3630:|
> 00000ce0 33 36 36 39 23 4c 38 32 22 3e 53 74 72 69 6e 67 |3669#L82">String|
> 00000cf0 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 |</a></h3>.....<p|
> 00000d00 72 65 3e 66 75 6e 63 20 28 64 20 2a 44 65 63 6f |re>func (d *Deco|
> 00000d10 64 65 46 61 69 6c 75 72 65 29 20 53 74 72 69 6e |deFailure) Strin|
> 00000d20 67 28 29 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e |g() string</pre>|
> 00000d30 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a |................|
> 00000d40 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................|
> 00000d50 09 09 3c 68 32 20 69 64 3d 22 44 65 63 6f 64 65 |..<h2 id="Decode|
> 00000d60 46 75 6e 63 22 3e 74 79 70 65 20 3c 61 20 68 72 |Func">type <a hr|
> 00000d70 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00000d80 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 00000d90 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 6f 64 65 |/gopacket/decode|
> 00000da0 2e 67 6f 3f 73 3d 32 31 30 34 3a 32 31 35 33 23 |.go?s=2104:2153#|
> 00000db0 4c 34 36 22 3e 44 65 63 6f 64 65 46 75 6e 63 3c |L46">DecodeFunc<|
> 00000dc0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 00000dd0 3e 74 79 70 65 20 44 65 63 6f 64 65 46 75 6e 63 |>type DecodeFunc|
> 00000de0 20 66 75 6e 63 28 5b 5d 62 79 74 65 2c 20 50 61 | func([]byte, Pa|
> 00000df0 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 |cketBuilder) err|
> 00000e00 6f 72 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a |or</pre>....<p>.|
> 00000e10 44 65 63 6f 64 65 46 75 6e 63 20 77 72 61 70 73 |DecodeFunc wraps|
> 00000e20 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6d | a function to m|
> 00000e30 61 6b 65 20 69 74 20 61 20 44 65 63 6f 64 65 72 |ake it a Decoder|
> 00000e40 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........|
> 00000e50 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................|
> 00000e60 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00000e70 3d 22 44 65 63 6f 64 65 46 75 6e 63 2e 44 65 63 |="DecodeFunc.Dec|
> 00000e80 6f 64 65 22 3e 66 75 6e 63 20 28 44 65 63 6f 64 |ode">func (Decod|
> 00000e90 65 46 75 6e 63 29 20 3c 61 20 68 72 65 66 3d 22 |eFunc) <a href="|
> 00000ea0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00000eb0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00000ec0 61 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f |acket/decode.go?|
> 00000ed0 73 3d 32 31 35 35 3a 32 32 31 37 23 4c 34 38 22 |s=2155:2217#L48"|
> 00000ee0 3e 44 65 63 6f 64 65 3c 2f 61 3e 3c 2f 68 33 3e |>Decode</a></h3>|
> 00000ef0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (|
> 00000f00 64 20 44 65 63 6f 64 65 46 75 6e 63 29 20 44 65 |d DecodeFunc) De|
> 00000f10 63 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 65 |code(data []byte|
> 00000f20 2c 20 70 20 50 61 63 6b 65 74 42 75 69 6c 64 65 |, p PacketBuilde|
> 00000f30 72 29 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 |r) error</pre>..|
> 00000f40 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 00000f50 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00000f60 3c 68 32 20 69 64 3d 22 44 65 63 6f 64 65 4f 70 |<h2 id="DecodeOp|
> 00000f70 74 69 6f 6e 73 22 3e 74 79 70 65 20 3c 61 20 68 |tions">type <a h|
> 00000f80 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 00000f90 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 00000fa0 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe|
> 00000fb0 74 2e 67 6f 3f 73 3d 38 33 31 39 3a 38 39 39 30 |t.go?s=8319:8990|
> 00000fc0 23 4c 33 30 38 22 3e 44 65 63 6f 64 65 4f 70 74 |#L308">DecodeOpt|
> 00000fd0 69 6f 6e 73 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |ions</a></h2>...|
> 00000fe0 09 3c 70 72 65 3e 74 79 70 65 20 44 65 63 6f 64 |.<pre>type Decod|
> 00000ff0 65 4f 70 74 69 6f 6e 73 20 73 74 72 75 63 74 20 |eOptions struct |
> 00001000 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |{. <span clas|
> 00001010 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c |s="comment">// L|
> 00001020 61 7a 79 20 64 65 63 6f 64 69 6e 67 20 64 65 63 |azy decoding dec|
> 00001030 6f 64 65 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d |odes the minimum|
> 00001040 20 6e 75 6d 62 65 72 20 6f 66 20 6c 61 79 65 72 | number of layer|
> 00001050 73 20 6e 65 65 64 65 64 20 74 6f 20 72 65 74 75 |s needed to retu|
> 00001060 72 6e 20 64 61 74 61 3c 2f 73 70 61 6e 3e 0a 20 |rn data</span>. |
> 00001070 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 00001080 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 66 6f 72 20 |comment">// for |
> 00001090 61 20 70 61 63 6b 65 74 20 61 74 20 65 61 63 68 |a packet at each|
> 000010a0 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2e 20 | function call. |
> 000010b0 20 42 65 20 63 61 72 65 66 75 6c 20 75 73 69 6e | Be careful usin|
> 000010c0 67 20 74 68 69 73 20 77 69 74 68 20 63 6f 6e 63 |g this with conc|
> 000010d0 75 72 72 65 6e 74 3c 2f 73 70 61 6e 3e 0a 20 20 |urrent</span>. |
> 000010e0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 000010f0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 70 61 63 6b 65 |omment">// packe|
> 00001100 74 20 70 72 6f 63 65 73 73 6f 72 73 2c 20 61 73 |t processors, as|
> 00001110 20 65 61 63 68 20 63 61 6c 6c 20 74 6f 20 70 61 | each call to pa|
> 00001120 63 6b 65 74 2e 2a 20 63 6f 75 6c 64 20 6d 75 74 |cket.* could mut|
> 00001130 61 74 65 20 74 68 65 20 70 61 63 6b 65 74 2c 20 |ate the packet, |
> 00001140 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |and</span>. <|
> 00001150 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm|
> 00001160 65 6e 74 22 3e 2f 2f 20 74 77 6f 20 63 6f 6e 63 |ent">// two conc|
> 00001170 75 72 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 |urrent function |
> 00001180 63 61 6c 6c 73 20 63 6f 75 6c 64 20 69 6e 74 65 |calls could inte|
> 00001190 72 61 63 74 20 70 6f 6f 72 6c 79 2e 3c 2f 73 70 |ract poorly.</sp|
> 000011a0 61 6e 3e 0a 20 20 20 20 4c 61 7a 79 20 62 6f 6f |an>. Lazy boo|
> 000011b0 6c 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |l. <span clas|
> 000011c0 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e |s="comment">// N|
> 000011d0 6f 43 6f 70 79 20 64 65 63 6f 64 69 6e 67 20 64 |oCopy decoding d|
> 000011e0 6f 65 73 6e 26 23 33 39 3b 74 20 63 6f 70 79 20 |oesn't copy |
> 000011f0 69 74 73 20 69 6e 70 75 74 20 62 75 66 66 65 72 |its input buffer|
> 00001200 20 69 6e 74 6f 20 73 74 6f 72 61 67 65 20 74 68 | into storage th|
> 00001210 61 74 26 23 33 39 3b 73 20 6f 77 6e 65 64 20 62 |at's owned b|
> 00001220 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |y</span>. <sp|
> 00001230 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen|
> 00001240 74 22 3e 2f 2f 20 74 68 65 20 70 61 63 6b 65 74 |t">// the packet|
> 00001250 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 |. If you can gu|
> 00001260 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 |arantee that the|
> 00001270 20 62 79 74 65 73 20 75 6e 64 65 72 6c 79 69 6e | bytes underlyin|
> 00001280 67 20 74 68 65 20 73 6c 69 63 65 3c 2f 73 70 61 |g the slice</spa|
> 00001290 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla|
> 000012a0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 000012b0 70 61 73 73 65 64 20 69 6e 74 6f 20 4e 65 77 50 |passed into NewP|
> 000012c0 61 63 6b 65 74 20 61 72 65 6e 26 23 33 39 3b 74 |acket aren't|
> 000012d0 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 6d 6f 64 | going to be mod|
> 000012e0 69 66 69 65 64 2c 20 74 68 69 73 20 63 61 6e 20 |ified, this can |
> 000012f0 62 65 20 66 61 73 74 65 72 2e 20 20 49 66 3c 2f |be faster. If</|
> 00001300 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 |span>. <span |
> 00001310 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">|
> 00001320 2f 2f 20 74 68 65 72 65 26 23 33 39 3b 73 20 61 |// there's a|
> 00001330 6e 79 20 63 68 61 6e 63 65 20 74 68 61 74 20 74 |ny chance that t|
> 00001340 68 6f 73 65 20 62 79 74 65 73 20 57 49 4c 4c 20 |hose bytes WILL |
> 00001350 62 65 20 63 68 61 6e 67 65 64 2c 20 74 68 69 73 |be changed, this|
> 00001360 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 | will invalidate|
> 00001370 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa|
> 00001380 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment|
> 00001390 22 3e 2f 2f 20 79 6f 75 72 20 70 61 63 6b 65 74 |">// your packet|
> 000013a0 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 6f |s.</span>. No|
> 000013b0 43 6f 70 79 20 62 6f 6f 6c 0a 7d 3c 2f 70 72 65 |Copy bool.}</pre|
> 000013c0 3e 0a 09 09 09 3c 70 3e 0a 44 65 63 6f 64 65 4f |>....<p>.DecodeO|
> 000013d0 70 74 69 6f 6e 73 20 74 65 6c 6c 73 20 67 6f 70 |ptions tells gop|
> 000013e0 61 63 6b 65 74 20 68 6f 77 20 74 6f 20 64 65 63 |acket how to dec|
> 000013f0 6f 64 65 20 61 20 70 61 63 6b 65 74 2e 0a 3c 2f |ode a packet..</|
> 00001400 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |p>..............|
> 00001410 09 09 3c 70 72 65 3e 76 61 72 20 44 65 66 61 75 |..<pre>var Defau|
> 00001420 6c 74 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |lt DecodeOptions|
> 00001430 20 3d 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 | = DecodeOptions|
> 00001440 7b 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |{}</pre>.....<p>|
> 00001450 0a 44 65 66 61 75 6c 74 20 64 65 63 6f 64 69 6e |.Default decodin|
> 00001460 67 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 73 |g provides the s|
> 00001470 61 66 65 73 74 20 28 62 75 74 20 73 6c 6f 77 65 |afest (but slowe|
> 00001480 73 74 29 20 6d 65 74 68 6f 64 20 66 6f 72 20 64 |st) method for d|
> 00001490 65 63 6f 64 69 6e 67 0a 70 61 63 6b 65 74 73 2e |ecoding.packets.|
> 000014a0 20 20 49 74 20 65 61 67 65 72 6c 79 20 70 72 6f | It eagerly pro|
> 000014b0 63 65 73 73 65 73 20 61 6c 6c 20 6c 61 79 65 72 |cesses all layer|
> 000014c0 73 20 28 73 6f 20 69 74 26 23 33 39 3b 73 20 63 |s (so it's c|
> 000014d0 6f 6e 63 75 72 72 65 6e 63 79 2d 73 61 66 65 29 |oncurrency-safe)|
> 000014e0 20 61 6e 64 20 69 74 0a 63 6f 70 69 65 73 20 69 | and it.copies i|
> 000014f0 74 73 20 69 6e 70 75 74 20 62 75 66 66 65 72 20 |ts input buffer |
> 00001500 75 70 6f 6e 20 63 72 65 61 74 69 6f 6e 20 6f 66 |upon creation of|
> 00001510 20 74 68 65 20 70 61 63 6b 65 74 20 28 73 6f 20 | the packet (so |
> 00001520 74 68 65 20 70 61 63 6b 65 74 20 72 65 6d 61 69 |the packet remai|
> 00001530 6e 73 0a 76 61 6c 69 64 20 69 66 20 74 68 65 20 |ns.valid if the |
> 00001540 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 65 |underlying slice|
> 00001550 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 20 20 42 | is modified. B|
> 00001560 6f 74 68 20 6f 66 20 74 68 65 73 65 20 74 61 6b |oth of these tak|
> 00001570 65 20 74 69 6d 65 2c 0a 74 68 6f 75 67 68 2c 20 |e time,.though, |
> 00001580 73 6f 20 62 65 77 61 72 65 2e 20 20 49 66 20 79 |so beware. If y|
> 00001590 6f 75 20 63 61 6e 20 67 75 61 72 61 6e 74 65 65 |ou can guarantee|
> 000015a0 20 74 68 61 74 20 74 68 65 20 70 61 63 6b 65 74 | that the packet|
> 000015b0 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 75 73 | will only be us|
> 000015c0 65 64 0a 62 79 20 6f 6e 65 20 67 6f 72 6f 75 74 |ed.by one gorout|
> 000015d0 69 6e 65 20 61 74 20 61 20 74 69 6d 65 2c 20 73 |ine at a time, s|
> 000015e0 65 74 20 4c 61 7a 79 20 64 65 63 6f 64 69 6e 67 |et Lazy decoding|
> 000015f0 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 20 67 75 |. If you can gu|
> 00001600 61 72 61 6e 74 65 65 20 74 68 61 74 0a 74 68 65 |arantee that.the|
> 00001610 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 6c 69 63 | underlying slic|
> 00001620 65 20 77 6f 6e 26 23 33 39 3b 74 20 63 68 61 6e |e won't chan|
> 00001630 67 65 2c 20 73 65 74 20 4e 6f 43 6f 70 79 20 64 |ge, set NoCopy d|
> 00001640 65 63 6f 64 69 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 |ecoding..</p>...|
> 00001650 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 |.......<pre>var |
> 00001660 4c 61 7a 79 20 44 65 63 6f 64 65 4f 70 74 69 6f |Lazy DecodeOptio|
> 00001670 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 69 6f |ns = DecodeOptio|
> 00001680 6e 73 7b 4c 61 7a 79 3a 20 74 72 75 65 7d 3c 2f |ns{Lazy: true}</|
> 00001690 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 7a |pre>.....<p>.Laz|
> 000016a0 79 20 69 73 20 61 20 44 65 63 6f 64 65 4f 70 74 |y is a DecodeOpt|
> 000016b0 69 6f 6e 73 20 77 69 74 68 20 6a 75 73 74 20 4c |ions with just L|
> 000016c0 61 7a 79 20 73 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 |azy set..</p>...|
> 000016d0 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 |.......<pre>var |
> 000016e0 4e 6f 43 6f 70 79 20 44 65 63 6f 64 65 4f 70 74 |NoCopy DecodeOpt|
> 000016f0 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 |ions = DecodeOpt|
> 00001700 69 6f 6e 73 7b 4e 6f 43 6f 70 79 3a 20 74 72 75 |ions{NoCopy: tru|
> 00001710 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |e}</pre>.....<p>|
> 00001720 0a 4e 6f 43 6f 70 79 20 69 73 20 61 20 44 65 63 |.NoCopy is a Dec|
> 00001730 6f 64 65 4f 70 74 69 6f 6e 73 20 77 69 74 68 20 |odeOptions with |
> 00001740 6a 75 73 74 20 4e 6f 43 6f 70 79 20 73 65 74 2e |just NoCopy set.|
> 00001750 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 0a 09 09 09 0a |.</p>...........|
> 00001760 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 |................|
> 00001770 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 |........<h2 id="|
> 00001780 44 65 63 6f 64 65 72 22 3e 74 79 70 65 20 3c 61 |Decoder">type <a|
> 00001790 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/|
> 000017a0 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn|
> 000017b0 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 64 65 63 |ell/gopacket/dec|
> 000017c0 6f 64 65 2e 67 6f 3f 73 3d 31 37 37 38 3a 32 30 |ode.go?s=1778:20|
> 000017d0 34 39 23 4c 33 38 22 3e 44 65 63 6f 64 65 72 3c |49#L38">Decoder<|
> 000017e0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 000017f0 3e 74 79 70 65 20 44 65 63 6f 64 65 72 20 69 6e |>type Decoder in|
> 00001800 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 3c 73 |terface {. <s|
> 00001810 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 00001820 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 65 20 64 65 |nt">// Decode de|
> 00001830 63 6f 64 65 73 20 74 68 65 20 62 79 74 65 73 20 |codes the bytes |
> 00001840 6f 66 20 61 20 70 61 63 6b 65 74 2c 20 73 65 6e |of a packet, sen|
> 00001850 64 69 6e 67 20 64 65 63 6f 64 65 64 20 76 61 6c |ding decoded val|
> 00001860 75 65 73 20 61 6e 64 20 6f 74 68 65 72 3c 2f 73 |ues and other</s|
> 00001870 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 |pan>. <span c|
> 00001880 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/|
> 00001890 2f 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f |/ information to|
> 000018a0 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 2c 20 | PacketBuilder, |
> 000018b0 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20 61 6e |and returning an|
> 000018c0 20 65 72 72 6f 72 20 69 66 20 75 6e 73 75 63 63 | error if unsucc|
> 000018d0 65 73 73 66 75 6c 2e 20 20 53 65 65 3c 2f 73 70 |essful. See</sp|
> 000018e0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl|
> 000018f0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//|
> 00001900 20 74 68 65 20 50 61 63 6b 65 74 42 75 69 6c 64 | the PacketBuild|
> 00001910 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e |er documentation|
> 00001920 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c | for more detail|
> 00001930 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 44 65 |s.</span>. De|
> 00001940 63 6f 64 65 28 5b 5d 62 79 74 65 2c 20 50 61 63 |code([]byte, Pac|
> 00001950 6b 65 74 42 75 69 6c 64 65 72 29 20 65 72 72 6f |ketBuilder) erro|
> 00001960 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e |r.}</pre>....<p>|
> 00001970 0a 44 65 63 6f 64 65 72 20 69 73 20 61 6e 20 69 |.Decoder is an i|
> 00001980 6e 74 65 72 66 61 63 65 20 66 6f 72 20 6c 6f 67 |nterface for log|
> 00001990 69 63 20 74 6f 20 64 65 63 6f 64 65 20 61 20 70 |ic to decode a p|
> 000019a0 61 63 6b 65 74 20 6c 61 79 65 72 2e 20 20 55 73 |acket layer. Us|
> 000019b0 65 72 73 20 6d 61 79 0a 69 6d 70 6c 65 6d 65 6e |ers may.implemen|
> 000019c0 74 20 61 20 44 65 63 6f 64 65 72 20 74 6f 20 68 |t a Decoder to h|
> 000019d0 61 6e 64 6c 65 20 74 68 65 69 72 20 6f 77 6e 20 |andle their own |
> 000019e0 73 74 72 61 6e 67 65 20 70 61 63 6b 65 74 20 74 |strange packet t|
> 000019f0 79 70 65 73 2c 20 6f 72 20 6d 61 79 20 75 73 65 |ypes, or may use|
> 00001a00 20 6f 6e 65 0a 6f 66 20 74 68 65 20 6d 61 6e 79 | one.of the many|
> 00001a10 20 64 65 63 6f 64 65 72 73 20 61 76 61 69 6c 61 | decoders availa|
> 00001a20 62 6c 65 20 69 6e 20 74 68 65 20 26 23 33 39 3b |ble in the '|
> 00001a30 6c 61 79 65 72 73 26 23 33 39 3b 20 73 75 62 70 |layers' subp|
> 00001a40 61 63 6b 61 67 65 20 74 6f 20 64 65 63 6f 64 65 |ackage to decode|
> 00001a50 20 74 68 69 6e 67 73 0a 66 6f 72 20 74 68 65 6d | things.for them|
> 00001a60 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........|
> 00001a70 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 |......<pre>var D|
> 00001a80 65 63 6f 64 65 50 61 79 6c 6f 61 64 20 44 65 63 |ecodePayload Dec|
> 00001a90 6f 64 65 72 20 3d 20 44 65 63 6f 64 65 46 75 6e |oder = DecodeFun|
> 00001aa0 63 28 64 65 63 6f 64 65 50 61 79 6c 6f 61 64 29 |c(decodePayload)|
> 00001ab0 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 44 |</pre>.....<p>.D|
> 00001ac0 65 63 6f 64 65 50 61 79 6c 6f 61 64 20 69 73 20 |ecodePayload is |
> 00001ad0 61 20 44 65 63 6f 64 65 72 20 74 68 61 74 20 72 |a Decoder that r|
> 00001ae0 65 74 75 72 6e 73 20 61 20 50 61 79 6c 6f 61 64 |eturns a Payload|
> 00001af0 20 6c 61 79 65 72 20 63 6f 6e 74 61 69 6e 69 6e | layer containin|
> 00001b00 67 20 61 6c 6c 0a 72 65 6d 61 69 6e 69 6e 67 20 |g all.remaining |
> 00001b10 62 79 74 65 73 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |bytes..</p>.....|
> 00001b20 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 65 |.....<pre>var De|
> 00001b30 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 44 65 63 6f |codeUnknown Deco|
> 00001b40 64 65 72 20 3d 20 44 65 63 6f 64 65 46 75 6e 63 |der = DecodeFunc|
> 00001b50 28 64 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 29 3c |(decodeUnknown)<|
> 00001b60 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 44 65 |/pre>.....<p>.De|
> 00001b70 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 69 73 20 61 |codeUnknown is a|
> 00001b80 20 44 65 63 6f 64 65 72 20 74 68 61 74 20 72 65 | Decoder that re|
> 00001b90 74 75 72 6e 73 20 61 20 44 65 63 6f 64 65 46 61 |turns a DecodeFa|
> 00001ba0 69 6c 75 72 65 20 6c 61 79 65 72 20 63 6f 6e 74 |ilure layer cont|
> 00001bb0 61 69 6e 69 6e 67 20 61 6c 6c 0a 72 65 6d 61 69 |aining all.remai|
> 00001bc0 6e 69 6e 67 20 62 79 74 65 73 2c 20 75 73 65 66 |ning bytes, usef|
> 00001bd0 75 6c 20 69 66 20 79 6f 75 20 72 75 6e 20 75 70 |ul if you run up|
> 00001be0 20 61 67 61 69 6e 73 74 20 61 20 6c 61 79 65 72 | against a layer|
> 00001bf0 20 74 68 61 74 20 79 6f 75 26 23 33 39 3b 72 65 | that you're|
> 00001c00 20 75 6e 61 62 6c 65 20 74 6f 0a 64 65 63 6f 64 | unable to.decod|
> 00001c10 65 20 79 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 |e yet..</p>.....|
> 00001c20 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 00001c30 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h|
> 00001c40 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 22 3e |2 id="Endpoint">|
> 00001c50 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 |type <a href="/s|
> 00001c60 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co|
> 00001c70 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac|
> 00001c80 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 |ket/flows.go?s=3|
> 00001c90 31 30 3a 33 36 34 23 4c 35 22 3e 45 6e 64 70 6f |10:364#L5">Endpo|
> 00001ca0 69 6e 74 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 |int</a></h2>....|
> 00001cb0 3c 70 72 65 3e 74 79 70 65 20 45 6e 64 70 6f 69 |<pre>type Endpoi|
> 00001cc0 6e 74 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 |nt struct {. |
> 00001cd0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 00001ce0 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e |ment">// contain|
> 00001cf0 73 20 66 69 6c 74 65 72 65 64 20 6f 72 20 75 6e |s filtered or un|
> 00001d00 65 78 70 6f 72 74 65 64 20 66 69 65 6c 64 73 3c |exported fields<|
> 00001d10 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 |/span>.}</pre>..|
> 00001d20 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 20 69 |..<p>.Endpoint i|
> 00001d30 73 20 74 68 65 20 73 65 74 20 6f 66 20 62 79 74 |s the set of byt|
> 00001d40 65 73 20 75 73 65 64 20 74 6f 20 61 64 64 72 65 |es used to addre|
> 00001d50 73 73 20 70 61 63 6b 65 74 73 20 61 74 20 76 61 |ss packets at va|
> 00001d60 72 69 6f 75 73 20 6c 61 79 65 72 73 2e 0a 53 65 |rious layers..Se|
> 00001d70 65 20 4c 69 6e 6b 4c 61 79 65 72 2c 20 4e 65 74 |e LinkLayer, Net|
> 00001d80 77 6f 72 6b 4c 61 79 65 72 2c 20 61 6e 64 20 54 |workLayer, and T|
> 00001d90 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 20 73 70 |ransportLayer sp|
> 00001da0 65 63 69 66 69 63 61 74 69 6f 6e 73 2e 0a 45 6e |ecifications..En|
> 00001db0 64 70 6f 69 6e 74 73 20 61 72 65 20 75 73 61 62 |dpoints are usab|
> 00001dc0 6c 65 20 61 73 20 6d 61 70 20 6b 65 79 73 2e 0a |le as map keys..|
> 00001dd0 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a |</p>............|
> 00001de0 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00001df0 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 45 6e |...<h3 id="NewEn|
> 00001e00 64 70 6f 69 6e 74 22 3e 66 75 6e 63 20 3c 61 20 |dpoint">func <a |
> 00001e10 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 00001e20 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 00001e30 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow|
> 00001e40 73 2e 67 6f 3f 73 3d 31 31 36 34 3a 31 32 31 39 |s.go?s=1164:1219|
> 00001e50 23 4c 32 36 22 3e 4e 65 77 45 6e 64 70 6f 69 6e |#L26">NewEndpoin|
> 00001e60 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<|
> 00001e70 70 72 65 3e 66 75 6e 63 20 4e 65 77 45 6e 64 70 |pre>func NewEndp|
> 00001e80 6f 69 6e 74 28 74 79 70 20 45 6e 64 70 6f 69 6e |oint(typ Endpoin|
> 00001e90 74 54 79 70 65 2c 20 72 61 77 20 5b 5d 62 79 74 |tType, raw []byt|
> 00001ea0 65 29 20 45 6e 64 70 6f 69 6e 74 3c 2f 70 72 65 |e) Endpoint</pre|
> 00001eb0 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 45 6e 64 |>.....<p>.NewEnd|
> 00001ec0 70 6f 69 6e 74 20 63 72 65 61 74 65 73 20 61 20 |point creates a |
> 00001ed0 6e 65 77 20 45 6e 64 70 6f 69 6e 74 20 6f 62 6a |new Endpoint obj|
> 00001ee0 65 63 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a |ect..</p>.......|
> 00001ef0 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 00001f00 09 09 3c 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 |..<h3 id="Endpoi|
> 00001f10 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 |nt.EndpointType"|
> 00001f20 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 |>func (Endpoint)|
> 00001f30 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 00001f40 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00001f50 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00001f60 66 6c 6f 77 73 2e 67 6f 3f 73 3d 34 33 39 3a 34 |flows.go?s=439:4|
> 00001f70 38 34 23 4c 31 31 22 3e 45 6e 64 70 6f 69 6e 74 |84#L11">Endpoint|
> 00001f80 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |Type</a></h3>...|
> 00001f90 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 65 20 45 |..<pre>func (e E|
> 00001fa0 6e 64 70 6f 69 6e 74 29 20 45 6e 64 70 6f 69 6e |ndpoint) Endpoin|
> 00001fb0 74 54 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 |tType() Endpoint|
> 00001fc0 54 79 70 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |Type</pre>.....<|
> 00001fd0 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 |p>.EndpointType |
> 00001fe0 72 65 74 75 72 6e 73 20 74 68 65 20 65 6e 64 70 |returns the endp|
> 00001ff0 6f 69 6e 74 20 74 79 70 65 20 61 73 73 6f 63 69 |oint type associ|
> 00002000 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 65 |ated with this e|
> 00002010 6e 64 70 6f 69 6e 74 2e 0a 3c 2f 70 3e 0a 0a 09 |ndpoint..</p>...|
> 00002020 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00002030 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 45 6e |......<h3 id="En|
> 00002040 64 70 6f 69 6e 74 2e 4c 65 73 73 54 68 61 6e 22 |dpoint.LessThan"|
> 00002050 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 |>func (Endpoint)|
> 00002060 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 00002070 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00002080 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00002090 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 30 31 30 3a |flows.go?s=1010:|
> 000020a0 31 30 35 33 23 4c 32 31 22 3e 4c 65 73 73 54 68 |1053#L21">LessTh|
> 000020b0 61 6e 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |an</a></h3>.....|
> 000020c0 3c 70 72 65 3e 66 75 6e 63 20 28 61 20 45 6e 64 |<pre>func (a End|
> 000020d0 70 6f 69 6e 74 29 20 4c 65 73 73 54 68 61 6e 28 |point) LessThan(|
> 000020e0 62 20 45 6e 64 70 6f 69 6e 74 29 20 62 6f 6f 6c |b Endpoint) bool|
> 000020f0 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c |</pre>.....<p>.L|
> 00002100 65 73 73 54 68 61 6e 20 70 72 6f 76 69 64 65 73 |essThan provides|
> 00002110 20 61 20 73 74 61 62 6c 65 20 6f 72 64 65 72 69 | a stable orderi|
> 00002120 6e 67 20 66 6f 72 20 61 6c 6c 20 65 6e 64 70 6f |ng for all endpo|
> 00002130 69 6e 74 73 2e 20 20 49 74 20 73 6f 72 74 73 20 |ints. It sorts |
> 00002140 66 69 72 73 74 20 62 61 73 65 64 0a 6f 6e 20 74 |first based.on t|
> 00002150 68 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 |he EndpointType |
> 00002160 6f 66 20 61 6e 20 65 6e 64 70 6f 69 6e 74 2c 20 |of an endpoint, |
> 00002170 74 68 65 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 |then based on th|
> 00002180 65 20 72 61 77 20 62 79 74 65 73 20 6f 66 20 74 |e raw bytes of t|
> 00002190 68 61 74 20 65 6e 64 70 6f 69 6e 74 2e 0a 46 6f |hat endpoint..Fo|
> 000021a0 72 20 73 6f 6d 65 20 65 6e 64 70 6f 69 6e 74 73 |r some endpoints|
> 000021b0 2c 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 6d |, the actual com|
> 000021c0 70 61 72 69 73 6f 6e 20 6d 61 79 20 6e 6f 74 20 |parison may not |
> 000021d0 6d 61 6b 65 20 73 65 6e 73 65 2c 20 68 6f 77 65 |make sense, howe|
> 000021e0 76 65 72 20 74 68 69 73 0a 6f 72 64 65 72 69 6e |ver this.orderin|
> 000021f0 67 20 64 6f 65 73 20 70 72 6f 76 69 64 65 20 75 |g does provide u|
> 00002200 73 65 66 75 6c 20 69 6e 66 6f 72 6d 61 74 69 6f |seful informatio|
> 00002210 6e 20 66 6f 72 20 6d 6f 73 74 20 45 6e 64 70 6f |n for most Endpo|
> 00002220 69 6e 74 20 74 79 70 65 73 2e 0a 3c 2f 70 3e 0a |int types..</p>.|
> 00002230 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 |................|
> 00002240 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="|
> 00002250 45 6e 64 70 6f 69 6e 74 2e 52 61 77 22 3e 66 75 |Endpoint.Raw">fu|
> 00002260 6e 63 20 28 45 6e 64 70 6f 69 6e 74 29 20 3c 61 |nc (Endpoint) <a|
> 00002270 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/|
> 00002280 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn|
> 00002290 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f |ell/gopacket/flo|
> 000022a0 77 73 2e 67 6f 3f 73 3d 36 34 31 3a 36 37 31 23 |ws.go?s=641:671#|
> 000022b0 4c 31 35 22 3e 52 61 77 3c 2f 61 3e 3c 2f 68 33 |L15">Raw</a></h3|
> 000022c0 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 000022d0 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 52 61 77 |(e Endpoint) Raw|
> 000022e0 28 29 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a |() []byte</pre>.|
> 000022f0 09 09 09 09 3c 70 3e 0a 52 61 77 20 72 65 74 75 |....<p>.Raw retu|
> 00002300 72 6e 73 20 74 68 65 20 72 61 77 20 62 79 74 65 |rns the raw byte|
> 00002310 73 20 6f 66 20 74 68 69 73 20 65 6e 64 70 6f 69 |s of this endpoi|
> 00002320 6e 74 2e 20 20 54 68 65 73 65 20 61 72 65 6e 26 |nt. These aren&|
> 00002330 23 33 39 3b 74 20 68 75 6d 61 6e 2d 72 65 61 64 |#39;t human-read|
> 00002340 61 62 6c 65 0a 6d 6f 73 74 20 6f 66 20 74 68 65 |able.most of the|
> 00002350 20 74 69 6d 65 2c 20 62 75 74 20 74 68 65 79 20 | time, but they |
> 00002360 61 72 65 20 66 61 73 74 65 72 20 74 68 61 6e 20 |are faster than |
> 00002370 63 61 6c 6c 69 6e 67 20 53 74 72 69 6e 67 2e 0a |calling String..|
> 00002380 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a |</p>............|
> 00002390 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 |.............<h3|
> 000023a0 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 2e 53 74 | id="Endpoint.St|
> 000023b0 72 69 6e 67 22 3e 66 75 6e 63 20 28 45 6e 64 70 |ring">func (Endp|
> 000023c0 6f 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f |oint) <a href="/|
> 000023d0 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c|
> 000023e0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa|
> 000023f0 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d |cket/flows.go?s=|
> 00002400 32 33 36 39 3a 32 34 30 32 23 4c 36 34 22 3e 53 |2369:2402#L64">S|
> 00002410 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |tring</a></h3>..|
> 00002420 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 65 20 |...<pre>func (e |
> 00002430 45 6e 64 70 6f 69 6e 74 29 20 53 74 72 69 6e 67 |Endpoint) String|
> 00002440 28 29 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a |() string</pre>.|
> 00002450 09 09 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00002460 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00002470 09 3c 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e |.<h2 id="Endpoin|
> 00002480 74 54 79 70 65 22 3e 74 79 70 65 20 3c 61 20 68 |tType">type <a h|
> 00002490 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 000024a0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 000024b0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows|
> 000024c0 2e 67 6f 3f 73 3d 31 37 34 36 3a 31 37 36 39 23 |.go?s=1746:1769#|
> 000024d0 4c 34 31 22 3e 45 6e 64 70 6f 69 6e 74 54 79 70 |L41">EndpointTyp|
> 000024e0 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 |e</a></h2>....<p|
> 000024f0 72 65 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 |re>type Endpoint|
> 00002500 54 79 70 65 20 69 6e 74 36 34 3c 2f 70 72 65 3e |Type int64</pre>|
> 00002510 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 |....<p>.Endpoint|
> 00002520 54 79 70 65 20 69 73 20 74 68 65 20 74 79 70 65 |Type is the type|
> 00002530 20 6f 66 20 61 20 67 6f 70 61 63 6b 65 74 20 45 | of a gopacket E|
> 00002540 6e 64 70 6f 69 6e 74 2e 20 20 54 68 69 73 20 74 |ndpoint. This t|
> 00002550 79 70 65 20 64 65 74 65 72 6d 69 6e 65 73 20 68 |ype determines h|
> 00002560 6f 77 0a 74 68 65 20 62 79 74 65 73 20 73 74 6f |ow.the bytes sto|
> 00002570 72 65 64 20 69 6e 20 74 68 65 20 65 6e 64 70 6f |red in the endpo|
> 00002580 69 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e |int should be in|
> 00002590 74 65 72 70 72 65 74 65 64 2e 0a 3c 2f 70 3e 0a |terpreted..</p>.|
> 000025a0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 000025b0 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 |..............<h|
> 000025c0 33 20 69 64 3d 22 52 65 67 69 73 74 65 72 45 6e |3 id="RegisterEn|
> 000025d0 64 70 6f 69 6e 74 54 79 70 65 22 3e 66 75 6e 63 |dpointType">func|
> 000025e0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 000025f0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00002600 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00002610 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 30 31 37 3a |flows.go?s=2017:|
> 00002620 32 30 39 31 23 4c 34 38 22 3e 52 65 67 69 73 74 |2091#L48">Regist|
> 00002630 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f |erEndpointType</|
> 00002640 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 |a></h3>.....<pre|
> 00002650 3e 66 75 6e 63 20 52 65 67 69 73 74 65 72 45 6e |>func RegisterEn|
> 00002660 64 70 6f 69 6e 74 54 79 70 65 28 6e 75 6d 20 69 |dpointType(num i|
> 00002670 6e 74 2c 20 6d 65 74 61 20 45 6e 64 70 6f 69 6e |nt, meta Endpoin|
> 00002680 74 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 45 |tTypeMetadata) E|
> 00002690 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f 70 72 65 |ndpointType</pre|
> 000026a0 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 67 69 73 74 |>.....<p>.Regist|
> 000026b0 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 63 |erEndpointType c|
> 000026c0 72 65 61 74 65 73 20 61 20 6e 65 77 20 45 6e 64 |reates a new End|
> 000026d0 70 6f 69 6e 74 54 79 70 65 20 61 6e 64 20 72 65 |pointType and re|
> 000026e0 67 69 73 74 65 72 73 20 69 74 20 67 6c 6f 62 61 |gisters it globa|
> 000026f0 6c 6c 79 2e 0a 49 74 20 4d 55 53 54 20 62 65 20 |lly..It MUST be |
> 00002700 70 61 73 73 65 64 20 61 20 75 6e 69 71 75 65 20 |passed a unique |
> 00002710 6e 75 6d 62 65 72 2c 20 6f 72 20 69 74 20 77 69 |number, or it wi|
> 00002720 6c 6c 20 70 61 6e 69 63 2e 20 20 4e 75 6d 62 65 |ll panic. Numbe|
> 00002730 72 73 20 30 2d 39 39 39 20 61 72 65 0a 72 65 73 |rs 0-999 are.res|
> 00002740 65 72 76 65 64 20 66 6f 72 20 67 6f 70 61 63 6b |erved for gopack|
> 00002750 65 74 26 23 33 39 3b 73 20 75 73 65 2e 0a 3c 2f |et's use..</|
> 00002760 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 |p>..............|
> 00002770 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 |...........<h3 i|
> 00002780 64 3d 22 45 6e 64 70 6f 69 6e 74 54 79 70 65 2e |d="EndpointType.|
> 00002790 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 45 6e |String">func (En|
> 000027a0 64 70 6f 69 6e 74 54 79 70 65 29 20 3c 61 20 68 |dpointType) <a h|
> 000027b0 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 000027c0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 000027d0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows|
> 000027e0 2e 67 6f 3f 73 3d 32 32 34 32 3a 32 32 37 39 23 |.go?s=2242:2279#|
> 000027f0 4c 35 37 22 3e 53 74 72 69 6e 67 3c 2f 61 3e 3c |L57">String</a><|
> 00002800 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 |/h3>.....<pre>fu|
> 00002810 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 54 79 |nc (e EndpointTy|
> 00002820 70 65 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 |pe) String() str|
> 00002830 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 |ing</pre>.......|
> 00002840 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 0a |................|
> 00002850 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i|
> 00002860 64 3d 22 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d |d="EndpointTypeM|
> 00002870 65 74 61 64 61 74 61 22 3e 74 79 70 65 20 3c 61 |etadata">type <a|
> 00002880 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/|
> 00002890 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn|
> 000028a0 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f |ell/gopacket/flo|
> 000028b0 77 73 2e 67 6f 3f 73 3d 31 33 32 35 3a 31 36 30 |ws.go?s=1325:160|
> 000028c0 37 23 4c 33 31 22 3e 45 6e 64 70 6f 69 6e 74 54 |7#L31">EndpointT|
> 000028d0 79 70 65 4d 65 74 61 64 61 74 61 3c 2f 61 3e 3c |ypeMetadata</a><|
> 000028e0 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 |/h2>....<pre>typ|
> 000028f0 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d 65 |e EndpointTypeMe|
> 00002900 74 61 64 61 74 61 20 73 74 72 75 63 74 20 7b 0a |tadata struct {.|
> 00002910 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=|
> 00002920 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 61 6d |"comment">// Nam|
> 00002930 65 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 20 |e is the string |
> 00002940 72 65 74 75 72 6e 65 64 20 62 79 20 61 6e 20 45 |returned by an E|
> 00002950 6e 64 70 6f 69 6e 74 54 79 70 65 26 23 33 39 3b |ndpointType'|
> 00002960 73 20 53 74 72 69 6e 67 20 66 75 6e 63 74 69 6f |s String functio|
> 00002970 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 61 |n.</span>. Na|
> 00002980 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 3c 73 |me string. <s|
> 00002990 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 000029a0 6e 74 22 3e 2f 2f 20 46 6f 72 6d 61 74 74 65 72 |nt">// Formatter|
> 000029b0 20 69 73 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 | is called from |
> 000029c0 61 6e 20 45 6e 64 70 6f 69 6e 74 26 23 33 39 3b |an Endpoint'|
> 000029d0 73 20 53 74 72 69 6e 67 20 66 75 6e 63 74 69 6f |s String functio|
> 000029e0 6e 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 |n to format the |
> 000029f0 72 61 77 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c |raw</span>. <|
> 00002a00 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm|
> 00002a10 65 6e 74 22 3e 2f 2f 20 62 79 74 65 73 20 69 6e |ent">// bytes in|
> 00002a20 20 61 6e 20 45 6e 64 70 6f 69 6e 74 20 69 6e 74 | an Endpoint int|
> 00002a30 6f 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 |o a human-readab|
> 00002a40 6c 65 20 73 74 72 69 6e 67 2e 3c 2f 73 70 61 6e |le string.</span|
> 00002a50 3e 0a 20 20 20 20 46 6f 72 6d 61 74 74 65 72 20 |>. Formatter |
> 00002a60 66 75 6e 63 28 5b 5d 62 79 74 65 29 20 73 74 72 |func([]byte) str|
> 00002a70 69 6e 67 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |ing.}</pre>....<|
> 00002a80 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 4d |p>.EndpointTypeM|
> 00002a90 65 74 61 64 61 74 61 20 69 73 20 75 73 65 64 20 |etadata is used |
> 00002aa0 74 6f 20 72 65 67 69 73 74 65 72 20 61 20 6e 65 |to register a ne|
> 00002ab0 77 20 65 6e 64 70 6f 69 6e 74 20 74 79 70 65 2e |w endpoint type.|
> 00002ac0 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........|
> 00002ad0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 00002ae0 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h|
> 00002af0 32 20 69 64 3d 22 45 72 72 6f 72 4c 61 79 65 72 |2 id="ErrorLayer|
> 00002b00 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="|
> 00002b10 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00002b20 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00002b30 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d |acket/base.go?s=|
> 00002b40 32 34 36 36 3a 32 35 31 37 23 4c 36 35 22 3e 45 |2466:2517#L65">E|
> 00002b50 72 72 6f 72 4c 61 79 65 72 3c 2f 61 3e 3c 2f 68 |rrorLayer</a></h|
> 00002b60 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type |
> 00002b70 45 72 72 6f 72 4c 61 79 65 72 20 69 6e 74 65 72 |ErrorLayer inter|
> 00002b80 66 61 63 65 20 7b 0a 20 20 20 20 4c 61 79 65 72 |face {. Layer|
> 00002b90 0a 20 20 20 20 45 72 72 6f 72 28 29 20 65 72 72 |. Error() err|
> 00002ba0 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 |or.}</pre>....<p|
> 00002bb0 3e 0a 45 72 72 6f 72 4c 61 79 65 72 20 69 73 20 |>.ErrorLayer is |
> 00002bc0 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 63 |a packet layer c|
> 00002bd0 72 65 61 74 65 64 20 77 68 65 6e 20 64 65 63 6f |reated when deco|
> 00002be0 64 69 6e 67 20 6f 66 20 74 68 65 20 70 61 63 6b |ding of the pack|
> 00002bf0 65 74 20 68 61 73 20 66 61 69 6c 65 64 2e 0a 49 |et has failed..I|
> 00002c00 74 73 20 70 61 79 6c 6f 61 64 20 69 73 20 61 6c |ts payload is al|
> 00002c10 6c 20 74 68 65 20 62 79 74 65 73 20 74 68 61 74 |l the bytes that|
> 00002c20 20 77 65 20 77 65 72 65 20 75 6e 61 62 6c 65 20 | we were unable |
> 00002c30 74 6f 20 64 65 63 6f 64 65 2c 20 61 6e 64 20 74 |to decode, and t|
> 00002c40 68 65 20 72 65 74 75 72 6e 65 64 0a 65 72 72 6f |he returned.erro|
> 00002c50 72 20 64 65 74 61 69 6c 73 20 77 68 79 20 74 68 |r details why th|
> 00002c60 65 20 64 65 63 6f 64 69 6e 67 20 66 61 69 6c 65 |e decoding faile|
> 00002c70 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 |d..</p>.........|
> 00002c80 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................|
> 00002c90 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00002ca0 3c 68 32 20 69 64 3d 22 46 6c 6f 77 22 3e 74 79 |<h2 id="Flow">ty|
> 00002cb0 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src|
> 00002cc0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00002cd0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00002ce0 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 36 38 |t/flows.go?s=268|
> 00002cf0 37 3a 32 37 34 37 23 4c 37 33 22 3e 46 6c 6f 77 |7:2747#L73">Flow|
> 00002d00 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr|
> 00002d10 65 3e 74 79 70 65 20 46 6c 6f 77 20 73 74 72 75 |e>type Flow stru|
> 00002d20 63 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 |ct {. <span c|
> 00002d30 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/|
> 00002d40 2f 20 63 6f 6e 74 61 69 6e 73 20 66 69 6c 74 65 |/ contains filte|
> 00002d50 72 65 64 20 6f 72 20 75 6e 65 78 70 6f 72 74 65 |red or unexporte|
> 00002d60 64 20 66 69 65 6c 64 73 3c 2f 73 70 61 6e 3e 0a |d fields</span>.|
> 00002d70 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 46 |}</pre>....<p>.F|
> 00002d80 6c 6f 77 20 72 65 70 72 65 73 65 6e 74 73 20 74 |low represents t|
> 00002d90 68 65 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 |he direction of |
> 00002da0 74 72 61 66 66 69 63 20 66 6f 72 20 61 20 70 61 |traffic for a pa|
> 00002db0 63 6b 65 74 20 6c 61 79 65 72 2c 20 61 73 20 61 |cket layer, as a|
> 00002dc0 20 73 6f 75 72 63 65 20 61 6e 64 20 64 65 73 74 | source and dest|
> 00002dd0 69 6e 61 74 69 6f 6e 20 45 6e 64 70 6f 69 6e 74 |ination Endpoint|
> 00002de0 2e 0a 46 6c 6f 77 73 20 61 72 65 20 75 73 61 62 |..Flows are usab|
> 00002df0 6c 65 20 61 73 20 6d 61 70 20 6b 65 79 73 2e 0a |le as map keys..|
> 00002e00 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a |</p>............|
> 00002e10 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00002e20 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 46 |...<h3 id="FlowF|
> 00002e30 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 |romEndpoints">fu|
> 00002e40 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |nc <a href="/src|
> 00002e50 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00002e60 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00002e70 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 39 31 |t/flows.go?s=291|
> 00002e80 36 3a 32 39 37 37 23 4c 38 31 22 3e 46 6c 6f 77 |6:2977#L81">Flow|
> 00002e90 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 3c 2f 61 |FromEndpoints</a|
> 00002ea0 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>|
> 00002eb0 66 75 6e 63 20 46 6c 6f 77 46 72 6f 6d 45 6e 64 |func FlowFromEnd|
> 00002ec0 70 6f 69 6e 74 73 28 73 72 63 2c 20 64 73 74 20 |points(src, dst |
> 00002ed0 45 6e 64 70 6f 69 6e 74 29 20 28 5f 20 46 6c 6f |Endpoint) (_ Flo|
> 00002ee0 77 2c 20 65 72 72 20 65 72 72 6f 72 29 3c 2f 70 |w, err error)</p|
> 00002ef0 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 46 6c 6f 77 |re>.....<p>.Flow|
> 00002f00 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 20 63 72 |FromEndpoints cr|
> 00002f10 65 61 74 65 73 20 61 20 6e 65 77 20 66 6c 6f 77 |eates a new flow|
> 00002f20 20 62 79 20 70 61 73 74 69 6e 67 20 74 6f 67 65 | by pasting toge|
> 00002f30 74 68 65 72 20 74 77 6f 20 65 6e 64 70 6f 69 6e |ther two endpoin|
> 00002f40 74 73 2e 0a 54 68 65 20 65 6e 64 70 6f 69 6e 74 |ts..The endpoint|
> 00002f50 73 20 6d 75 73 74 20 68 61 76 65 20 74 68 65 20 |s must have the |
> 00002f60 73 61 6d 65 20 45 6e 64 70 6f 69 6e 74 54 79 70 |same EndpointTyp|
> 00002f70 65 2c 20 6f 72 20 74 68 69 73 20 66 75 6e 63 74 |e, or this funct|
> 00002f80 69 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a |ion will return.|
> 00002f90 61 6e 20 65 72 72 6f 72 2e 0a 3c 2f 70 3e 0a 0a |an error..</p>..|
> 00002fa0 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 00002fb0 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 46 6c 6f |..<h3 id="NewFlo|
> 00002fc0 77 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d |w">func <a href=|
> 00002fd0 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github|
> 00002fe0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go|
> 00002ff0 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f |packet/flows.go?|
> 00003000 73 3d 33 39 38 38 3a 34 30 33 38 23 4c 31 32 33 |s=3988:4038#L123|
> 00003010 22 3e 4e 65 77 46 6c 6f 77 3c 2f 61 3e 3c 2f 68 |">NewFlow</a></h|
> 00003020 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func|
> 00003030 20 4e 65 77 46 6c 6f 77 28 74 20 45 6e 64 70 6f | NewFlow(t Endpo|
> 00003040 69 6e 74 54 79 70 65 2c 20 73 72 63 2c 20 64 73 |intType, src, ds|
> 00003050 74 20 5b 5d 62 79 74 65 29 20 46 6c 6f 77 3c 2f |t []byte) Flow</|
> 00003060 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 |pre>.....<p>.New|
> 00003070 46 6c 6f 77 20 63 72 65 61 74 65 73 20 61 20 6e |Flow creates a n|
> 00003080 65 77 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |ew flow..</p>...|
> 00003090 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................|
> 000030a0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl|
> 000030b0 6f 77 2e 44 73 74 22 3e 66 75 6e 63 20 28 46 6c |ow.Dst">func (Fl|
> 000030c0 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ow) <a href="/sr|
> 000030d0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com|
> 000030e0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack|
> 000030f0 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 37 |et/flows.go?s=37|
> 00003100 36 32 3a 33 37 39 36 23 4c 31 31 32 22 3e 44 73 |62:3796#L112">Ds|
> 00003110 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<|
> 00003120 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f 77 |pre>func (f Flow|
> 00003130 29 20 44 73 74 28 29 20 28 64 73 74 20 45 6e 64 |) Dst() (dst End|
> 00003140 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 09 |point)</pre>....|
> 00003150 09 3c 70 3e 0a 44 73 74 20 72 65 74 75 72 6e 73 |.<p>.Dst returns|
> 00003160 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e | the destination|
> 00003170 20 45 6e 64 70 6f 69 6e 74 20 66 6f 72 20 74 68 | Endpoint for th|
> 00003180 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |is flow..</p>...|
> 00003190 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 000031a0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl|
> 000031b0 6f 77 2e 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 |ow.EndpointType"|
> 000031c0 3e 66 75 6e 63 20 28 46 6c 6f 77 29 20 3c 61 20 |>func (Flow) <a |
> 000031d0 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 000031e0 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 000031f0 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 |ll/gopacket/flow|
> 00003200 73 2e 67 6f 3f 73 3d 33 33 36 34 3a 33 34 30 35 |s.go?s=3364:3405|
> 00003210 23 4c 39 36 22 3e 45 6e 64 70 6f 69 6e 74 54 79 |#L96">EndpointTy|
> 00003220 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |pe</a></h3>.....|
> 00003230 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo|
> 00003240 77 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 |w) EndpointType(|
> 00003250 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c 2f |) EndpointType</|
> 00003260 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 45 6e 64 |pre>.....<p>.End|
> 00003270 70 6f 69 6e 74 54 79 70 65 20 72 65 74 75 72 6e |pointType return|
> 00003280 73 20 74 68 65 20 45 6e 64 70 6f 69 6e 74 54 79 |s the EndpointTy|
> 00003290 70 65 20 66 6f 72 20 74 68 69 73 20 46 6c 6f 77 |pe for this Flow|
> 000032a0 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........|
> 000032b0 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 000032c0 68 33 20 69 64 3d 22 46 6c 6f 77 2e 45 6e 64 70 |h3 id="Flow.Endp|
> 000032d0 6f 69 6e 74 73 22 3e 66 75 6e 63 20 28 46 6c 6f |oints">func (Flo|
> 000032e0 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |w) <a href="/src|
> 000032f0 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003300 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003310 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 34 37 |t/flows.go?s=347|
> 00003320 39 3a 33 35 32 34 23 4c 31 30 31 22 3e 45 6e 64 |9:3524#L101">End|
> 00003330 70 6f 69 6e 74 73 3c 2f 61 3e 3c 2f 68 33 3e 0a |points</a></h3>.|
> 00003340 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f|
> 00003350 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 73 | Flow) Endpoints|
> 00003360 28 29 20 28 73 72 63 2c 20 64 73 74 20 45 6e 64 |() (src, dst End|
> 00003370 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 09 |point)</pre>....|
> 00003380 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 73 20 72 |.<p>.Endpoints r|
> 00003390 65 74 75 72 6e 73 20 74 68 65 20 74 77 6f 20 45 |eturns the two E|
> 000033a0 6e 64 70 6f 69 6e 74 73 20 66 6f 72 20 74 68 69 |ndpoints for thi|
> 000033b0 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 |s flow..</p>....|
> 000033c0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 000033d0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f |.....<h3 id="Flo|
> 000033e0 77 2e 52 65 76 65 72 73 65 22 3e 66 75 6e 63 20 |w.Reverse">func |
> 000033f0 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="|
> 00003400 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003410 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003420 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s|
> 00003430 3d 33 38 38 39 3a 33 39 31 37 23 4c 31 31 38 22 |=3889:3917#L118"|
> 00003440 3e 52 65 76 65 72 73 65 3c 2f 61 3e 3c 2f 68 33 |>Reverse</a></h3|
> 00003450 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 00003460 28 66 20 46 6c 6f 77 29 20 52 65 76 65 72 73 65 |(f Flow) Reverse|
> 00003470 28 29 20 46 6c 6f 77 3c 2f 70 72 65 3e 0a 09 09 |() Flow</pre>...|
> 00003480 09 09 3c 70 3e 0a 52 65 76 65 72 73 65 20 72 65 |..<p>.Reverse re|
> 00003490 74 75 72 6e 73 20 61 20 6e 65 77 20 66 6c 6f 77 |turns a new flow|
> 000034a0 20 77 69 74 68 20 65 6e 64 70 6f 69 6e 74 73 20 | with endpoints |
> 000034b0 72 65 76 65 72 73 65 64 2e 0a 3c 2f 70 3e 0a 0a |reversed..</p>..|
> 000034c0 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................|
> 000034d0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 |.......<h3 id="F|
> 000034e0 6c 6f 77 2e 53 72 63 22 3e 66 75 6e 63 20 28 46 |low.Src">func (F|
> 000034f0 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |low) <a href="/s|
> 00003500 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co|
> 00003510 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac|
> 00003520 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 |ket/flows.go?s=3|
> 00003530 36 33 35 3a 33 36 36 39 23 4c 31 30 36 22 3e 53 |635:3669#L106">S|
> 00003540 72 63 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |rc</a></h3>.....|
> 00003550 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo|
> 00003560 77 29 20 53 72 63 28 29 20 28 73 72 63 20 45 6e |w) Src() (src En|
> 00003570 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e 0a 09 09 |dpoint)</pre>...|
> 00003580 09 09 3c 70 3e 0a 53 72 63 20 72 65 74 75 72 6e |..<p>.Src return|
> 00003590 73 20 74 68 65 20 73 6f 75 72 63 65 20 45 6e 64 |s the source End|
> 000035a0 70 6f 69 6e 74 20 66 6f 72 20 74 68 69 73 20 66 |point for this f|
> 000035b0 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a |low..</p>.......|
> 000035c0 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 000035d0 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 2e 53 |..<h3 id="Flow.S|
> 000035e0 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 46 6c 6f |tring">func (Flo|
> 000035f0 77 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |w) <a href="/src|
> 00003600 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003610 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003620 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 32 32 |t/flows.go?s=322|
> 00003630 39 3a 33 32 35 38 23 4c 39 31 22 3e 53 74 72 69 |9:3258#L91">Stri|
> 00003640 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |ng</a></h3>.....|
> 00003650 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 46 6c 6f |<pre>func (f Flo|
> 00003660 77 29 20 53 74 72 69 6e 67 28 29 20 73 74 72 69 |w) String() stri|
> 00003670 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ng</pre>.....<p>|
> 00003680 0a 53 74 72 69 6e 67 20 72 65 74 75 72 6e 73 20 |.String returns |
> 00003690 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 |a human-readable|
> 000036a0 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 | representation |
> 000036b0 6f 66 20 74 68 69 73 20 66 6c 6f 77 2c 20 69 6e |of this flow, in|
> 000036c0 20 74 68 65 20 66 6f 72 6d 0a 26 23 33 34 3b 53 | the form."S|
> 000036d0 72 63 2d 26 67 74 3b 44 73 74 26 23 33 34 3b 0a |rc->Dst".|
> 000036e0 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a |</p>............|
> 000036f0 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................|
> 00003700 09 09 3c 68 32 20 69 64 3d 22 4c 61 79 65 72 22 |..<h2 id="Layer"|
> 00003710 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/|
> 00003720 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c|
> 00003730 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa|
> 00003740 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 35 |cket/base.go?s=5|
> 00003750 30 33 3a 38 33 37 23 4c 36 22 3e 4c 61 79 65 72 |03:837#L6">Layer|
> 00003760 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 |</a></h2>....<pr|
> 00003770 65 3e 74 79 70 65 20 4c 61 79 65 72 20 69 6e 74 |e>type Layer int|
> 00003780 65 72 66 61 63 65 20 7b 0a 20 20 20 20 66 6d 74 |erface {. fmt|
> 00003790 2e 53 74 72 69 6e 67 65 72 0a 20 20 20 20 3c 73 |.Stringer. <s|
> 000037a0 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 000037b0 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 54 79 70 65 |nt">// LayerType|
> 000037c0 20 69 73 20 74 68 65 20 67 6f 70 61 63 6b 65 74 | is the gopacket|
> 000037d0 20 74 79 70 65 20 66 6f 72 20 74 68 69 73 20 6c | type for this l|
> 000037e0 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |ayer.</span>. |
> 000037f0 20 4c 61 79 65 72 54 79 70 65 28 29 20 4c 61 79 | LayerType() Lay|
> 00003800 65 72 54 79 70 65 0a 20 20 20 20 3c 73 70 61 6e |erType. <span|
> 00003810 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"|
> 00003820 3e 2f 2f 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 |>// LayerContent|
> 00003830 73 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 |s returns the se|
> 00003840 74 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 |t of bytes that |
> 00003850 6d 61 6b 65 20 75 70 20 74 68 69 73 20 6c 61 79 |make up this lay|
> 00003860 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4c |er.</span>. L|
> 00003870 61 79 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b |ayerContents() [|
> 00003880 5d 62 79 74 65 0a 20 20 20 20 3c 73 70 61 6e 20 |]byte. <span |
> 00003890 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">|
> 000038a0 2f 2f 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 20 |// LayerPayload |
> 000038b0 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 74 20 |returns the set |
> 000038c0 6f 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e |of bytes contain|
> 000038d0 65 64 20 77 69 74 68 69 6e 20 74 68 69 73 20 6c |ed within this l|
> 000038e0 61 79 65 72 2c 20 6e 6f 74 3c 2f 73 70 61 6e 3e |ayer, not</span>|
> 000038f0 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class|
> 00003900 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 69 6e |="comment">// in|
> 00003910 63 6c 75 64 69 6e 67 20 74 68 65 20 6c 61 79 65 |cluding the laye|
> 00003920 72 20 69 74 73 65 6c 66 2e 3c 2f 73 70 61 6e 3e |r itself.</span>|
> 00003930 0a 20 20 20 20 4c 61 79 65 72 50 61 79 6c 6f 61 |. LayerPayloa|
> 00003940 64 28 29 20 5b 5d 62 79 74 65 0a 7d 3c 2f 70 72 |d() []byte.}</pr|
> 00003950 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 20 |e>....<p>.Layer |
> 00003960 72 65 70 72 65 73 65 6e 74 73 20 61 20 73 69 6e |represents a sin|
> 00003970 67 6c 65 20 64 65 63 6f 64 65 64 20 70 61 63 6b |gle decoded pack|
> 00003980 65 74 20 6c 61 79 65 72 20 28 75 73 69 6e 67 20 |et layer (using |
> 00003990 65 69 74 68 65 72 20 74 68 65 0a 4f 53 49 20 6f |either the.OSI o|
> 000039a0 72 20 54 43 50 2f 49 50 20 64 65 66 69 6e 69 74 |r TCP/IP definit|
> 000039b0 69 6f 6e 20 6f 66 20 61 20 6c 61 79 65 72 29 2e |ion of a layer).|
> 000039c0 20 20 57 68 65 6e 20 64 65 63 6f 64 69 6e 67 2c | When decoding,|
> 000039d0 20 61 20 70 61 63 6b 65 74 26 23 33 39 3b 73 20 | a packet's |
> 000039e0 64 61 74 61 20 69 73 0a 62 72 6f 6b 65 6e 20 75 |data is.broken u|
> 000039f0 70 20 69 6e 74 6f 20 61 20 6e 75 6d 62 65 72 20 |p into a number |
> 00003a00 6f 66 20 6c 61 79 65 72 73 2e 20 20 54 68 65 20 |of layers. The |
> 00003a10 63 61 6c 6c 65 72 20 6d 61 79 20 63 61 6c 6c 20 |caller may call |
> 00003a20 4c 61 79 65 72 54 79 70 65 28 29 20 74 6f 0a 66 |LayerType() to.f|
> 00003a30 69 67 75 72 65 20 6f 75 74 20 77 68 69 63 68 20 |igure out which |
> 00003a40 74 79 70 65 20 6f 66 20 6c 61 79 65 72 20 68 65 |type of layer he|
> 00003a50 26 23 33 39 3b 73 20 72 65 63 65 69 76 65 64 20 |'s received |
> 00003a60 66 72 6f 6d 20 74 68 65 20 70 61 63 6b 65 74 2e |from the packet.|
> 00003a70 20 20 4f 70 74 69 6f 6e 61 6c 6c 79 2c 0a 68 65 | Optionally,.he|
> 00003a80 20 6d 61 79 20 74 68 65 6e 20 75 73 65 20 61 20 | may then use a |
> 00003a90 74 79 70 65 20 61 73 73 65 72 74 69 6f 6e 20 74 |type assertion t|
> 00003aa0 6f 20 67 65 74 20 74 68 65 20 61 63 74 75 61 6c |o get the actual|
> 00003ab0 20 6c 61 79 65 72 20 74 79 70 65 20 66 6f 72 20 | layer type for |
> 00003ac0 64 65 65 70 0a 69 6e 73 70 65 63 74 69 6f 6e 20 |deep.inspection |
> 00003ad0 6f 66 20 74 68 65 20 64 61 74 61 2e 0a 3c 2f 70 |of the data..</p|
> 00003ae0 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |>...............|
> 00003af0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 |................|
> 00003b00 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 |..........<h2 id|
> 00003b10 3d 22 4c 61 79 65 72 43 6c 61 73 73 22 3e 74 79 |="LayerClass">ty|
> 00003b20 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src|
> 00003b30 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003b40 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003b50 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f |t/layerclass.go?|
> 00003b60 73 3d 31 38 30 3a 33 33 36 23 4c 31 22 3e 4c 61 |s=180:336#L1">La|
> 00003b70 79 65 72 43 6c 61 73 73 3c 2f 61 3e 3c 2f 68 32 |yerClass</a></h2|
> 00003b80 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 4c |>....<pre>type L|
> 00003b90 61 79 65 72 43 6c 61 73 73 20 69 6e 74 65 72 66 |ayerClass interf|
> 00003ba0 61 63 65 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 |ace {. <span |
> 00003bb0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">|
> 00003bc0 2f 2f 20 43 6f 6e 74 61 69 6e 73 20 72 65 74 75 |// Contains retu|
> 00003bd0 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 65 20 |rns true if the |
> 00003be0 67 69 76 65 6e 20 6c 61 79 65 72 20 74 79 70 65 |given layer type|
> 00003bf0 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 | should be consi|
> 00003c00 64 65 72 65 64 20 70 61 72 74 3c 2f 73 70 61 6e |dered part</span|
> 00003c10 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |>. <span clas|
> 00003c20 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f |s="comment">// o|
> 00003c30 66 20 74 68 69 73 20 6c 61 79 65 72 20 63 6c 61 |f this layer cla|
> 00003c40 73 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 43 |ss.</span>. C|
> 00003c50 6f 6e 74 61 69 6e 73 28 4c 61 79 65 72 54 79 70 |ontains(LayerTyp|
> 00003c60 65 29 20 62 6f 6f 6c 0a 7d 3c 2f 70 72 65 3e 0a |e) bool.}</pre>.|
> 00003c70 09 09 09 3c 70 3e 0a 4c 61 79 65 72 43 6c 61 73 |...<p>.LayerClas|
> 00003c80 73 20 69 73 20 61 20 73 65 74 20 6f 66 20 4c 61 |s is a set of La|
> 00003c90 79 65 72 54 79 70 65 73 2c 20 75 73 65 64 20 66 |yerTypes, used f|
> 00003ca0 6f 72 20 67 72 61 62 62 69 6e 67 20 6f 6e 65 20 |or grabbing one |
> 00003cb0 6f 66 20 61 20 6e 75 6d 62 65 72 20 6f 66 0a 64 |of a number of.d|
> 00003cc0 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 66 |ifferent types f|
> 00003cd0 72 6f 6d 20 61 20 70 61 63 6b 65 74 2e 0a 3c 2f |rom a packet..</|
> 00003ce0 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |p>..............|
> 00003cf0 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00003d00 09 3c 68 33 20 69 64 3d 22 4e 65 77 4c 61 79 65 |.<h3 id="NewLaye|
> 00003d10 72 43 6c 61 73 73 22 3e 66 75 6e 63 20 3c 61 20 |rClass">func <a |
> 00003d20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 |href="/src/pkg/g|
> 00003d30 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 |ithub.com/gconne|
> 00003d40 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 |ll/gopacket/laye|
> 00003d50 72 63 6c 61 73 73 2e 67 6f 3f 73 3d 31 37 32 32 |rclass.go?s=1722|
> 00003d60 3a 31 37 37 30 23 4c 35 31 22 3e 4e 65 77 4c 61 |:1770#L51">NewLa|
> 00003d70 79 65 72 43 6c 61 73 73 3c 2f 61 3e 3c 2f 68 33 |yerClass</a></h3|
> 00003d80 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 00003d90 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 28 74 79 |NewLayerClass(ty|
> 00003da0 70 65 73 20 5b 5d 4c 61 79 65 72 54 79 70 65 29 |pes []LayerType)|
> 00003db0 20 4c 61 79 65 72 43 6c 61 73 73 3c 2f 70 72 65 | LayerClass</pre|
> 00003dc0 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 77 4c 61 79 |>.....<p>.NewLay|
> 00003dd0 65 72 43 6c 61 73 73 20 63 72 65 61 74 65 73 20 |erClass creates |
> 00003de0 61 20 4c 61 79 65 72 43 6c 61 73 73 2c 20 61 74 |a LayerClass, at|
> 00003df0 74 65 6d 70 74 69 6e 67 20 74 6f 20 62 65 20 73 |tempting to be s|
> 00003e00 6d 61 72 74 20 61 62 6f 75 74 20 77 68 69 63 68 |mart about which|
> 00003e10 20 74 79 70 65 0a 69 74 20 63 72 65 61 74 65 73 | type.it creates|
> 00003e20 20 62 61 73 65 64 20 6f 6e 20 77 68 69 63 68 20 | based on which |
> 00003e30 74 79 70 65 73 20 61 72 65 20 70 61 73 73 65 64 |types are passed|
> 00003e40 20 69 6e 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a | in..</p>.......|
> 00003e50 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a |................|
> 00003e60 09 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c |.......<h2 id="L|
> 00003e70 61 79 65 72 43 6c 61 73 73 4d 61 70 22 3e 74 79 |ayerClassMap">ty|
> 00003e80 70 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |pe <a href="/src|
> 00003e90 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003ea0 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003eb0 74 2f 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f |t/layerclass.go?|
> 00003ec0 73 3d 31 31 35 32 3a 31 31 38 39 23 4c 33 31 22 |s=1152:1189#L31"|
> 00003ed0 3e 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 3c 2f |>LayerClassMap</|
> 00003ee0 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e |a></h2>....<pre>|
> 00003ef0 74 79 70 65 20 4c 61 79 65 72 43 6c 61 73 73 4d |type LayerClassM|
> 00003f00 61 70 20 6d 61 70 5b 4c 61 79 65 72 54 79 70 65 |ap map[LayerType|
> 00003f10 5d 62 6f 6f 6c 3c 2f 70 72 65 3e 0a 09 09 09 3c |]bool</pre>....<|
> 00003f20 70 3e 0a 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |p>.LayerClassMap|
> 00003f30 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 20 4c 61 | implements a La|
> 00003f40 79 65 72 43 6c 61 73 73 20 77 69 74 68 20 61 20 |yerClass with a |
> 00003f50 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |map..</p>.......|
> 00003f60 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 |................|
> 00003f70 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 |........<h3 id="|
> 00003f80 4e 65 77 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |NewLayerClassMap|
> 00003f90 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="|
> 00003fa0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003fb0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003fc0 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass|
> 00003fd0 2e 67 6f 3f 73 3d 31 34 35 33 3a 31 35 30 37 23 |.go?s=1453:1507#|
> 00003fe0 4c 34 31 22 3e 4e 65 77 4c 61 79 65 72 43 6c 61 |L41">NewLayerCla|
> 00003ff0 73 73 4d 61 70 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |ssMap</a></h3>..|
> 00004000 09 09 09 3c |...<|
> --- Layer 1 ---
> Loopback {Contents=[30, 0, 0, 0] Payload=[..16384..] Family=IPv6}
> 00000000 1e 00 00 00 |....|
> --- Layer 2 ---
> IPv6 {Contents=[..40..] Payload=[..16344..] Version=6 TrafficClass=0 FlowLabel=100497 Length=16344 NextHeader=TCP HopLimit=64 SrcIP=::1 DstIP=::1 HopByHop=nil}
> 00000000 60 01 88 91 3f d8 06 40 00 00 00 00 00 00 00 00 |`...?.. 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'|
> 000012e0 3b 73 20 61 6e 79 20 63 68 61 6e 63 65 20 74 68 |;s any chance th|
> 000012f0 61 74 20 74 68 6f 73 65 20 62 79 74 65 73 20 57 |at those bytes W|
> 00001300 49 4c 4c 20 62 65 20 63 68 61 6e 67 65 64 2c 20 |ILL be changed, |
> 00001310 74 68 69 73 20 77 69 6c 6c 20 69 6e 76 61 6c 69 |this will invali|
> 00001320 64 61 74 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |date</span>. |
> 00001330 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 00001340 6d 65 6e 74 22 3e 2f 2f 20 79 6f 75 72 20 70 61 |ment">// your pa|
> 00001350 63 6b 65 74 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |ckets.</span>. |
> 00001360 20 20 4e 6f 43 6f 70 79 20 62 6f 6f 6c 0a 7d 3c | NoCopy bool.}<|
> 00001370 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 44 65 63 |/pre>....<p>.Dec|
> 00001380 6f 64 65 4f 70 74 69 6f 6e 73 20 74 65 6c 6c 73 |odeOptions tells|
> 00001390 20 67 6f 70 61 63 6b 65 74 20 68 6f 77 20 74 6f | gopacket how to|
> 000013a0 20 64 65 63 6f 64 65 20 61 20 70 61 63 6b 65 74 | decode a packet|
> 000013b0 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........|
> 000013c0 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 72 20 44 |......<pre>var D|
> 000013d0 65 66 61 75 6c 74 20 44 65 63 6f 64 65 4f 70 74 |efault DecodeOpt|
> 000013e0 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f 70 74 |ions = DecodeOpt|
> 000013f0 69 6f 6e 73 7b 7d 3c 2f 70 72 65 3e 0a 09 09 09 |ions{}</pre>....|
> 00001400 09 3c 70 3e 0a 44 65 66 61 75 6c 74 20 64 65 63 |.<p>.Default dec|
> 00001410 6f 64 69 6e 67 20 70 72 6f 76 69 64 65 73 20 74 |oding provides t|
> 00001420 68 65 20 73 61 66 65 73 74 20 28 62 75 74 20 73 |he safest (but s|
> 00001430 6c 6f 77 65 73 74 29 20 6d 65 74 68 6f 64 20 66 |lowest) method f|
> 00001440 6f 72 20 64 65 63 6f 64 69 6e 67 0a 70 61 63 6b |or decoding.pack|
> 00001450 65 74 73 2e 20 20 49 74 20 65 61 67 65 72 6c 79 |ets. It eagerly|
> 00001460 20 70 72 6f 63 65 73 73 65 73 20 61 6c 6c 20 6c | processes all l|
> 00001470 61 79 65 72 73 20 28 73 6f 20 69 74 26 23 33 39 |ayers (so it'|
> 00001480 3b 73 20 63 6f 6e 63 75 72 72 65 6e 63 79 2d 73 |;s concurrency-s|
> 00001490 61 66 65 29 20 61 6e 64 20 69 74 0a 63 6f 70 69 |afe) and it.copi|
> 000014a0 65 73 20 69 74 73 20 69 6e 70 75 74 20 62 75 66 |es its input buf|
> 000014b0 66 65 72 20 75 70 6f 6e 20 63 72 65 61 74 69 6f |fer upon creatio|
> 000014c0 6e 20 6f 66 20 74 68 65 20 70 61 63 6b 65 74 20 |n of the packet |
> 000014d0 28 73 6f 20 74 68 65 20 70 61 63 6b 65 74 20 72 |(so the packet r|
> 000014e0 65 6d 61 69 6e 73 0a 76 61 6c 69 64 20 69 66 20 |emains.valid if |
> 000014f0 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 |the underlying s|
> 00001500 6c 69 63 65 20 69 73 20 6d 6f 64 69 66 69 65 64 |lice is modified|
> 00001510 2e 20 20 42 6f 74 68 20 6f 66 20 74 68 65 73 65 |. Both of these|
> 00001520 20 74 61 6b 65 20 74 69 6d 65 2c 0a 74 68 6f 75 | take time,.thou|
> 00001530 67 68 2c 20 73 6f 20 62 65 77 61 72 65 2e 20 20 |gh, so beware. |
> 00001540 49 66 20 79 6f 75 20 63 61 6e 20 67 75 61 72 61 |If you can guara|
> 00001550 6e 74 65 65 20 74 68 61 74 20 74 68 65 20 70 61 |ntee that the pa|
> 00001560 63 6b 65 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 |cket will only b|
> 00001570 65 20 75 73 65 64 0a 62 79 20 6f 6e 65 20 67 6f |e used.by one go|
> 00001580 72 6f 75 74 69 6e 65 20 61 74 20 61 20 74 69 6d |routine at a tim|
> 00001590 65 2c 20 73 65 74 20 4c 61 7a 79 20 64 65 63 6f |e, set Lazy deco|
> 000015a0 64 69 6e 67 2e 20 20 49 66 20 79 6f 75 20 63 61 |ding. If you ca|
> 000015b0 6e 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 |n guarantee that|
> 000015c0 0a 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 |.the underlying |
> 000015d0 73 6c 69 63 65 20 77 6f 6e 26 23 33 39 3b 74 20 |slice won't |
> 000015e0 63 68 61 6e 67 65 2c 20 73 65 74 20 4e 6f 43 6f |change, set NoCo|
> 000015f0 70 79 20 64 65 63 6f 64 69 6e 67 2e 0a 3c 2f 70 |py decoding..</p|
> 00001600 3e 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e |>..........<pre>|
> 00001610 76 61 72 20 4c 61 7a 79 20 44 65 63 6f 64 65 4f |var Lazy DecodeO|
> 00001620 70 74 69 6f 6e 73 20 3d 20 44 65 63 6f 64 65 4f |ptions = DecodeO|
> 00001630 70 74 69 6f 6e 73 7b 4c 61 7a 79 3a 20 74 72 75 |ptions{Lazy: tru|
> 00001640 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |e}</pre>.....<p>|
> 00001650 0a 4c 61 7a 79 20 69 73 20 61 20 44 65 63 6f 64 |.Lazy is a Decod|
> 00001660 65 4f 70 74 69 6f 6e 73 20 77 69 74 68 20 6a 75 |eOptions with ju|
> 00001670 73 74 20 4c 61 7a 79 20 73 65 74 2e 0a 3c 2f 70 |st Lazy set..</p|
> 00001680 3e 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e |>..........<pre>|
> 00001690 76 61 72 20 4e 6f 43 6f 70 79 20 44 65 63 6f 64 |var NoCopy Decod|
> 000016a0 65 4f 70 74 69 6f 6e 73 20 3d 20 44 65 63 6f 64 |eOptions = Decod|
> 000016b0 65 4f 70 74 69 6f 6e 73 7b 4e 6f 43 6f 70 79 3a |eOptions{NoCopy:|
> 000016c0 20 74 72 75 65 7d 3c 2f 70 72 65 3e 0a 09 09 09 | true}</pre>....|
> 000016d0 09 3c 70 3e 0a 4e 6f 43 6f 70 79 20 69 73 20 61 |.<p>.NoCopy is a|
> 000016e0 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 20 77 | DecodeOptions w|
> 000016f0 69 74 68 20 6a 75 73 74 20 4e 6f 43 6f 70 79 20 |ith just NoCopy |
> 00001700 73 65 74 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 0a |set..</p>.......|
> 00001710 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................|
> 00001720 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 |
> 00001730 69 64 3d 22 44 65 63 6f 64 65 72 22 3e 74 79 70 |id="Decoder">typ|
> 00001740 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/|
> 00001750 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00001760 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00001770 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 3d 31 37 37 |/decode.go?s=177|
> 00001780 38 3a 32 30 34 39 23 4c 33 38 22 3e 44 65 63 6f |8:2049#L38">Deco|
> 00001790 64 65 72 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 |der</a></h2>....|
> 000017a0 3c 70 72 65 3e 74 79 70 65 20 44 65 63 6f 64 65 |<pre>type Decode|
> 000017b0 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 |r interface {. |
> 000017c0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 000017d0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 |omment">// Decod|
> 000017e0 65 20 64 65 63 6f 64 65 73 20 74 68 65 20 62 79 |e decodes the by|
> 000017f0 74 65 73 20 6f 66 20 61 20 70 61 63 6b 65 74 2c |tes of a packet,|
> 00001800 20 73 65 6e 64 69 6e 67 20 64 65 63 6f 64 65 64 | sending decoded|
> 00001810 20 76 61 6c 75 65 73 20 61 6e 64 20 6f 74 68 65 | values and othe|
> 00001820 72 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |r</span>. <sp|
> 00001830 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen|
> 00001840 74 22 3e 2f 2f 20 69 6e 66 6f 72 6d 61 74 69 6f |t">// informatio|
> 00001850 6e 20 74 6f 20 50 61 63 6b 65 74 42 75 69 6c 64 |n to PacketBuild|
> 00001860 65 72 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e |er, and returnin|
> 00001870 67 20 61 6e 20 65 72 72 6f 72 20 69 66 20 75 6e |g an error if un|
> 00001880 73 75 63 63 65 73 73 66 75 6c 2e 20 20 53 65 65 |successful. See|
> 00001890 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa|
> 000018a0 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment|
> 000018b0 22 3e 2f 2f 20 74 68 65 20 50 61 63 6b 65 74 42 |">// the PacketB|
> 000018c0 75 69 6c 64 65 72 20 64 6f 63 75 6d 65 6e 74 61 |uilder documenta|
> 000018d0 74 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 64 65 |tion for more de|
> 000018e0 74 61 69 6c 73 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |tails.</span>. |
> 000018f0 20 20 44 65 63 6f 64 65 28 5b 5d 62 79 74 65 2c | Decode([]byte,|
> 00001900 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 | PacketBuilder) |
> 00001910 65 72 72 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 |error.}</pre>...|
> 00001920 09 3c 70 3e 0a 44 65 63 6f 64 65 72 20 69 73 20 |.<p>.Decoder is |
> 00001930 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 |an interface for|
> 00001940 20 6c 6f 67 69 63 20 74 6f 20 64 65 63 6f 64 65 | logic to decode|
> 00001950 20 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 2e | a packet layer.|
> 00001960 20 20 55 73 65 72 73 20 6d 61 79 0a 69 6d 70 6c | Users may.impl|
> 00001970 65 6d 65 6e 74 20 61 20 44 65 63 6f 64 65 72 20 |ement a Decoder |
> 00001980 74 6f 20 68 61 6e 64 6c 65 20 74 68 65 69 72 20 |to handle their |
> 00001990 6f 77 6e 20 73 74 72 61 6e 67 65 20 70 61 63 6b |own strange pack|
> 000019a0 65 74 20 74 79 70 65 73 2c 20 6f 72 20 6d 61 79 |et types, or may|
> 000019b0 20 75 73 65 20 6f 6e 65 0a 6f 66 20 74 68 65 20 | use one.of the |
> 000019c0 6d 61 6e 79 20 64 65 63 6f 64 65 72 73 20 61 76 |many decoders av|
> 000019d0 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 26 |ailable in the &|
> 000019e0 23 33 39 3b 6c 61 79 65 72 73 26 23 33 39 3b 20 |#39;layers' |
> 000019f0 73 75 62 70 61 63 6b 61 67 65 20 74 6f 20 64 65 |subpackage to de|
> 00001a00 63 6f 64 65 20 74 68 69 6e 67 73 0a 66 6f 72 20 |code things.for |
> 00001a10 74 68 65 6d 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 |them..</p>......|
> 00001a20 0a 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 |..........<pre>v|
> 00001a30 61 72 20 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 |ar DecodePayload|
> 00001a40 20 44 65 63 6f 64 65 72 20 3d 20 44 65 63 6f 64 | Decoder = Decod|
> 00001a50 65 46 75 6e 63 28 64 65 63 6f 64 65 50 61 79 6c |eFunc(decodePayl|
> 00001a60 6f 61 64 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |oad)</pre>.....<|
> 00001a70 70 3e 0a 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 |p>.DecodePayload|
> 00001a80 20 69 73 20 61 20 44 65 63 6f 64 65 72 20 74 68 | is a Decoder th|
> 00001a90 61 74 20 72 65 74 75 72 6e 73 20 61 20 50 61 79 |at returns a Pay|
> 00001aa0 6c 6f 61 64 20 6c 61 79 65 72 20 63 6f 6e 74 61 |load layer conta|
> 00001ab0 69 6e 69 6e 67 20 61 6c 6c 0a 72 65 6d 61 69 6e |ining all.remain|
> 00001ac0 69 6e 67 20 62 79 74 65 73 2e 0a 3c 2f 70 3e 0a |ing bytes..</p>.|
> 00001ad0 0a 09 09 09 0a 09 09 09 09 3c 70 72 65 3e 76 61 |.........<pre>va|
> 00001ae0 72 20 44 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 |r DecodeUnknown |
> 00001af0 44 65 63 6f 64 65 72 20 3d 20 44 65 63 6f 64 65 |Decoder = Decode|
> 00001b00 46 75 6e 63 28 64 65 63 6f 64 65 55 6e 6b 6e 6f |Func(decodeUnkno|
> 00001b10 77 6e 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 |wn)</pre>.....<p|
> 00001b20 3e 0a 44 65 63 6f 64 65 55 6e 6b 6e 6f 77 6e 20 |>.DecodeUnknown |
> 00001b30 69 73 20 61 20 44 65 63 6f 64 65 72 20 74 68 61 |is a Decoder tha|
> 00001b40 74 20 72 65 74 75 72 6e 73 20 61 20 44 65 63 6f |t returns a Deco|
> 00001b50 64 65 46 61 69 6c 75 72 65 20 6c 61 79 65 72 20 |deFailure layer |
> 00001b60 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 0a 72 |containing all.r|
> 00001b70 65 6d 61 69 6e 69 6e 67 20 62 79 74 65 73 2c 20 |emaining bytes, |
> 00001b80 75 73 65 66 75 6c 20 69 66 20 79 6f 75 20 72 75 |useful if you ru|
> 00001b90 6e 20 75 70 20 61 67 61 69 6e 73 74 20 61 20 6c |n up against a l|
> 00001ba0 61 79 65 72 20 74 68 61 74 20 79 6f 75 26 23 33 |ayer that you|
> 00001bb0 39 3b 72 65 20 75 6e 61 62 6c 65 20 74 6f 0a 64 |9;re unable to.d|
> 00001bc0 65 63 6f 64 65 20 79 65 74 2e 0a 3c 2f 70 3e 0a |ecode yet..</p>.|
> 00001bd0 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................|
> 00001be0 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................|
> 00001bf0 09 09 3c 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 |..<h2 id="Endpoi|
> 00001c00 6e 74 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |nt">type <a href|
> 00001c10 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 00001c20 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 00001c30 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f |opacket/flows.go|
> 00001c40 3f 73 3d 33 31 30 3a 33 36 34 23 4c 35 22 3e 45 |?s=310:364#L5">E|
> 00001c50 6e 64 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 68 32 3e |ndpoint</a></h2>|
> 00001c60 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 45 6e |....<pre>type En|
> 00001c70 64 70 6f 69 6e 74 20 73 74 72 75 63 74 20 7b 0a |dpoint struct {.|
> 00001c80 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d | <span class=|
> 00001c90 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e |"comment">// con|
> 00001ca0 74 61 69 6e 73 20 66 69 6c 74 65 72 65 64 20 6f |tains filtered o|
> 00001cb0 72 20 75 6e 65 78 70 6f 72 74 65 64 20 66 69 65 |r unexported fie|
> 00001cc0 6c 64 73 3c 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 |lds</span>.}</pr|
> 00001cd0 65 3e 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 |e>....<p>.Endpoi|
> 00001ce0 6e 74 20 69 73 20 74 68 65 20 73 65 74 20 6f 66 |nt is the set of|
> 00001cf0 20 62 79 74 65 73 20 75 73 65 64 20 74 6f 20 61 | bytes used to a|
> 00001d00 64 64 72 65 73 73 20 70 61 63 6b 65 74 73 20 61 |ddress packets a|
> 00001d10 74 20 76 61 72 69 6f 75 73 20 6c 61 79 65 72 73 |t various layers|
> 00001d20 2e 0a 53 65 65 20 4c 69 6e 6b 4c 61 79 65 72 2c |..See LinkLayer,|
> 00001d30 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 2c 20 61 | NetworkLayer, a|
> 00001d40 6e 64 20 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |nd TransportLaye|
> 00001d50 72 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 73 |r specifications|
> 00001d60 2e 0a 45 6e 64 70 6f 69 6e 74 73 20 61 72 65 20 |..Endpoints are |
> 00001d70 75 73 61 62 6c 65 20 61 73 20 6d 61 70 20 6b 65 |usable as map ke|
> 00001d80 79 73 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a |ys..</p>........|
> 00001d90 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................|
> 00001da0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e |.......<h3 id="N|
> 00001db0 65 77 45 6e 64 70 6f 69 6e 74 22 3e 66 75 6e 63 |ewEndpoint">func|
> 00001dc0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 00001dd0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00001de0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00001df0 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 31 36 34 3a |flows.go?s=1164:|
> 00001e00 31 32 31 39 23 4c 32 36 22 3e 4e 65 77 45 6e 64 |1219#L26">NewEnd|
> 00001e10 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |point</a></h3>..|
> 00001e20 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 4e 65 77 |...<pre>func New|
> 00001e30 45 6e 64 70 6f 69 6e 74 28 74 79 70 20 45 6e 64 |Endpoint(typ End|
> 00001e40 70 6f 69 6e 74 54 79 70 65 2c 20 72 61 77 20 5b |pointType, raw [|
> 00001e50 5d 62 79 74 65 29 20 45 6e 64 70 6f 69 6e 74 3c |]byte) Endpoint<|
> 00001e60 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne|
> 00001e70 77 45 6e 64 70 6f 69 6e 74 20 63 72 65 61 74 65 |wEndpoint create|
> 00001e80 73 20 61 20 6e 65 77 20 45 6e 64 70 6f 69 6e 74 |s a new Endpoint|
> 00001e90 20 6f 62 6a 65 63 74 2e 0a 3c 2f 70 3e 0a 0a 09 | object..</p>...|
> 00001ea0 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................|
> 00001eb0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 45 6e |......<h3 id="En|
> 00001ec0 64 70 6f 69 6e 74 2e 45 6e 64 70 6f 69 6e 74 54 |dpoint.EndpointT|
> 00001ed0 79 70 65 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f |ype">func (Endpo|
> 00001ee0 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |int) <a href="/s|
> 00001ef0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co|
> 00001f00 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac|
> 00001f10 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 34 |ket/flows.go?s=4|
> 00001f20 33 39 3a 34 38 34 23 4c 31 31 22 3e 45 6e 64 70 |39:484#L11">Endp|
> 00001f30 6f 69 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 |ointType</a></h3|
> 00001f40 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 00001f50 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 45 6e 64 |(e Endpoint) End|
> 00001f60 70 6f 69 6e 74 54 79 70 65 28 29 20 45 6e 64 70 |pointType() Endp|
> 00001f70 6f 69 6e 74 54 79 70 65 3c 2f 70 72 65 3e 0a 09 |ointType</pre>..|
> 00001f80 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 |...<p>.EndpointT|
> 00001f90 79 70 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 |ype returns the |
> 00001fa0 65 6e 64 70 6f 69 6e 74 20 74 79 70 65 20 61 73 |endpoint type as|
> 00001fb0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 |sociated with th|
> 00001fc0 69 73 20 65 6e 64 70 6f 69 6e 74 2e 0a 3c 2f 70 |is endpoint..</p|
> 00001fd0 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............|
> 00001fe0 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00001ff0 3d 22 45 6e 64 70 6f 69 6e 74 2e 4c 65 73 73 54 |="Endpoint.LessT|
> 00002000 68 61 6e 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f |han">func (Endpo|
> 00002010 69 6e 74 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 |int) <a href="/s|
> 00002020 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co|
> 00002030 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac|
> 00002040 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 |ket/flows.go?s=1|
> 00002050 30 31 30 3a 31 30 35 33 23 4c 32 31 22 3e 4c 65 |010:1053#L21">Le|
> 00002060 73 73 54 68 61 6e 3c 2f 61 3e 3c 2f 68 33 3e 0a |ssThan</a></h3>.|
> 00002070 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 61 |....<pre>func (a|
> 00002080 20 45 6e 64 70 6f 69 6e 74 29 20 4c 65 73 73 54 | Endpoint) LessT|
> 00002090 68 61 6e 28 62 20 45 6e 64 70 6f 69 6e 74 29 20 |han(b Endpoint) |
> 000020a0 62 6f 6f 6c 3c 2f 70 72 65 3e 0a 09 09 09 09 3c |bool</pre>.....<|
> 000020b0 70 3e 0a 4c 65 73 73 54 68 61 6e 20 70 72 6f 76 |p>.LessThan prov|
> 000020c0 69 64 65 73 20 61 20 73 74 61 62 6c 65 20 6f 72 |ides a stable or|
> 000020d0 64 65 72 69 6e 67 20 66 6f 72 20 61 6c 6c 20 65 |dering for all e|
> 000020e0 6e 64 70 6f 69 6e 74 73 2e 20 20 49 74 20 73 6f |ndpoints. It so|
> 000020f0 72 74 73 20 66 69 72 73 74 20 62 61 73 65 64 0a |rts first based.|
> 00002100 6f 6e 20 74 68 65 20 45 6e 64 70 6f 69 6e 74 54 |on the EndpointT|
> 00002110 79 70 65 20 6f 66 20 61 6e 20 65 6e 64 70 6f 69 |ype of an endpoi|
> 00002120 6e 74 2c 20 74 68 65 6e 20 62 61 73 65 64 20 6f |nt, then based o|
> 00002130 6e 20 74 68 65 20 72 61 77 20 62 79 74 65 73 20 |n the raw bytes |
> 00002140 6f 66 20 74 68 61 74 20 65 6e 64 70 6f 69 6e 74 |of that endpoint|
> 00002150 2e 0a 46 6f 72 20 73 6f 6d 65 20 65 6e 64 70 6f |..For some endpo|
> 00002160 69 6e 74 73 2c 20 74 68 65 20 61 63 74 75 61 6c |ints, the actual|
> 00002170 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6d 61 79 20 | comparison may |
> 00002180 6e 6f 74 20 6d 61 6b 65 20 73 65 6e 73 65 2c 20 |not make sense, |
> 00002190 68 6f 77 65 76 65 72 20 74 68 69 73 0a 6f 72 64 |however this.ord|
> 000021a0 65 72 69 6e 67 20 64 6f 65 73 20 70 72 6f 76 69 |ering does provi|
> 000021b0 64 65 20 75 73 65 66 75 6c 20 69 6e 66 6f 72 6d |de useful inform|
> 000021c0 61 74 69 6f 6e 20 66 6f 72 20 6d 6f 73 74 20 45 |ation for most E|
> 000021d0 6e 64 70 6f 69 6e 74 20 74 79 70 65 73 2e 0a 3c |ndpoint types..<|
> 000021e0 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 |/p>.............|
> 000021f0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 |
> 00002200 69 64 3d 22 45 6e 64 70 6f 69 6e 74 2e 52 61 77 |id="Endpoint.Raw|
> 00002210 22 3e 66 75 6e 63 20 28 45 6e 64 70 6f 69 6e 74 |">func (Endpoint|
> 00002220 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/|
> 00002230 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00002240 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00002250 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 36 34 31 3a |/flows.go?s=641:|
> 00002260 36 37 31 23 4c 31 35 22 3e 52 61 77 3c 2f 61 3e |671#L15">Raw</a>|
> 00002270 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f|
> 00002280 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 |unc (e Endpoint)|
> 00002290 20 52 61 77 28 29 20 5b 5d 62 79 74 65 3c 2f 70 | Raw() []byte</p|
> 000022a0 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 52 61 77 20 |re>.....<p>.Raw |
> 000022b0 72 65 74 75 72 6e 73 20 74 68 65 20 72 61 77 20 |returns the raw |
> 000022c0 62 79 74 65 73 20 6f 66 20 74 68 69 73 20 65 6e |bytes of this en|
> 000022d0 64 70 6f 69 6e 74 2e 20 20 54 68 65 73 65 20 61 |dpoint. These a|
> 000022e0 72 65 6e 26 23 33 39 3b 74 20 68 75 6d 61 6e 2d |ren't human-|
> 000022f0 72 65 61 64 61 62 6c 65 0a 6d 6f 73 74 20 6f 66 |readable.most of|
> 00002300 20 74 68 65 20 74 69 6d 65 2c 20 62 75 74 20 74 | the time, but t|
> 00002310 68 65 79 20 61 72 65 20 66 61 73 74 65 72 20 74 |hey are faster t|
> 00002320 68 61 6e 20 63 61 6c 6c 69 6e 67 20 53 74 72 69 |han calling Stri|
> 00002330 6e 67 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |ng..</p>........|
> 00002340 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002350 09 3c 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 6e |.<h3 id="Endpoin|
> 00002360 74 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 28 |t.String">func (|
> 00002370 45 6e 64 70 6f 69 6e 74 29 20 3c 61 20 68 72 65 |Endpoint) <a hre|
> 00002380 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith|
> 00002390 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/|
> 000023a0 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 |gopacket/flows.g|
> 000023b0 6f 3f 73 3d 32 33 36 39 3a 32 34 30 32 23 4c 36 |o?s=2369:2402#L6|
> 000023c0 34 22 3e 53 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 |4">String</a></h|
> 000023d0 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func|
> 000023e0 20 28 65 20 45 6e 64 70 6f 69 6e 74 29 20 53 74 | (e Endpoint) St|
> 000023f0 72 69 6e 67 28 29 20 73 74 72 69 6e 67 3c 2f 70 |ring() string</p|
> 00002400 72 65 3e 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |re>.............|
> 00002410 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 |................|
> 00002420 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 45 6e 64 |.....<h2 id="End|
> 00002430 70 6f 69 6e 74 54 79 70 65 22 3e 74 79 70 65 20 |pointType">type |
> 00002440 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 00002450 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 00002460 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 |nnell/gopacket/f|
> 00002470 6c 6f 77 73 2e 67 6f 3f 73 3d 31 37 34 36 3a 31 |lows.go?s=1746:1|
> 00002480 37 36 39 23 4c 34 31 22 3e 45 6e 64 70 6f 69 6e |769#L41">Endpoin|
> 00002490 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 |tType</a></h2>..|
> 000024a0 09 09 3c 70 72 65 3e 74 79 70 65 20 45 6e 64 70 |..<pre>type Endp|
> 000024b0 6f 69 6e 74 54 79 70 65 20 69 6e 74 36 34 3c 2f |ointType int64</|
> 000024c0 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 45 6e 64 70 |pre>....<p>.Endp|
> 000024d0 6f 69 6e 74 54 79 70 65 20 69 73 20 74 68 65 20 |ointType is the |
> 000024e0 74 79 70 65 20 6f 66 20 61 20 67 6f 70 61 63 6b |type of a gopack|
> 000024f0 65 74 20 45 6e 64 70 6f 69 6e 74 2e 20 20 54 68 |et Endpoint. Th|
> 00002500 69 73 20 74 79 70 65 20 64 65 74 65 72 6d 69 6e |is type determin|
> 00002510 65 73 20 68 6f 77 0a 74 68 65 20 62 79 74 65 73 |es how.the bytes|
> 00002520 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 65 | stored in the e|
> 00002530 6e 64 70 6f 69 6e 74 20 73 68 6f 75 6c 64 20 62 |ndpoint should b|
> 00002540 65 20 69 6e 74 65 72 70 72 65 74 65 64 2e 0a 3c |e interpreted..<|
> 00002550 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |/p>.............|
> 00002560 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 |................|
> 00002570 09 09 3c 68 33 20 69 64 3d 22 52 65 67 69 73 74 |..<h3 id="Regist|
> 00002580 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 22 3e |erEndpointType">|
> 00002590 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f 73 |func <a href="/s|
> 000025a0 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f |rc/pkg/github.co|
> 000025b0 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 |m/gconnell/gopac|
> 000025c0 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 32 |ket/flows.go?s=2|
> 000025d0 30 31 37 3a 32 30 39 31 23 4c 34 38 22 3e 52 65 |017:2091#L48">Re|
> 000025e0 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy|
> 000025f0 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |pe</a></h3>.....|
> 00002600 3c 70 72 65 3e 66 75 6e 63 20 52 65 67 69 73 74 |<pre>func Regist|
> 00002610 65 72 45 6e 64 70 6f 69 6e 74 54 79 70 65 28 6e |erEndpointType(n|
> 00002620 75 6d 20 69 6e 74 2c 20 6d 65 74 61 20 45 6e 64 |um int, meta End|
> 00002630 70 6f 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 |pointTypeMetadat|
> 00002640 61 29 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 3c |a) EndpointType<|
> 00002650 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 |/pre>.....<p>.Re|
> 00002660 67 69 73 74 65 72 45 6e 64 70 6f 69 6e 74 54 79 |gisterEndpointTy|
> 00002670 70 65 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 |pe creates a new|
> 00002680 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 61 6e | EndpointType an|
> 00002690 64 20 72 65 67 69 73 74 65 72 73 20 69 74 20 67 |d registers it g|
> 000026a0 6c 6f 62 61 6c 6c 79 2e 0a 49 74 20 4d 55 53 54 |lobally..It MUST|
> 000026b0 20 62 65 20 70 61 73 73 65 64 20 61 20 75 6e 69 | be passed a uni|
> 000026c0 71 75 65 20 6e 75 6d 62 65 72 2c 20 6f 72 20 69 |que number, or i|
> 000026d0 74 20 77 69 6c 6c 20 70 61 6e 69 63 2e 20 20 4e |t will panic. N|
> 000026e0 75 6d 62 65 72 73 20 30 2d 39 39 39 20 61 72 65 |umbers 0-999 are|
> 000026f0 0a 72 65 73 65 72 76 65 64 20 66 6f 72 20 67 6f |.reserved for go|
> 00002700 70 61 63 6b 65 74 26 23 33 39 3b 73 20 75 73 65 |packet's use|
> 00002710 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 |..</p>..........|
> 00002720 0a 0a 09 09 09 0a 09 09 09 09 0a 09 09 09 09 3c |...............<|
> 00002730 68 33 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 54 |h3 id="EndpointT|
> 00002740 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 |ype.String">func|
> 00002750 20 28 45 6e 64 70 6f 69 6e 74 54 79 70 65 29 20 | (EndpointType) |
> 00002760 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 00002770 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 00002780 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 |nnell/gopacket/f|
> 00002790 6c 6f 77 73 2e 67 6f 3f 73 3d 32 32 34 32 3a 32 |lows.go?s=2242:2|
> 000027a0 32 37 39 23 4c 35 37 22 3e 53 74 72 69 6e 67 3c |279#L57">String<|
> 000027b0 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 |/a></h3>.....<pr|
> 000027c0 65 3e 66 75 6e 63 20 28 65 20 45 6e 64 70 6f 69 |e>func (e Endpoi|
> 000027d0 6e 74 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 |ntType) String()|
> 000027e0 20 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 | string</pre>...|
> 000027f0 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00002800 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c |...............<|
> 00002810 68 32 20 69 64 3d 22 45 6e 64 70 6f 69 6e 74 54 |h2 id="EndpointT|
> 00002820 79 70 65 4d 65 74 61 64 61 74 61 22 3e 74 79 70 |ypeMetadata">typ|
> 00002830 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/|
> 00002840 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00002850 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00002860 2f 66 6c 6f 77 73 2e 67 6f 3f 73 3d 31 33 32 35 |/flows.go?s=1325|
> 00002870 3a 31 36 30 37 23 4c 33 31 22 3e 45 6e 64 70 6f |:1607#L31">Endpo|
> 00002880 69 6e 74 54 79 70 65 4d 65 74 61 64 61 74 61 3c |intTypeMetadata<|
> 00002890 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 000028a0 3e 74 79 70 65 20 45 6e 64 70 6f 69 6e 74 54 79 |>type EndpointTy|
> 000028b0 70 65 4d 65 74 61 64 61 74 61 20 73 74 72 75 63 |peMetadata struc|
> 000028c0 74 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |t {. <span cl|
> 000028d0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//|
> 000028e0 20 4e 61 6d 65 20 69 73 20 74 68 65 20 73 74 72 | Name is the str|
> 000028f0 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 |ing returned by |
> 00002900 61 6e 20 45 6e 64 70 6f 69 6e 74 54 79 70 65 26 |an EndpointType&|
> 00002910 23 33 39 3b 73 20 53 74 72 69 6e 67 20 66 75 6e |#39;s String fun|
> 00002920 63 74 69 6f 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |ction.</span>. |
> 00002930 20 20 4e 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 | Name string. |
> 00002940 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00002950 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 46 6f 72 6d 61 |omment">// Forma|
> 00002960 74 74 65 72 20 69 73 20 63 61 6c 6c 65 64 20 66 |tter is called f|
> 00002970 72 6f 6d 20 61 6e 20 45 6e 64 70 6f 69 6e 74 26 |rom an Endpoint&|
> 00002980 23 33 39 3b 73 20 53 74 72 69 6e 67 20 66 75 6e |#39;s String fun|
> 00002990 63 74 69 6f 6e 20 74 6f 20 66 6f 72 6d 61 74 20 |ction to format |
> 000029a0 74 68 65 20 72 61 77 3c 2f 73 70 61 6e 3e 0a 20 |the raw</span>. |
> 000029b0 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 000029c0 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 62 79 74 65 |comment">// byte|
> 000029d0 73 20 69 6e 20 61 6e 20 45 6e 64 70 6f 69 6e 74 |s in an Endpoint|
> 000029e0 20 69 6e 74 6f 20 61 20 68 75 6d 61 6e 2d 72 65 | into a human-re|
> 000029f0 61 64 61 62 6c 65 20 73 74 72 69 6e 67 2e 3c 2f |adable string.</|
> 00002a00 73 70 61 6e 3e 0a 20 20 20 20 46 6f 72 6d 61 74 |span>. Format|
> 00002a10 74 65 72 20 66 75 6e 63 28 5b 5d 62 79 74 65 29 |ter func([]byte)|
> 00002a20 20 73 74 72 69 6e 67 0a 7d 3c 2f 70 72 65 3e 0a | string.}</pre>.|
> 00002a30 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e 74 54 |...<p>.EndpointT|
> 00002a40 79 70 65 4d 65 74 61 64 61 74 61 20 69 73 20 75 |ypeMetadata is u|
> 00002a50 73 65 64 20 74 6f 20 72 65 67 69 73 74 65 72 20 |sed to register |
> 00002a60 61 20 6e 65 77 20 65 6e 64 70 6f 69 6e 74 20 74 |a new endpoint t|
> 00002a70 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a |ype..</p>.......|
> 00002a80 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a |................|
> 00002a90 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 |................|
> 00002aa0 09 09 3c 68 32 20 69 64 3d 22 45 72 72 6f 72 4c |..<h2 id="ErrorL|
> 00002ab0 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 |ayer">type <a hr|
> 00002ac0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00002ad0 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 00002ae0 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g|
> 00002af0 6f 3f 73 3d 32 34 36 36 3a 32 35 31 37 23 4c 36 |o?s=2466:2517#L6|
> 00002b00 35 22 3e 45 72 72 6f 72 4c 61 79 65 72 3c 2f 61 |5">ErrorLayer</a|
> 00002b10 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t|
> 00002b20 79 70 65 20 45 72 72 6f 72 4c 61 79 65 72 20 69 |ype ErrorLayer i|
> 00002b30 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 4c |nterface {. L|
> 00002b40 61 79 65 72 0a 20 20 20 20 45 72 72 6f 72 28 29 |ayer. Error()|
> 00002b50 20 65 72 72 6f 72 0a 7d 3c 2f 70 72 65 3e 0a 09 | error.}</pre>..|
> 00002b60 09 09 3c 70 3e 0a 45 72 72 6f 72 4c 61 79 65 72 |..<p>.ErrorLayer|
> 00002b70 20 69 73 20 61 20 70 61 63 6b 65 74 20 6c 61 79 | is a packet lay|
> 00002b80 65 72 20 63 72 65 61 74 65 64 20 77 68 65 6e 20 |er created when |
> 00002b90 64 65 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 |decoding of the |
> 00002ba0 70 61 63 6b 65 74 20 68 61 73 20 66 61 69 6c 65 |packet has faile|
> 00002bb0 64 2e 0a 49 74 73 20 70 61 79 6c 6f 61 64 20 69 |d..Its payload i|
> 00002bc0 73 20 61 6c 6c 20 74 68 65 20 62 79 74 65 73 20 |s all the bytes |
> 00002bd0 74 68 61 74 20 77 65 20 77 65 72 65 20 75 6e 61 |that we were una|
> 00002be0 62 6c 65 20 74 6f 20 64 65 63 6f 64 65 2c 20 61 |ble to decode, a|
> 00002bf0 6e 64 20 74 68 65 20 72 65 74 75 72 6e 65 64 0a |nd the returned.|
> 00002c00 65 72 72 6f 72 20 64 65 74 61 69 6c 73 20 77 68 |error details wh|
> 00002c10 79 20 74 68 65 20 64 65 63 6f 64 69 6e 67 20 66 |y the decoding f|
> 00002c20 61 69 6c 65 64 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |ailed..</p>.....|
> 00002c30 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................|
> 00002c40 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00002c50 0a 09 09 09 3c 68 32 20 69 64 3d 22 46 6c 6f 77 |....<h2 id="Flow|
> 00002c60 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="|
> 00002c70 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00002c80 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00002c90 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s|
> 00002ca0 3d 32 36 38 37 3a 32 37 34 37 23 4c 37 33 22 3e |=2687:2747#L73">|
> 00002cb0 46 6c 6f 77 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |Flow</a></h2>...|
> 00002cc0 09 3c 70 72 65 3e 74 79 70 65 20 46 6c 6f 77 20 |.<pre>type Flow |
> 00002cd0 73 74 72 75 63 74 20 7b 0a 20 20 20 20 3c 73 70 |struct {. <sp|
> 00002ce0 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen|
> 00002cf0 74 22 3e 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 66 |t">// contains f|
> 00002d00 69 6c 74 65 72 65 64 20 6f 72 20 75 6e 65 78 70 |iltered or unexp|
> 00002d10 6f 72 74 65 64 20 66 69 65 6c 64 73 3c 2f 73 70 |orted fields</sp|
> 00002d20 61 6e 3e 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |an>.}</pre>....<|
> 00002d30 70 3e 0a 46 6c 6f 77 20 72 65 70 72 65 73 65 6e |p>.Flow represen|
> 00002d40 74 73 20 74 68 65 20 64 69 72 65 63 74 69 6f 6e |ts the direction|
> 00002d50 20 6f 66 20 74 72 61 66 66 69 63 20 66 6f 72 20 | of traffic for |
> 00002d60 61 20 70 61 63 6b 65 74 20 6c 61 79 65 72 2c 20 |a packet layer, |
> 00002d70 61 73 20 61 20 73 6f 75 72 63 65 20 61 6e 64 20 |as a source and |
> 00002d80 64 65 73 74 69 6e 61 74 69 6f 6e 20 45 6e 64 70 |destination Endp|
> 00002d90 6f 69 6e 74 2e 0a 46 6c 6f 77 73 20 61 72 65 20 |oint..Flows are |
> 00002da0 75 73 61 62 6c 65 20 61 73 20 6d 61 70 20 6b 65 |usable as map ke|
> 00002db0 79 73 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a |ys..</p>........|
> 00002dc0 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 |................|
> 00002dd0 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 |.......<h3 id="F|
> 00002de0 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 73 |lowFromEndpoints|
> 00002df0 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="|
> 00002e00 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00002e10 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00002e20 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s|
> 00002e30 3d 32 39 31 36 3a 32 39 37 37 23 4c 38 31 22 3e |=2916:2977#L81">|
> 00002e40 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint|
> 00002e50 73 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |s</a></h3>.....<|
> 00002e60 70 72 65 3e 66 75 6e 63 20 46 6c 6f 77 46 72 6f |pre>func FlowFro|
> 00002e70 6d 45 6e 64 70 6f 69 6e 74 73 28 73 72 63 2c 20 |mEndpoints(src, |
> 00002e80 64 73 74 20 45 6e 64 70 6f 69 6e 74 29 20 28 5f |dst Endpoint) (_|
> 00002e90 20 46 6c 6f 77 2c 20 65 72 72 20 65 72 72 6f 72 | Flow, err error|
> 00002ea0 29 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a |)</pre>.....<p>.|
> 00002eb0 46 6c 6f 77 46 72 6f 6d 45 6e 64 70 6f 69 6e 74 |FlowFromEndpoint|
> 00002ec0 73 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 |s creates a new |
> 00002ed0 66 6c 6f 77 20 62 79 20 70 61 73 74 69 6e 67 20 |flow by pasting |
> 00002ee0 74 6f 67 65 74 68 65 72 20 74 77 6f 20 65 6e 64 |together two end|
> 00002ef0 70 6f 69 6e 74 73 2e 0a 54 68 65 20 65 6e 64 70 |points..The endp|
> 00002f00 6f 69 6e 74 73 20 6d 75 73 74 20 68 61 76 65 20 |oints must have |
> 00002f10 74 68 65 20 73 61 6d 65 20 45 6e 64 70 6f 69 6e |the same Endpoin|
> 00002f20 74 54 79 70 65 2c 20 6f 72 20 74 68 69 73 20 66 |tType, or this f|
> 00002f30 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 72 65 74 |unction will ret|
> 00002f40 75 72 6e 0a 61 6e 20 65 72 72 6f 72 2e 0a 3c 2f |urn.an error..</|
> 00002f50 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |p>..............|
> 00002f60 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 |......<h3 id="Ne|
> 00002f70 77 46 6c 6f 77 22 3e 66 75 6e 63 20 3c 61 20 68 |wFlow">func <a h|
> 00002f80 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 00002f90 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 00002fa0 6c 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 |l/gopacket/flows|
> 00002fb0 2e 67 6f 3f 73 3d 33 39 38 38 3a 34 30 33 38 23 |.go?s=3988:4038#|
> 00002fc0 4c 31 32 33 22 3e 4e 65 77 46 6c 6f 77 3c 2f 61 |L123">NewFlow</a|
> 00002fd0 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e |></h3>.....<pre>|
> 00002fe0 66 75 6e 63 20 4e 65 77 46 6c 6f 77 28 74 20 45 |func NewFlow(t E|
> 00002ff0 6e 64 70 6f 69 6e 74 54 79 70 65 2c 20 73 72 63 |ndpointType, src|
> 00003000 2c 20 64 73 74 20 5b 5d 62 79 74 65 29 20 46 6c |, dst []byte) Fl|
> 00003010 6f 77 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ow</pre>.....<p>|
> 00003020 0a 4e 65 77 46 6c 6f 77 20 63 72 65 61 74 65 73 |.NewFlow creates|
> 00003030 20 61 20 6e 65 77 20 66 6c 6f 77 2e 0a 3c 2f 70 | a new flow..</p|
> 00003040 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 09 |>...............|
> 00003050 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00003060 3d 22 46 6c 6f 77 2e 44 73 74 22 3e 66 75 6e 63 |="Flow.Dst">func|
> 00003070 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d | (Flow) <a href=|
> 00003080 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github|
> 00003090 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go|
> 000030a0 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f |packet/flows.go?|
> 000030b0 73 3d 33 37 36 32 3a 33 37 39 36 23 4c 31 31 32 |s=3762:3796#L112|
> 000030c0 22 3e 44 73 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 |">Dst</a></h3>..|
> 000030d0 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 20 |...<pre>func (f |
> 000030e0 46 6c 6f 77 29 20 44 73 74 28 29 20 28 64 73 74 |Flow) Dst() (dst|
> 000030f0 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e | Endpoint)</pre>|
> 00003100 0a 09 09 09 09 3c 70 3e 0a 44 73 74 20 72 65 74 |.....<p>.Dst ret|
> 00003110 75 72 6e 73 20 74 68 65 20 64 65 73 74 69 6e 61 |urns the destina|
> 00003120 74 69 6f 6e 20 45 6e 64 70 6f 69 6e 74 20 66 6f |tion Endpoint fo|
> 00003130 72 20 74 68 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 |r this flow..</p|
> 00003140 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............|
> 00003150 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00003160 3d 22 46 6c 6f 77 2e 45 6e 64 70 6f 69 6e 74 54 |="Flow.EndpointT|
> 00003170 79 70 65 22 3e 66 75 6e 63 20 28 46 6c 6f 77 29 |ype">func (Flow)|
> 00003180 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 00003190 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 000031a0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 000031b0 66 6c 6f 77 73 2e 67 6f 3f 73 3d 33 33 36 34 3a |flows.go?s=3364:|
> 000031c0 33 34 30 35 23 4c 39 36 22 3e 45 6e 64 70 6f 69 |3405#L96">Endpoi|
> 000031d0 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a |ntType</a></h3>.|
> 000031e0 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f|
> 000031f0 20 46 6c 6f 77 29 20 45 6e 64 70 6f 69 6e 74 54 | Flow) EndpointT|
> 00003200 79 70 65 28 29 20 45 6e 64 70 6f 69 6e 74 54 79 |ype() EndpointTy|
> 00003210 70 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |pe</pre>.....<p>|
> 00003220 0a 45 6e 64 70 6f 69 6e 74 54 79 70 65 20 72 65 |.EndpointType re|
> 00003230 74 75 72 6e 73 20 74 68 65 20 45 6e 64 70 6f 69 |turns the Endpoi|
> 00003240 6e 74 54 79 70 65 20 66 6f 72 20 74 68 69 73 20 |ntType for this |
> 00003250 46 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 |Flow..</p>......|
> 00003260 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00003270 09 09 09 3c 68 33 20 69 64 3d 22 46 6c 6f 77 2e |...<h3 id="Flow.|
> 00003280 45 6e 64 70 6f 69 6e 74 73 22 3e 66 75 6e 63 20 |Endpoints">func |
> 00003290 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="|
> 000032a0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 000032b0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 000032c0 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s|
> 000032d0 3d 33 34 37 39 3a 33 35 32 34 23 4c 31 30 31 22 |=3479:3524#L101"|
> 000032e0 3e 45 6e 64 70 6f 69 6e 74 73 3c 2f 61 3e 3c 2f |>Endpoints</a></|
> 000032f0 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e |h3>.....<pre>fun|
> 00003300 63 20 28 66 20 46 6c 6f 77 29 20 45 6e 64 70 6f |c (f Flow) Endpo|
> 00003310 69 6e 74 73 28 29 20 28 73 72 63 2c 20 64 73 74 |ints() (src, dst|
> 00003320 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 3e | Endpoint)</pre>|
> 00003330 0a 09 09 09 09 3c 70 3e 0a 45 6e 64 70 6f 69 6e |.....<p>.Endpoin|
> 00003340 74 73 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 |ts returns the t|
> 00003350 77 6f 20 45 6e 64 70 6f 69 6e 74 73 20 66 6f 72 |wo Endpoints for|
> 00003360 20 74 68 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e | this flow..</p>|
> 00003370 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a |................|
> 00003380 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=|
> 00003390 22 46 6c 6f 77 2e 52 65 76 65 72 73 65 22 3e 66 |"Flow.Reverse">f|
> 000033a0 75 6e 63 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 |unc (Flow) <a hr|
> 000033b0 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 000033c0 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 000033d0 2f 67 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e |/gopacket/flows.|
> 000033e0 67 6f 3f 73 3d 33 38 38 39 3a 33 39 31 37 23 4c |go?s=3889:3917#L|
> 000033f0 31 31 38 22 3e 52 65 76 65 72 73 65 3c 2f 61 3e |118">Reverse</a>|
> 00003400 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f|
> 00003410 75 6e 63 20 28 66 20 46 6c 6f 77 29 20 52 65 76 |unc (f Flow) Rev|
> 00003420 65 72 73 65 28 29 20 46 6c 6f 77 3c 2f 70 72 65 |erse() Flow</pre|
> 00003430 3e 0a 09 09 09 09 3c 70 3e 0a 52 65 76 65 72 73 |>.....<p>.Revers|
> 00003440 65 20 72 65 74 75 72 6e 73 20 61 20 6e 65 77 20 |e returns a new |
> 00003450 66 6c 6f 77 20 77 69 74 68 20 65 6e 64 70 6f 69 |flow with endpoi|
> 00003460 6e 74 73 20 72 65 76 65 72 73 65 64 2e 0a 3c 2f |nts reversed..</|
> 00003470 70 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 |p>..............|
> 00003480 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 |...........<h3 i|
> 00003490 64 3d 22 46 6c 6f 77 2e 53 72 63 22 3e 66 75 6e |d="Flow.Src">fun|
> 000034a0 63 20 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 |c (Flow) <a href|
> 000034b0 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 000034c0 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 000034d0 6f 70 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f |opacket/flows.go|
> 000034e0 3f 73 3d 33 36 33 35 3a 33 36 36 39 23 4c 31 30 |?s=3635:3669#L10|
> 000034f0 36 22 3e 53 72 63 3c 2f 61 3e 3c 2f 68 33 3e 0a |6">Src</a></h3>.|
> 00003500 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f|
> 00003510 20 46 6c 6f 77 29 20 53 72 63 28 29 20 28 73 72 | Flow) Src() (sr|
> 00003520 63 20 45 6e 64 70 6f 69 6e 74 29 3c 2f 70 72 65 |c Endpoint)</pre|
> 00003530 3e 0a 09 09 09 09 3c 70 3e 0a 53 72 63 20 72 65 |>.....<p>.Src re|
> 00003540 74 75 72 6e 73 20 74 68 65 20 73 6f 75 72 63 65 |turns the source|
> 00003550 20 45 6e 64 70 6f 69 6e 74 20 66 6f 72 20 74 68 | Endpoint for th|
> 00003560 69 73 20 66 6c 6f 77 2e 0a 3c 2f 70 3e 0a 0a 09 |is flow..</p>...|
> 00003570 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00003580 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 46 6c |......<h3 id="Fl|
> 00003590 6f 77 2e 53 74 72 69 6e 67 22 3e 66 75 6e 63 20 |ow.String">func |
> 000035a0 28 46 6c 6f 77 29 20 3c 61 20 68 72 65 66 3d 22 |(Flow) <a href="|
> 000035b0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 000035c0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 000035d0 61 63 6b 65 74 2f 66 6c 6f 77 73 2e 67 6f 3f 73 |acket/flows.go?s|
> 000035e0 3d 33 32 32 39 3a 33 32 35 38 23 4c 39 31 22 3e |=3229:3258#L91">|
> 000035f0 53 74 72 69 6e 67 3c 2f 61 3e 3c 2f 68 33 3e 0a |String</a></h3>.|
> 00003600 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 66 |....<pre>func (f|
> 00003610 20 46 6c 6f 77 29 20 53 74 72 69 6e 67 28 29 20 | Flow) String() |
> 00003620 73 74 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 |string</pre>....|
> 00003630 09 3c 70 3e 0a 53 74 72 69 6e 67 20 72 65 74 75 |.<p>.String retu|
> 00003640 72 6e 73 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 |rns a human-read|
> 00003650 61 62 6c 65 20 72 65 70 72 65 73 65 6e 74 61 74 |able representat|
> 00003660 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 6c 6f 77 |ion of this flow|
> 00003670 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 0a 26 23 |, in the form.&#|
> 00003680 33 34 3b 53 72 63 2d 26 67 74 3b 44 73 74 26 23 |34;Src->Dst&#|
> 00003690 33 34 3b 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |34;.</p>........|
> 000036a0 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................|
> 000036b0 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 61 |......<h2 id="La|
> 000036c0 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 65 |yer">type <a hre|
> 000036d0 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 |f="/src/pkg/gith|
> 000036e0 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f |ub.com/gconnell/|
> 000036f0 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f |gopacket/base.go|
> 00003700 3f 73 3d 35 30 33 3a 38 33 37 23 4c 36 22 3e 4c |?s=503:837#L6">L|
> 00003710 61 79 65 72 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 |ayer</a></h2>...|
> 00003720 09 3c 70 72 65 3e 74 79 70 65 20 4c 61 79 65 72 |.<pre>type Layer|
> 00003730 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 | interface {. |
> 00003740 20 66 6d 74 2e 53 74 72 69 6e 67 65 72 0a 20 20 | fmt.Stringer. |
> 00003750 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00003760 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 |omment">// Layer|
> 00003770 54 79 70 65 20 69 73 20 74 68 65 20 67 6f 70 61 |Type is the gopa|
> 00003780 63 6b 65 74 20 74 79 70 65 20 66 6f 72 20 74 68 |cket type for th|
> 00003790 69 73 20 6c 61 79 65 72 2e 3c 2f 73 70 61 6e 3e |is layer.</span>|
> 000037a0 0a 20 20 20 20 4c 61 79 65 72 54 79 70 65 28 29 |. LayerType()|
> 000037b0 20 4c 61 79 65 72 54 79 70 65 0a 20 20 20 20 3c | LayerType. <|
> 000037c0 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm|
> 000037d0 65 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 43 6f 6e |ent">// LayerCon|
> 000037e0 74 65 6e 74 73 20 72 65 74 75 72 6e 73 20 74 68 |tents returns th|
> 000037f0 65 20 73 65 74 20 6f 66 20 62 79 74 65 73 20 74 |e set of bytes t|
> 00003800 68 61 74 20 6d 61 6b 65 20 75 70 20 74 68 69 73 |hat make up this|
> 00003810 20 6c 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 | layer.</span>. |
> 00003820 20 20 20 4c 61 79 65 72 43 6f 6e 74 65 6e 74 73 | LayerContents|
> 00003830 28 29 20 5b 5d 62 79 74 65 0a 20 20 20 20 3c 73 |() []byte. <s|
> 00003840 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 00003850 6e 74 22 3e 2f 2f 20 4c 61 79 65 72 50 61 79 6c |nt">// LayerPayl|
> 00003860 6f 61 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 |oad returns the |
> 00003870 73 65 74 20 6f 66 20 62 79 74 65 73 20 63 6f 6e |set of bytes con|
> 00003880 74 61 69 6e 65 64 20 77 69 74 68 69 6e 20 74 68 |tained within th|
> 00003890 69 73 20 6c 61 79 65 72 2c 20 6e 6f 74 3c 2f 73 |is layer, not</s|
> 000038a0 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 |pan>. <span c|
> 000038b0 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/|
> 000038c0 2f 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 |/ including the |
> 000038d0 6c 61 79 65 72 20 69 74 73 65 6c 66 2e 3c 2f 73 |layer itself.</s|
> 000038e0 70 61 6e 3e 0a 20 20 20 20 4c 61 79 65 72 50 61 |pan>. LayerPa|
> 000038f0 79 6c 6f 61 64 28 29 20 5b 5d 62 79 74 65 0a 7d |yload() []byte.}|
> 00003900 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 |</pre>....<p>.La|
> 00003910 79 65 72 20 72 65 70 72 65 73 65 6e 74 73 20 61 |yer represents a|
> 00003920 20 73 69 6e 67 6c 65 20 64 65 63 6f 64 65 64 20 | single decoded |
> 00003930 70 61 63 6b 65 74 20 6c 61 79 65 72 20 28 75 73 |packet layer (us|
> 00003940 69 6e 67 20 65 69 74 68 65 72 20 74 68 65 0a 4f |ing either the.O|
> 00003950 53 49 20 6f 72 20 54 43 50 2f 49 50 20 64 65 66 |SI or TCP/IP def|
> 00003960 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 6c 61 79 |inition of a lay|
> 00003970 65 72 29 2e 20 20 57 68 65 6e 20 64 65 63 6f 64 |er). When decod|
> 00003980 69 6e 67 2c 20 61 20 70 61 63 6b 65 74 26 23 33 |ing, a packet|
> 00003990 39 3b 73 20 64 61 74 61 20 69 73 0a 62 72 6f 6b |9;s data is.brok|
> 000039a0 65 6e 20 75 70 20 69 6e 74 6f 20 61 20 6e 75 6d |en up into a num|
> 000039b0 62 65 72 20 6f 66 20 6c 61 79 65 72 73 2e 20 20 |ber of layers. |
> 000039c0 54 68 65 20 63 61 6c 6c 65 72 20 6d 61 79 20 63 |The caller may c|
> 000039d0 61 6c 6c 20 4c 61 79 65 72 54 79 70 65 28 29 20 |all LayerType() |
> 000039e0 74 6f 0a 66 69 67 75 72 65 20 6f 75 74 20 77 68 |to.figure out wh|
> 000039f0 69 63 68 20 74 79 70 65 20 6f 66 20 6c 61 79 65 |ich type of laye|
> 00003a00 72 20 68 65 26 23 33 39 3b 73 20 72 65 63 65 69 |r he's recei|
> 00003a10 76 65 64 20 66 72 6f 6d 20 74 68 65 20 70 61 63 |ved from the pac|
> 00003a20 6b 65 74 2e 20 20 4f 70 74 69 6f 6e 61 6c 6c 79 |ket. Optionally|
> 00003a30 2c 0a 68 65 20 6d 61 79 20 74 68 65 6e 20 75 73 |,.he may then us|
> 00003a40 65 20 61 20 74 79 70 65 20 61 73 73 65 72 74 69 |e a type asserti|
> 00003a50 6f 6e 20 74 6f 20 67 65 74 20 74 68 65 20 61 63 |on to get the ac|
> 00003a60 74 75 61 6c 20 6c 61 79 65 72 20 74 79 70 65 20 |tual layer type |
> 00003a70 66 6f 72 20 64 65 65 70 0a 69 6e 73 70 65 63 74 |for deep.inspect|
> 00003a80 69 6f 6e 20 6f 66 20 74 68 65 20 64 61 74 61 2e |ion of the data.|
> 00003a90 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........|
> 00003aa0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 00003ab0 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 |..............<h|
> 00003ac0 32 20 69 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 |2 id="LayerClass|
> 00003ad0 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="|
> 00003ae0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003af0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003b00 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass|
> 00003b10 2e 67 6f 3f 73 3d 31 38 30 3a 33 33 36 23 4c 31 |.go?s=180:336#L1|
> 00003b20 22 3e 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |">LayerClass</a>|
> 00003b30 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 |</h2>....<pre>ty|
> 00003b40 70 65 20 4c 61 79 65 72 43 6c 61 73 73 20 69 6e |pe LayerClass in|
> 00003b50 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 3c 73 |terface {. <s|
> 00003b60 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 00003b70 6e 74 22 3e 2f 2f 20 43 6f 6e 74 61 69 6e 73 20 |nt">// Contains |
> 00003b80 72 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 |returns true if |
> 00003b90 74 68 65 20 67 69 76 65 6e 20 6c 61 79 65 72 20 |the given layer |
> 00003ba0 74 79 70 65 20 73 68 6f 75 6c 64 20 62 65 20 63 |type should be c|
> 00003bb0 6f 6e 73 69 64 65 72 65 64 20 70 61 72 74 3c 2f |onsidered part</|
> 00003bc0 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 |span>. <span |
> 00003bd0 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e |class="comment">|
> 00003be0 2f 2f 20 6f 66 20 74 68 69 73 20 6c 61 79 65 72 |// of this layer|
> 00003bf0 20 63 6c 61 73 73 2e 3c 2f 73 70 61 6e 3e 0a 20 | class.</span>. |
> 00003c00 20 20 20 43 6f 6e 74 61 69 6e 73 28 4c 61 79 65 | Contains(Laye|
> 00003c10 72 54 79 70 65 29 20 62 6f 6f 6c 0a 7d 3c 2f 70 |rType) bool.}</p|
> 00003c20 72 65 3e 0a 09 09 09 3c 70 3e 0a 4c 61 79 65 72 |re>....<p>.Layer|
> 00003c30 43 6c 61 73 73 20 69 73 20 61 20 73 65 74 20 6f |Class is a set o|
> 00003c40 66 20 4c 61 79 65 72 54 79 70 65 73 2c 20 75 73 |f LayerTypes, us|
> 00003c50 65 64 20 66 6f 72 20 67 72 61 62 62 69 6e 67 20 |ed for grabbing |
> 00003c60 6f 6e 65 20 6f 66 20 61 20 6e 75 6d 62 65 72 20 |one of a number |
> 00003c70 6f 66 0a 64 69 66 66 65 72 65 6e 74 20 74 79 70 |of.different typ|
> 00003c80 65 73 20 66 72 6f 6d 20 61 20 70 61 63 6b 65 74 |es from a packet|
> 00003c90 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 |..</p>..........|
> 00003ca0 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 |................|
> 00003cb0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 |.....<h3 id="New|
> 00003cc0 4c 61 79 65 72 43 6c 61 73 73 22 3e 66 75 6e 63 |LayerClass">func|
> 00003cd0 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 | <a href="/src/p|
> 00003ce0 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 |kg/github.com/gc|
> 00003cf0 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f |onnell/gopacket/|
> 00003d00 6c 61 79 65 72 63 6c 61 73 73 2e 67 6f 3f 73 3d |layerclass.go?s=|
> 00003d10 31 37 32 32 3a 31 37 37 30 23 4c 35 31 22 3e 4e |1722:1770#L51">N|
> 00003d20 65 77 4c 61 79 65 72 43 6c 61 73 73 3c 2f 61 3e |ewLayerClass</a>|
> 00003d30 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f|
> 00003d40 75 6e 63 20 4e 65 77 4c 61 79 65 72 43 6c 61 73 |unc NewLayerClas|
> 00003d50 73 28 74 79 70 65 73 20 5b 5d 4c 61 79 65 72 54 |s(types []LayerT|
> 00003d60 79 70 65 29 20 4c 61 79 65 72 43 6c 61 73 73 3c |ype) LayerClass<|
> 00003d70 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne|
> 00003d80 77 4c 61 79 65 72 43 6c 61 73 73 20 63 72 65 61 |wLayerClass crea|
> 00003d90 74 65 73 20 61 20 4c 61 79 65 72 43 6c 61 73 73 |tes a LayerClass|
> 00003da0 2c 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 |, attempting to |
> 00003db0 62 65 20 73 6d 61 72 74 20 61 62 6f 75 74 20 77 |be smart about w|
> 00003dc0 68 69 63 68 20 74 79 70 65 0a 69 74 20 63 72 65 |hich type.it cre|
> 00003dd0 61 74 65 73 20 62 61 73 65 64 20 6f 6e 20 77 68 |ates based on wh|
> 00003de0 69 63 68 20 74 79 70 65 73 20 61 72 65 20 70 61 |ich types are pa|
> 00003df0 73 73 65 64 20 69 6e 2e 0a 3c 2f 70 3e 0a 0a 09 |ssed in..</p>...|
> 00003e00 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a |................|
> 00003e10 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i|
> 00003e20 64 3d 22 4c 61 79 65 72 43 6c 61 73 73 4d 61 70 |d="LayerClassMap|
> 00003e30 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 |">type <a href="|
> 00003e40 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 00003e50 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003e60 61 63 6b 65 74 2f 6c 61 79 65 72 63 6c 61 73 73 |acket/layerclass|
> 00003e70 2e 67 6f 3f 73 3d 31 31 35 32 3a 31 31 38 39 23 |.go?s=1152:1189#|
> 00003e80 4c 33 31 22 3e 4c 61 79 65 72 43 6c 61 73 73 4d |L31">LayerClassM|
> 00003e90 61 70 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c |ap</a></h2>....<|
> 00003ea0 70 72 65 3e 74 79 70 65 20 4c 61 79 65 72 43 6c |pre>type LayerCl|
> 00003eb0 61 73 73 4d 61 70 20 6d 61 70 5b 4c 61 79 65 72 |assMap map[Layer|
> 00003ec0 54 79 70 65 5d 62 6f 6f 6c 3c 2f 70 72 65 3e 0a |Type]bool</pre>.|
> 00003ed0 09 09 09 3c 70 3e 0a 4c 61 79 65 72 43 6c 61 73 |...<p>.LayerClas|
> 00003ee0 73 4d 61 70 20 69 6d 70 6c 65 6d 65 6e 74 73 20 |sMap implements |
> 00003ef0 61 20 4c 61 79 65 72 43 6c 61 73 73 20 77 69 74 |a LayerClass wit|
> 00003f00 68 20 61 20 6d 61 70 2e 0a 3c 2f 70 3e 0a 0a 0a |h a map..</p>...|
> 00003f10 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |................|
> 00003f20 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 |
> 00003f30 69 64 3d 22 4e 65 77 4c 61 79 65 72 43 6c 61 73 |id="NewLayerClas|
> 00003f40 73 4d 61 70 22 3e 66 75 6e 63 20 3c 61 20 68 72 |sMap">func <a hr|
> 00003f50 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00003f60 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 00003f70 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 65 72 63 |/gopacket/layerc|
> 00003f80 6c 61 73 73 2e 67 6f 3f 73 3d 31 34 35 33 3a 31 |lass.go?s=1453:1|
> 00003f90 35 30 37 23 4c 34 31 22 3e 4e 65 77 4c 61 79 65 |507#L41">NewLaye|
> 00003fa0 72 43 6c 61 73 73 4d 61 70 3c 2f 61 3e 3c 2f 68 |rClassMap</a></h|
> 00003fb0 33 3e 0a 09 09 09 09 3c |3>.....<|
>
> pcap_test.go:110: -- FULL PACKET DATA (16388 bytes) ------------------------------------
> 00000000 1e 00 00 00 60 01 88 91 3f d8 06 40 00 00 00 00 |....`...?.. 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("|
> 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|
> 000007a0 39 3b 73 20 73 6f 6c 65 6c 79 0a 75 73 61 62 6c |9;s solely.usabl|
> 000007b0 65 2f 75 73 65 66 75 6c 20 77 69 74 68 69 6e 20 |e/useful within |
> 000007c0 74 68 69 73 20 6c 69 62 72 61 72 79 20 61 73 20 |this library as |
> 000007d0 61 20 6d 65 61 6e 73 20 66 6f 72 20 72 65 71 75 |a means for requ|
> 000007e0 65 73 74 69 6e 67 20 6c 61 79 65 72 20 74 79 70 |esting layer typ|
> 000007f0 65 73 0a 28 73 65 65 20 50 61 63 6b 65 74 2e 4c |es.(see Packet.L|
> 00000800 61 79 65 72 29 20 61 6e 64 20 64 65 74 65 72 6d |ayer) and determ|
> 00000810 69 6e 69 6e 67 20 77 68 69 63 68 20 74 79 70 65 |ining which type|
> 00000820 73 20 6f 66 20 6c 61 79 65 72 73 20 68 61 76 65 |s of layers have|
> 00000830 20 62 65 65 6e 20 64 65 63 6f 64 65 64 2e 0a 3c | been decoded..<|
> 00000840 2f 70 3e 0a 3c 70 3e 0a 4e 65 77 20 4c 61 79 65 |/p>.<p>.New Laye|
> 00000850 72 54 79 70 65 73 20 6d 61 79 20 62 65 20 63 72 |rTypes may be cr|
> 00000860 65 61 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 |eated by calling|
> 00000870 20 67 6f 70 61 63 6b 65 74 2e 52 65 67 69 73 74 | gopacket.Regist|
> 00000880 65 72 4c 61 79 65 72 54 79 70 65 2e 0a 3c 2f 70 |erLayerType..</p|
> 00000890 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |>...............|
> 000008a0 09 3c 70 72 65 3e 76 61 72 20 4c 61 79 65 72 54 |.<pre>var LayerT|
> 000008b0 79 70 65 44 65 63 6f 64 65 46 61 69 6c 75 72 65 |ypeDecodeFailure|
> 000008c0 20 4c 61 79 65 72 54 79 70 65 20 3d 20 52 65 67 | LayerType = Reg|
> 000008d0 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 28 30 |isterLayerType(0|
> 000008e0 2c 20 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 |, LayerTypeMetad|
> 000008f0 61 74 61 7b 26 23 33 34 3b 44 65 63 6f 64 65 20 |ata{"Decode |
> 00000900 46 61 69 6c 75 72 65 26 23 33 34 3b 2c 20 44 65 |Failure", De|
> 00000910 63 6f 64 65 55 6e 6b 6e 6f 77 6e 7d 29 3c 2f 70 |codeUnknown})</p|
> 00000920 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 |re>.....<p>.Laye|
> 00000930 72 54 79 70 65 44 65 63 6f 64 65 46 61 69 6c 75 |rTypeDecodeFailu|
> 00000940 72 65 20 69 73 20 74 68 65 20 6c 61 79 65 72 20 |re is the layer |
> 00000950 74 79 70 65 20 66 6f 72 20 74 68 65 20 64 65 66 |type for the def|
> 00000960 61 75 6c 74 20 65 72 72 6f 72 20 6c 61 79 65 72 |ault error layer|
> 00000970 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 0a 09 09 09 09 |..</p>..........|
> 00000980 3c 70 72 65 3e 76 61 72 20 4c 61 79 65 72 54 79 |<pre>var LayerTy|
> 00000990 70 65 50 61 79 6c 6f 61 64 20 4c 61 79 65 72 54 |pePayload LayerT|
> 000009a0 79 70 65 20 3d 20 52 65 67 69 73 74 65 72 4c 61 |ype = RegisterLa|
> 000009b0 79 65 72 54 79 70 65 28 31 2c 20 4c 61 79 65 72 |yerType(1, Layer|
> 000009c0 54 79 70 65 4d 65 74 61 64 61 74 61 7b 26 23 33 |TypeMetadata{|
> 000009d0 34 3b 50 61 79 6c 6f 61 64 26 23 33 34 3b 2c 20 |4;Payload", |
> 000009e0 44 65 63 6f 64 65 50 61 79 6c 6f 61 64 7d 29 3c |DecodePayload})<|
> 000009f0 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 |/pre>.....<p>.La|
> 00000a00 79 65 72 54 79 70 65 50 61 79 6c 6f 61 64 20 69 |yerTypePayload i|
> 00000a10 73 20 74 68 65 20 6c 61 79 65 72 20 74 79 70 65 |s the layer type|
> 00000a20 20 66 6f 72 20 61 20 70 61 79 6c 6f 61 64 20 74 | for a payload t|
> 00000a30 68 61 74 20 77 65 20 64 6f 6e 26 23 33 39 3b 74 |hat we don't|
> 00000a40 20 74 72 79 20 74 6f 20 64 65 63 6f 64 65 0a 62 | try to decode.b|
> 00000a50 75 74 20 74 72 65 61 74 20 61 73 20 61 20 73 75 |ut treat as a su|
> 00000a60 63 63 65 73 73 2c 20 49 45 3a 20 61 6e 20 61 70 |ccess, IE: an ap|
> 00000a70 70 6c 69 63 61 74 69 6f 6e 2d 6c 65 76 65 6c 20 |plication-level |
> 00000a80 70 61 79 6c 6f 61 64 2e 0a 3c 2f 70 3e 0a 0a 09 |payload..</p>...|
> 00000a90 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 |................|
> 00000aa0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 52 65 |......<h3 id="Re|
> 00000ab0 67 69 73 74 65 72 4c 61 79 65 72 54 79 70 65 22 |gisterLayerType"|
> 00000ac0 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 2f |>func <a href="/|
> 00000ad0 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c|
> 00000ae0 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa|
> 00000af0 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 |cket/layertype.g|
> 00000b00 6f 3f 73 3d 31 34 35 37 3a 31 35 32 32 23 4c 33 |o?s=1457:1522#L3|
> 00000b10 34 22 3e 52 65 67 69 73 74 65 72 4c 61 79 65 72 |4">RegisterLayer|
> 00000b20 54 79 70 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 |Type</a></h3>...|
> 00000b30 09 09 3c 70 72 65 3e 66 75 6e 63 20 52 65 67 69 |..<pre>func Regi|
> 00000b40 73 74 65 72 4c 61 79 65 72 54 79 70 65 28 6e 75 |sterLayerType(nu|
> 00000b50 6d 20 69 6e 74 2c 20 6d 65 74 61 20 4c 61 79 65 |m int, meta Laye|
> 00000b60 72 54 79 70 65 4d 65 74 61 64 61 74 61 29 20 4c |rTypeMetadata) L|
> 00000b70 61 79 65 72 54 79 70 65 3c 2f 70 72 65 3e 0a 09 |ayerType</pre>..|
> 00000b80 09 09 09 3c 70 3e 0a 52 65 67 69 73 74 65 72 4c |...<p>.RegisterL|
> 00000b90 61 79 65 72 54 79 70 65 20 63 72 65 61 74 65 73 |ayerType creates|
> 00000ba0 20 61 20 6e 65 77 20 6c 61 79 65 72 20 74 79 70 | a new layer typ|
> 00000bb0 65 20 61 6e 64 20 72 65 67 69 73 74 65 72 73 20 |e and registers |
> 00000bc0 69 74 20 67 6c 6f 62 61 6c 6c 79 2e 0a 54 68 65 |it globally..The|
> 00000bd0 20 6e 75 6d 62 65 72 20 70 61 73 73 65 64 20 69 | number passed i|
> 00000be0 6e 20 6d 75 73 74 20 62 65 20 75 6e 69 71 75 65 |n must be unique|
> 00000bf0 2c 20 6f 72 20 61 20 72 75 6e 74 69 6d 65 20 70 |, or a runtime p|
> 00000c00 61 6e 69 63 20 77 69 6c 6c 20 6f 63 63 75 72 2e |anic will occur.|
> 00000c10 20 20 4e 75 6d 62 65 72 73 0a 30 2d 39 39 39 20 | Numbers.0-999 |
> 00000c20 61 72 65 20 72 65 73 65 72 76 65 64 20 66 6f 72 |are reserved for|
> 00000c30 20 74 68 65 20 67 6f 70 61 63 6b 65 74 20 6c 69 | the gopacket li|
> 00000c40 62 72 61 72 79 2e 20 20 4e 75 6d 62 65 72 73 20 |brary. Numbers |
> 00000c50 31 30 30 30 2d 31 39 39 39 20 73 68 6f 75 6c 64 |1000-1999 should|
> 00000c60 20 62 65 0a 75 73 65 64 20 66 6f 72 20 63 6f 6d | be.used for com|
> 00000c70 6d 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d |mon application-|
> 00000c80 73 70 65 63 69 66 69 63 20 74 79 70 65 73 2c 20 |specific types, |
> 00000c90 61 6e 64 20 61 72 65 20 76 65 72 79 20 66 61 73 |and are very fas|
> 00000ca0 74 2e 20 20 41 6e 79 20 6f 74 68 65 72 0a 6e 75 |t. Any other.nu|
> 00000cb0 6d 62 65 72 20 28 6e 65 67 61 74 69 76 65 20 6f |mber (negative o|
> 00000cc0 72 20 26 67 74 3b 3d 20 32 30 30 30 29 20 6d 61 |r >= 2000) ma|
> 00000cd0 79 20 62 65 20 75 73 65 64 20 66 6f 72 20 75 6e |y be used for un|
> 00000ce0 63 6f 6d 6d 6f 6e 20 61 70 70 6c 69 63 61 74 69 |common applicati|
> 00000cf0 6f 6e 2d 73 70 65 63 69 66 69 63 0a 74 79 70 65 |on-specific.type|
> 00000d00 73 2c 20 61 6e 64 20 61 72 65 20 73 6f 6d 65 77 |s, and are somew|
> 00000d10 68 61 74 20 73 6c 6f 77 65 72 20 28 74 68 65 79 |hat slower (they|
> 00000d20 20 72 65 71 75 69 72 65 20 61 20 6d 61 70 20 6c | require a map l|
> 00000d30 6f 6f 6b 75 70 20 6f 76 65 72 20 61 6e 20 61 72 |ookup over an ar|
> 00000d40 72 61 79 0a 69 6e 64 65 78 29 2e 0a 3c 2f 70 3e |ray.index)..</p>|
> 00000d50 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 00000d60 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=|
> 00000d70 22 4c 61 79 65 72 54 79 70 65 2e 44 65 63 6f 64 |"LayerType.Decod|
> 00000d80 65 22 3e 66 75 6e 63 20 28 4c 61 79 65 72 54 79 |e">func (LayerTy|
> 00000d90 70 65 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |pe) <a href="/sr|
> 00000da0 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com|
> 00000db0 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack|
> 00000dc0 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 6f 3f |et/layertype.go?|
> 00000dd0 73 3d 32 30 33 39 3a 32 31 30 30 23 4c 35 37 22 |s=2039:2100#L57"|
> 00000de0 3e 44 65 63 6f 64 65 3c 2f 61 3e 3c 2f 68 33 3e |>Decode</a></h3>|
> 00000df0 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 28 |.....<pre>func (|
> 00000e00 74 20 4c 61 79 65 72 54 79 70 65 29 20 44 65 63 |t LayerType) Dec|
> 00000e10 6f 64 65 28 64 61 74 61 20 5b 5d 62 79 74 65 2c |ode(data []byte,|
> 00000e20 20 63 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 | c PacketBuilder|
> 00000e30 29 20 65 72 72 6f 72 3c 2f 70 72 65 3e 0a 09 09 |) error</pre>...|
> 00000e40 09 09 3c 70 3e 0a 44 65 63 6f 64 65 20 64 65 63 |..<p>.Decode dec|
> 00000e50 6f 64 65 73 20 74 68 65 20 67 69 76 65 6e 20 64 |odes the given d|
> 00000e60 61 74 61 20 75 73 69 6e 67 20 74 68 65 20 64 65 |ata using the de|
> 00000e70 63 6f 64 65 72 20 72 65 67 69 73 74 65 72 65 64 |coder registered|
> 00000e80 20 77 69 74 68 20 74 68 65 20 6c 61 79 65 72 0a | with the layer.|
> 00000e90 74 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 |type..</p>......|
> 00000ea0 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 0a 09 |................|
> 00000eb0 09 09 09 3c 68 33 20 69 64 3d 22 4c 61 79 65 72 |...<h3 id="Layer|
> 00000ec0 54 79 70 65 2e 53 74 72 69 6e 67 22 3e 66 75 6e |Type.String">fun|
> 00000ed0 63 20 28 4c 61 79 65 72 54 79 70 65 29 20 3c 61 |c (LayerType) <a|
> 00000ee0 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f | href="/src/pkg/|
> 00000ef0 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e |github.com/gconn|
> 00000f00 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 6c 61 79 |ell/gopacket/lay|
> 00000f10 65 72 74 79 70 65 2e 67 6f 3f 73 3d 32 34 30 35 |ertype.go?s=2405|
> 00000f20 3a 32 34 34 33 23 4c 37 31 22 3e 53 74 72 69 6e |:2443#L71">Strin|
> 00000f30 67 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |g</a></h3>.....<|
> 00000f40 70 72 65 3e 66 75 6e 63 20 28 74 20 4c 61 79 65 |pre>func (t Laye|
> 00000f50 72 54 79 70 65 29 20 53 74 72 69 6e 67 28 29 20 |rType) String() |
> 00000f60 28 73 20 73 74 72 69 6e 67 29 3c 2f 70 72 65 3e |(s string)</pre>|
> 00000f70 0a 09 09 09 09 3c 70 3e 0a 53 74 72 69 6e 67 20 |.....<p>.String |
> 00000f80 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 |returns the stri|
> 00000f90 6e 67 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 |ng associated wi|
> 00000fa0 74 68 20 74 68 69 73 20 6c 61 79 65 72 20 74 79 |th this layer ty|
> 00000fb0 70 65 2e 0a 3c 2f 70 3e 0a 0a 09 09 09 09 0a 09 |pe..</p>........|
> 00000fc0 09 09 09 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 |................|
> 00000fd0 09 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 61 |......<h2 id="La|
> 00000fe0 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 61 22 |yerTypeMetadata"|
> 00000ff0 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/|
> 00001000 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c|
> 00001010 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa|
> 00001020 63 6b 65 74 2f 6c 61 79 65 72 74 79 70 65 2e 67 |cket/layertype.g|
> 00001030 6f 3f 73 3d 35 38 31 3a 37 39 37 23 4c 39 22 3e |o?s=581:797#L9">|
> 00001040 4c 61 79 65 72 54 79 70 65 4d 65 74 61 64 61 74 |LayerTypeMetadat|
> 00001050 61 3c 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 |a</a></h2>....<p|
> 00001060 72 65 3e 74 79 70 65 20 4c 61 79 65 72 54 79 70 |re>type LayerTyp|
> 00001070 65 4d 65 74 61 64 61 74 61 20 73 74 72 75 63 74 |eMetadata struct|
> 00001080 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 | {. <span cla|
> 00001090 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 000010a0 4e 61 6d 65 20 69 73 20 74 68 65 20 73 74 72 69 |Name is the stri|
> 000010b0 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 65 |ng returned by e|
> 000010c0 61 63 68 20 6c 61 79 65 72 20 74 79 70 65 26 23 |ach layer type&#|
> 000010d0 33 39 3b 73 20 53 74 72 69 6e 67 20 6d 65 74 68 |39;s String meth|
> 000010e0 6f 64 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 4e |od.</span>. N|
> 000010f0 61 6d 65 20 73 74 72 69 6e 67 0a 20 20 20 20 3c |ame string. <|
> 00001100 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d |span class="comm|
> 00001110 65 6e 74 22 3e 2f 2f 20 44 65 63 6f 64 65 72 20 |ent">// Decoder |
> 00001120 69 73 20 74 68 65 20 64 65 63 6f 64 65 72 20 74 |is the decoder t|
> 00001130 6f 20 75 73 65 20 77 68 65 6e 20 74 68 65 20 6c |o use when the l|
> 00001140 61 79 65 72 20 74 79 70 65 20 69 73 20 70 61 73 |ayer type is pas|
> 00001150 73 65 64 20 69 6e 20 61 73 20 61 3c 2f 73 70 61 |sed in as a</spa|
> 00001160 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla|
> 00001170 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 00001180 44 65 63 6f 64 65 72 2e 3c 2f 73 70 61 6e 3e 0a |Decoder.</span>.|
> 00001190 20 20 20 20 44 65 63 6f 64 65 72 20 44 65 63 6f | Decoder Deco|
> 000011a0 64 65 72 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |der.}</pre>....<|
> 000011b0 70 3e 0a 4c 61 79 65 72 54 79 70 65 4d 65 74 61 |p>.LayerTypeMeta|
> 000011c0 64 61 74 61 20 63 6f 6e 74 61 69 6e 73 20 6d 65 |data contains me|
> 000011d0 74 61 64 61 74 61 20 61 73 73 6f 63 69 61 74 65 |tadata associate|
> 000011e0 64 20 77 69 74 68 20 65 61 63 68 20 4c 61 79 65 |d with each Laye|
> 000011f0 72 54 79 70 65 2e 0a 3c 2f 70 3e 0a 0a 0a 09 09 |rType..</p>.....|
> 00001200 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................|
> 00001210 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00001220 0a 09 09 09 3c 68 32 20 69 64 3d 22 4c 69 6e 6b |....<h2 id="Link|
> 00001230 4c 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 |Layer">type <a h|
> 00001240 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 00001250 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 00001260 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e |l/gopacket/base.|
> 00001270 67 6f 3f 73 3d 31 37 32 30 3a 31 37 37 32 23 4c |go?s=1720:1772#L|
> 00001280 33 36 22 3e 4c 69 6e 6b 4c 61 79 65 72 3c 2f 61 |36">LinkLayer</a|
> 00001290 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 |></h2>....<pre>t|
> 000012a0 79 70 65 20 4c 69 6e 6b 4c 61 79 65 72 20 69 6e |ype LinkLayer in|
> 000012b0 74 65 72 66 61 63 65 20 7b 0a 20 20 20 20 4c 61 |terface {. La|
> 000012c0 79 65 72 0a 20 20 20 20 4c 69 6e 6b 46 6c 6f 77 |yer. LinkFlow|
> 000012d0 28 29 20 46 6c 6f 77 0a 7d 3c 2f 70 72 65 3e 0a |() Flow.}</pre>.|
> 000012e0 09 09 09 3c 70 3e 0a 4c 69 6e 6b 4c 61 79 65 72 |...<p>.LinkLayer|
> 000012f0 20 69 73 20 74 68 65 20 70 61 63 6b 65 74 20 6c | is the packet l|
> 00001300 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 |ayer correspondi|
> 00001310 6e 67 20 74 6f 20 54 43 50 2f 49 50 20 6c 61 79 |ng to TCP/IP lay|
> 00001320 65 72 20 31 20 28 4f 53 49 20 6c 61 79 65 72 20 |er 1 (OSI layer |
> 00001330 32 29 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 |2).</p>.........|
> 00001340 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................|
> 00001350 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00001360 3c 68 32 20 69 64 3d 22 4e 65 74 77 6f 72 6b 4c |<h2 id="NetworkL|
> 00001370 61 79 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 |ayer">type <a hr|
> 00001380 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 |ef="/src/pkg/git|
> 00001390 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c |hub.com/gconnell|
> 000013a0 2f 67 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 |/gopacket/base.g|
> 000013b0 6f 3f 73 3d 31 38 35 39 3a 31 39 31 37 23 4c 34 |o?s=1859:1917#L4|
> 000013c0 33 22 3e 4e 65 74 77 6f 72 6b 4c 61 79 65 72 3c |3">NetworkLayer<|
> 000013d0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 000013e0 3e 74 79 70 65 20 4e 65 74 77 6f 72 6b 4c 61 79 |>type NetworkLay|
> 000013f0 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 |er interface {. |
> 00001400 20 20 20 4c 61 79 65 72 0a 20 20 20 20 4e 65 74 | Layer. Net|
> 00001410 77 6f 72 6b 46 6c 6f 77 28 29 20 46 6c 6f 77 0a |workFlow() Flow.|
> 00001420 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 4e |}</pre>....<p>.N|
> 00001430 65 74 77 6f 72 6b 4c 61 79 65 72 20 69 73 20 74 |etworkLayer is t|
> 00001440 68 65 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 |he packet layer |
> 00001450 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f |corresponding to|
> 00001460 20 54 43 50 2f 49 50 20 6c 61 79 65 72 20 32 20 | TCP/IP layer 2 |
> 00001470 28 4f 53 49 0a 6c 61 79 65 72 20 33 29 0a 3c 2f |(OSI.layer 3).</|
> 00001480 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 |p>..............|
> 00001490 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a |................|
> 000014a0 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 |...........<h2 i|
> 000014b0 64 3d 22 50 61 63 6b 65 74 22 3e 74 79 70 65 20 |d="Packet">type |
> 000014c0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 000014d0 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 000014e0 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 |nnell/gopacket/p|
> 000014f0 61 63 6b 65 74 2e 67 6f 3f 73 3d 38 33 36 3a 32 |acket.go?s=836:2|
> 00001500 31 37 32 23 4c 31 38 22 3e 50 61 63 6b 65 74 3c |172#L18">Packet<|
> 00001510 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 00001520 3e 74 79 70 65 20 50 61 63 6b 65 74 20 69 6e 74 |>type Packet int|
> 00001530 65 72 66 61 63 65 20 7b 0a 20 20 20 20 66 6d 74 |erface {. fmt|
> 00001540 2e 53 74 72 69 6e 67 65 72 0a 20 20 20 20 3c 73 |.Stringer. <s|
> 00001550 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 00001560 6e 74 22 3e 2f 2f 20 44 61 74 61 20 72 65 74 75 |nt">// Data retu|
> 00001570 72 6e 73 20 61 6c 6c 20 64 61 74 61 20 61 73 73 |rns all data ass|
> 00001580 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 |ociated with thi|
> 00001590 73 20 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a |s packet</span>.|
> 000015a0 20 20 20 20 44 61 74 61 28 29 20 5b 5d 62 79 74 | Data() []byt|
> 000015b0 65 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 |e. <span clas|
> 000015c0 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c |s="comment">// L|
> 000015d0 61 79 65 72 73 20 72 65 74 75 72 6e 73 20 61 6c |ayers returns al|
> 000015e0 6c 20 6c 61 79 65 72 73 20 69 6e 20 74 68 69 73 |l layers in this|
> 000015f0 20 70 61 63 6b 65 74 2c 20 63 6f 6d 70 75 74 69 | packet, computi|
> 00001600 6e 67 20 74 68 65 6d 20 61 73 20 6e 65 63 65 73 |ng them as neces|
> 00001610 73 61 72 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |sary</span>. |
> 00001620 4c 61 79 65 72 73 28 29 20 5b 5d 4c 61 79 65 72 |Layers() []Layer|
> 00001630 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class|
> 00001640 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4c 61 |="comment">// La|
> 00001650 79 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 |yer returns the |
> 00001660 66 69 72 73 74 20 6c 61 79 65 72 20 69 6e 20 74 |first layer in t|
> 00001670 68 69 73 20 70 61 63 6b 65 74 20 6f 66 20 74 68 |his packet of th|
> 00001680 65 20 67 69 76 65 6e 20 74 79 70 65 2c 20 6f 72 |e given type, or|
> 00001690 20 6e 69 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 | nil</span>. |
> 000016a0 4c 61 79 65 72 28 4c 61 79 65 72 54 79 70 65 29 |Layer(LayerType)|
> 000016b0 20 4c 61 79 65 72 0a 20 20 20 20 3c 73 70 61 6e | Layer. <span|
> 000016c0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"|
> 000016d0 3e 2f 2f 20 4c 61 79 65 72 43 6c 61 73 73 20 72 |>// LayerClass r|
> 000016e0 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 |eturns the first|
> 000016f0 20 6c 61 79 65 72 20 69 6e 20 74 68 69 73 20 70 | layer in this p|
> 00001700 61 63 6b 65 74 20 6f 66 20 74 68 65 20 67 69 76 |acket of the giv|
> 00001710 65 6e 20 63 6c 61 73 73 2c 3c 2f 73 70 61 6e 3e |en class,</span>|
> 00001720 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 |. <span class|
> 00001730 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f 72 |="comment">// or|
> 00001740 20 6e 69 6c 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 | nil.</span>. |
> 00001750 20 4c 61 79 65 72 43 6c 61 73 73 28 4c 61 79 65 | LayerClass(Laye|
> 00001760 72 43 6c 61 73 73 29 20 4c 61 79 65 72 0a 20 20 |rClass) Layer. |
> 00001770 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00001780 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 43 61 70 74 75 |omment">// Captu|
> 00001790 72 65 49 6e 66 6f 20 72 65 74 75 72 6e 73 20 74 |reInfo returns t|
> 000017a0 68 65 20 63 61 70 75 74 75 72 65 20 69 6e 66 6f |he caputure info|
> 000017b0 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 |rmation for this|
> 000017c0 20 70 61 63 6b 65 74 2e 20 20 54 68 69 73 20 72 | packet. This r|
> 000017d0 65 74 75 72 6e 73 3c 2f 73 70 61 6e 3e 0a 20 20 |eturns</span>. |
> 000017e0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 000017f0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 61 20 70 6f 69 |omment">// a poi|
> 00001800 6e 74 65 72 20 74 6f 20 74 68 65 20 70 61 63 6b |nter to the pack|
> 00001810 65 74 26 23 33 39 3b 73 20 73 74 72 75 63 74 2c |et's struct,|
> 00001820 20 73 6f 20 69 74 20 63 61 6e 20 62 65 20 75 73 | so it can be us|
> 00001830 65 64 20 62 6f 74 68 20 66 6f 72 20 72 65 61 64 |ed both for read|
> 00001840 69 6e 67 20 61 6e 64 3c 2f 73 70 61 6e 3e 0a 20 |ing and</span>. |
> 00001850 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 00001860 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 77 72 69 74 |comment">// writ|
> 00001870 69 6e 67 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 |ing the informat|
> 00001880 69 6f 6e 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ion.</span>. |
> 00001890 43 61 70 74 75 72 65 49 6e 66 6f 28 29 20 2a 43 |CaptureInfo() *C|
> 000018a0 61 70 74 75 72 65 49 6e 66 6f 0a 0a 20 20 20 20 |aptureInfo.. |
> 000018b0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 000018c0 6d 65 6e 74 22 3e 2f 2f 20 4c 69 6e 6b 4c 61 79 |ment">// LinkLay|
> 000018d0 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 |er returns the f|
> 000018e0 69 72 73 74 20 6c 69 6e 6b 20 6c 61 79 65 72 20 |irst link layer |
> 000018f0 69 6e 20 74 68 65 20 70 61 63 6b 65 74 3c 2f 73 |in the packet</s|
> 00001900 70 61 6e 3e 0a 20 20 20 20 4c 69 6e 6b 4c 61 79 |pan>. LinkLay|
> 00001910 65 72 28 29 20 4c 69 6e 6b 4c 61 79 65 72 0a 20 |er() LinkLayer. |
> 00001920 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 00001930 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 4e 65 74 77 |comment">// Netw|
> 00001940 6f 72 6b 4c 61 79 65 72 20 72 65 74 75 72 6e 73 |orkLayer returns|
> 00001950 20 74 68 65 20 66 69 72 73 74 20 6e 65 74 77 6f | the first netwo|
> 00001960 72 6b 20 6c 61 79 65 72 20 69 6e 20 74 68 65 20 |rk layer in the |
> 00001970 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 |packet</span>. |
> 00001980 20 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 28 29 | NetworkLayer()|
> 00001990 20 4e 65 74 77 6f 72 6b 4c 61 79 65 72 0a 20 20 | NetworkLayer. |
> 000019a0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 000019b0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 54 72 61 6e 73 |omment">// Trans|
> 000019c0 70 6f 72 74 4c 61 79 65 72 20 72 65 74 75 72 6e |portLayer return|
> 000019d0 73 20 74 68 65 20 66 69 72 73 74 20 74 72 61 6e |s the first tran|
> 000019e0 73 70 6f 72 74 20 6c 61 79 65 72 20 69 6e 20 74 |sport layer in t|
> 000019f0 68 65 20 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e |he packet</span>|
> 00001a00 0a 20 20 20 20 54 72 61 6e 73 70 6f 72 74 4c 61 |. TransportLa|
> 00001a10 79 65 72 28 29 20 54 72 61 6e 73 70 6f 72 74 4c |yer() TransportL|
> 00001a20 61 79 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 63 |ayer. <span c|
> 00001a30 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/|
> 00001a40 2f 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 |/ ApplicationLay|
> 00001a50 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 66 |er returns the f|
> 00001a60 69 72 73 74 20 61 70 70 6c 69 63 61 74 69 6f 6e |irst application|
> 00001a70 20 6c 61 79 65 72 20 69 6e 20 74 68 65 20 70 61 | layer in the pa|
> 00001a80 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |cket</span>. |
> 00001a90 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 79 65 72 |ApplicationLayer|
> 00001aa0 28 29 20 41 70 70 6c 69 63 61 74 69 6f 6e 4c 61 |() ApplicationLa|
> 00001ab0 79 65 72 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |yer. <span cl|
> 00001ac0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//|
> 00001ad0 20 45 72 72 6f 72 4c 61 79 65 72 20 69 73 20 70 | ErrorLayer is p|
> 00001ae0 61 72 74 69 63 75 6c 61 72 6c 79 20 75 73 65 66 |articularly usef|
> 00001af0 75 6c 2c 20 73 69 6e 63 65 20 69 74 20 72 65 74 |ul, since it ret|
> 00001b00 75 72 6e 73 20 6e 69 6c 20 69 66 20 74 68 65 20 |urns nil if the |
> 00001b10 70 61 63 6b 65 74 3c 2f 73 70 61 6e 3e 0a 20 20 |packet</span>. |
> 00001b20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00001b30 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 77 61 73 20 66 |omment">// was f|
> 00001b40 75 6c 6c 79 20 64 65 63 6f 64 65 64 20 73 75 63 |ully decoded suc|
> 00001b50 63 65 73 73 66 75 6c 6c 79 2c 20 61 6e 64 20 6e |cessfully, and n|
> 00001b60 6f 6e 2d 6e 69 6c 20 69 66 20 61 6e 20 65 72 72 |on-nil if an err|
> 00001b70 6f 72 20 77 61 73 20 65 6e 63 6f 75 6e 74 65 72 |or was encounter|
> 00001b80 65 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 |ed</span>. <s|
> 00001b90 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 |pan class="comme|
> 00001ba0 6e 74 22 3e 2f 2f 20 69 6e 20 64 65 63 6f 64 69 |nt">// in decodi|
> 00001bb0 6e 67 20 61 6e 64 20 74 68 65 20 70 61 63 6b 65 |ng and the packe|
> 00001bc0 74 20 77 61 73 20 6f 6e 6c 79 20 70 61 72 74 69 |t was only parti|
> 00001bd0 61 6c 6c 79 20 64 65 63 6f 64 65 64 2e 20 20 54 |ally decoded. T|
> 00001be0 68 75 73 2c 20 69 74 73 20 6f 75 74 70 75 74 3c |hus, its output<|
> 00001bf0 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e |/span>. <span|
> 00001c00 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"|
> 00001c10 3e 2f 2f 20 63 61 6e 20 62 65 20 75 73 65 64 20 |>// can be used |
> 00001c20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 |to determine if |
> 00001c30 74 68 65 20 65 6e 74 69 72 65 20 70 61 63 6b 65 |the entire packe|
> 00001c40 74 20 77 61 73 20 61 62 6c 65 20 74 6f 20 62 65 |t was able to be|
> 00001c50 20 64 65 63 6f 64 65 64 2e 3c 2f 73 70 61 6e 3e | decoded.</span>|
> 00001c60 0a 20 20 20 20 45 72 72 6f 72 4c 61 79 65 72 28 |. ErrorLayer(|
> 00001c70 29 20 45 72 72 6f 72 4c 61 79 65 72 0a 7d 3c 2f |) ErrorLayer.}</|
> 00001c80 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 63 6b |pre>....<p>.Pack|
> 00001c90 65 74 20 69 73 20 74 68 65 20 70 72 69 6d 61 72 |et is the primar|
> 00001ca0 79 20 6f 62 6a 65 63 74 20 75 73 65 64 20 62 79 |y object used by|
> 00001cb0 20 67 6f 70 61 63 6b 65 74 2e 20 20 50 61 63 6b | gopacket. Pack|
> 00001cc0 65 74 73 20 61 72 65 20 63 72 65 61 74 65 64 20 |ets are created |
> 00001cd0 62 79 20 61 0a 44 65 63 6f 64 65 72 26 23 33 39 |by a.Decoder'|
> 00001ce0 3b 73 20 44 65 63 6f 64 65 20 63 61 6c 6c 2e 20 |;s Decode call. |
> 00001cf0 20 41 20 70 61 63 6b 65 74 20 69 73 20 6d 61 64 | A packet is mad|
> 00001d00 65 20 75 70 20 6f 66 20 61 20 73 65 74 20 6f 66 |e up of a set of|
> 00001d10 20 44 61 74 61 2c 20 77 68 69 63 68 0a 69 73 20 | Data, which.is |
> 00001d20 62 72 6f 6b 65 6e 20 69 6e 74 6f 20 61 20 6e 75 |broken into a nu|
> 00001d30 6d 62 65 72 20 6f 66 20 4c 61 79 65 72 73 20 61 |mber of Layers a|
> 00001d40 73 20 69 74 20 69 73 20 64 65 63 6f 64 65 64 2e |s it is decoded.|
> 00001d50 0a 3c 2f 70 3e 0a 0a 0a 09 09 09 0a 0a 09 09 09 |.</p>...........|
> 00001d60 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a |................|
> 00001d70 09 09 09 09 3c 68 33 20 69 64 3d 22 4e 65 77 50 |....<h3 id="NewP|
> 00001d80 61 63 6b 65 74 22 3e 66 75 6e 63 20 3c 61 20 68 |acket">func <a h|
> 00001d90 72 65 66 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 |ref="/src/pkg/gi|
> 00001da0 74 68 75 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c |thub.com/gconnel|
> 00001db0 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 61 63 6b 65 |l/gopacket/packe|
> 00001dc0 74 2e 67 6f 3f 73 3d 39 39 37 38 3a 31 30 30 36 |t.go?s=9978:1006|
> 00001dd0 32 23 4c 33 34 30 22 3e 4e 65 77 50 61 63 6b 65 |2#L340">NewPacke|
> 00001de0 74 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |t</a></h3>.....<|
> 00001df0 70 72 65 3e 66 75 6e 63 20 4e 65 77 50 61 63 6b |pre>func NewPack|
> 00001e00 65 74 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 |et(data []byte, |
> 00001e10 66 69 72 73 74 4c 61 79 65 72 44 65 63 6f 64 65 |firstLayerDecode|
> 00001e20 72 20 44 65 63 6f 64 65 72 2c 20 6f 70 74 69 6f |r Decoder, optio|
> 00001e30 6e 73 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 |ns DecodeOptions|
> 00001e40 29 20 50 61 63 6b 65 74 3c 2f 70 72 65 3e 0a 09 |) Packet</pre>..|
> 00001e50 09 09 09 3c 70 3e 0a 4e 65 77 50 61 63 6b 65 74 |...<p>.NewPacket|
> 00001e60 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 50 | creates a new P|
> 00001e70 61 63 6b 65 74 20 6f 62 6a 65 63 74 20 66 72 6f |acket object fro|
> 00001e80 6d 20 61 20 73 65 74 20 6f 66 20 62 79 74 65 73 |m a set of bytes|
> 00001e90 2e 20 20 54 68 65 0a 66 69 72 73 74 4c 61 79 65 |. The.firstLaye|
> 00001ea0 72 44 65 63 6f 64 65 72 20 74 65 6c 6c 73 20 69 |rDecoder tells i|
> 00001eb0 74 20 68 6f 77 20 74 6f 20 69 6e 74 65 72 70 72 |t how to interpr|
> 00001ec0 65 74 20 74 68 65 20 66 69 72 73 74 20 6c 61 79 |et the first lay|
> 00001ed0 65 72 20 66 72 6f 6d 20 74 68 65 20 62 79 74 65 |er from the byte|
> 00001ee0 73 2c 0a 66 75 74 75 72 65 20 6c 61 79 65 72 73 |s,.future layers|
> 00001ef0 20 77 69 6c 6c 20 62 65 20 67 65 6e 65 72 61 74 | will be generat|
> 00001f00 65 64 20 66 72 6f 6d 20 74 68 61 74 20 66 69 72 |ed from that fir|
> 00001f10 73 74 20 6c 61 79 65 72 20 61 75 74 6f 6d 61 74 |st layer automat|
> 00001f20 69 63 61 6c 6c 79 2e 0a 3c 2f 70 3e 0a 0a 09 09 |ically..</p>....|
> 00001f30 09 09 0a 09 09 09 0a 0a 09 09 09 0a 09 09 0a 09 |................|
> 00001f40 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 69 64 |..........<h2 id|
> 00001f50 3d 22 50 61 63 6b 65 74 42 75 69 6c 64 65 72 22 |="PacketBuilder"|
> 00001f60 3e 74 79 70 65 20 3c 61 20 68 72 65 66 3d 22 2f |>type <a href="/|
> 00001f70 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 |src/pkg/github.c|
> 00001f80 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 |om/gconnell/gopa|
> 00001f90 63 6b 65 74 2f 64 65 63 6f 64 65 2e 67 6f 3f 73 |cket/decode.go?s|
> 00001fa0 3d 36 30 32 3a 31 35 33 31 23 4c 31 33 22 3e 50 |=602:1531#L13">P|
> 00001fb0 61 63 6b 65 74 42 75 69 6c 64 65 72 3c 2f 61 3e |acketBuilder</a>|
> 00001fc0 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 |</h2>....<pre>ty|
> 00001fd0 70 65 20 50 61 63 6b 65 74 42 75 69 6c 64 65 72 |pe PacketBuilder|
> 00001fe0 20 69 6e 74 65 72 66 61 63 65 20 7b 0a 20 20 20 | interface {. |
> 00001ff0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co|
> 00002000 6d 6d 65 6e 74 22 3e 2f 2f 20 41 64 64 4c 61 79 |mment">// AddLay|
> 00002010 65 72 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c |er should be cal|
> 00002020 6c 65 64 20 62 79 20 61 20 64 65 63 6f 64 65 72 |led by a decoder|
> 00002030 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 75 70 6f | immediately upo|
> 00002040 6e 20 73 75 63 63 65 73 73 66 75 6c 3c 2f 73 70 |n successful</sp|
> 00002050 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl|
> 00002060 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//|
> 00002070 20 64 65 63 6f 64 69 6e 67 20 6f 66 20 61 20 6c | decoding of a l|
> 00002080 61 79 65 72 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 |ayer.</span>. |
> 00002090 20 41 64 64 4c 61 79 65 72 28 6c 20 4c 61 79 65 | AddLayer(l Laye|
> 000020a0 72 29 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |r). <span cla|
> 000020b0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 000020c0 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 |The following fu|
> 000020d0 6e 63 74 69 6f 6e 73 20 73 65 74 20 74 68 65 20 |nctions set the |
> 000020e0 76 61 72 69 6f 75 73 20 73 70 65 63 69 66 69 63 |various specific|
> 000020f0 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65 20 66 | layers in the f|
> 00002100 69 6e 61 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |inal</span>. |
> 00002110 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 00002120 6d 65 6e 74 22 3e 2f 2f 20 70 61 63 6b 65 74 2e |ment">// packet.|
> 00002130 20 20 4e 6f 74 65 20 74 68 61 74 20 69 66 20 6d | Note that if m|
> 00002140 61 6e 79 20 6c 61 79 65 72 73 20 63 61 6c 6c 20 |any layers call |
> 00002150 53 65 74 58 2c 20 74 68 65 20 66 69 72 73 74 20 |SetX, the first |
> 00002160 63 61 6c 6c 20 69 73 20 6b 65 70 74 20 61 6e 64 |call is kept and|
> 00002170 20 61 6c 6c 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 | all</span>. |
> 00002180 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 00002190 6d 65 6e 74 22 3e 2f 2f 20 6f 74 68 65 72 20 63 |ment">// other c|
> 000021a0 61 6c 6c 73 20 61 72 65 20 69 67 6e 6f 72 65 64 |alls are ignored|
> 000021b0 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 53 65 74 |.</span>. Set|
> 000021c0 4c 69 6e 6b 4c 61 79 65 72 28 4c 69 6e 6b 4c 61 |LinkLayer(LinkLa|
> 000021d0 79 65 72 29 0a 20 20 20 20 53 65 74 4e 65 74 77 |yer). SetNetw|
> 000021e0 6f 72 6b 4c 61 79 65 72 28 4e 65 74 77 6f 72 6b |orkLayer(Network|
> 000021f0 4c 61 79 65 72 29 0a 20 20 20 20 53 65 74 54 72 |Layer). SetTr|
> 00002200 61 6e 73 70 6f 72 74 4c 61 79 65 72 28 54 72 61 |ansportLayer(Tra|
> 00002210 6e 73 70 6f 72 74 4c 61 79 65 72 29 0a 20 20 20 |nsportLayer). |
> 00002220 20 53 65 74 41 70 70 6c 69 63 61 74 69 6f 6e 4c | SetApplicationL|
> 00002230 61 79 65 72 28 41 70 70 6c 69 63 61 74 69 6f 6e |ayer(Application|
> 00002240 4c 61 79 65 72 29 0a 20 20 20 20 53 65 74 45 72 |Layer). SetEr|
> 00002250 72 6f 72 4c 61 79 65 72 28 45 72 72 6f 72 4c 61 |rorLayer(ErrorLa|
> 00002260 79 65 72 29 0a 20 20 20 20 3c 73 70 61 6e 20 63 |yer). <span c|
> 00002270 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f |lass="comment">/|
> 00002280 2f 20 4e 65 78 74 44 65 63 6f 64 65 72 20 73 68 |/ NextDecoder sh|
> 00002290 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 62 |ould be called b|
> 000022a0 79 20 61 20 64 65 63 6f 64 65 72 20 77 68 65 6e |y a decoder when|
> 000022b0 20 74 68 65 79 26 23 33 39 3b 72 65 20 64 6f 6e | they're don|
> 000022c0 65 20 64 65 63 6f 64 69 6e 67 20 61 3c 2f 73 70 |e decoding a</sp|
> 000022d0 61 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c |an>. <span cl|
> 000022e0 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f |ass="comment">//|
> 000022f0 20 70 61 63 6b 65 74 20 6c 61 79 65 72 20 62 75 | packet layer bu|
> 00002300 74 20 6e 6f 74 20 64 6f 6e 65 20 77 69 74 68 20 |t not done with |
> 00002310 64 65 63 6f 64 69 6e 67 20 74 68 65 20 65 6e 74 |decoding the ent|
> 00002320 69 72 65 20 70 61 63 6b 65 74 2e 20 20 54 68 65 |ire packet. The|
> 00002330 20 6e 65 78 74 3c 2f 73 70 61 6e 3e 0a 20 20 20 | next</span>. |
> 00002340 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f | <span class="co|
> 00002350 6d 6d 65 6e 74 22 3e 2f 2f 20 64 65 63 6f 64 65 |mment">// decode|
> 00002360 72 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 |r will be called|
> 00002370 20 74 6f 20 64 65 63 6f 64 65 20 74 68 65 20 6c | to decode the l|
> 00002380 61 73 74 20 41 64 64 4c 61 79 65 72 26 23 33 39 |ast AddLayer'|
> 00002390 3b 73 20 4c 61 79 65 72 50 61 79 6c 6f 61 64 2e |;s LayerPayload.|
> 000023a0 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa|
> 000023b0 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment|
> 000023c0 22 3e 2f 2f 20 42 65 63 61 75 73 65 20 6f 66 20 |">// Because of |
> 000023d0 74 68 69 73 2c 20 4e 65 78 74 44 65 63 6f 64 65 |this, NextDecode|
> 000023e0 72 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65 20 63 |r must only be c|
> 000023f0 61 6c 6c 65 64 20 6f 6e 63 65 20 61 6c 6c 20 6f |alled once all o|
> 00002400 74 68 65 72 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ther</span>. |
> 00002410 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d |<span class="com|
> 00002420 6d 65 6e 74 22 3e 2f 2f 20 50 61 63 6b 65 74 42 |ment">// PacketB|
> 00002430 75 69 6c 64 65 72 20 63 61 6c 6c 73 20 68 61 76 |uilder calls hav|
> 00002440 65 20 62 65 65 6e 20 6d 61 64 65 2e 20 20 53 65 |e been made. Se|
> 00002450 74 2a 4c 61 79 65 72 20 61 6e 64 20 41 64 64 4c |t*Layer and AddL|
> 00002460 61 79 65 72 20 63 61 6c 6c 73 20 61 66 74 65 72 |ayer calls after|
> 00002470 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 61 |</span>. <spa|
> 00002480 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 |n class="comment|
> 00002490 22 3e 2f 2f 20 4e 65 78 74 44 65 63 6f 64 65 72 |">// NextDecoder|
> 000024a0 20 63 61 6c 6c 73 20 77 69 6c 6c 20 62 65 68 61 | calls will beha|
> 000024b0 76 65 20 69 6e 63 6f 72 72 65 63 74 6c 79 2e 3c |ve incorrectly.<|
> 000024c0 2f 73 70 61 6e 3e 0a 20 20 20 20 4e 65 78 74 44 |/span>. NextD|
> 000024d0 65 63 6f 64 65 72 28 6e 65 78 74 20 44 65 63 6f |ecoder(next Deco|
> 000024e0 64 65 72 29 20 65 72 72 6f 72 0a 7d 3c 2f 70 72 |der) error.}</pr|
> 000024f0 65 3e 0a 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 |e>....<p>.Packet|
> 00002500 42 75 69 6c 64 65 72 20 69 73 20 75 73 65 64 20 |Builder is used |
> 00002510 62 79 20 6c 61 79 65 72 20 64 65 63 6f 64 65 72 |by layer decoder|
> 00002520 73 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6c |s to store the l|
> 00002530 61 79 65 72 73 20 74 68 65 79 26 23 33 39 3b 76 |ayers they'v|
> 00002540 65 20 64 65 63 6f 64 65 64 2c 0a 61 6e 64 20 74 |e decoded,.and t|
> 00002550 6f 20 64 65 66 65 72 20 66 75 74 75 72 65 20 64 |o defer future d|
> 00002560 65 63 6f 64 69 6e 67 20 76 69 61 20 4e 65 78 74 |ecoding via Next|
> 00002570 44 65 63 6f 64 65 72 2e 0a 54 79 70 69 63 61 6c |Decoder..Typical|
> 00002580 6c 79 2c 20 74 68 65 20 70 61 74 74 65 72 6e 20 |ly, the pattern |
> 00002590 66 6f 72 20 75 73 65 20 69 73 3a 0a 3c 2f 70 3e |for use is:.</p>|
> 000025a0 0a 3c 70 72 65 3e 66 75 6e 63 20 28 6d 20 2a 6d |.<pre>func (m *m|
> 000025b0 79 44 65 63 6f 64 65 72 29 20 44 65 63 6f 64 65 |yDecoder) Decode|
> 000025c0 28 64 61 74 61 20 5b 5d 62 79 74 65 2c 20 70 20 |(data []byte, p |
> 000025d0 50 61 63 6b 65 74 42 75 69 6c 64 65 72 29 20 65 |PacketBuilder) e|
> 000025e0 72 72 6f 72 20 7b 0a 20 20 69 66 20 6d 79 4c 61 |rror {. if myLa|
> 000025f0 79 65 72 2c 20 65 72 72 20 3a 3d 20 6d 79 44 65 |yer, err := myDe|
> 00002600 63 6f 64 69 6e 67 4c 6f 67 69 63 28 64 61 74 61 |codingLogic(data|
> 00002610 29 3b 20 65 72 72 20 21 3d 20 6e 69 6c 20 7b 0a |); err != nil {.|
> 00002620 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 0a 20 | return err. |
> 00002630 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 70 2e | } else {. p.|
> 00002640 41 64 64 4c 61 79 65 72 28 6d 79 4c 61 79 65 72 |AddLayer(myLayer|
> 00002650 29 0a 20 20 7d 0a 20 20 2f 2f 20 6d 61 79 62 65 |). }. // maybe|
> 00002660 20 64 6f 20 74 68 69 73 2c 20 69 66 20 6d 79 4c | do this, if myL|
> 00002670 61 79 65 72 20 69 73 20 61 20 4c 69 6e 6b 4c 61 |ayer is a LinkLa|
> 00002680 79 65 72 0a 20 20 70 2e 53 65 74 4c 69 6e 6b 4c |yer. p.SetLinkL|
> 00002690 61 79 65 72 28 6d 79 4c 61 79 65 72 29 0a 20 20 |ayer(myLayer). |
> 000026a0 72 65 74 75 72 6e 20 70 2e 4e 65 78 74 44 65 63 |return p.NextDec|
> 000026b0 6f 64 65 72 28 6e 65 78 74 44 65 63 6f 64 65 72 |oder(nextDecoder|
> 000026c0 29 0a 7d 0a 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 |).}.</pre>......|
> 000026d0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 000026e0 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a |................|
> 000026f0 09 09 09 3c 68 32 20 69 64 3d 22 50 61 63 6b 65 |...<h2 id="Packe|
> 00002700 74 44 61 74 61 53 6f 75 72 63 65 22 3e 74 79 70 |tDataSource">typ|
> 00002710 65 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |e <a href="/src/|
> 00002720 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00002730 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00002740 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 31 34 |/packet.go?s=114|
> 00002750 34 34 3a 31 31 38 32 36 23 4c 33 37 37 22 3e 50 |44:11826#L377">P|
> 00002760 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 3c |acketDataSource<|
> 00002770 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 00002780 3e 74 79 70 65 20 50 61 63 6b 65 74 44 61 74 61 |>type PacketData|
> 00002790 53 6f 75 72 63 65 20 69 6e 74 65 72 66 61 63 65 |Source interface|
> 000027a0 20 7b 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 | {. <span cla|
> 000027b0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 000027c0 52 65 61 64 50 61 63 6b 65 74 44 61 74 61 20 72 |ReadPacketData r|
> 000027d0 65 74 75 72 6e 73 20 74 68 65 20 6e 65 78 74 20 |eturns the next |
> 000027e0 70 61 63 6b 65 74 20 61 76 61 69 6c 61 62 6c 65 |packet available|
> 000027f0 20 66 72 6f 6d 20 74 68 69 73 20 64 61 74 61 20 | from this data |
> 00002800 73 6f 75 72 63 65 2e 3c 2f 73 70 61 6e 3e 0a 20 |source.</span>. |
> 00002810 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 00002820 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 49 74 20 72 |comment">// It r|
> 00002830 65 74 75 72 6e 73 3a 3c 2f 73 70 61 6e 3e 0a 20 |eturns:</span>. |
> 00002840 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 | <span class="|
> 00002850 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 64 61 74 |comment">// dat|
> 00002860 61 3a 20 20 54 68 65 20 62 79 74 65 73 20 6f 66 |a: The bytes of|
> 00002870 20 61 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 70 | an individual p|
> 00002880 61 63 6b 65 74 2e 3c 2f 73 70 61 6e 3e 0a 20 20 |acket.</span>. |
> 00002890 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 000028a0 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 63 69 3a 20 |omment">// ci: |
> 000028b0 20 4d 65 74 61 64 61 74 61 20 61 62 6f 75 74 20 | Metadata about |
> 000028c0 74 68 65 20 63 61 70 74 75 72 65 3c 2f 73 70 61 |the capture</spa|
> 000028d0 6e 3e 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 |n>. <span cla|
> 000028e0 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 |ss="comment">// |
> 000028f0 20 65 72 72 3a 20 20 41 6e 20 65 72 72 6f 72 20 | err: An error |
> 00002900 65 6e 63 6f 75 6e 74 65 72 65 64 20 77 68 69 6c |encountered whil|
> 00002910 65 20 72 65 61 64 69 6e 67 20 70 61 63 6b 65 74 |e reading packet|
> 00002920 20 64 61 74 61 2e 20 20 49 66 20 65 72 72 20 21 | data. If err !|
> 00002930 3d 20 6e 69 6c 2c 3c 2f 73 70 61 6e 3e 0a 20 20 |= nil,</span>. |
> 00002940 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00002950 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 20 20 20 74 68 |omment">// th|
> 00002960 65 6e 20 64 61 74 61 2f 63 69 20 77 69 6c 6c 20 |en data/ci will |
> 00002970 62 65 20 69 67 6e 6f 72 65 64 2e 3c 2f 73 70 61 |be ignored.</spa|
> 00002980 6e 3e 0a 20 20 20 20 52 65 61 64 50 61 63 6b 65 |n>. ReadPacke|
> 00002990 74 44 61 74 61 28 29 20 28 64 61 74 61 20 5b 5d |tData() (data []|
> 000029a0 62 79 74 65 2c 20 63 69 20 43 61 70 74 75 72 65 |byte, ci Capture|
> 000029b0 49 6e 66 6f 2c 20 65 72 72 20 65 72 72 6f 72 29 |Info, err error)|
> 000029c0 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a |.}</pre>....<p>.|
> 000029d0 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 |PacketDataSource|
> 000029e0 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61 63 65 | is an interface|
> 000029f0 20 66 6f 72 20 73 6f 6d 65 20 73 6f 75 72 63 65 | for some source|
> 00002a00 20 6f 66 20 70 61 63 6b 65 74 20 64 61 74 61 2e | of packet data.|
> 00002a10 20 20 55 73 65 72 73 20 6d 61 79 0a 63 72 65 61 | Users may.crea|
> 00002a20 74 65 20 74 68 65 69 72 20 6f 77 6e 20 69 6d 70 |te their own imp|
> 00002a30 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2c 20 6f 72 |lementations, or|
> 00002a40 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69 6e | use the existin|
> 00002a50 67 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e |g implementation|
> 00002a60 73 20 69 6e 0a 67 6f 70 61 63 6b 65 74 2f 70 63 |s in.gopacket/pc|
> 00002a70 61 70 20 28 6c 69 62 70 63 61 70 2c 20 61 6c 6c |ap (libpcap, all|
> 00002a80 6f 77 73 20 72 65 61 64 69 6e 67 20 66 72 6f 6d |ows reading from|
> 00002a90 20 6c 69 76 65 20 69 6e 74 65 72 66 61 63 65 73 | live interfaces|
> 00002aa0 20 6f 72 20 66 72 6f 6d 0a 70 63 61 70 20 66 69 | or from.pcap fi|
> 00002ab0 6c 65 73 29 20 6f 72 20 67 6f 70 61 63 6b 65 74 |les) or gopacket|
> 00002ac0 2f 70 66 72 69 6e 67 20 28 50 46 5f 52 49 4e 47 |/pfring (PF_RING|
> 00002ad0 2c 20 61 6c 6c 6f 77 73 20 72 65 61 64 69 6e 67 |, allows reading|
> 00002ae0 20 66 72 6f 6d 20 6c 69 76 65 0a 69 6e 74 65 72 | from live.inter|
> 00002af0 66 61 63 65 73 29 2e 0a 3c 2f 70 3e 0a 0a 0a 09 |faces)..</p>....|
> 00002b00 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................|
> 00002b10 09 0a 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 |................|
> 00002b20 09 0a 09 09 09 3c 68 32 20 69 64 3d 22 50 61 63 |.....<h2 id="Pac|
> 00002b30 6b 65 74 53 6f 75 72 63 65 22 3e 74 79 70 65 20 |ketSource">type |
> 00002b40 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 00002b50 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 00002b60 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 70 |nnell/gopacket/p|
> 00002b70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 33 31 33 38 |acket.go?s=13138|
> 00002b80 3a 31 33 34 30 35 23 4c 34 32 32 22 3e 50 61 63 |:13405#L422">Pac|
> 00002b90 6b 65 74 53 6f 75 72 63 65 3c 2f 61 3e 3c 2f 68 |ketSource</a></h|
> 00002ba0 32 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 |2>....<pre>type |
> 00002bb0 50 61 63 6b 65 74 53 6f 75 72 63 65 20 73 74 72 |PacketSource str|
> 00002bc0 75 63 74 20 7b 0a 0a 20 20 20 20 3c 73 70 61 6e |uct {.. <span|
> 00002bd0 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e 74 22 | class="comment"|
> 00002be0 3e 2f 2f 20 44 65 63 6f 64 65 4f 70 74 69 6f 6e |>// DecodeOption|
> 00002bf0 73 20 69 73 20 74 68 65 20 73 65 74 20 6f 66 20 |s is the set of |
> 00002c00 6f 70 74 69 6f 6e 73 20 74 6f 20 75 73 65 20 66 |options to use f|
> 00002c10 6f 72 20 64 65 63 6f 64 69 6e 67 20 65 61 63 68 |or decoding each|
> 00002c20 20 70 69 65 63 65 3c 2f 73 70 61 6e 3e 0a 20 20 | piece</span>. |
> 00002c30 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00002c40 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 6f 66 20 70 61 |omment">// of pa|
> 00002c50 63 6b 65 74 20 64 61 74 61 2e 20 20 54 68 69 73 |cket data. This|
> 00002c60 20 63 61 6e 2f 73 68 6f 75 6c 64 20 62 65 20 63 | can/should be c|
> 00002c70 68 61 6e 67 65 64 20 62 79 20 74 68 65 20 75 73 |hanged by the us|
> 00002c80 65 72 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 |er to reflect th|
> 00002c90 65 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 3c 73 70 |e</span>. <sp|
> 00002ca0 61 6e 20 63 6c 61 73 73 3d 22 63 6f 6d 6d 65 6e |an class="commen|
> 00002cb0 74 22 3e 2f 2f 20 77 61 79 20 70 61 63 6b 65 74 |t">// way packet|
> 00002cc0 73 20 73 68 6f 75 6c 64 20 62 65 20 64 65 63 6f |s should be deco|
> 00002cd0 64 65 64 2e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 |ded.</span>. |
> 00002ce0 44 65 63 6f 64 65 4f 70 74 69 6f 6e 73 0a 20 20 |DecodeOptions. |
> 00002cf0 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 63 | <span class="c|
> 00002d00 6f 6d 6d 65 6e 74 22 3e 2f 2f 20 63 6f 6e 74 61 |omment">// conta|
> 00002d10 69 6e 73 20 66 69 6c 74 65 72 65 64 20 6f 72 20 |ins filtered or |
> 00002d20 75 6e 65 78 70 6f 72 74 65 64 20 66 69 65 6c 64 |unexported field|
> 00002d30 73 3c 2f 73 70 61 6e 3e 0a 7d 3c 2f 70 72 65 3e |s</span>.}</pre>|
> 00002d40 0a 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 53 6f |....<p>.PacketSo|
> 00002d50 75 72 63 65 20 72 65 61 64 73 20 69 6e 20 70 61 |urce reads in pa|
> 00002d60 63 6b 65 74 73 20 66 72 6f 6d 20 61 20 50 61 63 |ckets from a Pac|
> 00002d70 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2c 20 64 |ketDataSource, d|
> 00002d80 65 63 6f 64 65 73 20 74 68 65 6d 2c 20 61 6e 64 |ecodes them, and|
> 00002d90 0a 72 65 74 75 72 6e 73 20 74 68 65 6d 2e 0a 3c |.returns them..<|
> 00002da0 2f 70 3e 0a 3c 70 3e 0a 54 68 65 72 65 20 61 72 |/p>.<p>.There ar|
> 00002db0 65 20 63 75 72 72 65 6e 74 6c 79 20 74 77 6f 20 |e currently two |
> 00002dc0 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 |different method|
> 00002dd0 73 20 66 6f 72 20 72 65 61 64 69 6e 67 20 70 61 |s for reading pa|
> 00002de0 63 6b 65 74 73 20 69 6e 20 74 68 72 6f 75 67 68 |ckets in through|
> 00002df0 0a 61 20 50 61 63 6b 65 74 53 6f 75 72 63 65 3a |.a PacketSource:|
> 00002e00 0a 3c 2f 70 3e 0a 3c 68 33 20 69 64 3d 22 52 65 |.</p>.<h3 id="Re|
> 00002e10 61 64 69 6e 67 5f 57 69 74 68 5f 50 61 63 6b 65 |ading_With_Packe|
> 00002e20 74 73 5f 46 75 6e 63 74 69 6f 6e 22 3e 52 65 61 |ts_Function">Rea|
> 00002e30 64 69 6e 67 20 57 69 74 68 20 50 61 63 6b 65 74 |ding With Packet|
> 00002e40 73 20 46 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e 0a |s Function</h3>.|
> 00002e50 3c 70 3e 0a 54 68 69 73 20 6d 65 74 68 6f 64 20 |<p>.This method |
> 00002e60 69 73 20 74 68 65 20 6d 6f 73 74 20 63 6f 6e 76 |is the most conv|
> 00002e70 65 6e 69 65 6e 74 20 61 6e 64 20 65 61 73 69 65 |enient and easie|
> 00002e80 73 74 20 74 6f 20 63 6f 64 65 2c 20 62 75 74 20 |st to code, but |
> 00002e90 6c 61 63 6b 73 0a 66 6c 65 78 69 62 69 6c 69 74 |lacks.flexibilit|
> 00002ea0 79 2e 20 20 50 61 63 6b 65 74 73 20 72 65 74 75 |y. Packets retu|
> 00002eb0 72 6e 73 20 61 20 26 23 33 39 3b 63 68 61 6e 20 |rns a 'chan |
> 00002ec0 50 61 63 6b 65 74 26 23 33 39 3b 2c 20 74 68 65 |Packet', the|
> 00002ed0 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 |n asynchronously|
> 00002ee0 20 77 72 69 74 65 73 0a 70 61 63 6b 65 74 73 20 | writes.packets |
> 00002ef0 69 6e 74 6f 20 74 68 61 74 20 63 68 61 6e 6e 65 |into that channe|
> 00002f00 6c 2e 20 20 50 61 63 6b 65 74 73 20 75 73 65 73 |l. Packets uses|
> 00002f10 20 61 20 62 6c 6f 63 6b 69 6e 67 20 63 68 61 6e | a blocking chan|
> 00002f20 6e 65 6c 2c 20 61 6e 64 20 63 6c 6f 73 65 73 0a |nel, and closes.|
> 00002f30 69 74 20 69 66 20 61 6e 20 69 6f 2e 45 4f 46 20 |it if an io.EOF |
> 00002f40 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 |is returned by t|
> 00002f50 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 50 61 |he underlying Pa|
> 00002f60 63 6b 65 74 44 61 74 61 53 6f 75 72 63 65 2e 20 |cketDataSource. |
> 00002f70 20 41 6c 6c 20 6f 74 68 65 72 0a 50 61 63 6b 65 | All other.Packe|
> 00002f80 74 44 61 74 61 53 6f 75 72 63 65 20 65 72 72 6f |tDataSource erro|
> 00002f90 72 73 20 61 72 65 20 69 67 6e 6f 72 65 64 20 61 |rs are ignored a|
> 00002fa0 6e 64 20 64 69 73 63 61 72 64 65 64 2e 0a 3c 2f |nd discarded..</|
> 00002fb0 70 3e 0a 3c 70 72 65 3e 66 6f 72 20 70 61 63 6b |p>.<pre>for pack|
> 00002fc0 65 74 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b |et := range pack|
> 00002fd0 65 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 |etSource.Packets|
> 00002fe0 28 29 20 7b 0a 20 20 2e 2e 2e 0a 7d 0a 3c 2f 70 |() {. ....}.</p|
> 00002ff0 72 65 3e 0a 3c 68 33 20 69 64 3d 22 52 65 61 64 |re>.<h3 id="Read|
> 00003000 69 6e 67 5f 57 69 74 68 5f 4e 65 78 74 50 61 63 |ing_With_NextPac|
> 00003010 6b 65 74 5f 46 75 6e 63 74 69 6f 6e 22 3e 52 65 |ket_Function">Re|
> 00003020 61 64 69 6e 67 20 57 69 74 68 20 4e 65 78 74 50 |ading With NextP|
> 00003030 61 63 6b 65 74 20 46 75 6e 63 74 69 6f 6e 3c 2f |acket Function</|
> 00003040 68 33 3e 0a 3c 70 3e 0a 54 68 69 73 20 6d 65 74 |h3>.<p>.This met|
> 00003050 68 6f 64 20 69 73 20 74 68 65 20 6d 6f 73 74 20 |hod is the most |
> 00003060 66 6c 65 78 69 62 6c 65 2c 20 61 6e 64 20 65 78 |flexible, and ex|
> 00003070 70 6f 73 65 73 20 65 72 72 6f 72 73 20 74 68 61 |poses errors tha|
> 00003080 74 20 6d 61 79 20 62 65 0a 65 6e 63 6f 75 6e 74 |t may be.encount|
> 00003090 65 72 65 64 20 62 79 20 74 68 65 20 75 6e 64 65 |ered by the unde|
> 000030a0 72 6c 79 69 6e 67 20 50 61 63 6b 65 74 44 61 74 |rlying PacketDat|
> 000030b0 61 53 6f 75 72 63 65 2e 20 20 49 74 26 23 33 39 |aSource. It'|
> 000030c0 3b 73 20 61 6c 73 6f 20 74 68 65 20 66 61 73 74 |;s also the fast|
> 000030d0 65 73 74 0a 69 6e 20 61 20 74 69 67 68 74 20 6c |est.in a tight l|
> 000030e0 6f 6f 70 2c 20 73 69 6e 63 65 20 69 74 20 64 6f |oop, since it do|
> 000030f0 65 73 6e 26 23 33 39 3b 74 20 68 61 76 65 20 74 |esn't have t|
> 00003100 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 61 |he overhead of a|
> 00003110 20 63 68 61 6e 6e 65 6c 0a 72 65 61 64 2f 77 72 | channel.read/wr|
> 00003120 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 |ite. However, i|
> 00003130 74 20 72 65 71 75 69 72 65 73 20 74 68 65 20 75 |t requires the u|
> 00003140 73 65 72 20 74 6f 20 68 61 6e 64 6c 65 20 65 72 |ser to handle er|
> 00003150 72 6f 72 73 2c 20 6d 6f 73 74 0a 69 6d 70 6f 72 |rors, most.impor|
> 00003160 74 61 6e 74 6c 79 20 74 68 65 20 69 6f 2e 45 4f |tantly the io.EO|
> 00003170 46 20 65 72 72 6f 72 20 69 6e 20 63 61 73 65 73 |F error in cases|
> 00003180 20 77 68 65 72 65 20 70 61 63 6b 65 74 73 20 61 | where packets a|
> 00003190 72 65 20 62 65 69 6e 67 20 72 65 61 64 20 66 72 |re being read fr|
> 000031a0 6f 6d 0a 61 20 66 69 6c 65 2e 0a 3c 2f 70 3e 0a |om.a file..</p>.|
> 000031b0 3c 70 72 65 3e 66 6f 72 20 7b 0a 20 20 70 61 63 |<pre>for {. pac|
> 000031c0 6b 65 74 2c 20 65 72 72 20 3a 3d 20 70 61 63 6b |ket, err := pack|
> 000031d0 65 74 53 6f 75 72 63 65 2e 4e 65 78 74 50 61 63 |etSource.NextPac|
> 000031e0 6b 65 74 28 29 20 7b 0a 20 20 69 66 20 65 72 72 |ket() {. if err|
> 000031f0 20 3d 3d 20 69 6f 2e 45 4f 46 20 7b 0a 20 20 20 | == io.EOF {. |
> 00003200 20 62 72 65 61 6b 0a 20 20 7d 20 65 6c 73 65 20 | break. } else |
> 00003210 69 66 20 65 72 72 20 21 3d 20 6e 69 6c 20 7b 0a |if err != nil {.|
> 00003220 20 20 20 20 6c 6f 67 2e 50 72 69 6e 74 6c 6e 28 | log.Println(|
> 00003230 26 23 33 34 3b 45 72 72 6f 72 3a 26 23 33 34 3b |"Error:"|
> 00003240 2c 20 65 72 72 29 0a 20 20 20 20 63 6f 6e 74 69 |, err). conti|
> 00003250 6e 75 65 0a 20 20 7d 0a 20 20 68 61 6e 64 6c 65 |nue. }. handle|
> 00003260 50 61 63 6b 65 74 28 70 61 63 6b 65 74 29 20 20 |Packet(packet) |
> 00003270 2f 2f 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 |// Do something |
> 00003280 77 69 74 68 20 65 61 63 68 20 70 61 63 6b 65 74 |with each packet|
> 00003290 2e 0a 7d 0a 3c 2f 70 72 65 3e 0a 0a 0a 09 09 09 |..}.</pre>......|
> 000032a0 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a |................|
> 000032b0 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 3d |.........<h3 id=|
> 000032c0 22 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |"NewPacketSource|
> 000032d0 22 3e 66 75 6e 63 20 3c 61 20 68 72 65 66 3d 22 |">func <a href="|
> 000032e0 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e |/src/pkg/github.|
> 000032f0 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 |com/gconnell/gop|
> 00003300 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 6f 3f |acket/packet.go?|
> 00003310 73 3d 31 33 34 35 38 3a 31 33 35 33 34 23 4c 34 |s=13458:13534#L4|
> 00003320 33 32 22 3e 4e 65 77 50 61 63 6b 65 74 53 6f 75 |32">NewPacketSou|
> 00003330 72 63 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 |rce</a></h3>....|
> 00003340 09 3c 70 72 65 3e 66 75 6e 63 20 4e 65 77 50 61 |.<pre>func NewPa|
> 00003350 63 6b 65 74 53 6f 75 72 63 65 28 73 6f 75 72 63 |cketSource(sourc|
> 00003360 65 20 50 61 63 6b 65 74 44 61 74 61 53 6f 75 72 |e PacketDataSour|
> 00003370 63 65 2c 20 64 65 63 6f 64 65 72 20 44 65 63 6f |ce, decoder Deco|
> 00003380 64 65 72 29 20 2a 50 61 63 6b 65 74 53 6f 75 72 |der) *PacketSour|
> 00003390 63 65 3c 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e |ce</pre>.....<p>|
> 000033a0 0a 4e 65 77 50 61 63 6b 65 74 53 6f 75 72 63 65 |.NewPacketSource|
> 000033b0 20 63 72 65 61 74 65 73 20 61 20 70 61 63 6b 65 | creates a packe|
> 000033c0 74 20 64 61 74 61 20 73 6f 75 72 63 65 2e 0a 3c |t data source..<|
> 000033d0 2f 70 3e 0a 0a 09 09 09 09 0a 09 09 09 0a 0a 09 |/p>.............|
> 000033e0 09 09 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 |............<h3 |
> 000033f0 69 64 3d 22 50 61 63 6b 65 74 53 6f 75 72 63 65 |id="PacketSource|
> 00003400 2e 4e 65 78 74 50 61 63 6b 65 74 22 3e 66 75 6e |.NextPacket">fun|
> 00003410 63 20 28 2a 50 61 63 6b 65 74 53 6f 75 72 63 65 |c (*PacketSource|
> 00003420 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/|
> 00003430 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00003440 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00003450 2f 70 61 63 6b 65 74 2e 67 6f 3f 73 3d 31 33 37 |/packet.go?s=137|
> 00003460 33 33 3a 31 33 37 38 34 23 4c 34 34 31 22 3e 4e |33:13784#L441">N|
> 00003470 65 78 74 50 61 63 6b 65 74 3c 2f 61 3e 3c 2f 68 |extPacket</a></h|
> 00003480 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 |3>.....<pre>func|
> 00003490 20 28 70 20 2a 50 61 63 6b 65 74 53 6f 75 72 63 | (p *PacketSourc|
> 000034a0 65 29 20 4e 65 78 74 50 61 63 6b 65 74 28 29 20 |e) NextPacket() |
> 000034b0 28 50 61 63 6b 65 74 2c 20 65 72 72 6f 72 29 3c |(Packet, error)<|
> 000034c0 2f 70 72 65 3e 0a 09 09 09 09 3c 70 3e 0a 4e 65 |/pre>.....<p>.Ne|
> 000034d0 78 74 50 61 63 6b 65 74 20 72 65 74 75 72 6e 73 |xtPacket returns|
> 000034e0 20 74 68 65 20 6e 65 78 74 20 64 65 63 6f 64 65 | the next decode|
> 000034f0 64 20 70 61 63 6b 65 74 20 66 72 6f 6d 20 74 68 |d packet from th|
> 00003500 65 20 50 61 63 6b 65 74 53 6f 75 72 63 65 2e 20 |e PacketSource. |
> 00003510 20 4f 6e 20 65 72 72 6f 72 2c 0a 69 74 20 72 65 | On error,.it re|
> 00003520 74 75 72 6e 73 20 61 20 6e 69 6c 20 70 61 63 6b |turns a nil pack|
> 00003530 65 74 20 61 6e 64 20 61 20 6e 6f 6e 2d 6e 69 6c |et and a non-nil|
> 00003540 20 65 72 72 6f 72 2e 0a 3c 2f 70 3e 0a 0a 09 09 | error..</p>....|
> 00003550 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 00003560 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 63 |.....<h3 id="Pac|
> 00003570 6b 65 74 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 |ketSource.Packet|
> 00003580 73 22 3e 66 75 6e 63 20 28 2a 50 61 63 6b 65 74 |s">func (*Packet|
> 00003590 53 6f 75 72 63 65 29 20 3c 61 20 68 72 65 66 3d |Source) <a href=|
> 000035a0 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 62 |"/src/pkg/github|
> 000035b0 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f |.com/gconnell/go|
> 000035c0 70 61 63 6b 65 74 2f 70 61 63 6b 65 74 2e 67 6f |packet/packet.go|
> 000035d0 3f 73 3d 31 34 38 34 31 3a 31 34 38 38 35 23 4c |?s=14841:14885#L|
> 000035e0 34 37 35 22 3e 50 61 63 6b 65 74 73 3c 2f 61 3e |475">Packets</a>|
> 000035f0 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 72 65 3e 66 |</h3>.....<pre>f|
> 00003600 75 6e 63 20 28 70 20 2a 50 61 63 6b 65 74 53 6f |unc (p *PacketSo|
> 00003610 75 72 63 65 29 20 50 61 63 6b 65 74 73 28 29 20 |urce) Packets() |
> 00003620 63 68 61 6e 20 50 61 63 6b 65 74 3c 2f 70 72 65 |chan Packet</pre|
> 00003630 3e 0a 09 09 09 09 3c 70 3e 0a 50 61 63 6b 65 74 |>.....<p>.Packet|
> 00003640 73 20 72 65 74 75 72 6e 73 20 61 20 62 6c 6f 63 |s returns a bloc|
> 00003650 6b 69 6e 67 20 63 68 61 6e 6e 65 6c 20 6f 66 20 |king channel of |
> 00003660 70 61 63 6b 65 74 73 2c 20 61 6c 6c 6f 77 69 6e |packets, allowin|
> 00003670 67 20 65 61 73 79 20 69 74 65 72 61 74 69 6e 67 |g easy iterating|
> 00003680 20 6f 76 65 72 0a 70 61 63 6b 65 74 73 2e 20 20 | over.packets. |
> 00003690 50 61 63 6b 65 74 73 20 77 69 6c 6c 20 62 65 20 |Packets will be |
> 000036a0 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 72 |asynchronously r|
> 000036b0 65 61 64 20 69 6e 20 66 72 6f 6d 20 74 68 65 20 |ead in from the |
> 000036c0 75 6e 64 65 72 6c 79 69 6e 67 0a 50 61 63 6b 65 |underlying.Packe|
> 000036d0 74 44 61 74 61 53 6f 75 72 63 65 20 61 6e 64 20 |tDataSource and |
> 000036e0 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 72 |written to the r|
> 000036f0 65 74 75 72 6e 65 64 20 63 68 61 6e 6e 65 6c 2e |eturned channel.|
> 00003700 20 20 49 66 20 74 68 65 20 75 6e 64 65 72 6c 79 | If the underly|
> 00003710 69 6e 67 0a 50 61 63 6b 65 74 44 61 74 61 53 6f |ing.PacketDataSo|
> 00003720 75 72 63 65 20 72 65 74 75 72 6e 73 20 61 6e 20 |urce returns an |
> 00003730 69 6f 2e 45 4f 46 20 65 72 72 6f 72 2c 20 74 68 |io.EOF error, th|
> 00003740 65 20 63 68 61 6e 6e 65 6c 20 77 69 6c 6c 20 62 |e channel will b|
> 00003750 65 20 63 6c 6f 73 65 64 2e 0a 49 66 20 61 6e 79 |e closed..If any|
> 00003760 20 6f 74 68 65 72 20 65 72 72 6f 72 20 69 73 20 | other error is |
> 00003770 65 6e 63 6f 75 6e 74 65 72 65 64 2c 20 69 74 20 |encountered, it |
> 00003780 69 73 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e |is ignored..</p>|
> 00003790 0a 3c 70 72 65 3e 66 6f 72 20 70 61 63 6b 65 74 |.<pre>for packet|
> 000037a0 20 3a 3d 20 72 61 6e 67 65 20 70 61 63 6b 65 74 | := range packet|
> 000037b0 53 6f 75 72 63 65 2e 50 61 63 6b 65 74 73 28 29 |Source.Packets()|
> 000037c0 20 7b 0a 20 20 68 61 6e 64 6c 65 50 61 63 6b 65 | {. handlePacke|
> 000037d0 74 28 70 61 63 6b 65 74 29 20 20 2f 2f 20 44 6f |t(packet) // Do|
> 000037e0 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 | something with |
> 000037f0 65 61 63 68 20 70 61 63 6b 65 74 2e 0a 7d 0a 3c |each packet..}.<|
> 00003800 2f 70 72 65 3e 0a 0a 09 09 09 09 0a 09 09 09 09 |/pre>...........|
> 00003810 0a 09 09 09 0a 09 09 0a 09 09 09 0a 09 09 09 0a |................|
> 00003820 09 09 09 3c 68 32 20 69 64 3d 22 50 61 79 6c 6f |...<h2 id="Paylo|
> 00003830 61 64 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |ad">type <a href|
> 00003840 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 00003850 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 00003860 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f |opacket/base.go?|
> 00003870 73 3d 31 31 32 30 3a 31 31 35 36 23 4c 32 31 22 |s=1120:1156#L21"|
> 00003880 3e 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 32 |>Payload</a></h2|
> 00003890 3e 0a 09 09 09 3c 70 72 65 3e 74 79 70 65 20 50 |>....<pre>type P|
> 000038a0 61 79 6c 6f 61 64 20 73 74 72 75 63 74 20 7b 0a |ayload struct {.|
> 000038b0 20 20 20 20 44 61 74 61 20 5b 5d 62 79 74 65 0a | Data []byte.|
> 000038c0 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c 70 3e 0a 50 |}</pre>....<p>.P|
> 000038d0 61 79 6c 6f 61 64 20 69 73 20 61 20 4c 61 79 65 |ayload is a Laye|
> 000038e0 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 |r containing the|
> 000038f0 20 70 61 79 6c 6f 61 64 20 6f 66 20 61 20 70 61 | payload of a pa|
> 00003900 63 6b 65 74 2e 20 20 54 68 65 20 64 65 66 69 6e |cket. The defin|
> 00003910 69 74 69 6f 6e 20 6f 66 0a 77 68 61 74 20 63 6f |ition of.what co|
> 00003920 6e 73 74 69 74 75 74 65 73 20 74 68 65 20 70 61 |nstitutes the pa|
> 00003930 79 6c 6f 61 64 20 6f 66 20 61 20 70 61 63 6b 65 |yload of a packe|
> 00003940 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 70 72 65 |t depends on pre|
> 00003950 76 69 6f 75 73 20 6c 61 79 65 72 73 3b 20 66 6f |vious layers; fo|
> 00003960 72 0a 54 43 50 20 61 6e 64 20 55 44 50 2c 20 77 |r.TCP and UDP, w|
> 00003970 65 20 73 74 6f 70 20 64 65 63 6f 64 69 6e 67 20 |e stop decoding |
> 00003980 61 62 6f 76 65 20 6c 61 79 65 72 20 34 20 61 6e |above layer 4 an|
> 00003990 64 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 6d |d return the rem|
> 000039a0 61 69 6e 69 6e 67 0a 62 79 74 65 73 20 61 73 20 |aining.bytes as |
> 000039b0 61 20 50 61 79 6c 6f 61 64 2e 20 20 50 61 79 6c |a Payload. Payl|
> 000039c0 6f 61 64 20 69 73 20 61 6e 20 41 70 70 6c 69 63 |oad is an Applic|
> 000039d0 61 74 69 6f 6e 4c 61 79 65 72 2e 0a 3c 2f 70 3e |ationLayer..</p>|
> 000039e0 0a 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 09 |................|
> 000039f0 0a 0a 09 09 09 0a 0a 09 09 09 0a 09 09 09 09 0a |................|
> 00003a00 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 79 6c |....<h3 id="Payl|
> 00003a10 6f 61 64 2e 4c 61 79 65 72 43 6f 6e 74 65 6e 74 |oad.LayerContent|
> 00003a20 73 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 |s">func (*Payloa|
> 00003a30 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |d) <a href="/src|
> 00003a40 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003a50 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003a60 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 32 36 35 |t/base.go?s=1265|
> 00003a70 3a 31 33 30 35 23 4c 32 37 22 3e 4c 61 79 65 72 |:1305#L27">Layer|
> 00003a80 43 6f 6e 74 65 6e 74 73 3c 2f 61 3e 3c 2f 68 33 |Contents</a></h3|
> 00003a90 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 00003aa0 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 |(p *Payload) Lay|
> 00003ab0 65 72 43 6f 6e 74 65 6e 74 73 28 29 20 5b 5d 62 |erContents() []b|
> 00003ac0 79 74 65 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 |yte</pre>.......|
> 00003ad0 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 |................|
> 00003ae0 09 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 |......<h3 id="Pa|
> 00003af0 79 6c 6f 61 64 2e 4c 61 79 65 72 50 61 79 6c 6f |yload.LayerPaylo|
> 00003b00 61 64 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f |ad">func (*Paylo|
> 00003b10 61 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 |ad) <a href="/sr|
> 00003b20 63 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d |c/pkg/github.com|
> 00003b30 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b |/gconnell/gopack|
> 00003b40 65 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 33 32 |et/base.go?s=132|
> 00003b50 34 3a 31 33 36 33 23 4c 32 38 22 3e 4c 61 79 65 |4:1363#L28">Laye|
> 00003b60 72 50 61 79 6c 6f 61 64 3c 2f 61 3e 3c 2f 68 33 |rPayload</a></h3|
> 00003b70 3e 0a 09 09 09 09 3c 70 72 65 3e 66 75 6e 63 20 |>.....<pre>func |
> 00003b80 28 70 20 2a 50 61 79 6c 6f 61 64 29 20 4c 61 79 |(p *Payload) Lay|
> 00003b90 65 72 50 61 79 6c 6f 61 64 28 29 20 5b 5d 62 79 |erPayload() []by|
> 00003ba0 74 65 3c 2f 70 72 65 3e 0a 09 09 09 09 0a 09 09 |te</pre>........|
> 00003bb0 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 09 09 |................|
> 00003bc0 0a 09 09 09 09 3c 68 33 20 69 64 3d 22 50 61 79 |.....<h3 id="Pay|
> 00003bd0 6c 6f 61 64 2e 4c 61 79 65 72 54 79 70 65 22 3e |load.LayerType">|
> 00003be0 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 29 20 |func (*Payload) |
> 00003bf0 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f 70 6b |<a href="/src/pk|
> 00003c00 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 63 6f |g/github.com/gco|
> 00003c10 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 2f 62 |nnell/gopacket/b|
> 00003c20 61 73 65 2e 67 6f 3f 73 3d 31 31 39 36 3a 31 32 |ase.go?s=1196:12|
> 00003c30 33 35 23 4c 32 36 22 3e 4c 61 79 65 72 54 79 70 |35#L26">LayerTyp|
> 00003c40 65 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c |e</a></h3>.....<|
> 00003c50 70 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 |pre>func (p *Pay|
> 00003c60 6c 6f 61 64 29 20 4c 61 79 65 72 54 79 70 65 28 |load) LayerType(|
> 00003c70 29 20 4c 61 79 65 72 54 79 70 65 3c 2f 70 72 65 |) LayerType</pre|
> 00003c80 3e 0a 09 09 09 09 3c 70 3e 0a 4c 61 79 65 72 54 |>.....<p>.LayerT|
> 00003c90 79 70 65 20 72 65 74 75 72 6e 73 20 4c 61 79 65 |ype returns Laye|
> 00003ca0 72 54 79 70 65 50 61 79 6c 6f 61 64 0a 3c 2f 70 |rTypePayload.</p|
> 00003cb0 3e 0a 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |>...............|
> 00003cc0 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00003cd0 3d 22 50 61 79 6c 6f 61 64 2e 50 61 79 6c 6f 61 |="Payload.Payloa|
> 00003ce0 64 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 |d">func (*Payloa|
> 00003cf0 64 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 |d) <a href="/src|
> 00003d00 2f 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f |/pkg/github.com/|
> 00003d10 67 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 |gconnell/gopacke|
> 00003d20 74 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 33 38 30 |t/base.go?s=1380|
> 00003d30 3a 31 34 31 34 23 4c 32 39 22 3e 50 61 79 6c 6f |:1414#L29">Paylo|
> 00003d40 61 64 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 |ad</a></h3>.....|
> 00003d50 3c 70 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 |<pre>func (p *Pa|
> 00003d60 79 6c 6f 61 64 29 20 50 61 79 6c 6f 61 64 28 29 |yload) Payload()|
> 00003d70 20 5b 5d 62 79 74 65 3c 2f 70 72 65 3e 0a 09 09 | []byte</pre>...|
> 00003d80 09 09 0a 09 09 09 09 0a 09 09 09 09 0a 09 09 09 |................|
> 00003d90 0a 09 09 09 09 0a 09 09 09 09 3c 68 33 20 69 64 |..........<h3 id|
> 00003da0 3d 22 50 61 79 6c 6f 61 64 2e 53 74 72 69 6e 67 |="Payload.String|
> 00003db0 22 3e 66 75 6e 63 20 28 2a 50 61 79 6c 6f 61 64 |">func (*Payload|
> 00003dc0 29 20 3c 61 20 68 72 65 66 3d 22 2f 73 72 63 2f |) <a href="/src/|
> 00003dd0 70 6b 67 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 67 |pkg/github.com/g|
> 00003de0 63 6f 6e 6e 65 6c 6c 2f 67 6f 70 61 63 6b 65 74 |connell/gopacket|
> 00003df0 2f 62 61 73 65 2e 67 6f 3f 73 3d 31 34 33 39 3a |/base.go?s=1439:|
> 00003e00 31 34 37 32 23 4c 33 30 22 3e 53 74 72 69 6e 67 |1472#L30">String|
> 00003e10 3c 2f 61 3e 3c 2f 68 33 3e 0a 09 09 09 09 3c 70 |</a></h3>.....<p|
> 00003e20 72 65 3e 66 75 6e 63 20 28 70 20 2a 50 61 79 6c |re>func (p *Payl|
> 00003e30 6f 61 64 29 20 53 74 72 69 6e 67 28 29 20 73 74 |oad) String() st|
> 00003e40 72 69 6e 67 3c 2f 70 72 65 3e 0a 09 09 09 09 0a |ring</pre>......|
> 00003e50 09 09 09 09 0a 09 09 09 09 0a 09 09 09 0a 09 09 |................|
> 00003e60 0a 09 09 09 0a 09 09 09 0a 09 09 09 3c 68 32 20 |............<h2 |
> 00003e70 69 64 3d 22 54 72 61 6e 73 70 6f 72 74 4c 61 79 |id="TransportLay|
> 00003e80 65 72 22 3e 74 79 70 65 20 3c 61 20 68 72 65 66 |er">type <a href|
> 00003e90 3d 22 2f 73 72 63 2f 70 6b 67 2f 67 69 74 68 75 |="/src/pkg/githu|
> 00003ea0 62 2e 63 6f 6d 2f 67 63 6f 6e 6e 65 6c 6c 2f 67 |b.com/gconnell/g|
> 00003eb0 6f 70 61 63 6b 65 74 2f 62 61 73 65 2e 67 6f 3f |opacket/base.go?|
> 00003ec0 73 3d 32 30 31 30 3a 32 30 37 32 23 4c 35 30 22 |s=2010:2072#L50"|
> 00003ed0 3e 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 72 3c |>TransportLayer<|
> 00003ee0 2f 61 3e 3c 2f 68 32 3e 0a 09 09 09 3c 70 72 65 |/a></h2>....<pre|
> 00003ef0 3e 74 79 70 65 20 54 72 61 6e 73 70 6f 72 74 4c |>type TransportL|
> 00003f00 61 79 65 72 20 69 6e 74 65 72 66 61 63 65 20 7b |ayer interface {|
> 00003f10 0a 20 20 20 20 4c 61 79 65 72 0a 20 20 20 20 54 |. Layer. T|
> 00003f20 72 61 6e 73 70 6f 72 74 46 6c 6f 77 28 29 20 46 |ransportFlow() F|
> 00003f30 6c 6f 77 0a 7d 3c 2f 70 72 65 3e 0a 09 09 09 3c |low.}</pre>....<|
> 00003f40 70 3e 0a 54 72 61 6e 73 70 6f 72 74 4c 61 79 65 |p>.TransportLaye|
> 00003f50 72 20 69 73 20 74 68 65 20 70 61 63 6b 65 74 20 |r is the packet |
> 00003f60 6c 61 79 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 |layer correspond|
> 00003f70 69 6e 67 20 74 6f 20 74 68 65 20 54 43 50 2f 49 |ing to the TCP/I|
> 00003f80 50 20 6c 61 79 65 72 20 33 20 28 4f 53 49 0a 6c |P layer 3 (OSI.l|
> 00003f90 61 79 65 72 20 34 29 0a 3c 2f 70 3e 0a 0a 0a 09 |ayer 4).</p>....|
> 00003fa0 09 09 0a 0a 09 09 09 0a 0a 09 09 09 0a 0a 09 09 |................|
> 00003fb0 09 0a 0a 09 09 09 0a 09 |........|
>
> pcap_test.go:110: -- FULL PACKET DATA (1006 bytes) ------------------------------------
> 00000000 1e 00 00 00 60 01 88 91 03 c2 06 40 00 00 00 00 |....`...... 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> |
> 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=[] SrcPort=44644 DstPort=80(http) Seq=2471086201 Ack=4188542962 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=229 Checksum=26122 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819632/57936131 0x3d8f93b003740903)] Padding=[]}
> 00000000 ae 64 00 50 93 49 c8 79 f9 a8 17 f2 80 10 00 e5 |.d.P.I.y........|
> 00000010 66 0a 00 00 01 01 08 0a 3d 8f 93 b0 03 74 09 03 |f.......=....t..|
>
> pcap_test.go:110: -- FULL PACKET DATA (421 bytes) ------------------------------------
> 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.|
> 00000010 01 97 1e da 40 00 40 06 04 83 0a 01 01 01 0a 01 |.... at .@.........|
> 00000020 01 02 00 50 ae 64 f9 a8 17 f2 93 49 c8 79 80 19 |...P.d.....I.y..|
> 00000030 01 6a 92 5f 00 00 01 01 08 0a 03 74 09 03 3d 8f |.j._.......t..=.|
> 00000040 93 b0 53 65 72 76 65 72 3a 20 47 6f 41 68 65 61 |..Server: GoAhea|
> 00000050 64 2d 57 65 62 73 0d 0a 44 61 74 65 3a 20 57 65 |d-Webs..Date: We|
> 00000060 64 20 44 65 63 20 31 33 20 31 35 3a 32 39 3a 30 |d Dec 13 15:29:0|
> 00000070 30 20 32 30 31 37 0d 0a 50 72 61 67 6d 61 3a 20 |0 2017..Pragma: |
> 00000080 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d |no-cache..Cache-|
> 00000090 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 |Control: no-cach|
> 000000a0 65 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a |e..Content-Type:|
> 000000b0 20 74 65 78 74 2f 68 74 6d 6c 0d 0a 4c 6f 63 61 | text/html..Loca|
> 000000c0 74 69 6f 6e 3a 20 68 74 74 70 3a 2f 2f 31 30 2e |tion: http://10.|
> 000000d0 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 70 0d |1.1.1/login.asp.|
> 000000e0 0a 0d 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c |...<html><head><|
> 000000f0 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0d 0a 09 09 |/head><body>....|
> 00000100 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 68 61 |This document ha|
> 00000110 73 20 6d 6f 76 65 64 20 74 6f 20 61 20 6e 65 77 |s moved to a new|
> 00000120 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f | <a href="http:/|
> 00000130 2f 31 30 2e 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e |/10.1.1.1/login.|
> 00000140 61 73 70 22 3e 6c 6f 63 61 74 69 6f 6e 3c 2f 61 |asp">location</a|
> 00000150 3e 2e 0d 0a 09 09 50 6c 65 61 73 65 20 75 70 64 |>.....Please upd|
> 00000160 61 74 65 20 79 6f 75 72 20 64 6f 63 75 6d 65 6e |ate your documen|
> 00000170 74 73 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 |ts to reflect th|
> 00000180 65 20 6e 65 77 20 6c 6f 63 61 74 69 6f 6e 2e 0d |e new location..|
> 00000190 0a 09 09 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c |...</body></html|
> 000001a0 3e 0d 0a 0d 0a |>....|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..407..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0}
> 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..387..] Version=4 IHL=5 TOS=0 Length=407 Id=7898 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1155 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]}
> 00000000 45 00 01 97 1e da 40 00 40 06 04 83 0a 01 01 01 |E..... at .@.......|
> 00000010 0a 01 01 02 |....|
> --- Layer 3 ---
> TCP {Contents=[..32..] Payload=[..355..] SrcPort=80(http) DstPort=44644 Seq=4188542962 Ack=2471086201 DataOffset=8 FIN=true SYN=false RST=false PSH=true ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=37471 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819632 0x037409033d8f93b0)] Padding=[]}
> 00000000 00 50 ae 64 f9 a8 17 f2 93 49 c8 79 80 19 01 6a |.P.d.....I.y...j|
> 00000010 92 5f 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b0 |._.......t..=...|
> --- Layer 4 ---
> Payload 355 byte(s)
> 00000000 53 65 72 76 65 72 3a 20 47 6f 41 68 65 61 64 2d |Server: GoAhead-|
> 00000010 57 65 62 73 0d 0a 44 61 74 65 3a 20 57 65 64 20 |Webs..Date: Wed |
> 00000020 44 65 63 20 31 33 20 31 35 3a 32 39 3a 30 30 20 |Dec 13 15:29:00 |
> 00000030 32 30 31 37 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f |2017..Pragma: no|
> 00000040 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f |-cache..Cache-Co|
> 00000050 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d |ntrol: no-cache.|
> 00000060 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 |.Content-Type: t|
> 00000070 65 78 74 2f 68 74 6d 6c 0d 0a 4c 6f 63 61 74 69 |ext/html..Locati|
> 00000080 6f 6e 3a 20 68 74 74 70 3a 2f 2f 31 30 2e 31 2e |on: http://10.1.|
> 00000090 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 70 0d 0a 0d |1.1/login.asp...|
> 000000a0 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 2f 68 |.<html><head></h|
> 000000b0 65 61 64 3e 3c 62 6f 64 79 3e 0d 0a 09 09 54 68 |ead><body>....Th|
> 000000c0 69 73 20 64 6f 63 75 6d 65 6e 74 20 68 61 73 20 |is document has |
> 000000d0 6d 6f 76 65 64 20 74 6f 20 61 20 6e 65 77 20 3c |moved to a new <|
> 000000e0 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 31 |a href="http://1|
> 000000f0 30 2e 31 2e 31 2e 31 2f 6c 6f 67 69 6e 2e 61 73 |0.1.1.1/login.as|
> 00000100 70 22 3e 6c 6f 63 61 74 69 6f 6e 3c 2f 61 3e 2e |p">location</a>.|
> 00000110 0d 0a 09 09 50 6c 65 61 73 65 20 75 70 64 61 74 |....Please updat|
> 00000120 65 20 79 6f 75 72 20 64 6f 63 75 6d 65 6e 74 73 |e your documents|
> 00000130 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65 20 | to reflect the |
> 00000140 6e 65 77 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 09 |new location....|
> 00000150 09 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 0d |.</body></html>.|
> 00000160 0a 0d 0a |...|
>
> pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------
> 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 45 00 |.9:..*Xm......E.|
> 00000010 00 34 5b a3 40 00 40 06 c9 1c 0a 01 01 02 0a 01 |.4[. at .@.........|
> 00000020 01 01 ae 64 00 50 93 49 c8 79 f9 a8 19 56 80 11 |...d.P.I.y...V..|
> 00000030 00 ed 64 9c 00 00 01 01 08 0a 3d 8f 93 b1 03 74 |..d.......=....t|
> 00000040 09 03 |..|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=58:6d:8f:99:ec:a8 DstMAC=c4:39:3a:02:a9:2a EthernetType=IPv4 Length=0}
> 00000000 c4 39 3a 02 a9 2a 58 6d 8f 99 ec a8 08 00 |.9:..*Xm......|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=23459 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=51484 SrcIP=10.1.1.2 DstIP=10.1.1.1 Options=[] Padding=[]}
> 00000000 45 00 00 34 5b a3 40 00 40 06 c9 1c 0a 01 01 02 |E..4[. at .@.......|
> 00000010 0a 01 01 01 |....|
> --- Layer 3 ---
> TCP {Contents=[..32..] Payload=[] SrcPort=44644 DstPort=80(http) Seq=2471086201 Ack=4188543318 DataOffset=8 FIN=true SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=237 Checksum=25756 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:1032819633/57936131 0x3d8f93b103740903)] Padding=[]}
> 00000000 ae 64 00 50 93 49 c8 79 f9 a8 19 56 80 11 00 ed |.d.P.I.y...V....|
> 00000010 64 9c 00 00 01 01 08 0a 3d 8f 93 b1 03 74 09 03 |d.......=....t..|
>
> pcap_test.go:110: -- FULL PACKET DATA (66 bytes) ------------------------------------
> 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 45 00 |Xm.....9:..*..E.|
> 00000010 00 34 1e db 40 00 40 06 05 e5 0a 01 01 01 0a 01 |.4.. at .@.........|
> 00000020 01 02 00 50 ae 64 f9 a8 19 56 93 49 c8 7a 80 10 |...P.d...V.I.z..|
> 00000030 01 6a 64 1f 00 00 01 01 08 0a 03 74 09 03 3d 8f |.jd........t..=.|
> 00000040 93 b1 |..|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..52..] SrcMAC=c4:39:3a:02:a9:2a DstMAC=58:6d:8f:99:ec:a8 EthernetType=IPv4 Length=0}
> 00000000 58 6d 8f 99 ec a8 c4 39 3a 02 a9 2a 08 00 |Xm.....9:..*..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..32..] Version=4 IHL=5 TOS=0 Length=52 Id=7899 Flags=DF FragOffset=0 TTL=64 Protocol=TCP Checksum=1509 SrcIP=10.1.1.1 DstIP=10.1.1.2 Options=[] Padding=[]}
> 00000000 45 00 00 34 1e db 40 00 40 06 05 e5 0a 01 01 01 |E..4.. at .@.......|
> 00000010 0a 01 01 02 |....|
> --- Layer 3 ---
> TCP {Contents=[..32..] Payload=[] SrcPort=80(http) DstPort=44644 Seq=4188543318 Ack=2471086202 DataOffset=8 FIN=false SYN=false RST=false PSH=false ACK=true URG=false ECE=false CWR=false NS=false Window=362 Checksum=25631 Urgent=0 Options=[TCPOption(NOP:), TCPOption(NOP:), TCPOption(Timestamps:57936131/1032819633 0x037409033d8f93b1)] Padding=[]}
> 00000000 00 50 ae 64 f9 a8 19 56 93 49 c8 7a 80 10 01 6a |.P.d...V.I.z...j|
> 00000010 64 1f 00 00 01 01 08 0a 03 74 09 03 3d 8f 93 b1 |d........t..=...|
>
> pcap_test.go:86:
>
>
>
> Processing file test_dns.pcap
>
>
>
> pcap_test.go:110: -- FULL PACKET DATA (82 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 44 89 c4 00 00 38 11 2f 3d 6d c2 a0 04 5f d3 |.D....8./=m..._.|
> 00000020 5c 0e e1 a6 00 35 00 30 a5 97 f6 18 00 10 00 01 |\....5.0........|
> 00000030 00 00 00 00 00 01 08 70 69 63 73 6c 69 66 65 02 |.......picslife.|
> 00000040 72 75 00 00 01 00 01 00 00 29 10 00 00 00 80 00 |ru.......)......|
> 00000050 00 00 |..|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..68..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..48..] Version=4 IHL=5 TOS=0 Length=68 Id=35268 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=12093 SrcIP=109.194.160.4 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 44 89 c4 00 00 38 11 2f 3d 6d c2 a0 04 |E..D....8./=m...|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..40..] SrcPort=57766 DstPort=53(domain) Length=48 Checksum=42391}
> 00000000 e1 a6 00 35 00 30 a5 97 |...5.0..|
> --- Layer 4 ---
> DNS {Contents=[..40..] Payload=[] ID=63000 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..11..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 f6 18 00 10 00 01 00 00 00 00 00 01 08 70 69 63 |.............pic|
> 00000010 73 6c 69 66 65 02 72 75 00 00 01 00 01 00 00 29 |slife.ru.......)|
> 00000020 10 00 00 00 80 00 00 00 |........|
>
> pcap_test.go:110: -- FULL PACKET DATA (78 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 40 5e 9a 00 00 3a 11 78 f2 6d 3c 80 02 5f d3 |.@^...:.x.m<.._.|
> 00000020 5c 0f ef d4 00 35 00 2c b2 1b b2 73 00 00 00 01 |\....5.,...s....|
> 00000030 00 00 00 00 00 00 07 66 69 6e 61 6e 63 65 07 76 |.......finance.v|
> 00000040 74 6f 6d 73 6b 65 02 72 75 00 00 01 00 01 |tomske.ru.....|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..64..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..44..] Version=4 IHL=5 TOS=0 Length=64 Id=24218 Flags= FragOffset=0 TTL=58 Protocol=UDP Checksum=30962 SrcIP=109.60.128.2 DstIP=95.211.92.15 Options=[] Padding=[]}
> 00000000 45 00 00 40 5e 9a 00 00 3a 11 78 f2 6d 3c 80 02 |E..@^...:.x.m<..|
> 00000010 5f d3 5c 0f |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..36..] SrcPort=61396 DstPort=53(domain) Length=44 Checksum=45595}
> 00000000 ef d4 00 35 00 2c b2 1b |...5.,..|
> --- Layer 4 ---
> DNS {Contents=[..36..] Payload=[] ID=45683 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..18..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[]}
> 00000000 b2 73 00 00 00 01 00 00 00 00 00 00 07 66 69 6e |.s...........fin|
> 00000010 61 6e 63 65 07 76 74 6f 6d 73 6b 65 02 72 75 00 |ance.vtomske.ru.|
> 00000020 00 01 00 01 |....|
>
> pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 4a 7a 1b 40 00 34 11 1f 4b d0 45 21 15 5f d3 |.Jz. at .4..K.E!._.|
> 00000020 5c 0f 4a 28 00 35 00 36 03 4f 30 6f 00 00 00 01 |\.J(.5.6.O0o....|
> 00000030 00 00 00 00 00 01 04 6d 61 69 6c 08 67 75 72 75 |.......mail.guru|
> 00000040 2d 6e 65 74 03 63 6f 6d 00 00 1c 00 01 00 00 29 |-net.com.......)|
> 00000050 05 82 00 00 00 00 00 00 |........|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..74..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..54..] Version=4 IHL=5 TOS=0 Length=74 Id=31259 Flags=DF FragOffset=0 TTL=52 Protocol=UDP Checksum=8011 SrcIP=208.69.33.21 DstIP=95.211.92.15 Options=[] Padding=[]}
> 00000000 45 00 00 4a 7a 1b 40 00 34 11 1f 4b d0 45 21 15 |E..Jz. at .4..K.E!.|
> 00000010 5f d3 5c 0f |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..46..] SrcPort=18984 DstPort=53(domain) Length=54 Checksum=847}
> 00000000 4a 28 00 35 00 36 03 4f |J(.5.6.O|
> --- Layer 4 ---
> DNS {Contents=[..46..] Payload=[] ID=12399 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..17..] Type=AAAA Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=0 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 30 6f 00 00 00 01 00 00 00 00 00 01 04 6d 61 69 |0o...........mai|
> 00000010 6c 08 67 75 72 75 2d 6e 65 74 03 63 6f 6d 00 00 |l.guru-net.com..|
> 00000020 1c 00 01 00 00 29 05 82 00 00 00 00 00 00 |.....)........|
>
> pcap_test.go:110: -- FULL PACKET DATA (67 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 35 f4 7d 40 00 38 11 e1 71 50 46 60 a1 5f d3 |.5.}@.8..qPF`._.|
> 00000020 5c 0e 49 60 00 35 00 21 15 25 d9 d0 00 00 00 01 |\.I`.5.!.%......|
> 00000030 00 00 00 00 00 00 04 78 61 67 65 02 72 75 00 00 |.......xage.ru..|
> 00000040 1c 00 01 |...|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..53..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..33..] Version=4 IHL=5 TOS=0 Length=53 Id=62589 Flags=DF FragOffset=0 TTL=56 Protocol=UDP Checksum=57713 SrcIP=80.70.96.161 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 35 f4 7d 40 00 38 11 e1 71 50 46 60 a1 |E..5.}@.8..qPF`.|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..25..] SrcPort=18784 DstPort=53(domain) Length=33 Checksum=5413}
> 00000000 49 60 00 35 00 21 15 25 |I`.5.!.%|
> --- Layer 4 ---
> DNS {Contents=[..25..] Payload=[] ID=55760 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..7..] Type=AAAA Class=IN}] Answers=[] Authorities=[] Additionals=[]}
> 00000000 d9 d0 00 00 00 01 00 00 00 00 00 00 04 78 61 67 |.............xag|
> 00000010 65 02 72 75 00 00 1c 00 01 |e.ru.....|
>
> pcap_test.go:110: -- FULL PACKET DATA (85 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 47 63 8f 00 00 38 11 1a c6 4d 25 fb 4a 5f d3 |.Gc...8...M%.J_.|
> 00000020 5c 0e 57 96 00 35 00 33 a3 22 37 a5 00 10 00 01 |\.W..5.3."7.....|
> 00000030 00 00 00 00 00 01 0b 6f 6b 6e 61 6b 6f 6e 73 61 |.......oknakonsa|
> 00000040 6c 74 02 72 75 00 00 01 00 01 00 00 29 10 00 00 |lt.ru.......)...|
> 00000050 00 80 00 00 00 |.....|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..71..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..51..] Version=4 IHL=5 TOS=0 Length=71 Id=25487 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=6854 SrcIP=77.37.251.74 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 47 63 8f 00 00 38 11 1a c6 4d 25 fb 4a |E..Gc...8...M%.J|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..43..] SrcPort=22422 DstPort=53(domain) Length=51 Checksum=41762}
> 00000000 57 96 00 35 00 33 a3 22 |W..5.3."|
> --- Layer 4 ---
> DNS {Contents=[..43..] Payload=[] ID=14245 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..14..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 37 a5 00 10 00 01 00 00 00 00 00 01 0b 6f 6b 6e |7............okn|
> 00000010 61 6b 6f 6e 73 61 6c 74 02 72 75 00 00 01 00 01 |akonsalt.ru.....|
> 00000020 00 00 29 10 00 00 00 80 00 00 00 |..)........|
>
> pcap_test.go:110: -- FULL PACKET DATA (80 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 42 48 af 00 00 35 11 03 be 25 09 58 54 5f d3 |.BH...5...%.XT_.|
> 00000020 5c 0e 14 b5 00 35 00 2e 0c 9f f7 c5 00 00 00 01 |\....5..........|
> 00000030 00 00 00 00 00 01 05 37 33 64 6f 6d 03 63 6f 6d |.......73dom.com|
> 00000040 00 00 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |.......)........|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..66..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..46..] Version=4 IHL=5 TOS=0 Length=66 Id=18607 Flags= FragOffset=0 TTL=53 Protocol=UDP Checksum=958 SrcIP=37.9.88.84 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 42 48 af 00 00 35 11 03 be 25 09 58 54 |E..BH...5...%.XT|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..38..] SrcPort=5301(hacl-gs) DstPort=53(domain) Length=46 Checksum=3231}
> 00000000 14 b5 00 35 00 2e 0c 9f |...5....|
> --- Layer 4 ---
> DNS {Contents=[..38..] Payload=[] ID=63429 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..9..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 f7 c5 00 00 00 01 00 00 00 00 00 01 05 37 33 64 |.............73d|
> 00000010 6f 6d 03 63 6f 6d 00 00 01 00 01 00 00 29 10 00 |om.com.......)..|
> 00000020 00 00 80 00 00 00 |......|
>
> pcap_test.go:110: -- FULL PACKET DATA (77 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 3f 5e 9b 00 00 3a 11 78 f2 6d 3c 80 02 5f d3 |.?^...:.x.m<.._.|
> 00000020 5c 0f 42 db 00 35 00 2b eb 84 ae d8 00 00 00 01 |\.B..5.+........|
> 00000030 00 00 00 00 00 00 06 70 6f 67 6f 64 61 07 76 74 |.......pogoda.vt|
> 00000040 6f 6d 73 6b 65 02 72 75 00 00 01 00 01 |omske.ru.....|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..63..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..43..] Version=4 IHL=5 TOS=0 Length=63 Id=24219 Flags= FragOffset=0 TTL=58 Protocol=UDP Checksum=30962 SrcIP=109.60.128.2 DstIP=95.211.92.15 Options=[] Padding=[]}
> 00000000 45 00 00 3f 5e 9b 00 00 3a 11 78 f2 6d 3c 80 02 |E..?^...:.x.m<..|
> 00000010 5f d3 5c 0f |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..35..] SrcPort=17115 DstPort=53(domain) Length=43 Checksum=60292}
> 00000000 42 db 00 35 00 2b eb 84 |B..5.+..|
> --- Layer 4 ---
> DNS {Contents=[..35..] Payload=[] ID=44760 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=0 Questions=[{Name=[..17..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[]}
> 00000000 ae d8 00 00 00 01 00 00 00 00 00 00 06 70 6f 67 |.............pog|
> 00000010 6f 64 61 07 76 74 6f 6d 73 6b 65 02 72 75 00 00 |oda.vtomske.ru..|
> 00000020 01 00 01 |...|
>
> pcap_test.go:110: -- FULL PACKET DATA (89 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 4b d4 46 00 00 36 11 2e f7 05 2d c0 56 5f d3 |.K.F..6....-.V_.|
> 00000020 5c 0e 14 b5 00 35 00 37 ea 4e 54 8c 00 00 00 01 |\....5.7.NT.....|
> 00000030 00 00 00 00 00 01 03 72 70 70 0b 6e 61 73 68 61 |.......rpp.nasha|
> 00000040 75 63 68 65 62 61 02 72 75 00 00 01 00 01 00 00 |ucheba.ru.......|
> 00000050 29 10 00 00 00 80 00 00 00 |)........|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..75..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..55..] Version=4 IHL=5 TOS=0 Length=75 Id=54342 Flags= FragOffset=0 TTL=54 Protocol=UDP Checksum=12023 SrcIP=5.45.192.86 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 4b d4 46 00 00 36 11 2e f7 05 2d c0 56 |E..K.F..6....-.V|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..47..] SrcPort=5301(hacl-gs) DstPort=53(domain) Length=55 Checksum=59982}
> 00000000 14 b5 00 35 00 37 ea 4e |...5.7.N|
> --- Layer 4 ---
> DNS {Contents=[..47..] Payload=[] ID=21644 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=0 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..18..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 54 8c 00 00 00 01 00 00 00 00 00 01 03 72 70 70 |T............rpp|
> 00000010 0b 6e 61 73 68 61 75 63 68 65 62 61 02 72 75 00 |.nashaucheba.ru.|
> 00000020 00 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |......)........|
>
> pcap_test.go:110: -- FULL PACKET DATA (88 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 4a 15 eb 00 00 51 11 9a 5c ad fc 4f 7e 5f d3 |.J....Q..\..O~_.|
> 00000020 5c 0e 55 00 00 35 00 36 63 cf f1 80 00 10 00 01 |\.U..5.6c.......|
> 00000030 00 00 00 00 00 01 04 6d 61 69 6c 08 79 61 72 69 |.......mail.yari|
> 00000040 73 76 65 74 03 63 6f 6d 00 00 01 00 01 00 00 29 |svet.com.......)|
> 00000050 10 00 00 00 80 00 00 00 |........|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..74..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..54..] Version=4 IHL=5 TOS=0 Length=74 Id=5611 Flags= FragOffset=0 TTL=81 Protocol=UDP Checksum=39516 SrcIP=173.252.79.126 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 4a 15 eb 00 00 51 11 9a 5c ad fc 4f 7e |E..J....Q..\..O~|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..46..] SrcPort=21760 DstPort=53(domain) Length=54 Checksum=25551}
> 00000000 55 00 00 35 00 36 63 cf |U..5.6c.|
> --- Layer 4 ---
> DNS {Contents=[..46..] Payload=[] ID=61824 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..17..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 f1 80 00 10 00 01 00 00 00 00 00 01 04 6d 61 69 |.............mai|
> 00000010 6c 08 79 61 72 69 73 76 65 74 03 63 6f 6d 00 00 |l.yarisvet.com..|
> 00000020 01 00 01 00 00 29 10 00 00 00 80 00 00 00 |.....)........|
>
> pcap_test.go:110: -- FULL PACKET DATA (83 bytes) ------------------------------------
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 45 00 |."..~"..5.. at ..E.|
> 00000010 00 45 c7 ef 00 00 38 11 f6 cb c2 09 46 02 5f d3 |.E....8.....F._.|
> 00000020 5c 0e dd f2 00 35 00 31 5a 23 8e 36 00 10 00 01 |\....5.1Z#.6....|
> 00000030 00 00 00 00 00 01 09 6b 75 6b 6c 61 7a 69 6e 65 |.......kuklazine|
> 00000040 02 72 75 00 00 01 00 01 00 00 29 10 00 00 00 80 |.ru.......).....|
> 00000050 00 00 00 |...|
> --- Layer 1 ---
> Ethernet {Contents=[..14..] Payload=[..69..] SrcMAC=00:0f:35:bb:0b:40 DstMAC=00:22:19:b6:7e:22 EthernetType=IPv4 Length=0}
> 00000000 00 22 19 b6 7e 22 00 0f 35 bb 0b 40 08 00 |."..~"..5.. at ..|
> --- Layer 2 ---
> IPv4 {Contents=[..20..] Payload=[..49..] Version=4 IHL=5 TOS=0 Length=69 Id=51183 Flags= FragOffset=0 TTL=56 Protocol=UDP Checksum=63179 SrcIP=194.9.70.2 DstIP=95.211.92.14 Options=[] Padding=[]}
> 00000000 45 00 00 45 c7 ef 00 00 38 11 f6 cb c2 09 46 02 |E..E....8.....F.|
> 00000010 5f d3 5c 0e |_.\.|
> --- Layer 3 ---
> UDP {Contents=[..8..] Payload=[..41..] SrcPort=56818 DstPort=53(domain) Length=49 Checksum=23075}
> 00000000 dd f2 00 35 00 31 5a 23 |...5.1Z#|
> --- Layer 4 ---
> DNS {Contents=[..41..] Payload=[] ID=36406 QR=false OpCode=Query AA=false TC=false RD=false RA=false Z=1 ResponseCode=No Error QDCount=1 ANCount=0 NSCount=0 ARCount=1 Questions=[{Name=[..12..] Type=A Class=IN}] Answers=[] Authorities=[] Additionals=[{Name=[] Type=OPT Class=Unknown TTL=32768 DataLength=0 Data=[] IP=<nil> NS=[] CNAME=[] PTR=[] TXTs=[] SOA={ MName=[] RName=[] Serial=0 Refresh=0 Retry=0 Expire=0 Minimum=0} SRV={ Priority=0 Weight=0 Port=0 Name=[]} MX={ Preference=0 Name=[]} OPT=[] URI={ Priority=0 Weight=0 Target=[]} TXT=[]}]}
> 00000000 8e 36 00 10 00 01 00 00 00 00 00 01 09 6b 75 6b |.6...........kuk|
> 00000010 6c 61 7a 69 6e 65 02 72 75 00 00 01 00 01 00 00 |lazine.ru.......|
> 00000020 29 10 00 00 00 80 00 00 00 |)........|
>
> pcap_test.go:86:
>
>
>
> Processing file /tmp/invalid.pcap1248935563
>
>
>
> --- PASS: TestPcapFileRead (0.02s)
> === RUN TestBPF
> pcap_test.go:141: Testing filter foobar
> pcap_test.go:141: Testing filter tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)
> pcap_test.go:141: Testing filter tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack
> pcap_test.go:141: Testing filter udp
> pcap_test.go:141: Testing filter udp
> --- PASS: TestBPF (0.00s)
> === RUN TestBPFInstruction
> pcap_test.go:231: Testing BpfInstruction filter 1
> pcap_test.go:243: Testing dead bpf filter 1
> pcap_test.go:231: Testing BpfInstruction filter 2
> pcap_test.go:243: Testing dead bpf filter 2
> pcap_test.go:231: Testing BpfInstruction filter 3
> pcap_test.go:243: Testing dead bpf filter 3
> pcap_test.go:231: Testing BpfInstruction filter 4
> pcap_test.go:243: Testing dead bpf filter 4
> pcap_test.go:256: expected instruction 1 = {21 0 5 34525}, got {21 0 2 2048}
> pcap_test.go:256: expected instruction 2 = {48 0 0 20}, got {48 0 0 23}
> pcap_test.go:256: expected instruction 3 = {21 6 0 17}, got {21 6 7 17}
> pcap_test.go:256: expected instruction 4 = {21 0 6 44}, got {21 0 6 34525}
> pcap_test.go:256: expected instruction 5 = {48 0 0 54}, got {48 0 0 20}
> pcap_test.go:256: expected instruction 6 = {21 3 4 17}, got {21 3 0 17}
> pcap_test.go:256: expected instruction 7 = {21 0 3 2048}, got {21 0 3 44}
> pcap_test.go:256: expected instruction 8 = {48 0 0 23}, got {48 0 0 54}
> pcap_test.go:231: Testing BpfInstruction filter 5
> --- FAIL: TestBPFInstruction (0.00s)
> === RUN TestPCAPGoWrite
> --- PASS: TestPCAPGoWrite (0.00s)
> === RUN TestPCAPGoNgWrite
> --- PASS: TestPCAPGoNgWrite (0.00s)
> === RUN ExampleBPF
> --- PASS: ExampleBPF (0.00s)
> FAIL
> FAIL github.com/google/gopacket/pcap 0.027s
> === RUN TestNgFileReadBE
> --- PASS: TestNgFileReadBE (0.00s)
> === RUN TestNgFileReadLE
> --- PASS: TestNgFileReadLE (0.00s)
> === RUN TestNgFileReadBEZero
> --- PASS: TestNgFileReadBEZero (0.00s)
> === RUN TestNgFileReadLEZero
> --- PASS: TestNgFileReadLEZero (0.00s)
> === RUN TestNgWriteSimple
> --- PASS: TestNgWriteSimple (0.00s)
> === RUN TestNgWriteComplex
> --- PASS: TestNgWriteComplex (0.00s)
> === RUN TestCreatePcapReader
> --- PASS: TestCreatePcapReader (0.00s)
> === RUN TestCreatePcapReaderBigEndian
> --- PASS: TestCreatePcapReaderBigEndian (0.00s)
> === RUN TestCreatePcapReaderFail
> --- PASS: TestCreatePcapReaderFail (0.00s)
> === RUN TestPacket
> --- PASS: TestPacket (0.00s)
> === RUN TestPacketNano
> --- PASS: TestPacketNano (0.00s)
> === RUN TestGzipPacket
> --- PASS: TestGzipPacket (0.00s)
> === RUN TestTruncatedGzipPacket
> --- PASS: TestTruncatedGzipPacket (0.00s)
> === RUN TestPacketBufferReuse
> --- PASS: TestPacketBufferReuse (0.00s)
> === RUN TestPacketZeroCopy
> --- PASS: TestPacketZeroCopy (0.00s)
> === RUN TestReadHeader
> --- PASS: TestReadHeader (0.00s)
> === RUN TestBadHeader
> --- PASS: TestBadHeader (0.00s)
> === RUN TestReadPacket
> --- PASS: TestReadPacket (0.00s)
> === RUN TestZeroCopy
> --- PASS: TestZeroCopy (0.00s)
> === RUN TestPacketHeader
> --- PASS: TestPacketHeader (0.00s)
> === RUN TestBadPacketHeader
> --- PASS: TestBadPacketHeader (0.00s)
> === RUN TestBigPacketData
> --- PASS: TestBigPacketData (0.00s)
> === RUN TestLinkType
> --- PASS: TestLinkType (0.00s)
> === RUN TestNotOverlapBuf
> --- PASS: TestNotOverlapBuf (0.00s)
> === RUN TestWriteHeaderNanos
> --- PASS: TestWriteHeaderNanos (0.00s)
> === RUN TestWriteHeader
> --- PASS: TestWriteHeader (0.00s)
> === RUN TestWritePacket
> --- PASS: TestWritePacket (0.00s)
> === RUN TestCaptureInfoErrors
> --- PASS: TestCaptureInfoErrors (0.00s)
> PASS
> ok github.com/google/gopacket/pcapgo 0.012s
> ? github.com/google/gopacket/pfring [no test files]
> === RUN TestReorder
> --- PASS: TestReorder (0.00s)
> === RUN TestMaxPerSkip
> --- PASS: TestMaxPerSkip (0.00s)
> === RUN TestReorderFast
> --- PASS: TestReorderFast (0.00s)
> === RUN TestOverlap
> --- PASS: TestOverlap (0.00s)
> === RUN TestBufferedOverlap1
> --- PASS: TestBufferedOverlap1 (0.01s)
> === RUN TestBufferedOverlapCase6
> --- PASS: TestBufferedOverlapCase6 (0.00s)
> === RUN TestBufferedOverlapExisting
> --- PASS: TestBufferedOverlapExisting (0.00s)
> === RUN TestBufferedOverlapReemit
> --- PASS: TestBufferedOverlapReemit (0.01s)
> === RUN TestReorderRetransmission2
> --- PASS: TestReorderRetransmission2 (0.00s)
> === RUN TestOverrun1
> --- PASS: TestOverrun1 (0.00s)
> === RUN TestOverrun2
> --- PASS: TestOverrun2 (0.00s)
> === RUN TestCacheLargePacket
> --- PASS: TestCacheLargePacket (0.00s)
> === RUN TestFlush
> --- PASS: TestFlush (0.01s)
> === RUN TestKeepSimpleOnBoundary
> --- PASS: TestKeepSimpleOnBoundary (0.00s)
> === RUN TestKeepSimpleNotBoundaryLive
> --- PASS: TestKeepSimpleNotBoundaryLive (0.00s)
> === RUN TestKeepSimpleNotBoundaryAlreadyKept
> --- PASS: TestKeepSimpleNotBoundaryAlreadyKept (0.00s)
> === RUN TestKeepLonger
> --- PASS: TestKeepLonger (0.00s)
> === RUN TestKeepWithFlush
> --- PASS: TestKeepWithFlush (0.00s)
> === RUN TestKeepWithOutOfOrderPacketAndManualFlush
> --- PASS: TestKeepWithOutOfOrderPacketAndManualFlush (0.00s)
> === RUN TestFSMnormalFlow
> --- PASS: TestFSMnormalFlow (0.00s)
> === RUN TestFSMearlyRST
> --- PASS: TestFSMearlyRST (0.00s)
> === RUN TestFSMestablishedThenRST
> --- PASS: TestFSMestablishedThenRST (0.00s)
> === RUN TestFSMmissingSYNACK
> --- PASS: TestFSMmissingSYNACK (0.00s)
> === RUN TestMemoryShrink
> --- PASS: TestMemoryShrink (0.01s)
> === RUN TestFullyOrderedAndCompleteStreamDoesNotAlloc
> --- PASS: TestFullyOrderedAndCompleteStreamDoesNotAlloc (0.00s)
> === RUN TestReassemblyObjectCaptureInfo
> --- PASS: TestReassemblyObjectCaptureInfo (0.00s)
> === RUN TestCheckFSM
> --- PASS: TestCheckFSM (0.00s)
> === RUN TestCheckFSMmissingSYNACK
> --- PASS: TestCheckFSMmissingSYNACK (0.00s)
> === RUN TestCheckFSMmissingSYN
> --- PASS: TestCheckFSMmissingSYN (0.00s)
> === RUN TestCheckOptions
> --- PASS: TestCheckOptions (0.00s)
> PASS
> ok github.com/google/gopacket/reassembly 0.082s
> ? github.com/google/gopacket/routing [no test files]
> === RUN TestSequenceOverflow
> --- PASS: TestSequenceOverflow (0.00s)
> === RUN TestReorder
> --- PASS: TestReorder (0.00s)
> === RUN TestMaxPerSkip
> --- PASS: TestMaxPerSkip (0.00s)
> === RUN TestReorderFast
> --- PASS: TestReorderFast (0.00s)
> === RUN TestOverlap
> --- PASS: TestOverlap (0.00s)
> === RUN TestBufferedOverlap
> --- PASS: TestBufferedOverlap (0.00s)
> === RUN TestOverrun1
> --- PASS: TestOverrun1 (0.00s)
> === RUN TestOverrun2
> --- PASS: TestOverrun2 (0.00s)
> === RUN TestCacheLargePacket
> --- PASS: TestCacheLargePacket (0.00s)
> PASS
> ok github.com/google/gopacket/tcpassembly 0.032s
> === RUN TestRead
> Waiting for read 0
> Assembling 0
> Got read
> Waiting for read 1
> Assembly done
> Assembling 1
> Assembly done
> Got read
> All done reads
> --- PASS: TestRead (0.00s)
> === RUN TestReadSmallChunks
> Waiting for read 0
> Assembling 0
> Got read
> Waiting for read 1
> Got read
> Waiting for read 2
> Assembly done
> Assembling 1
> Assembly done
> Got read
> All done reads
> --- PASS: TestReadSmallChunks (0.01s)
> === RUN ExampleDiscardBytesToEOF
> --- PASS: ExampleDiscardBytesToEOF (0.00s)
> PASS
> ok github.com/google/gopacket/tcpassembly/tcpreader 0.026s
> FAIL
> rm -fr -- /tmp/dh-xdg-rundir-2_5ZmC_f
> dh_auto_test: error: 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 returned exit code 1
The full build log is available from:
http://qa-logs.debian.net/2023/01/13/gopacket_1.1.19-2_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230113;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230113&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
More information about the Pkg-go-maintainers
mailing list