aboutsummaryrefslogtreecommitdiff
path: root/contrib/tcpdump
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2006-09-04 20:04:42 +0000
committerSam Leffler <sam@FreeBSD.org>2006-09-04 20:04:42 +0000
commit2ebc47db5b33ca26b73b76374760c587c38ef385 (patch)
tree13652f8bd7a5a6bc4657d530dd6ddfbeef554e16 /contrib/tcpdump
parent06885fed80f91e5d0e40588d37b546f8812dec2c (diff)
downloadsrc-2ebc47db5b33ca26b73b76374760c587c38ef385.tar.gz
src-2ebc47db5b33ca26b73b76374760c587c38ef385.zip
Import of tcpdump v3.9.4
Notes
Notes: svn path=/vendor/tcpdump/dist/; revision=162017
Diffstat (limited to 'contrib/tcpdump')
-rw-r--r--contrib/tcpdump/CHANGES66
-rw-r--r--contrib/tcpdump/CREDITS5
-rw-r--r--contrib/tcpdump/FILES3
-rw-r--r--contrib/tcpdump/INSTALL5
-rw-r--r--contrib/tcpdump/Makefile.in8
-rw-r--r--contrib/tcpdump/VERSION2
-rw-r--r--contrib/tcpdump/addrtoname.c90
-rwxr-xr-xcontrib/tcpdump/configure12
-rwxr-xr-xcontrib/tcpdump/configure.in14
-rw-r--r--contrib/tcpdump/dccp.h137
-rw-r--r--contrib/tcpdump/ethertype.h5
-rw-r--r--contrib/tcpdump/icmp6.h6
-rw-r--r--contrib/tcpdump/interface.h20
-rwxr-xr-xcontrib/tcpdump/ipproto.c3
-rw-r--r--contrib/tcpdump/ipproto.h5
-rw-r--r--contrib/tcpdump/llc.h6
-rw-r--r--contrib/tcpdump/netdissect.h19
-rw-r--r--contrib/tcpdump/ospf.h4
-rw-r--r--contrib/tcpdump/print-802_11.c71
-rw-r--r--contrib/tcpdump/print-ap1394.c4
-rw-r--r--contrib/tcpdump/print-ascii.c94
-rw-r--r--contrib/tcpdump/print-atm.c4
-rw-r--r--contrib/tcpdump/print-chdlc.c11
-rw-r--r--contrib/tcpdump/print-cip.c4
-rw-r--r--contrib/tcpdump/print-dccp.c526
-rw-r--r--contrib/tcpdump/print-ether.c15
-rw-r--r--contrib/tcpdump/print-fddi.c6
-rw-r--r--contrib/tcpdump/print-fr.c276
-rw-r--r--contrib/tcpdump/print-icmp6.c26
-rw-r--r--contrib/tcpdump/print-ip.c8
-rw-r--r--contrib/tcpdump/print-ip6.c7
-rw-r--r--contrib/tcpdump/print-ipfc.c4
-rw-r--r--contrib/tcpdump/print-isoclns.c139
-rw-r--r--contrib/tcpdump/print-juniper.c201
-rw-r--r--contrib/tcpdump/print-lane.c6
-rw-r--r--contrib/tcpdump/print-ldp.c6
-rw-r--r--contrib/tcpdump/print-llc.c109
-rw-r--r--contrib/tcpdump/print-null.c4
-rw-r--r--contrib/tcpdump/print-ospf.c24
-rw-r--r--contrib/tcpdump/print-pflog.c4
-rw-r--r--contrib/tcpdump/print-pim.c20
-rw-r--r--contrib/tcpdump/print-radius.c161
-rw-r--r--contrib/tcpdump/print-rsvp.c178
-rw-r--r--contrib/tcpdump/print-sctp.c4
-rw-r--r--contrib/tcpdump/print-sll.c6
-rw-r--r--contrib/tcpdump/print-slow.c264
-rw-r--r--contrib/tcpdump/print-symantec.c6
-rw-r--r--contrib/tcpdump/print-tcp.c2
-rw-r--r--contrib/tcpdump/print-token.c6
-rw-r--r--contrib/tcpdump/tcpdump-stdinc.h4
-rw-r--r--contrib/tcpdump/tcpdump.170
-rw-r--r--contrib/tcpdump/tcpdump.c57
-rw-r--r--contrib/tcpdump/tests/.cvsignore11
-rw-r--r--contrib/tcpdump/tests/02-sunrise-sunset-esp.puu34
-rw-r--r--contrib/tcpdump/tests/08-sunrise-sunset-aes.puu36
-rw-r--r--contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu43
-rw-r--r--contrib/tcpdump/tests/alltests.sh12
-rw-r--r--contrib/tcpdump/tests/bgp_vpn_attrset.out18
-rwxr-xr-xcontrib/tcpdump/tests/bgp_vpn_attrset.sh11
-rw-r--r--contrib/tcpdump/tests/eapon1.gdbinit1
-rw-r--r--contrib/tcpdump/tests/eapon1.out114
-rw-r--r--contrib/tcpdump/tests/eapon1.puu368
-rwxr-xr-xcontrib/tcpdump/tests/eapon1.sh13
-rw-r--r--contrib/tcpdump/tests/eapon2.puu66
-rw-r--r--contrib/tcpdump/tests/esp-secrets.txt5
-rw-r--r--contrib/tcpdump/tests/esp0.out8
-rw-r--r--contrib/tcpdump/tests/esp0.sh12
-rw-r--r--contrib/tcpdump/tests/esp1.gdbinit1
-rw-r--r--contrib/tcpdump/tests/esp1.out8
-rw-r--r--contrib/tcpdump/tests/esp1.sh13
-rw-r--r--contrib/tcpdump/tests/esp2.gdbinit1
-rw-r--r--contrib/tcpdump/tests/esp2.out8
-rw-r--r--contrib/tcpdump/tests/esp2.sh13
-rw-r--r--contrib/tcpdump/tests/esp3.gdbinit1
-rw-r--r--contrib/tcpdump/tests/esp3.sh12
-rw-r--r--contrib/tcpdump/tests/esp4.gdbinit2
-rw-r--r--contrib/tcpdump/tests/esp4.sh13
-rw-r--r--contrib/tcpdump/tests/esp5.gdbinit3
-rw-r--r--contrib/tcpdump/tests/esp5.out8
-rw-r--r--contrib/tcpdump/tests/esp5.sh13
-rw-r--r--contrib/tcpdump/tests/espudp1.out8
-rw-r--r--contrib/tcpdump/tests/espudp1.puu35
-rw-r--r--contrib/tcpdump/tests/espudp1.sh13
-rw-r--r--contrib/tcpdump/tests/isakmp-delete-segfault.puu20
-rw-r--r--contrib/tcpdump/tests/isakmp-identification-segfault.puu11
-rw-r--r--contrib/tcpdump/tests/isakmp-pointer-loop.puu6
-rw-r--r--contrib/tcpdump/tests/isakmp1.out1
-rw-r--r--contrib/tcpdump/tests/isakmp1.sh12
-rw-r--r--contrib/tcpdump/tests/isakmp2.out1
-rw-r--r--contrib/tcpdump/tests/isakmp2.sh12
-rw-r--r--contrib/tcpdump/tests/isakmp3.out2
-rw-r--r--contrib/tcpdump/tests/isakmp3.sh13
-rw-r--r--contrib/tcpdump/tests/isakmp4.out35
-rw-r--r--contrib/tcpdump/tests/isakmp4.sh13
-rw-r--r--contrib/tcpdump/tests/isakmp4500.puu155
-rw-r--r--contrib/tcpdump/tests/lmp.out191
-rw-r--r--contrib/tcpdump/tests/lmp.puu42
-rwxr-xr-xcontrib/tcpdump/tests/lmp.sh14
-rw-r--r--contrib/tcpdump/tests/mpls-ldp-hello.out9
-rw-r--r--contrib/tcpdump/tests/mpls-ldp-hello.puu6
-rwxr-xr-xcontrib/tcpdump/tests/mpls-ldp-hello.sh14
-rw-r--r--contrib/tcpdump/tests/ospf-gmpls.out83
-rw-r--r--contrib/tcpdump/tests/ospf-gmpls.puu18
-rwxr-xr-xcontrib/tcpdump/tests/ospf-gmpls.sh14
-rw-r--r--contrib/tcpdump/tests/print-A.out193
-rw-r--r--contrib/tcpdump/tests/print-AA.out193
-rw-r--r--contrib/tcpdump/tests/print-X.out409
-rw-r--r--contrib/tcpdump/tests/print-XX.out419
-rw-r--r--contrib/tcpdump/tests/print-capX.out409
-rw-r--r--contrib/tcpdump/tests/print-capXX.out419
-rw-r--r--contrib/tcpdump/tests/print-flags.puu151
-rwxr-xr-xcontrib/tcpdump/tests/print-flags.sh12
-rw-r--r--contrib/tcpdump/tests/print-x.out409
-rw-r--r--contrib/tcpdump/tests/print-xx.out419
114 files changed, 6747 insertions, 599 deletions
diff --git a/contrib/tcpdump/CHANGES b/contrib/tcpdump/CHANGES
index 23e07ef22bd4..c2363384c983 100644
--- a/contrib/tcpdump/CHANGES
+++ b/contrib/tcpdump/CHANGES
@@ -1,8 +1,27 @@
-$Header: /tcpdump/master/tcpdump/CHANGES,v 1.87.2.1 2005/07/05 21:08:01 mcr Exp $
-
-Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.x tcpdump
-
- Option to chroot() when dropping privs
+$Header: /tcpdump/master/tcpdump/CHANGES,v 1.87.2.11 2005/09/20 06:05:34 guy Exp $
+
+Mon. September 19, 2005. ken@xelerance.com. Summary for 3.9.4 tcpdump release
+ Decoder support for more Juniper link-layer types
+ Fix a potential buffer overflow (although it can't occur in
+ practice).
+ Fix the handling of unknown management frame types in the 802.11
+ printer.
+ Add FRF.16 support, fix various Frame Relay bugs.
+ Add support for RSVP integrity objects, update fast-reroute
+ object printer to latest spec.
+ Clean up documentation of vlan filter expression, document mpls
+ filter expression.
+ Document new pppoed and pppoes filter expressions.
+ Update diffserver-TE codepoints as per RFC 4124.
+ Spelling fixes in ICMPv6.
+ Don't require any fields other than flags to be present in IS-IS
+ restart signaling TLVs, and only print the system ID in
+ those TLVs as system IDs, not as node IDs.
+ Support for DCCP.
+
+Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.3 tcpdump release
+
+ Option to chroot() when dropping privs
Fixes for compiling on nearly every platform,
including improved 64bit support
Many new testcases
@@ -13,8 +32,8 @@ Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.x tcpdump
Decoders & DLT Changes, Updates and New:
AES ESP support
- Juniper ATM, FRF.15, FRF.16, PPPoE,
- ML-FR, ML-PIC, ML-PPP, PL-PPP, LS-PIC
+ Juniper ATM, FRF.15, FRF.16, PPPoE,
+ ML-FR, ML-PIC, ML-PPP, PL-PPP, LS-PIC
GGSN,ES,MONITOR,SERVICES
L2VPN
Axent Raptor/Symantec Firewall
@@ -27,6 +46,7 @@ Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.x tcpdump
BACnet MS/TP
SS7
LDP over TCP
+ LACP, MARKER as per 802.3ad
PGM (RFC 3208)
LSP-PING
G.7041/Y.1303 Generic Framing Procedure
@@ -65,25 +85,25 @@ Wed. November 12, 2003. mcr@sandelman.ottawa.on.ca. Summary for 3.8 release
changed syntax of -E argument so that multiple SAs can be decrypted
fixes for Digital Unix headers and Documentation
__attribute__ fixes
- CDP changes from Terry Kennedy <terry@tmk.com>.
- IPv6 mobility updates from Kazushi Sugyo <sugyo@pb.jp.nec.com>
+ CDP changes from Terry Kennedy <terry@tmk.com>.
+ IPv6 mobility updates from Kazushi Sugyo <sugyo@pb.jp.nec.com>
Fixes for ASN.1 decoder for 2.100.3 forms.
Added a count of packets received and processed to clarify numbers.
Incorporated WinDUMP patches for Win32 builds.
PPPoE payload length headers.
Fixes for HP C compiler builds.
Use new pcap_breakloop() and pcap_findalldevs() if we can.
- BGP output split into multiple lines.
+ BGP output split into multiple lines.
Fixes to 802.11 decoding.
Fixes to PIM decoder.
SuperH is a CPU that can't handle unaligned access. Many fixes for
unaligned access work.
Fixes to Frame-Relay decoder for Q.933/922 frames.
Clarified when Solaris can do captures as non-root.
- Added tests/ subdir for examples/regression tests.
+ Added tests/ subdir for examples/regression tests.
New -U flag. -flush stdout after every packet
New -A flag -print ascii only
- support for decoding IS-IS inside Cisco HDLC Frames
+ support for decoding IS-IS inside Cisco HDLC Frames
more verbosity for tftp decoder
mDNS decoder
new BFD decoder
@@ -91,7 +111,7 @@ Wed. November 12, 2003. mcr@sandelman.ottawa.on.ca. Summary for 3.8 release
RFC 3561 AODV support.
UDP/TCP pseudo-checksum properly for source-route options.
sanitized all files to modified BSD license
- Add support for RFC 2625 IP-over-Fibre Channel.
+ Add support for RFC 2625 IP-over-Fibre Channel.
fixes for DECnet support.
Support RFC 2684 bridging of Ethernet, 802.5 Token Ring, and FDDI.
RFC 2684 encapsulation of BPDUs.
@@ -122,18 +142,18 @@ see http://www.tcpdump.org/cvs-log/2002-01-21.10:16:48.html for commit log.
Better OSI/802.2 support on Linux.
IEEE 802.11 support, from clenahan@fortresstech.com, achirica@ttd.net.
LLC SAP support for FDDI/token ring/RFC-1483 style ATM
- BXXP protocol was replaced by the BEEP protocol;
+ BXXP protocol was replaced by the BEEP protocol;
improvements to SNAP demux.
Changes to "any" interface documentation.
Documentation on pcap_stats() counters.
Fix a memory leak found by Miklos Szeredi - pcap_ether_aton().
Added MPLS encapsulation decoding per RFC3032.
DNS dissector handles TKEY, TSIG and IXFR.
- adaptive SLIP interface patch from Igor Khristophorov <igor@atdot.org>
- SMB printing has much improved bounds checks
+ adaptive SLIP interface patch from Igor Khristophorov <igor@atdot.org>
+ SMB printing has much improved bounds checks
OUI 0x0000f8 decoded as encapsulated ethernet for Cisco-custom bridging
Zephyr support, from Nickolai Zeldovich <kolya@MIT.EDU>.
- Solaris - devices with digits in them. Stefan Hudson <hudson@mbay.net>
+ Solaris - devices with digits in them. Stefan Hudson <hudson@mbay.net>
IPX socket 0x85be is for Cisco EIGRP over IPX.
Improvements to fragmented ESP handling.
SCTP support from Armando L. Caro Jr. <acaro@mail.eecis.udel.edu>
@@ -141,7 +161,7 @@ see http://www.tcpdump.org/cvs-log/2002-01-21.10:16:48.html for commit log.
Added a "netbeui" keyword, which selects NetBEUI packets.
IPv6 ND improvements, MobileIP dissector, 2292bis-02 for RA option.
Handle ARPHDR_HDLC from Marcus Felipe Pereira <marcus@task.com.br>.
- Handle IPX socket 0x553 -> NetBIOS-over-IPX socket, "nwlink-dgm"
+ Handle IPX socket 0x553 -> NetBIOS-over-IPX socket, "nwlink-dgm"
Better Linux libc5 compat.
BIND9 lwres dissector added.
MIPS and SPARC get strict alignment macros (affects print-bgp.c)
@@ -159,8 +179,8 @@ see http://www.tcpdump.org/cvs-log/2002-01-21.10:16:48.html for commit log.
cjclark@alum.mit.edu: print the IP proto for non-initial fragments.
LLC frames with a DSAP and LSAP of 0xe0 are IPX frames.
Linux cooked frames with a type value of LINUX_SLL_P_802_3 are IPX.
- captures on the "any" device won't be done in promiscuous mode
- Token Ring support on DLPI - Onno van der Linden <onno@simplex.nl>
+ captures on the "any" device won't be done in promiscuous mode
+ Token Ring support on DLPI - Onno van der Linden <onno@simplex.nl>
ARCNet support, from NetBSD.
HSRP dissector, from Julian Cowley <julian@lava.net>.
Handle (GRE-encapsulated) PPTP
@@ -191,7 +211,7 @@ Tuesday January 9, 2001. mcr@sandelman.ottawa.on.ca. Summary for 3.6 release
Updated autoconf stock files.
- IPv6 improvements: dhcp (draft-15), mobile-ip6, ppp, ospf6,
+ IPv6 improvements: dhcp (draft-15), mobile-ip6, ppp, ospf6,
Added dissector support for: ISOCLNS, Token Ring, IGMPv3, bxxp,
timed, vrrp, radius, chdlc, cnfp, cdp, IEEE802.1d, raw-AppleTalk
@@ -204,7 +224,7 @@ Tuesday January 9, 2001. mcr@sandelman.ottawa.on.ca. Summary for 3.6 release
HP-UX 11.0 -- find the right dlpi device.
Solaris 8 - IPv6 works
Linux - Added support for an "any" device to capture on all interfaces
-
+
Security fixes: buffer overrun audit done. Strcpy replaced with
strlcpy, sprintf replaced with snprintf.
Look for lex problems, and warn about them.
@@ -519,7 +539,7 @@ v3.1 Thu Jun 13 20:59:32 PDT 1996
- Don't checksum ip header if we don't have all of it. Thanks to John
Hawkinson (jhawk@mit.edu).
-
+
- Print out hostnames if possible in egp printer. Thanks to Jeffrey
Honig (jhc@bsdi.com)
diff --git a/contrib/tcpdump/CREDITS b/contrib/tcpdump/CREDITS
index 9332defee62c..4923d496d235 100644
--- a/contrib/tcpdump/CREDITS
+++ b/contrib/tcpdump/CREDITS
@@ -20,6 +20,7 @@ Additional people who have contributed patches:
Andy Heffernan <ahh@juniper.net>
Arkadiusz Miskiewicz <misiek@pld.org.pl>
Armando L. Caro Jr. <acaro@mail.eecis.udel.edu>
+ Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Atsushi Onoe <onoe@netbsd.org>
Ben Smithurst <ben@scientia.demon.co.uk>
Brent L. Bates <blbates@vigyan.com>
@@ -36,6 +37,7 @@ Additional people who have contributed patches:
Daniel Hagerty <hag@ai.mit.edu>
Darren Reed <darrenr@reed.wattle.id.au>
David Binderman <d.binderman@virgin.net>
+ David Smith <dsmith@redhat.com>
David Young <dyoung@ojctech.com>
Eddie Kohler <xexd@sourceforge.net>
Francis Dupont <Francis.Dupont@enst-bretagne.fr>
@@ -53,6 +55,7 @@ Additional people who have contributed patches:
Harry Raaymakers <harryr@connect.com.au>
Heinz-Ado Arnolds <Ado.Arnolds@dhm-systems.de>
Hendrik Scholz <hendrik@scholz.net>
+ Ian McDonald <imcdnzl@gmail.com>
Jakob Schlyter <jakob@openbsd.org>
Jan Oravec <wsx@wsx6.net>
Jason R. Thorpe <thorpej@netbsd.org>
@@ -85,6 +88,7 @@ Additional people who have contributed patches:
Martin Husemann <martin@netbsd.org>
Michael Madore <mmadore@turbolinux.com>
Michael Shalayeff <mickey@openbsd.org>
+ Michael Shields <shields@msrl.com>
Michael T. Stolarchuk <mts@off.to>
Michele "mydecay" Marchetto <smarchetto1@tin.it>
Monroe Williams <monroe@pobox.com>
@@ -127,6 +131,7 @@ Additional people who have contributed patches:
Uns Lider <unslider@miranda.org>
Wilbert de Graaf <wilbertdg@hetnet.nl>
Yen Yen Lim
+ Yoshifumi Nishida
The original LBL crew:
Steve McCanne
diff --git a/contrib/tcpdump/FILES b/contrib/tcpdump/FILES
index ebd02cbd7a71..d6c110b21ef2 100644
--- a/contrib/tcpdump/FILES
+++ b/contrib/tcpdump/FILES
@@ -29,6 +29,7 @@ configure
configure.in
cpack.c
cpack.h
+dccp.h
decnet.h
decode_prefix.h
enc.h
@@ -125,6 +126,7 @@ print-cdp.c
print-chdlc.c
print-cip.c
print-cnfp.c
+print-dccp.c
print-decnet.c
print-dhcp6.c
print-domain.c
@@ -188,6 +190,7 @@ print-sctp.c
print-sip.c
print-sl.c
print-sll.c
+print-slow.c
print-smb.c
print-snmp.c
print-stp.c
diff --git a/contrib/tcpdump/INSTALL b/contrib/tcpdump/INSTALL
index 2aaa18e094bb..c55f2d041c6f 100644
--- a/contrib/tcpdump/INSTALL
+++ b/contrib/tcpdump/INSTALL
@@ -1,4 +1,4 @@
-@(#) $Header: /tcpdump/master/tcpdump/INSTALL,v 1.63.2.2 2005/06/03 22:10:15 guy Exp $ (LBL)
+@(#) $Header: /tcpdump/master/tcpdump/INSTALL,v 1.63.2.4 2005/09/20 06:05:35 guy Exp $ (LBL)
If you have not built libpcap, do so first. See the README
file in this directory for the ftp location.
@@ -71,6 +71,7 @@ config.h.in - autoconf input
config.sub - autoconf support
configure - configure script (run this first)
configure.in - configure script source
+dccp.h - DCCP definitions
decnet.h - DECnet definitions
decode_prefix.h - Declarations of "decode_prefix{4,6}()"
enc.h - OpenBSD IPsec encapsulation BPF layer definitions
@@ -146,6 +147,7 @@ print-cdp.c - Cisco Discovery Protocol printer routines
print-chdlc.c - Cisco HDLC printer routines
print-cip.c - Classical-IP over ATM routines
print-cnfp.c - Cisco NetFlow printer routines
+print-dccp.c - DCCP printer routines
print-decnet.c - DECnet printer routines
print-dhcp6.c - IPv6 DHCP printer routines
print-domain.c - Domain Name System printer routines
@@ -204,6 +206,7 @@ print-sctp.c - Stream Control Transmission Protocol printer routines
print-sip.c - SIP printer routines
print-sl.c - Compressed Serial Line Internet Protocol printer routines
print-sll.c - Linux "cooked" capture printer routines
+print-slow.c - IEEE "slow protocol" (802.3ad) printer routines
print-smb.c - SMB/CIFS printer routines
print-snmp.c - Simple Network Management Protocol printer routines
print-stp.c - IEEE 802.1d spanning tree protocol printer routines
diff --git a/contrib/tcpdump/Makefile.in b/contrib/tcpdump/Makefile.in
index 1778f851a43b..c96d87776475 100644
--- a/contrib/tcpdump/Makefile.in
+++ b/contrib/tcpdump/Makefile.in
@@ -17,7 +17,7 @@
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.293.2.1 2005/05/20 21:15:45 hannes Exp $ (LBL)
+# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.293.2.3 2005/09/20 06:05:36 guy Exp $ (LBL)
#
# Various configurable paths (remember to edit Makefile.in, not Makefile)
@@ -70,7 +70,7 @@ CSRC = addrtoname.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \
print-802_11.c print-ap1394.c print-ah.c print-arcnet.c \
print-aodv.c print-arp.c print-ascii.c print-atalk.c print-atm.c \
print-beep.c print-bfd.c print-bgp.c print-bootp.c print-cdp.c \
- print-chdlc.c print-cip.c print-cnfp.c print-decnet.c \
+ print-chdlc.c print-cip.c print-cnfp.c print-dccp.c print-decnet.c \
print-domain.c print-dvmrp.c print-enc.c print-egp.c \
print-eap.c print-eigrp.c\
print-esp.c print-ether.c print-fddi.c print-fr.c \
@@ -84,7 +84,7 @@ CSRC = addrtoname.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \
print-pflog.c print-pgm.c print-pim.c print-ppp.c print-pppoe.c \
print-pptp.c print-radius.c print-raw.c print-rip.c \
print-rsvp.c print-rx.c print-sctp.c print-sip.c print-sl.c print-sll.c \
- print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \
+ print-slow.c print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \
print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \
print-timed.c print-token.c print-udp.c print-vjc.c print-vrrp.c \
print-wb.c print-zephyr.c setsignal.c tcpdump.c util.c
@@ -98,7 +98,7 @@ SRC = $(CSRC) $(GENSRC) $(LOCALSRC)
# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
# hack the extra indirection
OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) $(LOCALSRC:.c=.o) $(LIBOBJS)
-HDR = addrtoname.h appletalk.h bootp.h cpack.h decnet.h \
+HDR = addrtoname.h appletalk.h bootp.h cpack.h dccp.h decnet.h \
ethertype.h extract.h fddi.h gmt2local.h igrp.h interface.h \
ipx.h llc.h machdep.h mib.h nfsfh.h nfsv2.h ntp.h ospf.h \
setsignal.h \
diff --git a/contrib/tcpdump/VERSION b/contrib/tcpdump/VERSION
index 6bd10744ae8a..e0d61b5b0626 100644
--- a/contrib/tcpdump/VERSION
+++ b/contrib/tcpdump/VERSION
@@ -1 +1 @@
-3.9.1
+3.9.4
diff --git a/contrib/tcpdump/addrtoname.c b/contrib/tcpdump/addrtoname.c
index 648a82368bfc..ba4963bd7555 100644
--- a/contrib/tcpdump/addrtoname.c
+++ b/contrib/tcpdump/addrtoname.c
@@ -23,7 +23,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.108.2.5 2005/04/25 08:43:05 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.108.2.7 2005/09/29 07:46:45 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -88,7 +88,6 @@ struct hnamemem tporttable[HASHNAMESIZE];
struct hnamemem uporttable[HASHNAMESIZE];
struct hnamemem eprototable[HASHNAMESIZE];
struct hnamemem dnaddrtable[HASHNAMESIZE];
-struct hnamemem llcsaptable[HASHNAMESIZE];
struct hnamemem ipxsaptable[HASHNAMESIZE];
#if defined(INET6) && defined(WIN32)
@@ -461,9 +460,10 @@ lookup_protoid(const u_char *pi)
const char *
etheraddr_string(register const u_char *ep)
{
- register u_int i, oui;
+ register int i;
register char *cp;
register struct enamemem *tp;
+ int oui;
char buf[BUFSIZE];
tp = lookup_emem(ep);
@@ -475,9 +475,9 @@ etheraddr_string(register const u_char *ep)
/*
* We don't cast it to "const struct ether_addr *"
- * because some systems don't modify the Ethernet
- * address but fail to declare the second argument
- * as a "const" pointer.
+ * because some systems fail to declare the second
+ * argument as a "const" pointer, even though they
+ * don't modify what it points to.
*/
if (ether_ntohost(buf2, (struct ether_addr *)ep) == 0) {
tp->e_name = strdup(buf2);
@@ -486,20 +486,20 @@ etheraddr_string(register const u_char *ep)
}
#endif
cp = buf;
- oui=EXTRACT_24BITS(ep);
+ oui = EXTRACT_24BITS(ep);
*cp++ = hex[*ep >> 4 ];
*cp++ = hex[*ep++ & 0xf];
- for (i = 5; (int)--i >= 0;) {
- *cp++ = ':';
- *cp++ = hex[*ep >> 4 ];
- *cp++ = hex[*ep++ & 0xf];
- }
-
- if (!nflag) {
- snprintf(cp,BUFSIZE," (oui %s)",
- tok2str(oui_values,"Unknown",oui));
- } else
- *cp = '\0';
+ for (i = 5; --i >= 0;) {
+ *cp++ = ':';
+ *cp++ = hex[*ep >> 4 ];
+ *cp++ = hex[*ep++ & 0xf];
+ }
+
+ if (!nflag) {
+ snprintf(cp, BUFSIZE - (2 + 5*3), " (oui %s)",
+ tok2str(oui_values, "Unknown", oui));
+ } else
+ *cp = '\0';
tp->e_name = strdup(buf);
return (tp->e_name);
}
@@ -585,25 +585,6 @@ protoid_string(register const u_char *pi)
return (tp->p_name);
}
-const char *
-llcsap_string(u_char sap)
-{
- register struct hnamemem *tp;
- register u_int32_t i = sap;
- char buf[sizeof("sap 00")];
-
- for (tp = &llcsaptable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- tp->addr = i;
- tp->nxt = newhnamemem();
-
- snprintf(buf, sizeof(buf), "sap %02x", sap & 0xff);
- tp->name = strdup(buf);
- return (tp->name);
-}
-
#define ISONSAP_MAX_LENGTH 20
const char *
isonsap_string(const u_char *nsap, register u_int nsap_length)
@@ -872,40 +853,6 @@ init_etherarray(void)
}
}
-static struct tok llcsap_db[] = {
- { LLCSAP_NULL, "null" },
- { LLCSAP_8021B_I, "802.1b-gsap" },
- { LLCSAP_8021B_G, "802.1b-isap" },
- { LLCSAP_IP, "ip-sap" },
- { LLCSAP_PROWAYNM, "proway-nm" },
- { LLCSAP_8021D, "802.1d" },
- { LLCSAP_RS511, "eia-rs511" },
- { LLCSAP_ISO8208, "x.25/llc2" },
- { LLCSAP_PROWAY, "proway" },
- { LLCSAP_SNAP, "snap" },
- { LLCSAP_IPX, "IPX" },
- { LLCSAP_NETBEUI, "netbeui" },
- { LLCSAP_ISONS, "iso-clns" },
- { LLCSAP_GLOBAL, "global" },
- { 0, NULL }
-};
-
-static void
-init_llcsaparray(void)
-{
- register int i;
- register struct hnamemem *table;
-
- for (i = 0; llcsap_db[i].s != NULL; i++) {
- table = &llcsaptable[llcsap_db[i].v];
- while (table->name)
- table = table->nxt;
- table->name = llcsap_db[i].s;
- table->addr = llcsap_db[i].v;
- table->nxt = newhnamemem();
- }
-}
-
static struct tok ipxsap_db[] = {
{ 0x0000, "Unknown" },
{ 0x0001, "User" },
@@ -1162,7 +1109,6 @@ init_addrtoname(u_int32_t localnet, u_int32_t mask)
init_etherarray();
init_servarray();
init_eprotoarray();
- init_llcsaparray();
init_protoidarray();
init_ipxsaparray();
}
diff --git a/contrib/tcpdump/configure b/contrib/tcpdump/configure
index 60efb94c5fbc..4998c6b02a87 100755
--- a/contrib/tcpdump/configure
+++ b/contrib/tcpdump/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 1.188.2.6 .
+# From configure.in Revision: 1.188.2.7 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.57.
#
@@ -11494,7 +11494,15 @@ echo $ECHO_N "checking for SSLeay... $ECHO_C" >&6
ac_cv_ssleay_path=no
incdir=no
-Xprefix=`eval echo $prefix`
+#
+# If Xprefix is set in the environment, use that value.
+# XXX - this should arguably be done by having --with-crypto take an
+# optional argument, and have that argument be used to set Xprefix
+# if present.
+#
+if test -z "$Xprefix"; then
+ Xprefix=`eval echo $prefix`
+fi
for dir in $Xprefix /usr/${host_alias} /usr /usr/local /usr/local/ssl /usr/pkg; do
#
diff --git a/contrib/tcpdump/configure.in b/contrib/tcpdump/configure.in
index 220289a598ff..7a331c5ec479 100755
--- a/contrib/tcpdump/configure.in
+++ b/contrib/tcpdump/configure.in
@@ -1,4 +1,4 @@
-dnl @(#) $Header: /tcpdump/master/tcpdump/configure.in,v 1.188.2.6 2005/04/24 01:36:19 guy Exp $ (LBL)
+dnl @(#) $Header: /tcpdump/master/tcpdump/configure.in,v 1.188.2.7 2005/09/21 16:50:01 guy Exp $ (LBL)
dnl
dnl Copyright (c) 1994, 1995, 1996, 1997
dnl The Regents of the University of California. All rights reserved.
@@ -6,7 +6,7 @@ dnl
dnl Process this file with autoconf to produce a configure script.
dnl
-AC_REVISION($Revision: 1.188.2.6 $)
+AC_REVISION($Revision: 1.188.2.7 $)
AC_PREREQ(2.50)
AC_INIT(tcpdump.c)
@@ -908,7 +908,15 @@ AC_MSG_CHECKING(for SSLeay)
ac_cv_ssleay_path=no
incdir=no
-Xprefix=`eval echo $prefix`
+#
+# If Xprefix is set in the environment, use that value.
+# XXX - this should arguably be done by having --with-crypto take an
+# optional argument, and have that argument be used to set Xprefix
+# if present.
+#
+if test -z "$Xprefix"; then
+ Xprefix=`eval echo $prefix`
+fi
for dir in $Xprefix /usr/${host_alias} /usr /usr/local /usr/local/ssl /usr/pkg; do
#
diff --git a/contrib/tcpdump/dccp.h b/contrib/tcpdump/dccp.h
new file mode 100644
index 000000000000..8e987e496059
--- /dev/null
+++ b/contrib/tcpdump/dccp.h
@@ -0,0 +1,137 @@
+/* @(#) $Header: /tcpdump/master/tcpdump/dccp.h,v 1.1.2.2 2005/09/20 06:25:45 guy Exp $ (LBL) */
+/*
+ * Copyright (C) Arnaldo Carvalho de Melo 2004
+ * Copyright (C) Ian McDonald 2005 <iam4@cs.waikato.ac.nz>
+ * Copyright (C) Yoshifumi Nishida 2005
+ *
+ * This software may be distributed either under the terms of the
+ * BSD-style license that accompanies tcpdump or the GNU GPL version 2
+ */
+
+#ifndef __DCCP_HDR__
+#define __DCCP_HDR__
+
+/**
+ * struct dccp_hdr - generic part of DCCP packet header
+ *
+ * @dccph_sport - Relevant port on the endpoint that sent this packet
+ * @dccph_dport - Relevant port on the other endpoint
+ * @dccph_doff - Data Offset from the start of the DCCP header, in 32-bit words
+ * @dccph_ccval - Used by the HC-Sender CCID
+ * @dccph_cscov - Parts of the packet that are covered by the Checksum field
+ * @dccph_checksum - Internet checksum, depends on dccph_cscov
+ * @dccph_x - 0 = 24 bit sequence number, 1 = 48
+ * @dccph_type - packet type, see DCCP_PKT_ prefixed macros
+ * @dccph_seq - sequence number high or low order 24 bits, depends on dccph_x
+ */
+struct dccp_hdr {
+ u_int16_t dccph_sport,
+ dccph_dport;
+ u_int8_t dccph_doff;
+ u_int8_t dccph_ccval_cscov;
+ u_int16_t dccph_checksum;
+ union {
+ u_int8_t dccph_xtr;
+ u_int32_t dccph_seq;
+ } dccph_xtrs;
+};
+
+#define DCCPH_CCVAL(dh) (((dh)->dccph_ccval_cscov) & 0x0F)
+#define DCCPH_CSCOV(dh) (((dh)->dccph_ccval_cscov >> 4) & 0x0F)
+
+#define DCCPH_X(dh) ((dh)->dccph_xtrs.dccph_xtr & 1)
+#define DCCPH_TYPE(dh) (((dh)->dccph_xtrs.dccph_xtr >> 1) & 0xF)
+#define DCCPH_SEQ(dh) (((dh)->dccph_xtrs.dccph_seq) >> 8)
+
+/**
+ * struct dccp_hdr_ext - the low bits of a 48 bit seq packet
+ *
+ * @dccph_seq_low - low 24 bits of a 48 bit seq packet
+ */
+struct dccp_hdr_ext {
+ u_int32_t dccph_seq_low;
+};
+
+/**
+ * struct dccp_hdr_request - Conection initiation request header
+ *
+ * @dccph_req_service - Service to which the client app wants to connect
+ */
+struct dccp_hdr_request {
+ u_int32_t dccph_req_service;
+};
+
+/**
+ * struct dccp_hdr_ack_bits - acknowledgment bits common to most packets
+ *
+ * @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR
+ * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR
+ */
+struct dccp_hdr_ack_bits {
+ u_int32_t dccph_ra;
+ u_int32_t dccph_ack_nr_low;
+};
+
+#define DCCPH_ACK(dh_ack) ((dh_ack)->dccph_ra >> 8)
+
+/**
+ * struct dccp_hdr_response - Conection initiation response header
+ *
+ * @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR
+ * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR
+ * @dccph_resp_service - Echoes the Service Code on a received DCCP-Request
+ */
+struct dccp_hdr_response {
+ struct dccp_hdr_ack_bits dccph_resp_ack;
+ u_int32_t dccph_resp_service;
+};
+
+static inline struct dccp_hdr_data *dccp_hdr_data(struct dccp_hdr *hdrg)
+{
+ const int ext = DCCPH_X(hdrg) ? sizeof(struct dccp_hdr_ext) : 0;
+
+ return (struct dccp_hdr_data *)(((u_char *)hdrg) + sizeof(hdrg) + ext);
+}
+
+/**
+ * struct dccp_hdr_reset - Unconditionally shut down a connection
+ *
+ * @dccph_reset_service - Echoes the Service Code on a received DCCP-Request
+ */
+struct dccp_hdr_reset {
+ struct dccp_hdr_ack_bits dccph_reset_ack;
+ u_int8_t dccph_reset_code,
+ dccph_reset_data[3];
+};
+
+enum dccp_pkt_type {
+ DCCP_PKT_REQUEST = 0,
+ DCCP_PKT_RESPONSE,
+ DCCP_PKT_DATA,
+ DCCP_PKT_ACK,
+ DCCP_PKT_DATAACK,
+ DCCP_PKT_CLOSEREQ,
+ DCCP_PKT_CLOSE,
+ DCCP_PKT_RESET,
+ DCCP_PKT_SYNC,
+ DCCP_PKT_SYNCACK,
+ DCCP_PKT_INVALID,
+};
+
+enum dccp_reset_codes {
+ DCCP_RESET_CODE_UNSPECIFIED = 0,
+ DCCP_RESET_CODE_CLOSED,
+ DCCP_RESET_CODE_ABORTED,
+ DCCP_RESET_CODE_NO_CONNECTION,
+ DCCP_RESET_CODE_PACKET_ERROR,
+ DCCP_RESET_CODE_OPTION_ERROR,
+ DCCP_RESET_CODE_MANDATORY_ERROR,
+ DCCP_RESET_CODE_CONNECTION_REFUSED,
+ DCCP_RESET_CODE_BAD_SERVICE_CODE,
+ DCCP_RESET_CODE_TOO_BUSY,
+ DCCP_RESET_CODE_BAD_INIT_COOKIE,
+ DCCP_RESET_CODE_AGGRESSION_PENALTY,
+ __DCCP_RESET_CODE_LAST,
+};
+
+#endif /* __DCCP_HDR__ */
diff --git a/contrib/tcpdump/ethertype.h b/contrib/tcpdump/ethertype.h
index 2513fbdad492..36dc8e24d304 100644
--- a/contrib/tcpdump/ethertype.h
+++ b/contrib/tcpdump/ethertype.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/ethertype.h,v 1.24 2004/10/07 16:04:07 hannes Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/ethertype.h,v 1.24.2.1 2005/07/10 14:51:10 hannes Exp $ (LBL)
*/
/*
@@ -109,6 +109,9 @@
#ifndef ETHERTYPE_PPP
#define ETHERTYPE_PPP 0x880b
#endif
+#ifndef ETHERTYPE_SLOW
+#define ETHERTYPE_SLOW 0x8809
+#endif
#ifndef ETHERTYPE_MPLS
#define ETHERTYPE_MPLS 0x8847
#endif
diff --git a/contrib/tcpdump/icmp6.h b/contrib/tcpdump/icmp6.h
index c0008556da89..20a51e3a6198 100644
--- a/contrib/tcpdump/icmp6.h
+++ b/contrib/tcpdump/icmp6.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.16 2005/01/14 10:41:50 hannes Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.16.2.1 2005/09/05 09:29:28 guy Exp $ (LBL) */
/* $NetBSD: icmp6.h,v 1.13 2000/08/03 16:30:37 itojun Exp $ */
/* $KAME: icmp6.h,v 1.22 2000/08/03 15:25:16 jinmei Exp $ */
@@ -104,9 +104,9 @@ struct icmp6_hdr {
#define MLD6_LISTENER_DONE 132 /* multicast listener done */
#define ND_ROUTER_SOLICIT 133 /* router solicitation */
-#define ND_ROUTER_ADVERT 134 /* router advertisment */
+#define ND_ROUTER_ADVERT 134 /* router advertisement */
#define ND_NEIGHBOR_SOLICIT 135 /* neighbor solicitation */
-#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisment */
+#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisement */
#define ND_REDIRECT 137 /* redirect */
#define ICMP6_ROUTER_RENUMBERING 138 /* router renumbering */
diff --git a/contrib/tcpdump/interface.h b/contrib/tcpdump/interface.h
index 9b9be233f294..dcbd9b29d475 100644
--- a/contrib/tcpdump/interface.h
+++ b/contrib/tcpdump/interface.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.244.2.11 2005/06/20 07:45:04 hannes Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.244.2.18 2005/09/29 07:46:45 hannes Exp $ (LBL)
*/
#ifndef tcpdump_interface_h
@@ -155,7 +155,6 @@ extern void safeputchar(int);
extern void safeputs(const char *);
extern const char *isonsap_string(const u_char *, register u_int);
-extern const char *llcsap_string(u_char);
extern const char *protoid_string(const u_char *);
extern const char *ipxsap_string(u_short);
extern const char *dnname_string(u_short);
@@ -166,11 +165,13 @@ extern const char *dnnum_string(u_short);
#include <pcap.h>
extern int print_unknown_data(const u_char *, const char *,int);
-extern void ascii_print_with_offset(const char *, const u_char *, u_int, u_int);
-extern void ascii_print(const char *, const u_char *, u_int);
+extern void ascii_print(const u_char *, u_int);
+extern void hex_and_ascii_print_with_offset(const char *, const u_char *,
+ u_int, u_int);
+extern void hex_and_ascii_print(const char *, const u_char *, u_int);
extern void hex_print_with_offset(const char *, const u_char *, u_int, u_int);
-extern void telnet_print(const u_char *, u_int);
extern void hex_print(const char *, const u_char *, u_int);
+extern void telnet_print(const u_char *, u_int);
extern int ether_encap_print(u_short, const u_char *, u_int, u_int, u_short *);
extern int llc_print(const u_char *, u_int, u_int, const u_char *,
const u_char *, u_short *);
@@ -202,6 +203,7 @@ extern void fddi_print(const u_char *, u_int, u_int);
extern u_int fddi_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int fr_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int fr_print(register const u_char *, u_int);
+extern u_int mfr_print(register const u_char *, u_int);
extern u_int ieee802_11_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *,
const u_char *);
@@ -250,6 +252,7 @@ extern u_int lane_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int cip_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int sl_bsdos_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int chdlc_if_print(const struct pcap_pkthdr *, const u_char *);
+extern u_int chdlc_print(register const u_char *, u_int);
extern u_int juniper_atm1_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_atm2_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_mfr_print(const struct pcap_pkthdr *, register const u_char *);
@@ -261,6 +264,10 @@ extern u_int juniper_ggsn_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_es_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_monitor_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_services_print(const struct pcap_pkthdr *, const u_char *);
+extern u_int juniper_ether_print(const struct pcap_pkthdr *, const u_char *);
+extern u_int juniper_ppp_print(const struct pcap_pkthdr *, const u_char *);
+extern u_int juniper_frelay_print(const struct pcap_pkthdr *, const u_char *);
+extern u_int juniper_chdlc_print(const struct pcap_pkthdr *, const u_char *);
extern u_int sll_if_print(const struct pcap_pkthdr *, const u_char *);
extern void snmp_print(const u_char *, u_int);
extern void sunrpcrequest_print(const u_char *, u_int, const u_char *);
@@ -283,12 +290,14 @@ extern const char *nt_errstr(u_int32_t);
extern void print_data(const unsigned char *, int);
extern void l2tp_print(const u_char *, u_int);
extern void vrrp_print(const u_char *, u_int, int);
+extern void slow_print(const u_char *, u_int);
extern void pgm_print(const u_char *, u_int, const u_char *);
extern void cdp_print(const u_char *, u_int, u_int);
extern void stp_print(const u_char *, u_int);
extern void radius_print(const u_char *, u_int);
extern void lwres_print(const u_char *, u_int);
extern void pptp_print(const u_char *);
+extern void dccp_print(const u_char *, const u_char *, u_int);
extern void sctp_print(const u_char *, const u_char *, u_int);
extern void mpls_print(const u_char *, u_int);
extern void mpls_lsp_ping_print(const u_char *, u_int);
@@ -345,6 +354,7 @@ extern netdissect_options *gndo;
#define Xflag gndo->ndo_Xflag
#define Cflag gndo->ndo_Cflag
#define Aflag gndo->ndo_Aflag
+#define suppress_default_print gndo->ndo_suppress_default_print
#define packettype gndo->ndo_packettype
#define tcpmd5secret gndo->ndo_tcpmd5secret
#define Wflag gndo->ndo_Wflag
diff --git a/contrib/tcpdump/ipproto.c b/contrib/tcpdump/ipproto.c
index f057acf7d5c9..66ea3563ce8f 100755
--- a/contrib/tcpdump/ipproto.c
+++ b/contrib/tcpdump/ipproto.c
@@ -15,7 +15,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/ipproto.c,v 1.3.2.2 2005/05/20 21:15:45 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/ipproto.c,v 1.3.2.3 2005/09/20 06:05:37 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -36,6 +36,7 @@ struct tok ipproto_values[] = {
{ IPPROTO_EGP, "EGP" },
{ IPPROTO_PIGP, "IGRP" },
{ IPPROTO_UDP, "UDP" },
+ { IPPROTO_DCCP, "DCCP" },
{ IPPROTO_IPV6, "IPv6" },
{ IPPROTO_ROUTING, "Routing" },
{ IPPROTO_FRAGMENT, "Fragment" },
diff --git a/contrib/tcpdump/ipproto.h b/contrib/tcpdump/ipproto.h
index aa37ef8a2dba..1800db4580da 100644
--- a/contrib/tcpdump/ipproto.h
+++ b/contrib/tcpdump/ipproto.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/ipproto.h,v 1.4.2.1 2005/05/20 21:15:46 hannes Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/ipproto.h,v 1.4.2.2 2005/09/20 06:05:37 guy Exp $ (LBL)
*
* From:
* @(#)in.h 8.3 (Berkeley) 1/3/94
@@ -66,6 +66,9 @@ extern struct tok ipproto_values[];
#ifndef IPPROTO_UDP
#define IPPROTO_UDP 17 /* user datagram protocol */
#endif
+#ifndef IPPROTO_DCCP
+#define IPPROTO_DCCP 33 /* datagram congestion control protocol */
+#endif
#ifndef IPPROTO_IPV6
#define IPPROTO_IPV6 41
#endif
diff --git a/contrib/tcpdump/llc.h b/contrib/tcpdump/llc.h
index 112ecbd3e92e..f8c4e7d28b13 100644
--- a/contrib/tcpdump/llc.h
+++ b/contrib/tcpdump/llc.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/llc.h,v 1.17.2.1 2005/04/26 07:27:16 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/llc.h,v 1.17.2.2 2005/09/29 07:40:12 hannes Exp $ (LBL)
*/
/*
@@ -27,6 +27,7 @@
#define LLC_U_FMT 3
#define LLC_GSAP 1
+#define LLC_IG 1 /* Individual / Group */
#define LLC_S_FMT 1
#define LLC_U_POLL 0x10
@@ -63,6 +64,9 @@
#ifndef LLCSAP_8021B_G
#define LLCSAP_8021B_G 0x03
#endif
+#ifndef LLCSAP_SNA
+#define LLCSAP_SNA 0x04
+#endif
#ifndef LLCSAP_IP
#define LLCSAP_IP 0x06
#endif
diff --git a/contrib/tcpdump/netdissect.h b/contrib/tcpdump/netdissect.h
index 83114b25a217..8a83cf1c3aec 100644
--- a/contrib/tcpdump/netdissect.h
+++ b/contrib/tcpdump/netdissect.h
@@ -21,7 +21,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/netdissect.h,v 1.16 2005/04/07 00:28:17 mcr Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/netdissect.h,v 1.16.2.3 2005/09/29 07:46:46 hannes Exp $ (LBL)
*/
#ifndef netdissect_h
@@ -107,7 +107,8 @@ struct netdissect_options {
int ndo_Cflag; /* rotate dump files after this many bytes */
int ndo_Cflag_count; /* Keep track of which file number we're writing */
int ndo_Wflag; /* recycle output files after this number of files */
- int ndo_WflagChars;
+ int ndo_WflagChars;
+ int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */
const char *ndo_dltname;
char *ndo_espsecret;
@@ -234,7 +235,6 @@ extern void safeputs(const char *);
#if 0
extern const char *isonsap_string(netdissect_options *, const u_char *);
-extern const char *llcsap_string(netdissect_options *, u_char);
extern const char *protoid_string(netdissect_options *, const u_char *);
extern const char *dnname_string(netdissect_options *, u_short);
extern const char *dnnum_string(netdissect_options *, u_short);
@@ -261,13 +261,14 @@ extern void ip_print_inner(netdissect_options *ndo,
/* stuff that has not yet been rototiled */
#if 0
-extern void ascii_print_with_offset(netdissect_options *, const char *,
- u_int, u_int);
-extern void ascii_print(netdissect_options *,const char *, u_int);
+extern void ascii_print(netdissect_options *,u_int);
+extern void hex_and_ascii_print_with_offset(netdissect_options *,const char *,
+ u_int, u_int);
+extern void hex_and_ascii_print(netdissect_options *,const char *, u_int);
extern void hex_print_with_offset(netdissect_options *,const char *,
- u_int, u_int);
-extern void telnet_print(netdissect_options *,const u_char *, u_int);
-extern void hex_print(netdissect_options *,const char *, u_int);
+ u_int, u_int);
+extern void hex_print(netdissect_options *,const char *, u_int);
+extern void telnet_print(netdissect_options *,const u_char *, u_int);
extern int ether_encap_print(netdissect_options *,u_short, const u_char *,
u_int, u_int, u_short *);
extern int llc_print(netdissect_options *,
diff --git a/contrib/tcpdump/ospf.h b/contrib/tcpdump/ospf.h
index 5fa008cf0d95..27a45a53f9a4 100644
--- a/contrib/tcpdump/ospf.h
+++ b/contrib/tcpdump/ospf.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/ospf.h,v 1.16 2004/09/20 14:56:34 hannes Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/tcpdump/ospf.h,v 1.16.2.1 2005/08/23 11:16:30 hannes Exp $ (LBL) */
/*
* Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved.
@@ -89,7 +89,7 @@
#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_PROTECTION_TYPE 14 /* draft-ietf-ccamp-ospf-gmpls-extensions */
#define LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR 15 /* draft-ietf-ccamp-ospf-gmpls-extensions */
#define LS_OPAQUE_TE_LINK_SUBTLV_SHARED_RISK_GROUP 16 /* draft-ietf-ccamp-ospf-gmpls-extensions */
-#define LS_OPAQUE_TE_LINK_SUBTLV_DIFFSERV_TE 17 /* draft-ietf-tewg-diff-te-proto-06 */
+#define LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS 17 /* rfc4124 */
#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_PTP 1 /* rfc3630 */
#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_MA 2 /* rfc3630 */
diff --git a/contrib/tcpdump/print-802_11.c b/contrib/tcpdump/print-802_11.c
index 32f85ce7e182..c4ec7ee474b4 100644
--- a/contrib/tcpdump/print-802_11.c
+++ b/contrib/tcpdump/print-802_11.c
@@ -22,7 +22,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-802_11.c,v 1.31.2.1 2005/04/20 19:32:41 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-802_11.c,v 1.31.2.5 2005/07/30 21:37:50 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -62,23 +62,7 @@ do { \
} while (0)
static const char *auth_alg_text[]={"Open System","Shared Key","EAP"};
-static const char *subtype_text[]={
- "Assoc Request",
- "Assoc Response",
- "ReAssoc Request",
- "ReAssoc Response",
- "Probe Request",
- "Probe Response",
- "",
- "",
- "Beacon",
- "ATIM",
- "Disassociation",
- "Authentication",
- "DeAuthentication",
- "",
- ""
-};
+#define NUM_AUTH_ALGS (sizeof auth_alg_text / sizeof auth_alg_text[0])
static const char *status_text[] = {
"Succesful", /* 0 */
@@ -102,8 +86,8 @@ static const char *status_text[] = {
"Association denied because AP is unable to handle additional associated stations", /* 17 */
"Association denied due to requesting station not supporting all of the " \
"data rates in BSSBasicRateSet parameter", /* 18 */
- NULL
};
+#define NUM_STATUSES (sizeof status_text / sizeof status_text[0])
static const char *reason_text[] = {
"Reserved", /* 0 */
@@ -112,12 +96,12 @@ static const char *reason_text[] = {
"Deauthenticated because sending station is leaving (or has left) IBSS or ESS", /* 3 */
"Disassociated due to inactivity", /* 4 */
"Disassociated because AP is unable to handle all currently associated stations", /* 5 */
- "Class 2 frame receivedfrom nonauthenticated station", /* 6 */
+ "Class 2 frame received from nonauthenticated station", /* 6 */
"Class 3 frame received from nonassociated station", /* 7 */
"Disassociated because sending station is leaving (or has left) BSS", /* 8 */
"Station requesting (re)association is not authenticated with responding station", /* 9 */
- NULL
};
+#define NUM_REASONS (sizeof reason_text / sizeof reason_text[0])
static int
wep_print(const u_char *p)
@@ -309,7 +293,9 @@ handle_assoc_response(const u_char *p)
printf(" AID(%x) :%s: %s", ((u_int16_t)(pbody.aid << 2 )) >> 2 ,
CAPABILITY_PRIVACY(pbody.capability_info) ? " PRIVACY " : "",
- (pbody.status_code < 19 ? status_text[pbody.status_code] : "n/a"));
+ (pbody.status_code < NUM_STATUSES
+ ? status_text[pbody.status_code]
+ : "n/a"));
return 1;
}
@@ -419,8 +405,9 @@ handle_disassoc(const u_char *p)
pbody.reason_code = EXTRACT_LE_16BITS(p);
printf(": %s",
- (pbody.reason_code < 10) ? reason_text[pbody.reason_code]
- : "Reserved" );
+ (pbody.reason_code < NUM_REASONS)
+ ? reason_text[pbody.reason_code]
+ : "Reserved" );
return 1;
}
@@ -449,21 +436,25 @@ handle_auth(const u_char *p)
((pbody.auth_trans_seq_num == 2) ||
(pbody.auth_trans_seq_num == 3))) {
printf(" (%s)-%x [Challenge Text] %s",
- (pbody.auth_alg < 4) ? auth_alg_text[pbody.auth_alg]
- : "Reserved",
+ (pbody.auth_alg < NUM_AUTH_ALGS)
+ ? auth_alg_text[pbody.auth_alg]
+ : "Reserved",
pbody.auth_trans_seq_num,
((pbody.auth_trans_seq_num % 2)
- ? ((pbody.status_code < 19)
+ ? ((pbody.status_code < NUM_STATUSES)
? status_text[pbody.status_code]
: "n/a") : ""));
return 1;
}
printf(" (%s)-%x: %s",
- (pbody.auth_alg < 4) ? auth_alg_text[pbody.auth_alg] : "Reserved",
+ (pbody.auth_alg < NUM_AUTH_ALGS)
+ ? auth_alg_text[pbody.auth_alg]
+ : "Reserved",
pbody.auth_trans_seq_num,
(pbody.auth_trans_seq_num % 2)
- ? ((pbody.status_code < 19) ? status_text[pbody.status_code]
- : "n/a")
+ ? ((pbody.status_code < NUM_STATUSES)
+ ? status_text[pbody.status_code]
+ : "n/a")
: "");
return 1;
@@ -483,8 +474,9 @@ handle_deauth(const struct mgmt_header_t *pmh, const u_char *p)
pbody.reason_code = EXTRACT_LE_16BITS(p);
offset += IEEE802_11_REASON_LEN;
- reason = (pbody.reason_code < 10) ? reason_text[pbody.reason_code]
- : "Reserved";
+ reason = (pbody.reason_code < NUM_REASONS)
+ ? reason_text[pbody.reason_code]
+ : "Reserved";
if (eflag) {
printf(": %s", reason);
@@ -504,28 +496,36 @@ static int
mgmt_body_print(u_int16_t fc, const struct mgmt_header_t *pmh,
const u_char *p)
{
- printf("%s", subtype_text[FC_SUBTYPE(fc)]);
-
switch (FC_SUBTYPE(fc)) {
case ST_ASSOC_REQUEST:
+ printf("Assoc Request");
return handle_assoc_request(p);
case ST_ASSOC_RESPONSE:
+ printf("Assoc Response");
return handle_assoc_response(p);
case ST_REASSOC_REQUEST:
+ printf("ReAssoc Request");
return handle_reassoc_request(p);
case ST_REASSOC_RESPONSE:
+ printf("ReAssoc Response");
return handle_reassoc_response(p);
case ST_PROBE_REQUEST:
+ printf("Probe Request");
return handle_probe_request(p);
case ST_PROBE_RESPONSE:
+ printf("Probe Response");
return handle_probe_response(p);
case ST_BEACON:
+ printf("Beacon");
return handle_beacon(p);
case ST_ATIM:
+ printf("ATIM");
return handle_atim();
case ST_DISASSOC:
+ printf("Disassociation");
return handle_disassoc(p);
case ST_AUTH:
+ printf("Authentication");
if (!TTEST2(*p, 3))
return 0;
if ((p[0] == 0 ) && (p[1] == 0) && (p[2] == 0)) {
@@ -534,6 +534,7 @@ mgmt_body_print(u_int16_t fc, const struct mgmt_header_t *pmh,
}
return handle_auth(p);
case ST_DEAUTH:
+ printf("DeAuthentication");
return handle_deauth(pmh, p);
break;
default:
@@ -900,7 +901,7 @@ ieee802_11_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ",
etherproto_string(
htons(extracted_ethertype)));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
break;
diff --git a/contrib/tcpdump/print-ap1394.c b/contrib/tcpdump/print-ap1394.c
index 8cfbba63a11b..a01ce34cef65 100644
--- a/contrib/tcpdump/print-ap1394.c
+++ b/contrib/tcpdump/print-ap1394.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ap1394.c,v 1.3 2004/03/17 23:24:35 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ap1394.c,v 1.3.2.1 2005/07/07 01:24:33 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -111,7 +111,7 @@ ap1394_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag)
ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
diff --git a/contrib/tcpdump/print-ascii.c b/contrib/tcpdump/print-ascii.c
index 02be8e0e7f8e..cd48edd98d66 100644
--- a/contrib/tcpdump/print-ascii.c
+++ b/contrib/tcpdump/print-ascii.c
@@ -42,7 +42,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ascii.c,v 1.16 2004/07/21 22:00:10 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ascii.c,v 1.16.2.1 2005/07/06 20:54:49 guy Exp $";
#endif
#include <tcpdump-stdinc.h>
#include <stdio.h>
@@ -57,78 +57,74 @@ static const char rcsid[] _U_ =
(HEXDUMP_HEXSTUFF_PER_SHORT * HEXDUMP_SHORTS_PER_LINE)
void
-ascii_print_with_offset(register const char *ident, register const u_char *cp, register u_int length,
- register u_int oset)
+ascii_print(register const u_char *cp, register u_int length)
+{
+ register int s;
+
+ putchar('\n');
+ while (length > 0) {
+ s = *cp++;
+ length--;
+ if (!isgraph(s) &&
+ (s != '\t' && s != ' ' && s != '\n' && s != '\r'))
+ putchar('.');
+ else
+ putchar(s);
+ }
+}
+
+void
+hex_and_ascii_print_with_offset(register const char *ident,
+ register const u_char *cp, register u_int length, register u_int oset)
{
register u_int i;
register int s1, s2;
register int nshorts;
char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp;
char asciistuff[ASCII_LINELENGTH+1], *asp;
- u_int maxlength = (Aflag ? ASCII_LINELENGTH : HEXDUMP_SHORTS_PER_LINE);
nshorts = length / sizeof(u_short);
i = 0;
hsp = hexstuff; asp = asciistuff;
- if (Aflag) *(asp++) = '\n';
while (--nshorts >= 0) {
s1 = *cp++;
s2 = *cp++;
- if (Aflag) {
- i += 2;
- *(asp++) = (isgraph(s1) ? s1 : (s1 != '\t' && s1 != ' ' && s1 != '\n' && s1 != '\r' ? '.' : s1) );
- *(asp++) = (isgraph(s2) ? s2 : (s2 != '\t' && s2 != ' ' && s2 != '\n' && s2 != '\r' ? '.' : s2) );
- if (s1 == '\n' || s2 == '\n') i = maxlength;
-
- } else {
- (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
- " %02x%02x", s1, s2);
- hsp += HEXDUMP_HEXSTUFF_PER_SHORT;
- *(asp++) = (isgraph(s1) ? s1 : '.');
- *(asp++) = (isgraph(s2) ? s2 : '.');
- i++;
- }
- if (i >= maxlength) {
+ (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
+ " %02x%02x", s1, s2);
+ hsp += HEXDUMP_HEXSTUFF_PER_SHORT;
+ *(asp++) = (isgraph(s1) ? s1 : '.');
+ *(asp++) = (isgraph(s2) ? s2 : '.');
+ i++;
+ if (i >= HEXDUMP_SHORTS_PER_LINE) {
*hsp = *asp = '\0';
- if (Aflag) {
- (void)printf("%s", asciistuff);
- } else {
- (void)printf("%s0x%04x: %-*s %s",
- ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
- hexstuff, asciistuff);
- }
+ (void)printf("%s0x%04x: %-*s %s",
+ ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
+ hexstuff, asciistuff);
i = 0; hsp = hexstuff; asp = asciistuff;
oset += HEXDUMP_BYTES_PER_LINE;
}
}
if (length & 1) {
s1 = *cp++;
- if (Aflag) {
- *(asp++) = (isgraph(s1) ? s1 : (s1 != '\t' && s1 != ' ' && s1 != '\n' && s1 != '\r' ? '.' : s1) );
- } else {
- (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
- " %02x", s1);
- hsp += 3;
- *(asp++) = (isgraph(s1) ? s1 : '.');
- }
+ (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
+ " %02x", s1);
+ hsp += 3;
+ *(asp++) = (isgraph(s1) ? s1 : '.');
++i;
}
if (i > 0) {
*hsp = *asp = '\0';
- if (Aflag) {
- (void)printf("%s%s", ident, asciistuff);
- } else {
- (void)printf("%s0x%04x: %-*s %s",
- ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
- hexstuff, asciistuff);
- }
+ (void)printf("%s0x%04x: %-*s %s",
+ ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
+ hexstuff, asciistuff);
}
}
void
-ascii_print(register const char *ident, register const u_char *cp, register u_int length)
+hex_and_ascii_print(register const char *ident, register const u_char *cp,
+ register u_int length)
{
- ascii_print_with_offset(ident, cp, length, 0);
+ hex_and_ascii_print_with_offset(ident, cp, length, 0);
}
/*
@@ -171,15 +167,17 @@ hex_print(register const char *ident, register const u_char *cp, register u_int
int
main(int argc, char *argv[])
{
- hex_print("Hello, World!\n", 14);
+ hex_print("\n\t", "Hello, World!\n", 14);
+ printf("\n");
+ hex_and_ascii_print("\n\t", "Hello, World!\n", 14);
printf("\n");
ascii_print("Hello, World!\n", 14);
printf("\n");
#define TMSG "Now is the winter of our discontent...\n"
- ascii_print_with_offset(TMSG, sizeof(TMSG) - 1, 0x100);
+ hex_print_with_offset("\n\t", TMSG, sizeof(TMSG) - 1, 0x100);
+ printf("\n");
+ hex_and_ascii_print_with_offset("\n\t", TMSG, sizeof(TMSG) - 1, 0x100);
printf("\n");
exit(0);
}
#endif /* MAIN */
-
-
diff --git a/contrib/tcpdump/print-atm.c b/contrib/tcpdump/print-atm.c
index 672681882a85..b14a580d0c4f 100644
--- a/contrib/tcpdump/print-atm.c
+++ b/contrib/tcpdump/print-atm.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-atm.c,v 1.38.2.2 2005/06/20 07:45:06 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-atm.c,v 1.38.2.3 2005/07/07 01:24:34 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -106,7 +106,7 @@ atm_llc_print(const u_char *p, int length, int caplen)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
}
diff --git a/contrib/tcpdump/print-chdlc.c b/contrib/tcpdump/print-chdlc.c
index d2b561154bd6..244119fa0ec6 100644
--- a/contrib/tcpdump/print-chdlc.c
+++ b/contrib/tcpdump/print-chdlc.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-chdlc.c,v 1.32.2.7 2005/04/27 14:35:56 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-chdlc.c,v 1.32.2.8 2005/08/23 10:29:42 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -48,13 +48,18 @@ chdlc_if_print(const struct pcap_pkthdr *h, register const u_char *p)
{
register u_int length = h->len;
register u_int caplen = h->caplen;
- const struct ip *ip;
- u_int proto;
if (caplen < CHDLC_HDRLEN) {
printf("[|chdlc]");
return (caplen);
}
+ return (chdlc_print(p,length));
+}
+
+u_int
+chdlc_print(register const u_char *p, u_int length) {
+ u_int proto;
+ const struct ip *ip;
proto = EXTRACT_16BITS(&p[2]);
if (eflag) {
diff --git a/contrib/tcpdump/print-cip.c b/contrib/tcpdump/print-cip.c
index b877788e913c..774b7002378b 100644
--- a/contrib/tcpdump/print-cip.c
+++ b/contrib/tcpdump/print-cip.c
@@ -22,7 +22,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-cip.c,v 1.25 2005/04/06 21:32:39 mcr Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-cip.c,v 1.25.2.1 2005/07/07 01:24:34 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -94,7 +94,7 @@ cip_if_print(const struct pcap_pkthdr *h, const u_char *p)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
} else {
diff --git a/contrib/tcpdump/print-dccp.c b/contrib/tcpdump/print-dccp.c
new file mode 100644
index 000000000000..c0a5ea3a8966
--- /dev/null
+++ b/contrib/tcpdump/print-dccp.c
@@ -0,0 +1,526 @@
+/*
+ * Copyright (C) Arnaldo Carvalho de Melo 2004
+ * Copyright (C) Ian McDonald 2005
+ * Copyright (C) Yoshifumi Nishida 2005
+ *
+ * This software may be distributed either under the terms of the
+ * BSD-style license that accompanies tcpdump or the GNU GPL version 2
+ */
+
+#ifndef lint
+static const char rcsid[] _U_ =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-dccp.c,v 1.1.2.2 2005/09/20 06:25:45 guy Exp $ (LBL)";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include "dccp.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include "interface.h"
+#include "addrtoname.h"
+#include "extract.h" /* must come after interface.h */
+#include "ip.h"
+#ifdef INET6
+#include "ip6.h"
+#endif
+#include "ipproto.h"
+
+static const char *dccp_reset_codes[] = {
+ "unspecified",
+ "closed",
+ "aborted",
+ "no_connection",
+ "packet_error",
+ "option_error",
+ "mandatory_error",
+ "connection_refused",
+ "bad_service_code",
+ "too_busy",
+ "bad_init_cookie",
+ "aggression_penalty",
+};
+
+static const char *dccp_feature_nums[] = {
+ "reserved",
+ "ccid",
+ "allow_short_seqno",
+ "sequence_window",
+ "ecn_incapable",
+ "ack_ratio",
+ "send_ack_vector",
+ "send_ndp_count",
+ "minimum checksum coverage",
+ "check data checksum",
+};
+
+static int dccp_cksum(const struct ip *ip,
+ const struct dccp_hdr *dh, u_int len)
+{
+ union phu {
+ struct phdr {
+ u_int32_t src;
+ u_int32_t dst;
+ u_char mbz;
+ u_char proto;
+ u_int16_t len;
+ } ph;
+ u_int16_t pa[6];
+ } phu;
+ const u_int16_t *sp;
+
+ /* pseudo-header.. */
+ phu.ph.mbz = 0;
+ phu.ph.len = htons(len);
+ phu.ph.proto = IPPROTO_DCCP;
+ memcpy(&phu.ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
+ if (IP_HL(ip) == 5)
+ memcpy(&phu.ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
+ else
+ phu.ph.dst = ip_finddst(ip);
+
+ sp = &phu.pa[0];
+ return in_cksum((u_short *)dh, len, sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]);
+}
+
+#ifdef INET6
+static int dccp6_cksum(const struct ip6_hdr *ip6, const struct dccp_hdr *dh, u_int len)
+{
+ size_t i;
+ const u_int16_t *sp;
+ u_int32_t sum;
+ union {
+ struct {
+ struct in6_addr ph_src;
+ struct in6_addr ph_dst;
+ u_int32_t ph_len;
+ u_int8_t ph_zero[3];
+ u_int8_t ph_nxt;
+ } ph;
+ u_int16_t pa[20];
+ } phu;
+
+ /* pseudo-header */
+ memset(&phu, 0, sizeof(phu));
+ phu.ph.ph_src = ip6->ip6_src;
+ phu.ph.ph_dst = ip6->ip6_dst;
+ phu.ph.ph_len = htonl(len);
+ phu.ph.ph_nxt = IPPROTO_DCCP;
+
+ sum = 0;
+ for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++)
+ sum += phu.pa[i];
+
+ sp = (const u_int16_t *)dh;
+
+ for (i = 0; i < (len & ~1); i += 2)
+ sum += *sp++;
+
+ if (len & 1)
+ sum += htons((*(const u_int8_t *)sp) << 8);
+
+ while (sum > 0xffff)
+ sum = (sum & 0xffff) + (sum >> 16);
+ sum = ~sum & 0xffff;
+
+ return (sum);
+}
+#endif
+
+static const char *dccp_reset_code(u_int8_t code)
+{
+ if (code >= __DCCP_RESET_CODE_LAST)
+ return "invalid";
+ return dccp_reset_codes[code];
+}
+
+static u_int64_t dccp_seqno(const struct dccp_hdr *dh)
+{
+ u_int32_t seq_high = DCCPH_SEQ(dh);
+ u_int64_t seqno = EXTRACT_24BITS(&seq_high) & 0xFFFFFF;
+
+ if (DCCPH_X(dh) != 0) {
+ const struct dccp_hdr_ext *dhx = (void *)dh + sizeof(*dh);
+ u_int32_t seq_low = dhx->dccph_seq_low;
+ seqno &= 0x00FFFF; /* clear reserved field */
+ seqno = (seqno << 32) + EXTRACT_32BITS(&seq_low);
+ }
+
+ return seqno;
+}
+
+static u_int64_t dccp_ack_no(const struct dccp_hdr *dh,
+ const struct dccp_hdr_ack_bits *dh_ack)
+{
+ u_int32_t ack_high = DCCPH_ACK(dh_ack);
+ u_int64_t ackno = EXTRACT_24BITS(&ack_high) & 0xFFFFFF;
+
+ if (DCCPH_X(dh) != 0) {
+ u_int32_t ack_low = dh_ack->dccph_ack_nr_low;
+
+ ackno &= 0x00FFFF; /* clear reserved field */
+ ackno = (ackno << 32) + EXTRACT_32BITS(&ack_low);
+ }
+
+ return ackno;
+}
+
+static inline unsigned int dccp_basic_hdr_len(const struct dccp_hdr *dh)
+{
+ return sizeof(*dh) + (DCCPH_X(dh) ? sizeof(struct dccp_hdr_ext) : 0);
+}
+
+static inline unsigned int dccp_packet_hdr_len(const u_int8_t type)
+{
+ if (type == DCCP_PKT_DATA)
+ return 0;
+ if (type == DCCP_PKT_DATAACK ||
+ type == DCCP_PKT_ACK ||
+ type == DCCP_PKT_SYNC ||
+ type == DCCP_PKT_SYNCACK ||
+ type == DCCP_PKT_CLOSE ||
+ type == DCCP_PKT_CLOSEREQ)
+ return sizeof(struct dccp_hdr_ack_bits);
+ if (type == DCCP_PKT_REQUEST)
+ return sizeof(struct dccp_hdr_request);
+ if (type == DCCP_PKT_RESPONSE)
+ return sizeof(struct dccp_hdr_response);
+ return sizeof(struct dccp_hdr_reset);
+}
+
+static int dccp_print_option(const u_char *option);
+
+/**
+ * dccp_print - show dccp packet
+ * @bp - beginning of dccp packet
+ * @data2 - beginning of enclosing
+ * @len - lenght of ip packet
+ */
+void dccp_print(const u_char *bp, const u_char *data2, u_int len)
+{
+ const struct dccp_hdr *dh;
+ const struct ip *ip;
+#ifdef INET6
+ const struct ip6_hdr *ip6;
+#endif
+ const u_char *cp;
+ u_short sport, dport;
+ u_int hlen;
+ u_int extlen = 0;
+
+ dh = (const struct dccp_hdr *)bp;
+
+ ip = (struct ip *)data2;
+#ifdef INET6
+ if (IP_V(ip) == 6)
+ ip6 = (const struct ip6_hdr *)data2;
+ else
+ ip6 = NULL;
+#endif /*INET6*/
+ cp = (const u_char *)(dh + 1);
+ if (cp > snapend) {
+ printf("[Invalid packet|dccp]");
+ return;
+ }
+
+ if (len < sizeof(struct dccp_hdr)) {
+ printf("truncated-dccp - %ld bytes missing!",
+ (long)len - sizeof(struct dccp_hdr));
+ return;
+ }
+
+ sport = EXTRACT_16BITS(&dh->dccph_sport);
+ dport = EXTRACT_16BITS(&dh->dccph_dport);
+ hlen = dh->dccph_doff * 4;
+
+#ifdef INET6
+ if (ip6) {
+ (void)printf("%s.%d > %s.%d: ",
+ ip6addr_string(&ip6->ip6_src), sport,
+ ip6addr_string(&ip6->ip6_dst), dport);
+ } else
+#endif /*INET6*/
+ {
+ (void)printf("%s.%d > %s.%d: ",
+ ipaddr_string(&ip->ip_src), sport,
+ ipaddr_string(&ip->ip_dst), dport);
+ }
+ fflush(stdout);
+
+ if (qflag) {
+ (void)printf(" %d", len - hlen);
+ if (hlen > len) {
+ (void)printf("dccp [bad hdr length %u - too long, > %u]",
+ hlen, len);
+ }
+ return;
+ }
+
+ /* other variables in generic header */
+ if (vflag) {
+ (void)printf("CCVal %d, CsCov %d, ", DCCPH_CCVAL(dh), DCCPH_CSCOV(dh));
+ }
+
+ /* checksum calculation */
+#ifdef INET6
+ if (ip6) {
+ if (ip6->ip6_plen && vflag) {
+ u_int16_t sum, dccp_sum;
+
+ sum = dccp6_cksum(ip6, dh, len);
+ dccp_sum = EXTRACT_16BITS(&dh->dccph_checksum);
+ printf("cksum 0x%04x", dccp_sum);
+ if (sum != 0) {
+ (void)printf(" (incorrect (-> 0x%04x), ",in_cksum_shouldbe(dccp_sum, sum));
+ } else
+ (void)printf(" (correct), ");
+ }
+ } else
+#endif /* INET6 */
+ if (vflag)
+ {
+ u_int16_t sum, dccp_sum;
+
+ sum = dccp_cksum(ip, dh, len);
+ dccp_sum = EXTRACT_16BITS(&dh->dccph_checksum);
+ printf("cksum 0x%04x", dccp_sum);
+ if (sum != 0) {
+ (void)printf(" (incorrect (-> 0x%04x), ",in_cksum_shouldbe(dccp_sum, sum));
+ } else
+ (void)printf(" (correct), ");
+ }
+
+ switch (DCCPH_TYPE(dh)) {
+ case DCCP_PKT_REQUEST: {
+ struct dccp_hdr_request *dhr =
+ (struct dccp_hdr_request *)(bp + dccp_basic_hdr_len(dh));
+ TCHECK(*dhr);
+ (void)printf("request (service=%d) ", dhr->dccph_req_service);
+ extlen += 4;
+ break;
+ }
+ case DCCP_PKT_RESPONSE: {
+ struct dccp_hdr_response *dhr =
+ (struct dccp_hdr_response *)(bp + dccp_basic_hdr_len(dh));
+ TCHECK(*dhr);
+ (void)printf("response (service=%d, ack=%" PRIu64 ") ",
+ dhr->dccph_resp_service,
+ dccp_ack_no(dh,&(dhr->dccph_resp_ack)));
+ extlen += 12;
+ break;
+ }
+ case DCCP_PKT_DATA:
+ (void)printf("data ");
+ break;
+ case DCCP_PKT_ACK: {
+ struct dccp_hdr_ack_bits *dha =
+ (struct dccp_hdr_ack_bits *)(bp + dccp_basic_hdr_len(dh));
+ TCHECK(*dha);
+ (void)printf("ack (ack=%" PRIu64 ") ",
+ dccp_ack_no(dh,dha));
+ extlen += 8;
+ break;
+ }
+ case DCCP_PKT_DATAACK: {
+ struct dccp_hdr_ack_bits *dha =
+ (struct dccp_hdr_ack_bits *)(bp + dccp_basic_hdr_len(dh));
+ TCHECK(*dha);
+ (void)printf("dataack (ack=%" PRIu64 ") ",
+ dccp_ack_no(dh,dha));
+ extlen += 8;
+ break;
+ }
+ case DCCP_PKT_CLOSEREQ:
+ (void)printf("closereq ");
+ extlen += 8;
+ break;
+ case DCCP_PKT_CLOSE:
+ (void)printf("close ");
+ extlen += 8;
+ break;
+ case DCCP_PKT_RESET: {
+ struct dccp_hdr_reset *dhr =
+ (struct dccp_hdr_reset *)(bp + dccp_basic_hdr_len(dh));
+ TCHECK(*dhr);
+ (void)printf("reset (code=%s) ",
+ dccp_reset_code(dhr->dccph_reset_code));
+ extlen += 12;
+ break;
+ }
+ case DCCP_PKT_SYNC:
+ (void)printf("sync ");
+ extlen += 8;
+ break;
+ case DCCP_PKT_SYNCACK:
+ (void)printf("syncack ");
+ extlen += 8;
+ break;
+ default:
+ (void)printf("invalid ");
+ break;
+ }
+
+ if (vflag < 2)
+ return;
+
+ (void)printf("seq %" PRIu64, dccp_seqno(dh));
+
+ /* process options */
+ if (hlen > dccp_basic_hdr_len(dh) + extlen){
+ const u_char *cp;
+ u_int optlen;
+ cp = bp + dccp_basic_hdr_len(dh) + extlen;
+ printf(" <");
+
+ hlen -= dccp_basic_hdr_len(dh) + extlen;
+ while(1){
+ TCHECK(*cp);
+ optlen = dccp_print_option(cp);
+ if (!optlen) goto trunc2;
+ if (hlen <= optlen) break;
+ hlen -= optlen;
+ cp += optlen;
+ printf(", ");
+ }
+ printf(">");
+ }
+ return;
+trunc:
+ printf("[|dccp]");
+trunc2:
+ return;
+}
+
+static int dccp_print_option(const u_char *option)
+{
+ u_int8_t optlen, i;
+ u_int32_t *ts;
+ u_int16_t *var16;
+ u_int32_t *var32;
+
+ TCHECK(*option);
+
+ if (*option >= 32) {
+ TCHECK(*(option+1));
+ optlen = *(option +1);
+ if (optlen < 2) {
+ printf("Option %d optlen too short",*option);
+ return 1;
+ }
+ } else optlen = 1;
+
+ TCHECK2(*option,optlen);
+
+ switch (*option){
+ case 0:
+ printf("nop");
+ break;
+ case 1:
+ printf("mandatory");
+ break;
+ case 2:
+ printf("slowreceiver");
+ break;
+ case 32:
+ printf("change_l");
+ if (*(option +2) < 10){
+ printf(" %s", dccp_feature_nums[*(option +2)]);
+ for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i));
+ }
+ break;
+ case 33:
+ printf("confirm_l");
+ if (*(option +2) < 10){
+ printf(" %s", dccp_feature_nums[*(option +2)]);
+ for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i));
+ }
+ break;
+ case 34:
+ printf("change_r");
+ if (*(option +2) < 10){
+ printf(" %s", dccp_feature_nums[*(option +2)]);
+ for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i));
+ }
+ break;
+ case 35:
+ printf("confirm_r");
+ if (*(option +2) < 10){
+ printf(" %s", dccp_feature_nums[*(option +2)]);
+ for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i));
+ }
+ break;
+ case 36:
+ printf("initcookie 0x");
+ for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i));
+ break;
+ case 37:
+ printf("ndp_count");
+ for (i = 0; i < optlen -2; i ++) printf(" %d", *(option +2 + i));
+ break;
+ case 38:
+ printf("ack_vector0 0x");
+ for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i));
+ break;
+ case 39:
+ printf("ack_vector1 0x");
+ for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i));
+ break;
+ case 40:
+ printf("data_dropped 0x");
+ for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i));
+ break;
+ case 41:
+ ts = (u_int32_t *)(option + 2);
+ printf("timestamp %u", (u_int32_t)ntohl(*ts));
+ break;
+ case 42:
+ ts = (u_int32_t *)(option + 2);
+ printf("timestamp_echo %u", (u_int32_t)ntohl(*ts));
+ break;
+ case 43:
+ printf("elapsed_time ");
+ if (optlen == 6){
+ ts = (u_int32_t *)(option + 2);
+ printf("%u", (u_int32_t)ntohl(*ts));
+ } else {
+ var16 = (u_int16_t *)(option + 2);
+ printf("%u", ntohs(*var16));
+ }
+ break;
+ case 44:
+ printf("data_checksum ");
+ for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i));
+ break;
+ default :
+ if (*option >= 128) {
+ printf("CCID option %d",*option);
+ switch (optlen) {
+ case 4:
+ var16 = (u_int16_t *)(option + 2);
+ printf(" %u",ntohs(*var16));
+ break;
+ case 6:
+ var32 = (u_int32_t *)(option + 2);
+ printf(" %u",(u_int32_t)ntohl(*var32));
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+
+ printf("unknown_opt %d", *option);
+ break;
+ }
+
+ return optlen;
+trunc:
+ printf("[|dccp]");
+ return 0;
+}
diff --git a/contrib/tcpdump/print-ether.c b/contrib/tcpdump/print-ether.c
index e445017415c8..8d87830785b6 100644
--- a/contrib/tcpdump/print-ether.c
+++ b/contrib/tcpdump/print-ether.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.95.2.2 2005/07/01 16:16:30 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.95.2.4 2005/07/10 14:47:57 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -65,6 +65,7 @@ const struct tok ethertype_values[] = {
{ ETHERTYPE_AARP, "Appletalk ARP" },
{ ETHERTYPE_IPX, "IPX" },
{ ETHERTYPE_PPP, "PPP" },
+ { ETHERTYPE_SLOW, "Slow Protocols" },
{ ETHERTYPE_PPPOED, "PPPoE D" },
{ ETHERTYPE_PPPOES, "PPPoE S" },
{ ETHERTYPE_EAPOL, "EAPOL" },
@@ -136,7 +137,7 @@ ether_print(const u_char *p, u_int length, u_int caplen)
if (!eflag)
ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
} else if (ether_encap_print(ether_type, p, length, caplen,
@@ -145,7 +146,7 @@ ether_print(const u_char *p, u_int length, u_int caplen)
if (!eflag)
ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
}
@@ -245,7 +246,7 @@ ether_encap_print(u_short ether_type, const u_char *p,
ether_hdr_print(p - 18, length + 4);
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p - 18, caplen + 4);
return (1);
@@ -270,7 +271,7 @@ ether_encap_print(u_short ether_type, const u_char *p,
ether_hdr_print(p - 16, length + 2);
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p - 16, caplen + 2);
return (1);
@@ -295,6 +296,10 @@ ether_encap_print(u_short ether_type, const u_char *p,
}
return (1);
+ case ETHERTYPE_SLOW:
+ slow_print(p, length);
+ return (1);
+
case ETHERTYPE_LOOPBACK:
return (1);
diff --git a/contrib/tcpdump/print-fddi.c b/contrib/tcpdump/print-fddi.c
index d4112e17dbd5..7d12a303252d 100644
--- a/contrib/tcpdump/print-fddi.c
+++ b/contrib/tcpdump/print-fddi.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-fddi.c,v 1.64 2004/03/17 23:24:37 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-fddi.c,v 1.64.2.1 2005/07/07 01:24:35 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -280,7 +280,7 @@ fddi_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
} else if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_SMT)
@@ -290,7 +290,7 @@ fddi_print(const u_char *p, u_int length, u_int caplen)
if (!eflag)
fddi_hdr_print(fddip, length + FDDI_HDRLEN, ESRC(&ehdr),
EDST(&ehdr));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
}
diff --git a/contrib/tcpdump/print-fr.c b/contrib/tcpdump/print-fr.c
index fd04dce97f49..189612d81f58 100644
--- a/contrib/tcpdump/print-fr.c
+++ b/contrib/tcpdump/print-fr.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#)$Header: /tcpdump/master/tcpdump/print-fr.c,v 1.32.2.4 2005/05/27 14:56:52 hannes Exp $ (LBL)";
+ "@(#)$Header: /tcpdump/master/tcpdump/print-fr.c,v 1.32.2.12 2005/08/23 03:15:51 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -82,6 +82,20 @@ struct tok fr_header_flag_values[] = {
{ 0, NULL }
};
+/* FRF.15 / FRF.16 */
+#define MFR_B_BIT 0x80
+#define MFR_E_BIT 0x40
+#define MFR_C_BIT 0x20
+#define MFR_BEC_MASK (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT)
+#define MFR_CTRL_FRAME (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT)
+#define MFR_FRAG_FRAME (MFR_B_BIT | MFR_E_BIT )
+
+struct tok frf_flag_values[] = {
+ { MFR_B_BIT, "Begin" },
+ { MFR_E_BIT, "End" },
+ { MFR_C_BIT, "Control" },
+ { 0, NULL }
+};
/* Finds out Q.922 address length, DLCI and flags. Returns 0 on success
* save the flags dep. on address length
@@ -250,7 +264,6 @@ fr_print(register const u_char *p, u_int length)
if (eflag)
fr_hdr_print(length, addr_len, dlci, flags, nlpid);
-
p += hdr_len;
length -= hdr_len;
@@ -276,7 +289,7 @@ fr_print(register const u_char *p, u_int length)
if (!eflag)
fr_hdr_print(length + hdr_len, hdr_len,
dlci, flags, nlpid);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p - hdr_len, length + hdr_len);
}
break;
@@ -305,6 +318,191 @@ fr_print(register const u_char *p, u_int length)
}
+#define MFR_CTRL_MSG_ADD_LINK 1
+#define MFR_CTRL_MSG_ADD_LINK_ACK 2
+#define MFR_CTRL_MSG_ADD_LINK_REJ 3
+#define MFR_CTRL_MSG_HELLO 4
+#define MFR_CTRL_MSG_HELLO_ACK 5
+#define MFR_CTRL_MSG_REMOVE_LINK 6
+#define MFR_CTRL_MSG_REMOVE_LINK_ACK 7
+
+struct tok mfr_ctrl_msg_values[] = {
+ { MFR_CTRL_MSG_ADD_LINK, "Add Link" },
+ { MFR_CTRL_MSG_ADD_LINK_ACK, "Add Link ACK" },
+ { MFR_CTRL_MSG_ADD_LINK_REJ, "Add Link Reject" },
+ { MFR_CTRL_MSG_HELLO, "Hello" },
+ { MFR_CTRL_MSG_HELLO_ACK, "Hello ACK" },
+ { MFR_CTRL_MSG_REMOVE_LINK, "Remove Link" },
+ { MFR_CTRL_MSG_REMOVE_LINK_ACK, "Remove Link ACK" },
+ { 0, NULL }
+};
+
+#define MFR_CTRL_IE_BUNDLE_ID 1
+#define MFR_CTRL_IE_LINK_ID 2
+#define MFR_CTRL_IE_MAGIC_NUM 3
+#define MFR_CTRL_IE_TIMESTAMP 5
+#define MFR_CTRL_IE_VENDOR_EXT 6
+#define MFR_CTRL_IE_CAUSE 7
+
+struct tok mfr_ctrl_ie_values[] = {
+ { MFR_CTRL_IE_BUNDLE_ID, "Bundle ID"},
+ { MFR_CTRL_IE_LINK_ID, "Link ID"},
+ { MFR_CTRL_IE_MAGIC_NUM, "Magic Number"},
+ { MFR_CTRL_IE_TIMESTAMP, "Timestamp"},
+ { MFR_CTRL_IE_VENDOR_EXT, "Vendor Extension"},
+ { MFR_CTRL_IE_CAUSE, "Cause"},
+ { 0, NULL }
+};
+
+#define MFR_ID_STRING_MAXLEN 50
+
+struct ie_tlv_header_t {
+ u_int8_t ie_type;
+ u_int8_t ie_len;
+};
+
+u_int
+mfr_print(register const u_char *p, u_int length)
+{
+ u_int tlen,idx,hdr_len = 0;
+ u_int16_t sequence_num;
+ u_int8_t ie_type,ie_len;
+ const u_int8_t *tptr;
+
+
+/*
+ * FRF.16 Link Integrity Control Frame
+ *
+ * 7 6 5 4 3 2 1 0
+ * +----+----+----+----+----+----+----+----+
+ * | B | E | C=1| 0 0 0 0 | EA |
+ * +----+----+----+----+----+----+----+----+
+ * | 0 0 0 0 0 0 0 0 |
+ * +----+----+----+----+----+----+----+----+
+ * | message type |
+ * +----+----+----+----+----+----+----+----+
+ */
+
+ TCHECK2(*p, 4); /* minimum frame header length */
+
+ if ((p[0] & MFR_BEC_MASK) == MFR_CTRL_FRAME && p[1] == 0) {
+ printf("FRF.16 Control, Flags [%s], %s, length %u",
+ bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)),
+ tok2str(mfr_ctrl_msg_values,"Unknown Message (0x%02x)",p[2]),
+ length);
+ tptr = p + 3;
+ tlen = length -3;
+ hdr_len = 3;
+
+ if (!vflag)
+ return hdr_len;
+
+ while (tlen>sizeof(struct ie_tlv_header_t)) {
+ TCHECK2(*tptr, sizeof(struct ie_tlv_header_t));
+ ie_type=tptr[0];
+ ie_len=tptr[1];
+
+ printf("\n\tIE %s (%u), length %u: ",
+ tok2str(mfr_ctrl_ie_values,"Unknown",ie_type),
+ ie_type,
+ ie_len);
+
+ /* infinite loop check */
+ if (ie_type == 0 || ie_len <= sizeof(struct ie_tlv_header_t))
+ return hdr_len;
+
+ TCHECK2(*tptr,ie_len);
+ tptr+=sizeof(struct ie_tlv_header_t);
+ /* tlv len includes header */
+ ie_len-=sizeof(struct ie_tlv_header_t);
+ tlen-=sizeof(struct ie_tlv_header_t);
+
+ switch (ie_type) {
+
+ case MFR_CTRL_IE_MAGIC_NUM:
+ printf("0x%08x",EXTRACT_32BITS(tptr));
+ break;
+
+ case MFR_CTRL_IE_BUNDLE_ID: /* same message format */
+ case MFR_CTRL_IE_LINK_ID:
+ for (idx = 0; idx < ie_len && idx < MFR_ID_STRING_MAXLEN; idx++) {
+ if (*(tptr+idx) != 0) /* don't print null termination */
+ safeputchar(*(tptr+idx));
+ else
+ break;
+ }
+ break;
+
+ case MFR_CTRL_IE_TIMESTAMP:
+ if (ie_len == sizeof(struct timeval)) {
+ ts_print((const struct timeval *)tptr);
+ break;
+ }
+ /* fall through and hexdump if no unix timestamp */
+
+ /*
+ * FIXME those are the defined IEs that lack a decoder
+ * you are welcome to contribute code ;-)
+ */
+
+ case MFR_CTRL_IE_VENDOR_EXT:
+ case MFR_CTRL_IE_CAUSE:
+
+ default:
+ if (vflag <= 1)
+ print_unknown_data(tptr,"\n\t ",ie_len);
+ break;
+ }
+
+ /* do we want to see a hexdump of the IE ? */
+ if (vflag > 1 )
+ print_unknown_data(tptr,"\n\t ",ie_len);
+
+ tlen-=ie_len;
+ tptr+=ie_len;
+ }
+ return hdr_len;
+ }
+/*
+ * FRF.16 Fragmentation Frame
+ *
+ * 7 6 5 4 3 2 1 0
+ * +----+----+----+----+----+----+----+----+
+ * | B | E | C=0|seq. (high 4 bits) | EA |
+ * +----+----+----+----+----+----+----+----+
+ * | sequence (low 8 bits) |
+ * +----+----+----+----+----+----+----+----+
+ * | DLCI (6 bits) | CR | EA |
+ * +----+----+----+----+----+----+----+----+
+ * | DLCI (4 bits) |FECN|BECN| DE | EA |
+ * +----+----+----+----+----+----+----+----+
+ */
+
+ sequence_num = (p[0]&0x1e)<<7 | p[1];
+ /* whole packet or first fragment ? */
+ if ((p[0] & MFR_BEC_MASK) == MFR_FRAG_FRAME ||
+ (p[0] & MFR_BEC_MASK) == MFR_B_BIT) {
+ printf("FRF.16 Frag, seq %u, Flags [%s], ",
+ sequence_num,
+ bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)));
+ hdr_len = 2;
+ fr_print(p+hdr_len,length-hdr_len);
+ return hdr_len;
+ }
+
+ /* must be a middle or the last fragment */
+ printf("FRF.16 Frag, seq %u, Flags [%s]",
+ sequence_num,
+ bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)));
+ print_unknown_data(p,"\n\t",length);
+
+ return hdr_len;
+
+ trunc:
+ printf("[|mfr]");
+ return length;
+}
+
/* an NLPID of 0xb1 indicates a 2-byte
* FRF.15 header
*
@@ -320,13 +518,6 @@ fr_print(register const u_char *p, u_int length)
* +----+----+----+----+----+----+----+----+
*/
-struct tok frf15_flag_values[] = {
- { 0x80, "Begin" },
- { 0x40, "End" },
- { 0x20, "Control" },
- { 0, NULL }
-};
-
#define FR_FRF15_FRAGTYPE 0x01
static void
@@ -334,13 +525,13 @@ frf15_print (const u_char *p, u_int length) {
u_int16_t sequence_num, flags;
- flags = p[0]&0xe0;
+ flags = p[0]&MFR_BEC_MASK;
sequence_num = (p[0]&0x1e)<<7 | p[1];
printf("FRF.15, seq 0x%03x, Flags [%s],%s Fragmentation, length %u",
sequence_num,
- bittok2str(frf15_flag_values,"none",flags),
- flags&FR_FRF15_FRAGTYPE ? "Interface" : "End-to-End",
+ bittok2str(frf_flag_values,"none",flags),
+ p[0]&FR_FRF15_FRAGTYPE ? "Interface" : "End-to-End",
length);
/* TODO:
@@ -452,10 +643,10 @@ struct tok fr_lmi_report_type_ie_values[] = {
{ 0, NULL }
};
-/* array of 16 codepages - currently we only support codepage 5 */
+/* array of 16 codepages - currently we only support codepage 1,5 */
static struct tok *fr_q933_ie_codesets[] = {
NULL,
- NULL,
+ fr_q933_ie_values_codeset5,
NULL,
NULL,
NULL,
@@ -472,22 +663,16 @@ static struct tok *fr_q933_ie_codesets[] = {
NULL
};
-
-struct common_ie_header {
- u_int8_t ie_id;
- u_int8_t ie_len;
-};
-
-static int fr_q933_print_ie_codeset5(const struct common_ie_header *ie_p,
+static int fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p,
const u_char *p);
-typedef int (*codeset_pr_func_t)(const struct common_ie_header *ie_p,
+typedef int (*codeset_pr_func_t)(const struct ie_tlv_header_t *ie_p,
const u_char *p);
-/* array of 16 codepages - currently we only support codepage 5 */
+/* array of 16 codepages - currently we only support codepage 1,5 */
static codeset_pr_func_t fr_q933_print_ie_codeset[] = {
NULL,
- NULL,
+ fr_q933_print_ie_codeset5,
NULL,
NULL,
NULL,
@@ -508,10 +693,11 @@ void
q933_print(const u_char *p, u_int length)
{
const u_char *ptemp = p;
- struct common_ie_header *ie_p;
+ struct ie_tlv_header_t *ie_p;
int olen;
int is_ansi = 0;
u_int codeset;
+ u_int ie_is_known = 0;
if (length < 9) { /* shortest: Q.933a LINK VERIFY */
printf("[|q.933]");
@@ -526,7 +712,7 @@ q933_print(const u_char *p, u_int length)
printf("%s", eflag ? "" : "Q.933, ");
/* printing out header part */
- printf(is_ansi ? "ANSI" : "CCITT");
+ printf("%s, codeset %u", is_ansi ? "ANSI" : "CCITT", codeset);
if (p[0])
printf(", Call Ref: 0x%02x", p[0]);
@@ -550,10 +736,10 @@ q933_print(const u_char *p, u_int length)
ptemp += 2 + is_ansi;
/* Loop through the rest of IE */
- while (length > sizeof(struct common_ie_header)) {
- ie_p = (struct common_ie_header *)ptemp;
- if (length < sizeof(struct common_ie_header) ||
- length < sizeof(struct common_ie_header) + ie_p->ie_len) {
+ while (length > sizeof(struct ie_tlv_header_t )) {
+ ie_p = (struct ie_tlv_header_t *)ptemp;
+ if (length < sizeof(struct ie_tlv_header_t ) ||
+ length < sizeof(struct ie_tlv_header_t ) + ie_p->ie_len) {
if (vflag) /* not bark if there is just a trailer */
printf("\n[|q.933]");
else
@@ -565,19 +751,23 @@ q933_print(const u_char *p, u_int length)
* however some IEs (DLCI Status, Link Verify)
* are also intereststing in non-verbose mode */
if (vflag)
- printf("\n\t%s IE (%u), length %u: ",
- tok2str(fr_q933_ie_codesets[codeset],"unknown",ie_p->ie_id),
- ie_p->ie_id,
+ printf("\n\t%s IE (0x%02x), length %u: ",
+ tok2str(fr_q933_ie_codesets[codeset],"unknown",ie_p->ie_type),
+ ie_p->ie_type,
ie_p->ie_len);
-
- if (!fr_q933_print_ie_codeset[codeset] ||
- (*fr_q933_print_ie_codeset[codeset])(ie_p, ptemp)) {
- if (vflag <= 1)
- print_unknown_data(ptemp+2,"\n\t",ie_p->ie_len);
- }
+
+ /* sanity check */
+ if (ie_p->ie_type == 0 || ie_p->ie_len == 0)
+ return;
+
+ if (fr_q933_print_ie_codeset[codeset] != NULL)
+ ie_is_known = fr_q933_print_ie_codeset[codeset](ie_p, ptemp);
+
+ if (vflag >= 1 && !ie_is_known)
+ print_unknown_data(ptemp+2,"\n\t",ie_p->ie_len);
/* do we want to see a hexdump of the IE ? */
- if (vflag> 1)
+ if (vflag> 1 && ie_is_known)
print_unknown_data(ptemp+2,"\n\t ",ie_p->ie_len);
length = length - ie_p->ie_len - 2;
@@ -588,11 +778,11 @@ q933_print(const u_char *p, u_int length)
}
static int
-fr_q933_print_ie_codeset5(const struct common_ie_header *ie_p, const u_char *p)
+fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p, const u_char *p)
{
u_int dlci;
- switch (ie_p->ie_id) {
+ switch (ie_p->ie_type) {
case FR_LMI_ANSI_REPORT_TYPE_IE: /* fall through */
case FR_LMI_CCITT_REPORT_TYPE_IE:
diff --git a/contrib/tcpdump/print-icmp6.c b/contrib/tcpdump/print-icmp6.c
index 2d47ea6a0256..c5039247af11 100644
--- a/contrib/tcpdump/print-icmp6.c
+++ b/contrib/tcpdump/print-icmp6.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-icmp6.c,v 1.79.2.4 2005/05/14 00:42:54 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-icmp6.c,v 1.79.2.6 2005/09/05 09:29:28 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -75,7 +75,7 @@ static struct tok icmp6_type_values[] = {
{ ND_ROUTER_SOLICIT, "router solicitation"},
{ ND_ROUTER_ADVERT, "router advertisement"},
{ ND_NEIGHBOR_SOLICIT, "neighbor solicitation"},
- { ND_NEIGHBOR_ADVERT, "neighbor advertisment"},
+ { ND_NEIGHBOR_ADVERT, "neighbor advertisement"},
{ ND_REDIRECT, "redirect"},
{ ICMP6_ROUTER_RENUMBERING, "router renumbering"},
{ IND_SOLICIT, "inverse neighbor solicitation"},
@@ -131,7 +131,7 @@ static struct tok icmp6_opt_values[] = {
{ ND_OPT_PREFIX_INFORMATION, "prefix info"},
{ ND_OPT_REDIRECTED_HEADER, "redirected header"},
{ ND_OPT_MTU, "mtu"},
- { ND_OPT_ADVINTERVAL, "advertisment interval"},
+ { ND_OPT_ADVINTERVAL, "advertisement interval"},
{ ND_OPT_HOMEAGENT_INFO, "homeagent information"},
{ ND_OPT_ROUTE_INFO, "route info"},
{ 0, NULL }
@@ -764,13 +764,13 @@ mldv2_report_print(const u_char *bp, u_int len)
printf(" [invalid number of groups]");
return;
}
- TCHECK2(bp[group + 4], 16);
+ TCHECK2(bp[group + 4], sizeof(struct in6_addr));
printf(" [gaddr %s", ip6addr_string(&bp[group + 4]));
printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]",
bp[group]));
nsrcs = (bp[group + 2] << 8) + bp[group + 3];
/* Check the number of sources and print them */
- if (len < group + 20 + (nsrcs * 16)) {
+ if (len < group + 20 + (nsrcs * sizeof(struct in6_addr))) {
printf(" [invalid number of sources %d]", nsrcs);
return;
}
@@ -780,13 +780,14 @@ mldv2_report_print(const u_char *bp, u_int len)
/* Print the sources */
(void)printf(" {");
for (j = 0; j < nsrcs; j++) {
- TCHECK2(bp[group + 20 + j * 16], 16);
- printf(" %s", ip6addr_string(&bp[group + 20 + j * 16]));
+ TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)],
+ sizeof(struct in6_addr));
+ printf(" %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)]));
}
(void)printf(" }");
}
/* Next group record */
- group += 20 + nsrcs * 16;
+ group += 20 + nsrcs * sizeof(struct in6_addr);
printf("]");
}
}
@@ -820,7 +821,7 @@ mldv2_query_print(const u_char *bp, u_int len)
if (vflag) {
(void)printf(" [max resp delay=%d]", mrt);
}
- TCHECK2(bp[8], 16);
+ TCHECK2(bp[8], sizeof(struct in6_addr));
printf(" [gaddr %s", ip6addr_string(&bp[8]));
if (vflag) {
@@ -842,13 +843,14 @@ mldv2_query_print(const u_char *bp, u_int len)
TCHECK2(bp[26], 2);
nsrcs = ntohs(*(u_short *)&bp[26]);
if (nsrcs > 0) {
- if (len < 28 + nsrcs * 16)
+ if (len < 28 + nsrcs * sizeof(struct in6_addr))
printf(" [invalid number of sources]");
else if (vflag > 1) {
printf(" {");
for (i = 0; i < nsrcs; i++) {
- TCHECK2(bp[28 + i * 16], 16);
- printf(" %s", ip6addr_string(&bp[28 + i * 16]));
+ TCHECK2(bp[28 + i * sizeof(struct in6_addr)],
+ sizeof(struct in6_addr));
+ printf(" %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)]));
}
printf(" }");
} else
diff --git a/contrib/tcpdump/print-ip.c b/contrib/tcpdump/print-ip.c
index ed81c5b2f78a..c5bac0be0437 100644
--- a/contrib/tcpdump/print-ip.c
+++ b/contrib/tcpdump/print-ip.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.149.2.1 2005/05/20 21:15:46 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.149.2.2 2005/09/20 06:05:38 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -411,6 +411,10 @@ again:
case IPPROTO_SCTP:
sctp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len);
break;
+
+ case IPPROTO_DCCP:
+ dccp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len);
+ break;
case IPPROTO_TCP:
tcp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip,
@@ -665,7 +669,7 @@ ip_print(netdissect_options *ndo,
ipds->nh = ipds->ip->ip_p;
if (ipds->nh != IPPROTO_TCP && ipds->nh != IPPROTO_UDP &&
- ipds->nh != IPPROTO_SCTP) {
+ ipds->nh != IPPROTO_SCTP && ipds->nh != IPPROTO_DCCP) {
(void)printf("%s > %s: ",
ipaddr_string(&ipds->ip->ip_src),
ipaddr_string(&ipds->ip->ip_dst));
diff --git a/contrib/tcpdump/print-ip6.c b/contrib/tcpdump/print-ip6.c
index cb9f803fbc49..9361f8f091bb 100644
--- a/contrib/tcpdump/print-ip6.c
+++ b/contrib/tcpdump/print-ip6.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.47.2.2 2005/07/03 20:36:33 hannes Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.47.2.3 2005/09/20 06:05:38 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -116,7 +116,7 @@ ip6_print(register const u_char *bp, register u_int length)
if (cp == (const u_char *)(ip6 + 1) &&
nh != IPPROTO_TCP && nh != IPPROTO_UDP &&
- nh != IPPROTO_SCTP) {
+ nh != IPPROTO_DCCP && nh != IPPROTO_SCTP) {
(void)printf("%s > %s: ", ip6addr_string(&ip6->ip6_src),
ip6addr_string(&ip6->ip6_dst));
}
@@ -160,6 +160,9 @@ ip6_print(register const u_char *bp, register u_int length)
case IPPROTO_SCTP:
sctp_print(cp, (const u_char *)ip6, len);
return;
+ case IPPROTO_DCCP:
+ dccp_print(cp, (const u_char *)ip6, len);
+ return;
case IPPROTO_TCP:
tcp_print(cp, len, (const u_char *)ip6, fragmented);
return;
diff --git a/contrib/tcpdump/print-ipfc.c b/contrib/tcpdump/print-ipfc.c
index 6fa4fe1e6067..d31699285152 100644
--- a/contrib/tcpdump/print-ipfc.c
+++ b/contrib/tcpdump/print-ipfc.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ipfc.c,v 1.7 2004/03/17 23:24:37 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ipfc.c,v 1.7.2.1 2005/07/07 01:24:36 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -117,7 +117,7 @@ ipfc_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
}
diff --git a/contrib/tcpdump/print-isoclns.c b/contrib/tcpdump/print-isoclns.c
index 77c03ede5796..ca2481ffc268 100644
--- a/contrib/tcpdump/print-isoclns.c
+++ b/contrib/tcpdump/print-isoclns.c
@@ -26,7 +26,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.133.2.12 2005/06/16 01:14:52 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.133.2.19 2005/09/20 10:15:22 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -110,7 +110,9 @@ static struct tok isis_pdu_values[] = {
#define ISIS_TLV_LSP 9 /* iso10589 */
#define ISIS_TLV_AUTH 10 /* iso10589, rfc3567 */
#define ISIS_TLV_CHECKSUM 12 /* rfc3358 */
+#define ISIS_TLV_CHECKSUM_MINLEN 2
#define ISIS_TLV_LSP_BUFFERSIZE 14 /* iso10589 rev2 */
+#define ISIS_TLV_LSP_BUFFERSIZE_MINLEN 2
#define ISIS_TLV_EXT_IS_REACH 22 /* draft-ietf-isis-traffic-05 */
#define ISIS_TLV_IS_ALIAS_ID 24 /* draft-ietf-isis-ext-lsp-frags-02 */
#define ISIS_TLV_DECNET_PHASE4 42
@@ -119,6 +121,7 @@ static struct tok isis_pdu_values[] = {
#define ISIS_TLV_PROTOCOLS 129 /* rfc1195 */
#define ISIS_TLV_EXT_IP_REACH 130 /* rfc1195, rfc2966 */
#define ISIS_TLV_IDRP_INFO 131 /* rfc1195 */
+#define ISIS_TLV_IDRP_INFO_MINLEN 1
#define ISIS_TLV_IPADDR 132 /* rfc1195 */
#define ISIS_TLV_IPAUTH 133 /* rfc1195 */
#define ISIS_TLV_TE_ROUTER_ID 134 /* draft-ietf-isis-traffic-05 */
@@ -128,15 +131,20 @@ static struct tok isis_pdu_values[] = {
#define ISIS_TLV_NORTEL_PRIVATE1 176
#define ISIS_TLV_NORTEL_PRIVATE2 177
#define ISIS_TLV_RESTART_SIGNALING 211 /* rfc3847 */
+#define ISIS_TLV_RESTART_SIGNALING_FLAGLEN 1
+#define ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN 2
#define ISIS_TLV_MT_IS_REACH 222 /* draft-ietf-isis-wg-multi-topology-05 */
#define ISIS_TLV_MT_SUPPORTED 229 /* draft-ietf-isis-wg-multi-topology-05 */
+#define ISIS_TLV_MT_SUPPORTED_MINLEN 2
#define ISIS_TLV_IP6ADDR 232 /* draft-ietf-isis-ipv6-02 */
#define ISIS_TLV_MT_IP_REACH 235 /* draft-ietf-isis-wg-multi-topology-05 */
#define ISIS_TLV_IP6_REACH 236 /* draft-ietf-isis-ipv6-02 */
#define ISIS_TLV_MT_IP6_REACH 237 /* draft-ietf-isis-wg-multi-topology-05 */
#define ISIS_TLV_PTP_ADJ 240 /* rfc3373 */
#define ISIS_TLV_IIH_SEQNR 241 /* draft-shen-isis-iih-sequence-00 */
+#define ISIS_TLV_IIH_SEQNR_MINLEN 4
#define ISIS_TLV_VENDOR_PRIVATE 250 /* draft-ietf-isis-experimental-tlv-01 */
+#define ISIS_TLV_VENDOR_PRIVATE_MINLEN 3
static struct tok isis_tlv_values[] = {
{ ISIS_TLV_AREA_ADDR, "Area address(es)"},
@@ -336,11 +344,12 @@ static struct tok clnp_option_qos_global_values[] = {
#define ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR 8 /* draft-ietf-isis-traffic-05 */
#define ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW 9 /* draft-ietf-isis-traffic-05 */
#define ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW 10 /* draft-ietf-isis-traffic-05 */
-#define ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW 11 /* draft-ietf-isis-traffic-05 */
-#define ISIS_SUBTLV_EXT_IS_REACH_DIFFSERV_TE 12 /* draft-ietf-tewg-diff-te-proto-06 */
+#define ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW 11 /* rfc4124 */
+#define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD 12 /* draft-ietf-tewg-diff-te-proto-06 */
#define ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC 18 /* draft-ietf-isis-traffic-05 */
#define ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE 20 /* draft-ietf-isis-gmpls-extensions */
#define ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR 21 /* draft-ietf-isis-gmpls-extensions */
+#define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS 22 /* rfc4124 */
static struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP, "Administrative groups" },
@@ -351,10 +360,11 @@ static struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW, "Maximum link bandwidth" },
{ ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW, "Reservable link bandwidth" },
{ ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW, "Unreserved bandwidth" },
- { ISIS_SUBTLV_EXT_IS_REACH_DIFFSERV_TE, "Diffserv TE" },
{ ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC, "Traffic Engineering Metric" },
{ ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE, "Link Protection Type" },
{ ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR, "Interface Switching Capability" },
+ { ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD, "Bandwidth Constraints (old)" },
+ { ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS, "Bandwidth Constraints" },
{ 250, "Reserved for cisco specific extensions" },
{ 251, "Reserved for cisco specific extensions" },
{ 252, "Reserved for cisco specific extensions" },
@@ -780,6 +790,7 @@ static int clnp_print (const u_int8_t *pptr, u_int length)
if (clnp_flags & CLNP_SEGMENT_PART) {
clnp_segment_header = (const struct clnp_segment_header_t *) pptr;
+ TCHECK(*clnp_segment_header);
printf("\n\tData Unit ID: 0x%04x, Segment Offset: %u, Total PDU Length: %u",
EXTRACT_16BITS(clnp_segment_header->data_unit_id),
EXTRACT_16BITS(clnp_segment_header->segment_offset),
@@ -840,7 +851,7 @@ static int clnp_print (const u_int8_t *pptr, u_int length)
if (tlen < source_address_length+1) {
printf("\n\t NSAP address goes past end of option");
break;
- }
+ }
if (source_address_length > 0) {
source_address=(tptr+1);
TCHECK2(*source_address, source_address_length);
@@ -1398,9 +1409,9 @@ trunctlv:
*/
static int
-isis_print_is_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *ident) {
+isis_print_is_reach_subtlv (const u_int8_t *tptr,u_int subt,u_int subl,const char *ident) {
- int priority_level,bandwidth_constraint;
+ u_int te_class,priority_level;
union { /* int to float conversion buffer for several subTLVs */
float f;
u_int32_t i;
@@ -1430,7 +1441,7 @@ isis_print_is_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *i
break;
case ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR:
case ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR:
- if (subl >= 4)
+ if (subl >= sizeof(struct in_addr))
printf(", %s", ipaddr_string(tptr));
break;
case ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW :
@@ -1442,28 +1453,29 @@ isis_print_is_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *i
break;
case ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW :
if (subl >= 32) {
- for (priority_level = 0; priority_level < 8; priority_level++) {
+ for (te_class = 0; te_class < 8; te_class++) {
bw.i = EXTRACT_32BITS(tptr);
- printf("%s priority level %d: %.3f Mbps",
+ printf("%s TE-Class %u: %.3f Mbps",
ident,
- priority_level,
+ te_class,
bw.f*8/1000000 );
tptr+=4;
}
}
break;
- case ISIS_SUBTLV_EXT_IS_REACH_DIFFSERV_TE:
+ case ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS: /* fall through */
+ case ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD:
printf("%sBandwidth Constraints Model ID: %s (%u)",
ident,
tok2str(diffserv_te_bc_values, "unknown", *tptr),
*tptr);
tptr++;
/* decode BCs until the subTLV ends */
- for (bandwidth_constraint = 0; bandwidth_constraint < (subl-1)/4; bandwidth_constraint++) {
+ for (te_class = 0; te_class < (subl-1)/4; te_class++) {
bw.i = EXTRACT_32BITS(tptr);
- printf("%s Bandwidth constraint %d: %.3f Mbps",
+ printf("%s Bandwidth constraint CT%u: %.3f Mbps",
ident,
- bandwidth_constraint,
+ te_class,
bw.f*8/1000000 );
tptr+=4;
}
@@ -1604,7 +1616,7 @@ static int
isis_print_extd_ip_reach (const u_int8_t *tptr, const char *ident, u_int16_t afi) {
char ident_buffer[20];
- u_int8_t prefix[16]; /* shared copy buffer for IPv4 and IPv6 prefixes */
+ u_int8_t prefix[sizeof(struct in6_addr)]; /* shared copy buffer for IPv4 and IPv6 prefixes */
u_int metric, status_byte, bit_length, byte_length, sublen, processed, subtlvtype, subtlvlen;
if (!TTEST2(*tptr, 4))
@@ -1634,7 +1646,7 @@ isis_print_extd_ip_reach (const u_int8_t *tptr, const char *ident, u_int16_t afi
if (!TTEST2(*tptr, byte_length))
return (0);
- memset(prefix, 0, 16); /* clear the copy buffer */
+ memset(prefix, 0, sizeof(struct in6_addr)); /* clear the copy buffer */
memcpy(prefix,tptr,byte_length); /* copy as much as is stored in the TLV */
tptr+=byte_length;
processed+=byte_length;
@@ -2262,15 +2274,15 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_IP6ADDR:
- while (tmp>=16) {
- if (!TTEST2(*tptr, 16))
+ while (tmp>=sizeof(struct in6_addr)) {
+ if (!TTEST2(*tptr, sizeof(struct in6_addr)))
goto trunctlv;
printf("\n\t IPv6 interface address: %s",
ip6addr_string(tptr));
- tptr += 16;
- tmp -= 16;
+ tptr += sizeof(struct in6_addr);
+ tmp -= sizeof(struct in6_addr);
}
break;
#endif
@@ -2360,18 +2372,18 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_TE_ROUTER_ID:
- if (!TTEST2(*pptr, 4))
+ if (!TTEST2(*pptr, sizeof(struct in_addr)))
goto trunctlv;
printf("\n\t Traffic Engineering Router ID: %s", ipaddr_string(pptr));
break;
case ISIS_TLV_IPADDR:
- while (tmp>=4) {
- if (!TTEST2(*tptr, 4))
+ while (tmp>=sizeof(struct in_addr)) {
+ if (!TTEST2(*tptr, sizeof(struct in_addr)))
goto trunctlv;
printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr));
- tptr += 4;
- tmp -= 4;
+ tptr += sizeof(struct in_addr);
+ tmp -= sizeof(struct in_addr);
}
break;
@@ -2401,21 +2413,21 @@ static int isis_print (const u_int8_t *p, u_int length)
printf(", Flags: [%s]", ISIS_MASK_TLV_SHARED_RISK_GROUP(*tptr++) ? "numbered" : "unnumbered");
tmp--;
- if (tmp < 4)
+ if (tmp < sizeof(struct in_addr))
break;
- if (!TTEST2(*tptr,4))
+ if (!TTEST2(*tptr,sizeof(struct in_addr)))
goto trunctlv;
printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr));
- tptr+=4;
- tmp-=4;
+ tptr+=sizeof(struct in_addr);
+ tmp-=sizeof(struct in_addr);
- if (tmp < 4)
+ if (tmp < sizeof(struct in_addr))
break;
- if (!TTEST2(*tptr,4))
+ if (!TTEST2(*tptr,sizeof(struct in_addr)))
goto trunctlv;
printf("\n\t IPv4 neighbor address: %s", ipaddr_string(tptr));
- tptr+=4;
- tmp-=4;
+ tptr+=sizeof(struct in_addr);
+ tmp-=sizeof(struct in_addr);
while (tmp>=4) {
if (!TTEST2(*tptr, 4))
@@ -2448,9 +2460,9 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_CHECKSUM:
- if (tmp < 2)
+ if (tmp < ISIS_TLV_CHECKSUM_MINLEN)
break;
- if (!TTEST2(*tptr, 2))
+ if (!TTEST2(*tptr, ISIS_TLV_CHECKSUM_MINLEN))
goto trunctlv;
printf("\n\t checksum: 0x%04x ", EXTRACT_16BITS(tptr));
/* do not attempt to verify the checksum if it is zero
@@ -2464,6 +2476,8 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_MT_SUPPORTED:
+ if (tmp < ISIS_TLV_MT_SUPPORTED_MINLEN)
+ break;
while (tmp>1) {
/* length can only be a multiple of 2, otherwise there is
something broken -> so decode down until length is 1 */
@@ -2481,30 +2495,41 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_RESTART_SIGNALING:
- if (tmp < 3)
- break;
- if (!TTEST2(*tptr, 3))
+ /* first attempt to decode the flags */
+ if (tmp < ISIS_TLV_RESTART_SIGNALING_FLAGLEN)
+ break;
+ if (!TTEST2(*tptr, ISIS_TLV_RESTART_SIGNALING_FLAGLEN))
goto trunctlv;
- printf("\n\t Flags [%s], Remaining holding time %us",
- bittok2str(isis_restart_flag_values, "none", *tptr),
- EXTRACT_16BITS(tptr+1));
- tptr+=3;
- tmp-=3;
+ printf("\n\t Flags [%s]",
+ bittok2str(isis_restart_flag_values, "none", *tptr));
+ tptr+=ISIS_TLV_RESTART_SIGNALING_FLAGLEN;
+ tmp-=ISIS_TLV_RESTART_SIGNALING_FLAGLEN;
+
+ /* is there anything other than the flags field? */
+ if (tmp == 0)
+ break;
+
+ if (tmp < ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN)
+ break;
+ if (!TTEST2(*tptr, ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN))
+ goto trunctlv;
+
+ printf(", Remaining holding time %us", EXTRACT_16BITS(tptr+1));
+ tptr+=ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN;
+ tmp-=ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN;
+
+ /* is there an additional sysid field present ?*/
if (tmp == SYSTEM_ID_LEN) {
if (!TTEST2(*tptr, SYSTEM_ID_LEN))
goto trunctlv;
printf(", for %s",isis_print_id(tptr,SYSTEM_ID_LEN));
- } else if (tmp == NODE_ID_LEN) {
- if (!TTEST2(*tptr, NODE_ID_LEN))
- goto trunctlv;
- printf(", for %s",isis_print_id(tptr,NODE_ID_LEN));
- }
+ }
break;
case ISIS_TLV_IDRP_INFO:
- if (tmp < 1)
+ if (tmp < ISIS_TLV_IDRP_INFO_MINLEN)
break;
- if (!TTEST2(*tptr, 1))
+ if (!TTEST2(*tptr, ISIS_TLV_IDRP_INFO_MINLEN))
goto trunctlv;
printf("\n\t Inter-Domain Information Type: %s",
tok2str(isis_subtlv_idrp_values,
@@ -2526,9 +2551,9 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_LSP_BUFFERSIZE:
- if (tmp < 2)
+ if (tmp < ISIS_TLV_LSP_BUFFERSIZE_MINLEN)
break;
- if (!TTEST2(*tptr, 2))
+ if (!TTEST2(*tptr, ISIS_TLV_LSP_BUFFERSIZE_MINLEN))
goto trunctlv;
printf("\n\t LSP Buffersize: %u",EXTRACT_16BITS(tptr));
break;
@@ -2575,17 +2600,17 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_TLV_IIH_SEQNR:
- if (tmp < 4)
+ if (tmp < ISIS_TLV_IIH_SEQNR_MINLEN)
break;
- if (!TTEST2(*tptr, 4)) /* check if four bytes are on the wire */
+ if (!TTEST2(*tptr, ISIS_TLV_IIH_SEQNR_MINLEN)) /* check if four bytes are on the wire */
goto trunctlv;
printf("\n\t Sequence number: %u", EXTRACT_32BITS(tptr) );
break;
case ISIS_TLV_VENDOR_PRIVATE:
- if (tmp < 3)
+ if (tmp < ISIS_TLV_VENDOR_PRIVATE_MINLEN)
break;
- if (!TTEST2(*tptr, 3)) /* check if enough byte for a full oui */
+ if (!TTEST2(*tptr, ISIS_TLV_VENDOR_PRIVATE_MINLEN)) /* check if enough byte for a full oui */
goto trunctlv;
vendor_id = EXTRACT_24BITS(tptr);
printf("\n\t Vendor: %s (%u)",
diff --git a/contrib/tcpdump/print-juniper.c b/contrib/tcpdump/print-juniper.c
index 098f0179864e..57de6d9f17c3 100644
--- a/contrib/tcpdump/print-juniper.c
+++ b/contrib/tcpdump/print-juniper.c
@@ -15,7 +15,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-juniper.c,v 1.8.2.13 2005/06/20 07:45:05 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-juniper.c,v 1.8.2.19 2005/08/23 10:29:42 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -40,14 +40,18 @@ static const char rcsid[] _U_ =
#define JUNIPER_BPF_IN 1 /* Incoming packet */
#define JUNIPER_BPF_PKT_IN 0x1 /* Incoming packet */
#define JUNIPER_BPF_NO_L2 0x2 /* L2 header stripped */
+#define JUNIPER_BPF_EXT 0x80 /* extensions present */
#define JUNIPER_MGC_NUMBER 0x4d4743 /* = "MGC" */
+#define JUNIPER_LSQ_COOKIE_RE (1 << 3)
+#define JUNIPER_LSQ_COOKIE_DIR (1 << 2)
#define JUNIPER_LSQ_L3_PROTO_SHIFT 4
#define JUNIPER_LSQ_L3_PROTO_MASK (0x17 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_IPV4 (0 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_IPV6 (1 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_MPLS (2 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_ISO (3 << JUNIPER_LSQ_L3_PROTO_SHIFT)
+#define AS_PIC_COOKIE_LEN 8
#define JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE 1
#define JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE 2
@@ -141,6 +145,8 @@ struct juniper_l2info_t {
#define JUNIPER_PROTO_IPV4 2
#define JUNIPER_PROTO_IPV6 6
+#define MFR_BE_MASK 0xc0
+
static struct tok juniper_protocol_values[] = {
{ JUNIPER_PROTO_NULL, "Null" },
{ JUNIPER_PROTO_IPV4, "IPv4" },
@@ -352,6 +358,74 @@ juniper_pppoe_print(const struct pcap_pkthdr *h, register const u_char *p)
}
#endif
+#ifdef DLT_JUNIPER_ETHER
+u_int
+juniper_ether_print(const struct pcap_pkthdr *h, register const u_char *p)
+{
+ struct juniper_l2info_t l2info;
+
+ l2info.pictype = DLT_JUNIPER_ETHER;
+ if(juniper_parse_header(p, h, &l2info) == 0)
+ return l2info.header_len;
+
+ p+=l2info.header_len;
+ /* this DLT contains nothing but raw Ethernet frames */
+ ether_print(p, l2info.length, l2info.caplen);
+ return l2info.header_len;
+}
+#endif
+
+#ifdef DLT_JUNIPER_PPP
+u_int
+juniper_ppp_print(const struct pcap_pkthdr *h, register const u_char *p)
+{
+ struct juniper_l2info_t l2info;
+
+ l2info.pictype = DLT_JUNIPER_PPP;
+ if(juniper_parse_header(p, h, &l2info) == 0)
+ return l2info.header_len;
+
+ p+=l2info.header_len;
+ /* this DLT contains nothing but raw ppp frames */
+ ppp_print(p, l2info.length);
+ return l2info.header_len;
+}
+#endif
+
+#ifdef DLT_JUNIPER_FRELAY
+u_int
+juniper_frelay_print(const struct pcap_pkthdr *h, register const u_char *p)
+{
+ struct juniper_l2info_t l2info;
+
+ l2info.pictype = DLT_JUNIPER_FRELAY;
+ if(juniper_parse_header(p, h, &l2info) == 0)
+ return l2info.header_len;
+
+ p+=l2info.header_len;
+ /* this DLT contains nothing but raw frame-relay frames */
+ fr_print(p, l2info.length);
+ return l2info.header_len;
+}
+#endif
+
+#ifdef DLT_JUNIPER_CHDLC
+u_int
+juniper_chdlc_print(const struct pcap_pkthdr *h, register const u_char *p)
+{
+ struct juniper_l2info_t l2info;
+
+ l2info.pictype = DLT_JUNIPER_CHDLC;
+ if(juniper_parse_header(p, h, &l2info) == 0)
+ return l2info.header_len;
+
+ p+=l2info.header_len;
+ /* this DLT contains nothing but raw c-hdlc frames */
+ chdlc_print(p, l2info.length);
+ return l2info.header_len;
+}
+#endif
+
#ifdef DLT_JUNIPER_PPPOE_ATM
u_int
juniper_pppoe_atm_print(const struct pcap_pkthdr *h, register const u_char *p)
@@ -402,7 +476,13 @@ juniper_mlppp_print(const struct pcap_pkthdr *h, register const u_char *p)
/* first try the LSQ protos */
switch(l2info.proto) {
case JUNIPER_LSQ_L3_PROTO_IPV4:
- ip_print(gndo, p, l2info.length);
+ /* IP traffic going to the RE would not have a cookie
+ * -> this must be incoming IS-IS over PPP
+ */
+ if (l2info.cookie[4] == (JUNIPER_LSQ_COOKIE_RE|JUNIPER_LSQ_COOKIE_DIR))
+ ppp_print(p, l2info.length);
+ else
+ ip_print(gndo, p, l2info.length);
return l2info.header_len;
#ifdef INET6
case JUNIPER_LSQ_L3_PROTO_IPV6:
@@ -446,6 +526,36 @@ juniper_mfr_print(const struct pcap_pkthdr *h, register const u_char *p)
return l2info.header_len;
p+=l2info.header_len;
+
+ /* child-link ? */
+ if (l2info.cookie_len == 0) {
+ mfr_print(p,l2info.length);
+ return l2info.header_len;
+ }
+
+ /* first try the LSQ protos */
+ if (l2info.cookie_len == AS_PIC_COOKIE_LEN) {
+ switch(l2info.proto) {
+ case JUNIPER_LSQ_L3_PROTO_IPV4:
+ ip_print(gndo, p, l2info.length);
+ return l2info.header_len;
+#ifdef INET6
+ case JUNIPER_LSQ_L3_PROTO_IPV6:
+ ip6_print(p,l2info.length);
+ return l2info.header_len;
+#endif
+ case JUNIPER_LSQ_L3_PROTO_MPLS:
+ mpls_print(p,l2info.length);
+ return l2info.header_len;
+ case JUNIPER_LSQ_L3_PROTO_ISO:
+ isoclns_print(p,l2info.length,l2info.caplen);
+ return l2info.header_len;
+ default:
+ break;
+ }
+ return l2info.header_len;
+ }
+
/* suppress Bundle-ID if frame was captured on a child-link */
if (eflag && EXTRACT_32BITS(l2info.cookie) != 1) printf("Bundle-ID %u, ",l2info.bundle);
switch (l2info.proto) {
@@ -691,7 +801,7 @@ static int
juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct juniper_l2info_t *l2info) {
struct juniper_cookie_table_t *lp = juniper_cookie_table;
- u_int idx;
+ u_int idx, offset;
l2info->header_len = 0;
l2info->cookie_len = 0;
@@ -703,14 +813,22 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
l2info->direction = p[3]&JUNIPER_BPF_PKT_IN;
TCHECK2(p[0],4);
- if (EXTRACT_24BITS(p) != JUNIPER_MGC_NUMBER) /* magic number found ? */
+ if (EXTRACT_24BITS(p) != JUNIPER_MGC_NUMBER) { /* magic number found ? */
+ printf("no magic-number found!");
return 0;
- else
- l2info->header_len = 4;
+ }
if (eflag) /* print direction */
printf("%3s ",tok2str(juniper_direction_values,"---",l2info->direction));
+ /* extensions present ? - calculate how much bytes to skip */
+ if ((p[3] & JUNIPER_BPF_EXT ) == JUNIPER_BPF_EXT ) {
+ offset = 6 + EXTRACT_16BITS(p+4);
+ if (eflag>1)
+ printf("ext-len %u, ",EXTRACT_16BITS(p+4));
+ } else
+ offset = 4;
+
if ((p[3] & JUNIPER_BPF_NO_L2 ) == JUNIPER_BPF_NO_L2 ) {
if (eflag)
printf("no-L2-hdr, ");
@@ -719,15 +837,15 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
* perform the v4/v6 heuristics
* to figure out what it is
*/
- TCHECK2(p[8],1);
- if(ip_heuristic_guess(p+8,l2info->length-8) == 0)
+ TCHECK2(p[offset+4],1);
+ if(ip_heuristic_guess(p+offset+4,l2info->length-(offset+4)) == 0)
printf("no IP-hdr found!");
- l2info->header_len+=4;
+ l2info->header_len=offset+4;
return 0; /* stop parsing the output further */
}
-
+ l2info->header_len = offset;
p+=l2info->header_len;
l2info->length -= l2info->header_len;
l2info->caplen -= l2info->header_len;
@@ -736,19 +854,16 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
while (lp->s != NULL) {
if (lp->pictype == l2info->pictype) {
- l2info->cookie_len = lp->cookie_len;
- l2info->header_len += lp->cookie_len;
+ l2info->cookie_len += lp->cookie_len;
switch (p[0]) {
case LS_COOKIE_ID:
l2info->cookie_type = LS_COOKIE_ID;
l2info->cookie_len += 2;
- l2info->header_len += 2;
break;
case AS_COOKIE_ID:
l2info->cookie_type = AS_COOKIE_ID;
- l2info->cookie_len += 6;
- l2info->header_len += 6;
+ l2info->cookie_len = 8;
break;
default:
@@ -756,6 +871,19 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
break;
}
+
+#ifdef DLT_JUNIPER_MFR
+ /* MFR child links don't carry cookies */
+ if (l2info->pictype == DLT_JUNIPER_MFR &&
+ (p[0] & MFR_BE_MASK) == MFR_BE_MASK) {
+ l2info->cookie_len = 0;
+ }
+#endif
+
+ l2info->header_len += l2info->cookie_len;
+ l2info->length -= l2info->cookie_len;
+ l2info->caplen -= l2info->cookie_len;
+
if (eflag)
printf("%s-PIC, cookie-len %u",
lp->s,
@@ -783,6 +911,7 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
/* DLT_ specific parsing */
switch(l2info->pictype) {
+#ifdef DLT_JUNIPER_MLPPP
case DLT_JUNIPER_MLPPP:
switch (l2info->cookie_type) {
case LS_COOKIE_ID:
@@ -797,24 +926,51 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
break;
}
break;
- case DLT_JUNIPER_MLFR: /* fall through */
+#endif
+#ifdef DLT_JUNIPER_MLFR
+ case DLT_JUNIPER_MLFR:
+ switch (l2info->cookie_type) {
+ case LS_COOKIE_ID:
+ l2info->bundle = l2info->cookie[1];
+ l2info->proto = EXTRACT_16BITS(p);
+ l2info->header_len += 2;
+ l2info->length -= 2;
+ l2info->caplen -= 2;
+ break;
+ case AS_COOKIE_ID:
+ l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff;
+ l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK;
+ break;
+ default:
+ l2info->bundle = l2info->cookie[0];
+ l2info->header_len += 2;
+ l2info->length -= 2;
+ l2info->caplen -= 2;
+ break;
+ }
+ break;
+#endif
+#ifdef DLT_JUNIPER_MFR
case DLT_JUNIPER_MFR:
switch (l2info->cookie_type) {
case LS_COOKIE_ID:
l2info->bundle = l2info->cookie[1];
+ l2info->proto = EXTRACT_16BITS(p);
+ l2info->header_len += 2;
+ l2info->length -= 2;
+ l2info->caplen -= 2;
break;
case AS_COOKIE_ID:
l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff;
+ l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK;
break;
default:
l2info->bundle = l2info->cookie[0];
break;
}
- l2info->proto = EXTRACT_16BITS(p);
- l2info->header_len += 2;
- l2info->length -= 2;
- l2info->caplen -= 2;
break;
+#endif
+#ifdef DLT_JUNIPER_ATM2
case DLT_JUNIPER_ATM2:
TCHECK2(p[0],4);
/* ATM cell relay control word present ? */
@@ -824,8 +980,13 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
printf("control-word 0x%08x ",EXTRACT_32BITS(p));
}
break;
+#endif
+#ifdef DLT_JUNIPER_ATM1
case DLT_JUNIPER_ATM1:
+ break;
+#endif
default:
+ printf("Unknown Juniper DLT_ type %u: ", l2info->pictype);
break;
}
diff --git a/contrib/tcpdump/print-lane.c b/contrib/tcpdump/print-lane.c
index 93ef256d520e..25b291d079bc 100644
--- a/contrib/tcpdump/print-lane.c
+++ b/contrib/tcpdump/print-lane.c
@@ -22,7 +22,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-lane.c,v 1.23 2004/03/17 23:24:37 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-lane.c,v 1.23.2.1 2005/07/07 01:24:37 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -146,7 +146,7 @@ lane_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
} else if (ether_encap_print(ether_type, p, length, caplen,
@@ -154,7 +154,7 @@ lane_print(const u_char *p, u_int length, u_int caplen)
/* ether_type not known, print raw packet */
if (!eflag)
lane_hdr_print((u_char *)ep, length + sizeof(*ep));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
}
diff --git a/contrib/tcpdump/print-ldp.c b/contrib/tcpdump/print-ldp.c
index e29650853b85..fb4492319912 100644
--- a/contrib/tcpdump/print-ldp.c
+++ b/contrib/tcpdump/print-ldp.c
@@ -16,7 +16,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ldp.c,v 1.8.2.5 2005/06/16 01:10:35 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ldp.c,v 1.8.2.6 2005/07/11 20:24:34 hannes Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -302,7 +302,7 @@ ldp_tlv_print(register const u_char *tptr) {
printf("IPv4, addresses:");
for (i=0; i<(tlv_tlen-2)/4; i++) {
printf(" %s",ipaddr_string(tptr));
- tptr+=4;
+ tptr+=sizeof(struct in_addr);
}
}
#ifdef INET6
@@ -310,7 +310,7 @@ ldp_tlv_print(register const u_char *tptr) {
printf("IPv6, addresses:");
for (i=0; i<(tlv_tlen-2)/16; i++) {
printf(" %s",ip6addr_string(tptr));
- tptr+=16;
+ tptr+=sizeof(struct in6_addr);
}
}
#endif
diff --git a/contrib/tcpdump/print-llc.c b/contrib/tcpdump/print-llc.c
index cbf16cedbc6f..dcb740ba8321 100644
--- a/contrib/tcpdump/print-llc.c
+++ b/contrib/tcpdump/print-llc.c
@@ -24,7 +24,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-llc.c,v 1.61.2.4 2005/04/26 07:27:16 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-llc.c,v 1.61.2.5 2005/09/29 07:40:13 hannes Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -50,6 +50,7 @@ static struct tok llc_values[] = {
{ LLCSAP_8021B_I, "802.1B I" },
{ LLCSAP_8021B_G, "802.1B G" },
{ LLCSAP_IP, "IP" },
+ { LLCSAP_SNA, "SNA" },
{ LLCSAP_PROWAYNM, "ProWay NM" },
{ LLCSAP_8021D, "STP" },
{ LLCSAP_RS511, "RS511" },
@@ -62,7 +63,7 @@ static struct tok llc_values[] = {
{ 0, NULL },
};
-static struct tok cmd2str[] = {
+static struct tok llc_cmd_values[] = {
{ LLC_UI, "ui" },
{ LLC_TEST, "test" },
{ LLC_XID, "xid" },
@@ -74,6 +75,23 @@ static struct tok cmd2str[] = {
{ 0, NULL }
};
+static const struct tok llc_flag_values[] = {
+ { 0, "Command" },
+ { LLC_GSAP, "Response" },
+ { LLC_U_POLL, "Poll" },
+ { LLC_GSAP|LLC_U_POLL, "Final" },
+ { LLC_GSAP|LLC_IS_POLL, "Final" },
+ { 0, NULL }
+};
+
+static const struct tok llc_supervisory_values[] = {
+ { 0, "Receiver Ready" },
+ { 1, "Reject" },
+ { 2, "Receiver not Ready" },
+ { 0, NULL }
+};
+
+
static const struct tok cisco_values[] = {
{ PID_CISCO_CDP, "CDP" },
{ 0, NULL }
@@ -115,7 +133,7 @@ int
llc_print(const u_char *p, u_int length, u_int caplen,
const u_char *esrc, const u_char *edst, u_short *extracted_ethertype)
{
- u_int8_t dsap, ssap;
+ u_int8_t dsap_field, dsap, ssap_field, ssap;
u_int16_t control;
int is_u;
register int ret;
@@ -126,8 +144,10 @@ llc_print(const u_char *p, u_int length, u_int caplen,
return(0);
}
- dsap = *p;
- ssap = *(p + 1);
+ dsap_field = *p;
+ dsap = dsap_field & ~LLC_IG;
+ ssap_field = *(p + 1);
+ ssap = ssap_field & ~LLC_GSAP;
/*
* OK, what type of LLC frame is this? The length
@@ -176,27 +196,23 @@ llc_print(const u_char *p, u_int length, u_int caplen,
*/
if (eflag)
- printf("IPX-802.3: ");
+ printf("IPX 802.3: ");
ipx_print(p, length);
return (1);
}
if (eflag) {
+ printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x)",
+ tok2str(llc_values, "Unknown", dsap),
+ dsap,
+ tok2str(llc_values, "Unknown", ssap),
+ ssap);
+
if (is_u) {
- printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x), cmd 0x%02x: ",
- tok2str(llc_values, "Unknown", dsap),
- dsap,
- tok2str(llc_values, "Unknown", ssap),
- ssap,
- control);
+ printf(", cmd 0x%02x: ", control);
} else {
- printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x), cmd 0x%04x: ",
- tok2str(llc_values, "Unknown", dsap),
- dsap,
- tok2str(llc_values, "Unknown", ssap),
- ssap,
- control);
+ printf(", cmd 0x%04x: ", control);
}
}
@@ -221,7 +237,9 @@ llc_print(const u_char *p, u_int length, u_int caplen,
*
* Skip DSAP, LSAP, and control field.
*/
- printf("(NOV-802.2) ");
+ if (eflag)
+ printf("IPX 802.2: ");
+
ipx_print(p+3, length-3);
return (1);
}
@@ -276,42 +294,33 @@ llc_print(const u_char *p, u_int length, u_int caplen,
}
if (!eflag) {
- if ((ssap & ~LLC_GSAP) == dsap) {
+ if (ssap == dsap) {
if (esrc == NULL || edst == NULL)
- (void)printf("%s ", llcsap_string(dsap));
+ (void)printf("%s ", tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
else
(void)printf("%s > %s %s ",
etheraddr_string(esrc),
etheraddr_string(edst),
- llcsap_string(dsap));
+ tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
} else {
if (esrc == NULL || edst == NULL)
(void)printf("%s > %s ",
- llcsap_string(ssap & ~LLC_GSAP),
- llcsap_string(dsap));
+ tok2str(llc_values, "Unknown SSAP 0x%02x", ssap),
+ tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
else
(void)printf("%s %s > %s %s ",
etheraddr_string(esrc),
- llcsap_string(ssap & ~LLC_GSAP),
+ tok2str(llc_values, "Unknown SSAP 0x%02x", ssap),
etheraddr_string(edst),
- llcsap_string(dsap));
+ tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
}
}
if (is_u) {
- const char *m;
- char f;
-
- m = tok2str(cmd2str, "%02x", LLC_U_CMD(control));
- switch ((ssap & LLC_GSAP) | (control & LLC_U_POLL)) {
- case 0: f = 'C'; break;
- case LLC_GSAP: f = 'R'; break;
- case LLC_U_POLL: f = 'P'; break;
- case LLC_GSAP|LLC_U_POLL: f = 'F'; break;
- default: f = '?'; break;
- }
-
- printf("%s/%c", m, f);
+ printf("Unnumbered, %s, Flags [%s], length %u",
+ tok2str(llc_cmd_values, "%02x", LLC_U_CMD(control)),
+ bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_U_POLL)),
+ length);
p += 3;
length -= 3;
@@ -326,27 +335,19 @@ llc_print(const u_char *p, u_int length, u_int caplen,
}
}
} else {
- char f;
-
- switch ((ssap & LLC_GSAP) | (control & LLC_IS_POLL)) {
- case 0: f = 'C'; break;
- case LLC_GSAP: f = 'R'; break;
- case LLC_IS_POLL: f = 'P'; break;
- case LLC_GSAP|LLC_IS_POLL: f = 'F'; break;
- default: f = '?'; break;
- }
if ((control & LLC_S_FMT) == LLC_S_FMT) {
- static const char *llc_s[] = { "rr", "rej", "rnr", "03" };
- (void)printf("%s (r=%d,%c)",
- llc_s[LLC_S_CMD(control)],
+ (void)printf("Supervisory, %s, rcv seq %u, Flags [%s], length %u",
+ tok2str(llc_supervisory_values,"?",LLC_S_CMD(control)),
LLC_IS_NR(control),
- f);
+ bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)),
+ length);
} else {
- (void)printf("I (s=%d,r=%d,%c)",
+ (void)printf("Information, send seq %u, rcv seq %u, Flags [%s], length %u",
LLC_I_NS(control),
LLC_IS_NR(control),
- f);
+ bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)),
+ length);
}
p += 4;
length -= 4;
diff --git a/contrib/tcpdump/print-null.c b/contrib/tcpdump/print-null.c
index 3a45f6a03bd6..7fd45417c478 100644
--- a/contrib/tcpdump/print-null.c
+++ b/contrib/tcpdump/print-null.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-null.c,v 1.53.2.2 2005/05/19 07:26:18 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-null.c,v 1.53.2.3 2005/07/07 01:24:38 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -173,7 +173,7 @@ null_if_print(const struct pcap_pkthdr *h, const u_char *p)
/* unknown AF_ value */
if (!eflag)
null_hdr_print(family, length + NULL_HDRLEN);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
diff --git a/contrib/tcpdump/print-ospf.c b/contrib/tcpdump/print-ospf.c
index 9ac6c61a1e68..634849b699cc 100644
--- a/contrib/tcpdump/print-ospf.c
+++ b/contrib/tcpdump/print-ospf.c
@@ -23,7 +23,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.56.2.2 2005/05/06 07:57:19 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.56.2.3 2005/08/23 11:16:29 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -128,7 +128,7 @@ static struct tok lsa_opaque_te_link_tlv_subtlv_values[] = {
{ LS_OPAQUE_TE_LINK_SUBTLV_LINK_PROTECTION_TYPE, "Link Protection Type" },
{ LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR, "Interface Switching Capability" },
{ LS_OPAQUE_TE_LINK_SUBTLV_SHARED_RISK_GROUP, "Shared Risk Link Group" },
- { LS_OPAQUE_TE_LINK_SUBTLV_DIFFSERV_TE, "Diffserv TE" },
+ { LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS, "Bandwidth Constraints" },
{ 0, NULL }
};
@@ -253,7 +253,7 @@ ospf_print_lsa(register const struct lsa *lsap)
register const struct aslametric *almp;
register const struct mcla *mcp;
register const u_int32_t *lp;
- register int j, k, tlv_type, tlv_length, subtlv_type, subtlv_length, priority_level, bandwidth_constraint;
+ register int j, k, tlv_type, tlv_length, subtlv_type, subtlv_length, priority_level, te_class;
register int ls_length;
const u_int8_t *tptr;
int count_srlg;
@@ -627,22 +627,22 @@ ospf_print_lsa(register const struct lsa *lsap)
printf(", %.3f Mbps", bw.f*8/1000000 );
break;
case LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW:
- for (priority_level = 0; priority_level < 8; priority_level++) {
- bw.i = EXTRACT_32BITS(tptr+priority_level*4);
- printf("\n\t\tpriority level %d: %.3f Mbps",
- priority_level,
+ for (te_class = 0; te_class < 8; te_class++) {
+ bw.i = EXTRACT_32BITS(tptr+te_class*4);
+ printf("\n\t\tTE-Class %u: %.3f Mbps",
+ te_class,
bw.f*8/1000000 );
}
break;
- case LS_OPAQUE_TE_LINK_SUBTLV_DIFFSERV_TE:
+ case LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS:
printf("\n\t\tBandwidth Constraints Model ID: %s (%u)",
tok2str(diffserv_te_bc_values, "unknown", *tptr),
*tptr);
/* decode BCs until the subTLV ends */
- for (bandwidth_constraint = 0; bandwidth_constraint < (subtlv_length-4)/4; bandwidth_constraint++) {
- bw.i = EXTRACT_32BITS(tptr+4+bandwidth_constraint*4);
- printf("\n\t\t Bandwidth constraint %d: %.3f Mbps",
- bandwidth_constraint,
+ for (te_class = 0; te_class < (subtlv_length-4)/4; te_class++) {
+ bw.i = EXTRACT_32BITS(tptr+4+te_class*4);
+ printf("\n\t\t Bandwidth constraint CT%u: %.3f Mbps",
+ te_class,
bw.f*8/1000000 );
}
break;
diff --git a/contrib/tcpdump/print-pflog.c b/contrib/tcpdump/print-pflog.c
index f8b18a9239b2..4d70e05482cb 100644
--- a/contrib/tcpdump/print-pflog.c
+++ b/contrib/tcpdump/print-pflog.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-pflog.c,v 1.13 2005/04/06 21:32:41 mcr Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-pflog.c,v 1.13.2.1 2005/07/07 01:24:38 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -152,7 +152,7 @@ pflog_if_print(const struct pcap_pkthdr *h, register const u_char *p)
/* address family not handled, print raw packet */
if (!eflag)
pflog_print(hdr);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
diff --git a/contrib/tcpdump/print-pim.c b/contrib/tcpdump/print-pim.c
index f50f8210b99a..8af21608f98f 100644
--- a/contrib/tcpdump/print-pim.c
+++ b/contrib/tcpdump/print-pim.c
@@ -21,7 +21,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.45.2.2 2005/04/20 22:08:44 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.45.2.3 2005/07/11 20:24:34 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -140,7 +140,7 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
return;
}
- TCHECK2(bp[0], 4);
+ TCHECK2(bp[0], sizeof(struct in_addr));
if (vflag > 1)
(void)printf("\n");
(void)printf(" Upstream Nbr: %s", ipaddr_string(bp));
@@ -165,9 +165,9 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
* XXX - does the address have length "addrlen" and the
* mask length "maddrlen"?
*/
- TCHECK2(bp[0], 4);
+ TCHECK2(bp[0], sizeof(struct in_addr));
(void)printf("\n\tGroup: %s", ipaddr_string(bp));
- TCHECK2(bp[4], 4);
+ TCHECK2(bp[4], sizeof(struct in_addr));
if (EXTRACT_32BITS(&bp[4]) != 0xffffffff)
(void)printf("/%s", ipaddr_string(&bp[4]));
TCHECK2(bp[8], 4);
@@ -247,7 +247,7 @@ pimv1_print(register const u_char *bp, register u_int len)
break;
case 2:
(void)printf(" Register-Stop");
- TCHECK2(bp[12], 4);
+ TCHECK2(bp[12], sizeof(struct in_addr));
(void)printf(" for %s > %s", ipaddr_string(&bp[8]),
ipaddr_string(&bp[12]));
break;
@@ -270,7 +270,7 @@ pimv1_print(register const u_char *bp, register u_int len)
break;
case 5:
(void)printf(" Assert");
- TCHECK2(bp[16], 4);
+ TCHECK2(bp[16], sizeof(struct in_addr));
(void)printf(" for %s > %s", ipaddr_string(&bp[16]),
ipaddr_string(&bp[8]));
if (EXTRACT_32BITS(&bp[12]) != 0xffffffff)
@@ -520,12 +520,12 @@ pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent)
switch (bp[0]) {
case 1:
af = AF_INET;
- len = 4;
+ len = sizeof(struct in_addr);
break;
#ifdef INET6
case 2:
af = AF_INET6;
- len = 16;
+ len = sizeof(struct in6_addr);
break;
#endif
default:
@@ -536,11 +536,11 @@ pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent)
hdrlen = 2;
} else {
switch (pimv2_addr_len) {
- case 4:
+ case sizeof(struct in_addr):
af = AF_INET;
break;
#ifdef INET6
- case 16:
+ case sizeof(struct in6_addr):
af = AF_INET6;
break;
#endif
diff --git a/contrib/tcpdump/print-radius.c b/contrib/tcpdump/print-radius.c
index 0f8eaf5a076f..203c50bd06ab 100644
--- a/contrib/tcpdump/print-radius.c
+++ b/contrib/tcpdump/print-radius.c
@@ -44,7 +44,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "$Id: print-radius.c,v 1.27 2004/07/21 21:45:47 guy Exp $";
+ "$Id: print-radius.c,v 1.27.2.1 2005/09/26 01:02:40 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -454,9 +454,15 @@ print_attr_string(register u_char *data, u_int length, u_short attr_code )
switch(attr_code)
{
case TUNNEL_PASS:
+ if (length < 3)
+ {
+ printf(" [|radius]");
+ return;
+ }
if (*data && (*data <=0x1F) )
printf("Tag %u, ",*data);
data++;
+ length--;
printf("Salt %u ",EXTRACT_16BITS(data) );
data+=2;
length-=2;
@@ -469,6 +475,11 @@ print_attr_string(register u_char *data, u_int length, u_short attr_code )
case TUNNEL_SERVER_AUTH:
if (*data <= 0x1F)
{
+ if (length < 1)
+ {
+ printf(" [|radius]");
+ return;
+ }
printf("Tag %u",*data);
data++;
length--;
@@ -482,7 +493,7 @@ print_attr_string(register u_char *data, u_int length, u_short attr_code )
return;
trunc:
- printf("|radius");
+ printf(" [|radius]");
}
/*
@@ -497,7 +508,9 @@ print_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_)
u_int vendor_type;
u_int vendor_length;
- /* FIXME: all sort of boundary checks */
+ if (length < 4)
+ goto trunc;
+ TCHECK2(*data, 4);
vendor_id = EXTRACT_32BITS(data);
data+=4;
length-=4;
@@ -507,15 +520,29 @@ print_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_)
vendor_id);
while (length >= 2) {
- if(!TTEST2(*data, 2))
- return;
+ TCHECK2(*data, 2);
vendor_type = *(data);
vendor_length = *(data+1);
+ if (vendor_length < 2)
+ {
+ printf("\n\t Vendor Attribute: %u, Length: %u (bogus, must be >= 2)",
+ vendor_type,
+ vendor_length);
+ return;
+ }
+ if (vendor_length > length)
+ {
+ printf("\n\t Vendor Attribute: %u, Length: %u (bogus, goes past end of vendor-specific attribute)",
+ vendor_type,
+ vendor_length);
+ return;
+ }
data+=2;
- if(!TTEST2(*data, vendor_length))
- return;
+ vendor_length-=2;
+ length-=2;
+ TCHECK2(*data, vendor_length);
printf("\n\t Vendor Attribute: %u, Length: %u, Value: ",
vendor_type,
@@ -524,6 +551,10 @@ print_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_)
printf("%c",(*data < 32 || *data > 128) ? '.' : *data );
length-=vendor_length;
}
+ return;
+
+ trunc:
+ printf(" [|radius]");
}
@@ -640,7 +671,7 @@ print_attr_num(register u_char *data, u_int length, u_short attr_code )
return;
trunc:
- printf("|radius}");
+ printf(" [|radius]");
}
@@ -683,7 +714,7 @@ print_attr_address(register u_char *data, u_int length, u_short attr_code )
return;
trunc:
- printf("|radius");
+ printf(" [|radius]");
}
@@ -716,7 +747,7 @@ static void print_attr_time(register u_char *data, u_int length, u_short attr_co
return;
trunc:
- printf("|radius");
+ printf(" [|radius]");
}
@@ -774,8 +805,8 @@ static void print_attr_strange(register u_char *data, u_int length, u_short attr
len_data = 4;
PRINT_HEX(len_data, data);
printf(", Current Time: ");
- len_data = 4;
TCHECK2(data[0],4);
+ len_data = 4;
PRINT_HEX(len_data, data);
break;
@@ -790,63 +821,72 @@ static void print_attr_strange(register u_char *data, u_int length, u_short attr
PRINT_HEX(len_data, data);
break;
}
+ return;
trunc:
- printf("|radius}");
+ printf(" [|radius]");
}
static void
-radius_attr_print(register const u_char *attr, u_int length)
+radius_attrs_print(register const u_char *attr, u_int length)
{
register const struct radius_attr *rad_attr = (struct radius_attr *)attr;
-
- if (length < 3)
- {
- printf(" [|radius]");
- return;
- }
+ const char *attr_string;
while (length > 0)
{
- if (rad_attr->len == 0 && rad_attr->type < (TAM_SIZE(attr_type)-1))
+ if (length < 2)
+ goto trunc;
+ TCHECK(*rad_attr);
+
+ if (rad_attr->type > 0 && rad_attr->type < TAM_SIZE(attr_type))
+ attr_string = attr_type[rad_attr->type].name;
+ else
+ attr_string = "Unknown";
+ if (rad_attr->len < 2)
{
- printf("\n\t %s Attribute (%u), zero-length",
- attr_type[rad_attr->type].name,
- rad_attr->type);
+ printf("\n\t %s Attribute (%u), length: %u (bogus, must be >= 2)",
+ attr_string,
+ rad_attr->type,
+ rad_attr->len);
return;
}
- if ( rad_attr->len <= length && rad_attr->type < (TAM_SIZE(attr_type)-1))
+ if (rad_attr->len > length)
{
- printf("\n\t %s Attribute (%u), length: %u, Value: ",
- attr_type[rad_attr->type].name,
- rad_attr->type,
- rad_attr->len);
+ printf("\n\t %s Attribute (%u), length: %u (bogus, goes past end of packet)",
+ attr_string,
+ rad_attr->type,
+ rad_attr->len);
+ return;
+ }
+ printf("\n\t %s Attribute (%u), length: %u, Value: ",
+ attr_string,
+ rad_attr->type,
+ rad_attr->len);
- if ( !rad_attr->type || (rad_attr->type > (TAM_SIZE(attr_type)-1)) ) {
- }
- else {
- if (rad_attr->len > 2)
- {
- if ( attr_type[rad_attr->type].print_func )
- (*attr_type[rad_attr->type].print_func)(
- ((u_char *)(rad_attr+1)),
- rad_attr->len - 2, rad_attr->type);
- }
+ if (rad_attr->type < TAM_SIZE(attr_type))
+ {
+ if (rad_attr->len > 2)
+ {
+ if ( attr_type[rad_attr->type].print_func )
+ (*attr_type[rad_attr->type].print_func)(
+ ((u_char *)(rad_attr+1)),
+ rad_attr->len - 2, rad_attr->type);
}
}
- else {
- printf(" [|radius]");
- return;
- }
/* do we also want to see a hex dump ? */
- if (vflag> 1 && rad_attr->len >= 2)
+ if (vflag> 1)
print_unknown_data((u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
length-=(rad_attr->len);
rad_attr = (struct radius_attr *)( ((char *)(rad_attr))+rad_attr->len);
}
+ return;
+
+trunc:
+ printf(" [|radius]");
}
@@ -854,24 +894,9 @@ void
radius_print(const u_char *dat, u_int length)
{
register const struct radius_hdr *rad;
- register u_int i;
u_int len, auth_idx;
- if (snapend < dat)
- {
- printf(" [|radius]");
- return;
- }
- i = snapend - dat;
- if (i > length)
- i = length;
-
- if (i < MIN_RADIUS_LEN)
- {
- printf(" [|radius]");
- return;
- }
-
+ TCHECK2(*dat, MIN_RADIUS_LEN);
rad = (struct radius_hdr *)dat;
len = EXTRACT_16BITS(&rad->len);
@@ -881,22 +906,20 @@ radius_print(const u_char *dat, u_int length)
return;
}
- if (len < i)
- i = len;
-
- i -= MIN_RADIUS_LEN;
+ if (len > length)
+ len = length;
if (vflag < 1) {
printf("RADIUS, %s (%u), id: 0x%02x length: %u",
tok2str(radius_command_values,"Unknown Command",rad->code),
rad->code,
rad->id,
- length);
+ len);
return;
}
else {
printf("RADIUS, length: %u\n\t%s (%u), id: 0x%02x, Authenticator: ",
- length,
+ len,
tok2str(radius_command_values,"Unknown Command",rad->code),
rad->code,
rad->id);
@@ -905,6 +928,10 @@ radius_print(const u_char *dat, u_int length)
printf("%02x", rad->auth[auth_idx] );
}
- if (i)
- radius_attr_print( dat + MIN_RADIUS_LEN, i);
+ if (len > MIN_RADIUS_LEN)
+ radius_attrs_print( dat + MIN_RADIUS_LEN, len - MIN_RADIUS_LEN);
+ return;
+
+trunc:
+ printf(" [|radius]");
}
diff --git a/contrib/tcpdump/print-rsvp.c b/contrib/tcpdump/print-rsvp.c
index b3324b48e823..94ac6f0fbe1f 100644
--- a/contrib/tcpdump/print-rsvp.c
+++ b/contrib/tcpdump/print-rsvp.c
@@ -1,4 +1,6 @@
/*
+ * Copyright (c) 1998-2005 The TCPDUMP project
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that: (1) source code
* distributions retain the above copyright notice and this paragraph
@@ -15,7 +17,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.33.2.3 2005/06/16 00:50:12 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.33.2.8 2005/09/22 14:52:40 hannes Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -115,7 +117,7 @@ static const struct tok rsvp_header_flag_values[] = {
#define RSVP_OBJ_SESSION 1 /* rfc2205 */
#define RSVP_OBJ_RSVP_HOP 3 /* rfc2205, rfc3473 */
-#define RSVP_OBJ_INTEGRITY 4
+#define RSVP_OBJ_INTEGRITY 4 /* rfc2747 */
#define RSVP_OBJ_TIME_VALUES 5 /* rfc2205 */
#define RSVP_OBJ_ERROR_SPEC 6
#define RSVP_OBJ_SCOPE 7
@@ -139,15 +141,16 @@ static const struct tok rsvp_header_flag_values[] = {
#define RSVP_OBJ_UPSTREAM_LABEL 35 /* rfc3473 */
#define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */
#define RSVP_OBJ_PROTECTION 37 /* rfc3473 */
-#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-01 */
-#define RSVP_OBJ_CLASSTYPE 125 /* draft-ietf-tewg-diff-te-proto-07 */
+#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */
+#define RSVP_OBJ_CLASSTYPE 66 /* rfc4124 */
+#define RSVP_OBJ_CLASSTYPE_OLD 125 /* draft-ietf-tewg-diff-te-proto-07 */
#define RSVP_OBJ_SUGGESTED_LABEL 129 /* rfc3473 */
#define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */
#define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */
#define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */
#define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */
#define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */
-#define RSVP_OBJ_FASTREROUTE 205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-01 */
+#define RSVP_OBJ_FASTREROUTE 205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */
#define RSVP_OBJ_SESSION_ATTRIBUTE 207 /* rfc3209 */
#define RSVP_OBJ_CALL_ID 230 /* rfc3474 */
#define RSVP_OBJ_CALL_OPS 236 /* rfc3474 */
@@ -181,6 +184,7 @@ static const struct tok rsvp_obj_values[] = {
{ RSVP_OBJ_ACCEPT_LABEL_SET, "Acceptable Label Set" },
{ RSVP_OBJ_DETOUR, "Detour" },
{ RSVP_OBJ_CLASSTYPE, "Class Type" },
+ { RSVP_OBJ_CLASSTYPE_OLD, "Class Type (old)" },
{ RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" },
{ RSVP_OBJ_PROPERTIES, "Properties" },
{ RSVP_OBJ_FASTREROUTE, "Fast Re-Route" },
@@ -263,13 +267,40 @@ static const struct tok rsvp_ctype_values[] = {
{ 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" },
{ 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1, "IPv4" },
{ 256*RSVP_OBJ_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" },
- { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" },
+ { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, /* old style*/
+ { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_1, "1" }, /* new style */
{ 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" },
{ 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" },
{ 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" },
+ { 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1, "1" },
+ { 0, NULL}
+};
+
+struct rsvp_obj_integrity_t {
+ u_int8_t flags;
+ u_int8_t res;
+ u_int8_t key_id[6];
+ u_int8_t sequence[8];
+ u_int8_t digest[16];
+};
+
+static const struct tok rsvp_obj_integrity_flag_values[] = {
+ { 0x80, "Handshake" },
{ 0, NULL}
};
+struct rsvp_obj_frr_t {
+ u_int8_t setup_prio;
+ u_int8_t hold_prio;
+ u_int8_t hop_limit;
+ u_int8_t flags;
+ u_int8_t bandwidth[4];
+ u_int8_t include_any[4];
+ u_int8_t exclude_any[4];
+ u_int8_t include_all[4];
+};
+
+
#define RSVP_OBJ_XRO_MASK_SUBOBJ(x) ((x)&0x7f)
#define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80)
@@ -288,7 +319,7 @@ static const struct tok rsvp_obj_xro_values[] = {
{ 0, NULL}
};
-/* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */
+/* draft-ietf-mpls-rsvp-lsp-fastreroute-07.txt */
static const struct tok rsvp_obj_rro_flag_values[] = {
{ 0x01, "Local protection available" },
{ 0x02, "Local protection in use" },
@@ -348,12 +379,14 @@ static struct tok rsvp_obj_prop_tlv_values[] = {
#define RSVP_OBJ_ERROR_SPEC_CODE_ROUTING 24
#define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25
-#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 125
+#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 28
+#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD 125
static struct tok rsvp_obj_error_code_values[] = {
{ RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" },
{ RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" },
{ RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE, "Diffserv TE Error" },
+ { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD, "Diffserv TE Error (Old)" },
{ 0, NULL}
};
@@ -372,14 +405,15 @@ static struct tok rsvp_obj_error_code_routing_values[] = {
};
static struct tok rsvp_obj_error_code_diffserv_te_values[] = {
- { 1, "Unexpected CLASSTYPE object" },
- { 2, "Unsupported Class-Type" },
- { 3, "Invalid Class-Type value" },
- { 4, "Class-Type and setup priority do not form a configured TE-Class" },
- { 5, "Class-Type and holding priority do not form a configured TE-Class" },
- { 6, "Inconsistency between signaled PSC and signaled Class-Type" },
- { 7, "Inconsistency between signaled PHBs and signaled Class-Type" },
- { 0, NULL}
+ { 1, "Unexpected CT object" },
+ { 2, "Unsupported CT" },
+ { 3, "Invalid CT value" },
+ { 4, "CT/setup priority do not form a configured TE-Class" },
+ { 5, "CT/holding priority do not form a configured TE-Class" },
+ { 6, "CT/setup priority and CT/holding priority do not form a configured TE-Class" },
+ { 7, "Inconsistency between signaled PSC and signaled CT" },
+ { 8, "Inconsistency between signaled PHBs and signaled CT" },
+ { 0, NULL}
};
#define FALSE 0
@@ -540,6 +574,11 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
const struct rsvp_object_header *rsvp_obj_header;
const u_char *obj_tptr;
+ union {
+ const struct rsvp_obj_integrity_t *rsvp_obj_integrity;
+ const struct rsvp_obj_frr_t *rsvp_obj_frr;
+ } obj_ptr;
+
u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen;
int hexdump,processed,padbytes,error_code,error_value,i;
union {
@@ -608,7 +647,7 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
printf("%s IPv4 DestAddress: %s, Protocol ID: 0x%02x",
ident,
ipaddr_string(obj_tptr),
- *(obj_tptr+4));
+ *(obj_tptr+sizeof(struct in_addr)));
printf("%s Flags: [0x%02x], DestPort %u",
ident,
*(obj_tptr+5),
@@ -623,11 +662,11 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
printf("%s IPv6 DestAddress: %s, Protocol ID: 0x%02x",
ident,
ip6addr_string(obj_tptr),
- *(obj_tptr+16));
+ *(obj_tptr+sizeof(struct in6_addr)));
printf("%s Flags: [0x%02x], DestPort %u",
ident,
- *(obj_tptr+17),
- EXTRACT_16BITS(obj_tptr+18));
+ *(obj_tptr+sizeof(struct in6_addr)+1),
+ EXTRACT_16BITS(obj_tptr+sizeof(struct in6_addr)+2));
obj_tlen-=20;
obj_tptr+=20;
break;
@@ -663,23 +702,23 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
case RSVP_OBJ_CONFIRM:
switch(rsvp_obj_ctype) {
case RSVP_CTYPE_IPV4:
- if (obj_tlen < 4)
+ if (obj_tlen < sizeof(struct in_addr))
return -1;
printf("%s IPv4 Receiver Address: %s",
ident,
ipaddr_string(obj_tptr));
- obj_tlen-=4;
- obj_tptr+=4;
+ obj_tlen-=sizeof(struct in_addr);
+ obj_tptr+=sizeof(struct in_addr);
break;
#ifdef INET6
case RSVP_CTYPE_IPV6:
- if (obj_tlen < 16)
+ if (obj_tlen < sizeof(struct in6_addr))
return -1;
printf("%s IPv6 Receiver Address: %s",
ident,
ip6addr_string(obj_tptr));
- obj_tlen-=16;
- obj_tptr+=16;
+ obj_tlen-=sizeof(struct in6_addr);
+ obj_tptr+=sizeof(struct in6_addr);
break;
#endif
default:
@@ -690,23 +729,23 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
case RSVP_OBJ_NOTIFY_REQ:
switch(rsvp_obj_ctype) {
case RSVP_CTYPE_IPV4:
- if (obj_tlen < 4)
+ if (obj_tlen < sizeof(struct in_addr))
return -1;
printf("%s IPv4 Notify Node Address: %s",
ident,
ipaddr_string(obj_tptr));
- obj_tlen-=4;
- obj_tptr+=4;
+ obj_tlen-=sizeof(struct in_addr);
+ obj_tptr+=sizeof(struct in_addr);
break;
#ifdef INET6
case RSVP_CTYPE_IPV6:
- if (obj_tlen < 16)
+ if (obj_tlen < sizeof(struct in6_addr))
return-1;
printf("%s IPv6 Notify Node Address: %s",
ident,
ip6addr_string(obj_tptr));
- obj_tlen-=16;
- obj_tptr+=16;
+ obj_tlen-=sizeof(struct in6_addr);
+ obj_tptr+=sizeof(struct in6_addr);
break;
#endif
default:
@@ -997,7 +1036,8 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
EXTRACT_32BITS(obj_tptr+4));
obj_tlen-=8;
obj_tptr+=8;
- hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */
+ if (obj_tlen)
+ hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */
break;
#ifdef INET6
case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */
@@ -1136,24 +1176,46 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
break;
case RSVP_OBJ_FASTREROUTE:
+ /* the differences between c-type 1 and 7 are minor */
+ obj_ptr.rsvp_obj_frr = (const struct rsvp_obj_frr_t *)obj_tptr;
+ bw.i = EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->bandwidth);
+
switch(rsvp_obj_ctype) {
- case RSVP_CTYPE_TUNNEL_IPV4:
+ case RSVP_CTYPE_1: /* new style */
+ if (obj_tlen < sizeof(struct rsvp_obj_frr_t))
+ return-1;
+ printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps",
+ ident,
+ (int)obj_ptr.rsvp_obj_frr->setup_prio,
+ (int)obj_ptr.rsvp_obj_frr->hold_prio,
+ (int)obj_ptr.rsvp_obj_frr->hop_limit,
+ bw.f*8/1000000);
+ printf("%s Include-any: 0x%08x, Exclude-any: 0x%08x, Include-all: 0x%08x",
+ ident,
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_all));
+ obj_tlen-=sizeof(struct rsvp_obj_frr_t);
+ obj_tptr+=sizeof(struct rsvp_obj_frr_t);
+ break;
+
+ case RSVP_CTYPE_TUNNEL_IPV4: /* old style */
if (obj_tlen < 16)
return-1;
- bw.i = EXTRACT_32BITS(obj_tptr+4);
printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps",
ident,
- (int)*obj_tptr,
- (int)*(obj_tptr+1),
- (int)*(obj_tptr+2),
+ (int)obj_ptr.rsvp_obj_frr->setup_prio,
+ (int)obj_ptr.rsvp_obj_frr->hold_prio,
+ (int)obj_ptr.rsvp_obj_frr->hop_limit,
bw.f*8/1000000);
printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x",
ident,
- EXTRACT_32BITS(obj_tptr+8),
- EXTRACT_32BITS(obj_tptr+12));
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any));
obj_tlen-=16;
obj_tptr+=16;
break;
+
default:
hexdump=TRUE;
}
@@ -1177,9 +1239,10 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
break;
case RSVP_OBJ_CLASSTYPE:
+ case RSVP_OBJ_CLASSTYPE_OLD: /* fall through */
switch(rsvp_obj_ctype) {
case RSVP_CTYPE_1:
- printf("%s Class Type: %u",
+ printf("%s CT: %u",
ident,
EXTRACT_32BITS(obj_tptr)&0x7);
obj_tlen-=4;
@@ -1211,7 +1274,8 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value),
error_value);
break;
- case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE:
+ case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE: /* fall through */
+ case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD:
printf(", Error Value: %s (%u)",
tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value),
error_value);
@@ -1317,12 +1381,40 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
}
break;
+ case RSVP_OBJ_INTEGRITY:
+ switch(rsvp_obj_ctype) {
+ case RSVP_CTYPE_1:
+ if (obj_tlen < sizeof(struct rsvp_obj_integrity_t))
+ return-1;
+ obj_ptr.rsvp_obj_integrity = (const struct rsvp_obj_integrity_t *)obj_tptr;
+ printf("%s Key-ID 0x%04x%08x, Sequence 0x%08x%08x, Flags [%s]",
+ ident,
+ EXTRACT_16BITS(obj_ptr.rsvp_obj_integrity->key_id),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->key_id+2),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence+4),
+ bittok2str(rsvp_obj_integrity_flag_values,
+ "none",
+ obj_ptr.rsvp_obj_integrity->flags));
+ printf("%s MD5-sum 0x%08x%08x%08x%08x (unverified)",
+ ident,
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+4),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+8),
+ EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+12));
+ obj_tlen+=sizeof(struct rsvp_obj_integrity_t);
+ obj_tptr+=sizeof(struct rsvp_obj_integrity_t);
+ break;
+ default:
+ hexdump=TRUE;
+ }
+ break;
+
/*
* FIXME those are the defined objects that lack a decoder
* you are welcome to contribute code ;-)
*/
- case RSVP_OBJ_INTEGRITY:
case RSVP_OBJ_SCOPE:
case RSVP_OBJ_POLICY_DATA:
case RSVP_OBJ_LABEL_SET:
diff --git a/contrib/tcpdump/print-sctp.c b/contrib/tcpdump/print-sctp.c
index cd9e8cd90526..db26e2976c34 100644
--- a/contrib/tcpdump/print-sctp.c
+++ b/contrib/tcpdump/print-sctp.c
@@ -35,7 +35,7 @@
#ifndef lint
static const char rcsid[] _U_ =
-"@(#) $Header: /tcpdump/master/tcpdump/print-sctp.c,v 1.16.2.3 2005/05/06 10:53:20 guy Exp $ (NETLAB/PEL)";
+"@(#) $Header: /tcpdump/master/tcpdump/print-sctp.c,v 1.16.2.4 2005/07/07 01:24:38 guy Exp $ (NETLAB/PEL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -200,7 +200,7 @@ void sctp_print(const u_char *bp, /* beginning of sctp packet */
printf("[Payload");
- if (!xflag && !qflag) {
+ if (!suppress_default_print) {
payloadPtr = (const u_char *) (++dataHdrPtr);
printf(":");
if (htons(chunkDescPtr->chunkLength) <
diff --git a/contrib/tcpdump/print-sll.c b/contrib/tcpdump/print-sll.c
index 6ac51e129371..d2a821d01b49 100644
--- a/contrib/tcpdump/print-sll.c
+++ b/contrib/tcpdump/print-sll.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-sll.c,v 1.16.2.1 2005/04/26 00:16:43 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-sll.c,v 1.16.2.2 2005/07/07 01:24:39 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -181,7 +181,7 @@ sll_if_print(const struct pcap_pkthdr *h, const u_char *p)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
break;
}
@@ -190,7 +190,7 @@ sll_if_print(const struct pcap_pkthdr *h, const u_char *p)
/* ether_type not known, print raw packet */
if (!eflag)
sll_print(sllp, length + SLL_HDR_LEN);
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
diff --git a/contrib/tcpdump/print-slow.c b/contrib/tcpdump/print-slow.c
new file mode 100644
index 000000000000..96099221b9f7
--- /dev/null
+++ b/contrib/tcpdump/print-slow.c
@@ -0,0 +1,264 @@
+/*
+ * Copyright (c) 1998-2005 The TCPDUMP project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code
+ * distributions retain the above copyright notice and this paragraph
+ * in its entirety, and (2) distributions including binary code include
+ * the above copyright notice and this paragraph in its entirety in
+ * the documentation or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+ * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ *
+ * support for the IEEE "slow protocols" LACP, MARKER as per 802.3ad
+ *
+ * Original code by Hannes Gredler (hannes@juniper.net)
+ */
+
+#ifndef lint
+static const char rcsid[] _U_ =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-slow.c,v 1.1.2.1 2005/07/10 14:47:56 hannes Exp $";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "interface.h"
+#include "extract.h"
+#include "addrtoname.h"
+#include "ether.h"
+
+struct slow_common_header {
+ u_int8_t proto_subtype;
+ u_int8_t version;
+};
+
+#define SLOW_PROTO_LACP 1
+#define SLOW_PROTO_MARKER 2
+
+#define LACP_VERSION 1
+#define MARKER_VERSION 1
+
+static const struct tok slow_proto_values[] = {
+ { SLOW_PROTO_LACP, "LACP" },
+ { SLOW_PROTO_MARKER, "MARKER" },
+ { 0, NULL}
+};
+
+struct tlv_header_t {
+ u_int8_t type;
+ u_int8_t length;
+};
+
+#define LACP_TLV_TERMINATOR 0x00
+#define LACP_TLV_ACTOR_INFO 0x01
+#define LACP_TLV_PARTNER_INFO 0x02
+#define LACP_TLV_COLLECTOR_INFO 0x03
+
+#define MARKER_TLV_TERMINATOR 0x00
+#define MARKER_TLV_MARKER_INFO 0x01
+
+static const struct tok slow_tlv_values[] = {
+ { (SLOW_PROTO_LACP << 8) + LACP_TLV_TERMINATOR, "Terminator"},
+ { (SLOW_PROTO_LACP << 8) + LACP_TLV_ACTOR_INFO, "Actor Information"},
+ { (SLOW_PROTO_LACP << 8) + LACP_TLV_PARTNER_INFO, "Partner Information"},
+ { (SLOW_PROTO_LACP << 8) + LACP_TLV_COLLECTOR_INFO, "Collector Information"},
+
+ { (SLOW_PROTO_MARKER << 8) + MARKER_TLV_TERMINATOR, "Terminator"},
+ { (SLOW_PROTO_MARKER << 8) + MARKER_TLV_MARKER_INFO, "Marker Information"},
+ { 0, NULL}
+};
+
+struct lacp_tlv_actor_partner_info_t {
+ u_int8_t sys_pri[2];
+ u_int8_t sys[ETHER_ADDR_LEN];
+ u_int8_t key[2];
+ u_int8_t port_pri[2];
+ u_int8_t port[2];
+ u_int8_t state;
+ u_int8_t pad[3];
+};
+
+static const struct tok lacp_tlv_actor_partner_info_state_values[] = {
+ { 0x01, "Activity"},
+ { 0x02, "Timeout"},
+ { 0x04, "Aggregation"},
+ { 0x08, "Synchronization"},
+ { 0x10, "Collecting"},
+ { 0x20, "Distributing"},
+ { 0x40, "Default"},
+ { 0x80, "Expired"},
+ { 0, NULL}
+};
+
+struct lacp_tlv_collector_info_t {
+ u_int8_t max_delay[2];
+ u_int8_t pad[12];
+};
+
+struct marker_tlv_marker_info_t {
+ u_int8_t req_port[2];
+ u_int8_t req_sys[ETHER_ADDR_LEN];
+ u_int8_t req_trans_id[4];
+ u_int8_t pad[2];
+};
+
+struct lacp_marker_tlv_terminator_t {
+ u_int8_t pad[50];
+};
+
+void
+slow_print(register const u_char *pptr, register u_int len) {
+
+ const struct slow_common_header *slow_com_header;
+ const struct tlv_header_t *tlv_header;
+ const u_char *tptr,*tlv_tptr;
+ u_int tlv_len,tlen,tlv_tlen;
+
+ union {
+ const struct lacp_marker_tlv_terminator_t *lacp_marker_tlv_terminator;
+ const struct lacp_tlv_actor_partner_info_t *lacp_tlv_actor_partner_info;
+ const struct lacp_tlv_collector_info_t *lacp_tlv_collector_info;
+ const struct marker_tlv_marker_info_t *marker_tlv_marker_info;
+ } tlv_ptr;
+
+ tptr=pptr;
+ slow_com_header = (const struct slow_common_header *)pptr;
+ TCHECK(*slow_com_header);
+
+ /*
+ * Sanity checking of the header.
+ */
+ if (slow_com_header->proto_subtype == SLOW_PROTO_LACP &&
+ slow_com_header->version != LACP_VERSION) {
+ printf("LACP version %u packet not supported",slow_com_header->version);
+ return;
+ }
+ if (slow_com_header->proto_subtype == SLOW_PROTO_MARKER &&
+ slow_com_header->version != MARKER_VERSION) {
+ printf("MARKER version %u packet not supported",slow_com_header->version);
+ return;
+ }
+
+ printf("%sv%u, length: %u",
+ tok2str(slow_proto_values, "unknown (%u)",slow_com_header->proto_subtype),
+ slow_com_header->version,
+ len);
+
+ if (!vflag)
+ return;
+
+ /* ok they seem to want to know everything - lets fully decode it */
+ tlen=len-sizeof(struct slow_common_header);
+ tptr+=sizeof(const struct slow_common_header);
+
+ while(tlen>0) {
+ /* did we capture enough for fully decoding the tlv header ? */
+ TCHECK2(*tptr, sizeof(struct tlv_header_t));
+ tlv_header = (const struct tlv_header_t *)tptr;
+ tlv_len = tlv_header->length;
+
+ printf("\n\t%s TLV (0x%02x), length: %u",
+ tok2str(slow_tlv_values,
+ "Unknown",
+ (slow_com_header->proto_subtype << 8) + tlv_header->type),
+ tlv_header->type,
+ tlv_len);
+
+ if ((tlv_len < sizeof(struct tlv_header_t) ||
+ tlv_len > tlen) &&
+ tlv_header->type != LACP_TLV_TERMINATOR &&
+ tlv_header->type != MARKER_TLV_TERMINATOR) {
+ printf("\n\t-----trailing data-----");
+ print_unknown_data(tptr+sizeof(sizeof(struct tlv_header_t)),"\n\t ",tlen);
+ return;
+ }
+
+ tlv_tptr=tptr+sizeof(struct tlv_header_t);
+ tlv_tlen=tlv_len-sizeof(struct tlv_header_t);
+
+ /* did we capture enough for fully decoding the tlv ? */
+ TCHECK2(*tptr, tlv_len);
+
+ switch((slow_com_header->proto_subtype << 8) + tlv_header->type) {
+
+ /* those two TLVs have the same structure -> fall through */
+ case ((SLOW_PROTO_LACP << 8) + LACP_TLV_ACTOR_INFO):
+ case ((SLOW_PROTO_LACP << 8) + LACP_TLV_PARTNER_INFO):
+ tlv_ptr.lacp_tlv_actor_partner_info = (const struct lacp_tlv_actor_partner_info_t *)tlv_tptr;
+
+ printf("\n\t System %s, System Priority %u, Key %u" \
+ ", Port %u, Port Priority %u\n\t State Flags [%s]",
+ etheraddr_string(tlv_ptr.lacp_tlv_actor_partner_info->sys),
+ EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->sys_pri),
+ EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->key),
+ EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->port),
+ EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->port_pri),
+ bittok2str(lacp_tlv_actor_partner_info_state_values,
+ "none",
+ tlv_ptr.lacp_tlv_actor_partner_info->state));
+
+ break;
+
+ case ((SLOW_PROTO_LACP << 8) + LACP_TLV_COLLECTOR_INFO):
+ tlv_ptr.lacp_tlv_collector_info = (const struct lacp_tlv_collector_info_t *)tlv_tptr;
+
+ printf("\n\t Max Delay %u",
+ EXTRACT_16BITS(tlv_ptr.lacp_tlv_collector_info->max_delay));
+
+ break;
+
+ case ((SLOW_PROTO_MARKER << 8) + MARKER_TLV_MARKER_INFO):
+ tlv_ptr.marker_tlv_marker_info = (const struct marker_tlv_marker_info_t *)tlv_tptr;
+
+ printf("\n\t Request System %s, Request Port %u, Request Transaction ID 0x%08x",
+ etheraddr_string(tlv_ptr.marker_tlv_marker_info->req_sys),
+ EXTRACT_16BITS(tlv_ptr.marker_tlv_marker_info->req_port),
+ EXTRACT_32BITS(tlv_ptr.marker_tlv_marker_info->req_trans_id));
+
+ break;
+
+ /* those two TLVs have the same structure -> fall through */
+ case ((SLOW_PROTO_LACP << 8) + LACP_TLV_TERMINATOR):
+ case ((SLOW_PROTO_MARKER << 8) + LACP_TLV_TERMINATOR):
+ tlv_ptr.lacp_marker_tlv_terminator = (const struct lacp_marker_tlv_terminator_t *)tlv_tptr;
+ if (tlv_len == 0) {
+ tlv_len = sizeof(tlv_ptr.lacp_marker_tlv_terminator->pad) +
+ sizeof(struct tlv_header_t);
+ /* tell the user that we modified the length field */
+ if (vflag>1)
+ printf(" (=%u)",tlv_len);
+ /* we have messed around with the length field - now we need to check
+ * again if there are enough bytes on the wire for the hexdump */
+ TCHECK2(tlv_ptr.lacp_marker_tlv_terminator->pad[0],
+ sizeof(tlv_ptr.lacp_marker_tlv_terminator->pad));
+ }
+
+ break;
+
+ default:
+ if (vflag <= 1)
+ print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen);
+ break;
+ }
+ /* do we want to see an additionally hexdump ? */
+ if (vflag > 1)
+ print_unknown_data(tptr+sizeof(sizeof(struct tlv_header_t)),"\n\t ",
+ tlv_len-sizeof(struct tlv_header_t));
+
+ tptr+=tlv_len;
+ tlen-=tlv_len;
+ }
+ return;
+trunc:
+ printf("\n\t\t packet exceeded snapshot");
+}
diff --git a/contrib/tcpdump/print-symantec.c b/contrib/tcpdump/print-symantec.c
index 652bbb65ba75..eb72180850f1 100644
--- a/contrib/tcpdump/print-symantec.c
+++ b/contrib/tcpdump/print-symantec.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-symantec.c,v 1.4 2004/04/05 00:13:59 mcr Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-symantec.c,v 1.4.2.1 2005/07/07 01:24:39 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -105,7 +105,7 @@ symantec_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag)
symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
} else if (ether_encap_print(ether_type, p, length, caplen,
&extracted_ether_type) == 0) {
@@ -113,7 +113,7 @@ symantec_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag)
symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
diff --git a/contrib/tcpdump/print-tcp.c b/contrib/tcpdump/print-tcp.c
index c1dede83340d..ab736a060e5e 100644
--- a/contrib/tcpdump/print-tcp.c
+++ b/contrib/tcpdump/print-tcp.c
@@ -799,7 +799,7 @@ tcp_verify_signature(const struct ip *ip, const struct tcphdr *tp,
MD5_Update(&ctx, tcpmd5secret, strlen(tcpmd5secret));
MD5_Final(sig, &ctx);
- if (memcmp(rcvsig, sig, 16) == 0)
+ if (memcmp(rcvsig, sig, 16))
return (SIGNATURE_VALID);
else
return (SIGNATURE_INVALID);
diff --git a/contrib/tcpdump/print-token.c b/contrib/tcpdump/print-token.c
index 0633578ed969..a2b3d0ffe57a 100644
--- a/contrib/tcpdump/print-token.c
+++ b/contrib/tcpdump/print-token.c
@@ -25,7 +25,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-token.c,v 1.25 2004/03/17 23:24:38 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-token.c,v 1.25.2.1 2005/07/07 01:24:40 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -167,7 +167,7 @@ token_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype)));
}
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
} else {
@@ -176,7 +176,7 @@ token_print(const u_char *p, u_int length, u_int caplen)
if (!eflag)
token_hdr_print(trp, length + TOKEN_HDRLEN + route_len,
ESRC(&ehdr), EDST(&ehdr));
- if (!xflag && !qflag)
+ if (!suppress_default_print)
default_print(p, caplen);
}
return (hdr_len);
diff --git a/contrib/tcpdump/tcpdump-stdinc.h b/contrib/tcpdump/tcpdump-stdinc.h
index dbabeefccee6..0319ff9ca83e 100644
--- a/contrib/tcpdump/tcpdump-stdinc.h
+++ b/contrib/tcpdump/tcpdump-stdinc.h
@@ -29,7 +29,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.12.2.3 2005/05/04 19:20:20 risso Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.12.2.4 2005/07/09 21:19:45 risso Exp $ (LBL)
*/
/*
@@ -46,11 +46,11 @@
#include <stdio.h>
#include <winsock2.h>
+#include <Ws2tcpip.h>
#include "bittypes.h"
#include <ctype.h>
#include <time.h>
#include <io.h>
-#include "IP6_misc.h"
#include <fcntl.h>
#include <sys/types.h>
#include <net/netdb.h> /* in wpcap's Win32/include */
diff --git a/contrib/tcpdump/tcpdump.1 b/contrib/tcpdump/tcpdump.1
index b08d2c6847b4..d44beeb9d559 100644
--- a/contrib/tcpdump/tcpdump.1
+++ b/contrib/tcpdump/tcpdump.1
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/tcpdump/tcpdump.1,v 1.167.2.4 2005/05/02 21:27:34 guy Exp $ (LBL)
+.\" @(#) $Header: /tcpdump/master/tcpdump/tcpdump.1,v 1.167.2.6 2005/09/05 09:14:37 guy Exp $ (LBL)
.\"
.\" $NetBSD: tcpdump.8,v 1.9 2003/03/31 00:18:17 perry Exp $
.\"
@@ -1013,20 +1013,72 @@ Note that
\fItcpdump\fP does not currently know how to parse these protocols.
.IP "\fBvlan \fI[vlan_id]\fR"
True if the packet is an IEEE 802.1Q VLAN packet.
-If \fI[vlan_id]\fR is specified, only true is the packet has the specified
+If \fI[vlan_id]\fR is specified, only true if the packet has the specified
\fIvlan_id\fR.
Note that the first \fBvlan\fR keyword encountered in \fIexpression\fR
-changes the decoding offsets for the remainder of \fIexpression\fR
-on the assumption that the packet is a VLAN packet.
-the \fI[vlan_id]\fR statement may be used more than once, to filter on vlan hierarchies.
-each use of the \fI[vlan_id]\fR \fIexpression\fR increments the filter offsets by 4.
+changes the decoding offsets for the remainder of \fIexpression\fR on
+the assumption that the packet is a VLAN packet. The \fBvlan
+\fI[vlan_id]\fR expression may be used more than once, to filter on VLAN
+hierarchies. Each use of that expression increments the filter offsets
+by 4.
+.IP
+For example:
+.in +.5i
+.nf
+\fBvlan 100 && vlan 200\fR
.fi
-example(s):
+.in -.5i
+filters on VLAN 200 encapsulated within VLAN 100, and
+.in +.5i
+.nf
+\fBvlan && vlan 300 && ip\fR
+.fi
+.in -.5i
+filters IPv4 protocols encapsulated in VLAN 300 encapsulated within any
+higher order VLAN.
+.IP "\fBmpls \fI[label_num]\fR"
+True if the packet is an MPLS packet.
+If \fI[label_num]\fR is specified, only true is the packet has the specified
+\fIlabel_num\fR.
+Note that the first \fBmpls\fR keyword encountered in \fIexpression\fR
+changes the decoding offsets for the remainder of \fIexpression\fR on
+the assumption that the packet is a MPLS-encapsulated IP packet. The
+\fBmpls \fI[label_num]\fR expression may be used more than once, to
+filter on MPLS hierarchies. Each use of that expression increments the
+filter offsets by 4.
+.IP
+For example:
+.in +.5i
+.nf
+\fBmpls 100000 && mpls 1024\fR
.fi
-"vlan 100 && vlan 200" filters on vlan 200 encapsulated within vlan 100
+.in -.5i
+filters packets with an outer label of 100000 and an inner label of
+1024, and
+.in +.5i
+.nf
+\fBmpls && mpls 1024 && host 192.9.200.1\fR
.fi
-"vlan && vlan 300 && ip" filters IPv4 protocols encapsulated in vlan 300 encapsulated within any higher order vlan
+.in -.5i
+filters packets to or from 192.9.200.1 with an inner label of 1024 and
+any outer label.
+.IP \fBpppoed\fP
+True if the packet is a PPP-over-Ethernet Discovery packet (Ethernet
+type 0x8863).
+.IP \fBpppoes\fP
+True if the packet is a PPP-over-Ethernet Session packet (Ethernet
+type 0x8864).
+Note that the first \fBpppoes\fR keyword encountered in \fIexpression\fR
+changes the decoding offsets for the remainder of \fIexpression\fR on
+the assumption that the packet is a PPPoE session packet.
+.IP
+For example:
+.in +.5i
+.nf
+\fBpppoes && ip\fR
.fi
+.in -.5i
+filters IPv4 protocols encapsulated in PPPoE.
.IP "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
Abbreviations for:
.in +.5i
diff --git a/contrib/tcpdump/tcpdump.c b/contrib/tcpdump/tcpdump.c
index 6c47f5066bd5..b7bedfe86a54 100644
--- a/contrib/tcpdump/tcpdump.c
+++ b/contrib/tcpdump/tcpdump.c
@@ -30,7 +30,7 @@ static const char copyright[] _U_ =
"@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\
The Regents of the University of California. All rights reserved.\n";
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.253.2.8 2005/07/05 21:09:05 mcr Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.253.2.11 2005/08/23 10:29:41 hannes Exp $ (LBL)";
#endif
/*
@@ -253,6 +253,18 @@ static struct printer printers[] = {
#ifdef DLT_JUNIPER_SERVICES
{ juniper_services_print, DLT_JUNIPER_SERVICES },
#endif
+#ifdef DLT_JUNIPER_ETHER
+ { juniper_ether_print, DLT_JUNIPER_ETHER },
+#endif
+#ifdef DLT_JUNIPER_PPP
+ { juniper_ppp_print, DLT_JUNIPER_PPP },
+#endif
+#ifdef DLT_JUNIPER_FRELAY
+ { juniper_frelay_print, DLT_JUNIPER_FRELAY },
+#endif
+#ifdef DLT_JUNIPER_CHDLC
+ { juniper_chdlc_print, DLT_JUNIPER_CHDLC },
+#endif
{ NULL, 0 },
};
@@ -492,8 +504,6 @@ main(int argc, char **argv)
break;
case 'A':
- ++xflag;
- ++Xflag;
++Aflag;
break;
@@ -655,6 +665,7 @@ main(int argc, char **argv)
case 'q':
++qflag;
+ ++suppress_default_print;
break;
case 'r':
@@ -735,10 +746,12 @@ main(int argc, char **argv)
case 'x':
++xflag;
+ ++suppress_default_print;
break;
case 'X':
++Xflag;
+ ++suppress_default_print;
break;
case 'y':
@@ -1224,9 +1237,28 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
snapend = sp + h->caplen;
hdrlen = (*print_info->printer)(h, sp);
- if (xflag) {
+ if (Xflag) {
/*
- * Print the raw packet data.
+ * Print the raw packet data in hex and ASCII.
+ */
+ if (Xflag > 1) {
+ /*
+ * Include the link-layer header.
+ */
+ hex_and_ascii_print("\n\t", sp, h->caplen);
+ } else {
+ /*
+ * Don't include the link-layer header - and if
+ * we have nothing past the link-layer header,
+ * print nothing.
+ */
+ if (h->caplen > hdrlen)
+ hex_and_ascii_print("\n\t", sp + hdrlen,
+ h->caplen - hdrlen);
+ }
+ } else if (xflag) {
+ /*
+ * Print the raw packet data in hex.
*/
if (xflag > 1) {
/*
@@ -1243,15 +1275,15 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
hex_print("\n\t", sp + hdrlen,
h->caplen - hdrlen);
}
- } else if (Xflag) {
+ } else if (Aflag) {
/*
- * Print the raw packet data.
+ * Print the raw packet data in ASCII.
*/
- if (Xflag > 1) {
+ if (Aflag > 1) {
/*
* Include the link-layer header.
*/
- ascii_print("\n\t", sp, h->caplen);
+ ascii_print(sp, h->caplen);
} else {
/*
* Don't include the link-layer header - and if
@@ -1259,8 +1291,7 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
* print nothing.
*/
if (h->caplen > hdrlen)
- ascii_print("\n\t", sp + hdrlen,
- h->caplen - hdrlen);
+ ascii_print(sp + hdrlen, h->caplen - hdrlen);
}
}
@@ -1299,12 +1330,12 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
#endif
/*
- * By default, print the specified data out in hex.
+ * By default, print the specified data out in hex and ASCII.
*/
static void
ndo_default_print(netdissect_options *ndo _U_, const u_char *bp, u_int length)
{
- ascii_print("\n\t", bp, length); /* pass on lf and identation string */
+ hex_and_ascii_print("\n\t", bp, length); /* pass on lf and identation string */
}
void
diff --git a/contrib/tcpdump/tests/.cvsignore b/contrib/tcpdump/tests/.cvsignore
new file mode 100644
index 000000000000..f097c8a945c7
--- /dev/null
+++ b/contrib/tcpdump/tests/.cvsignore
@@ -0,0 +1,11 @@
+*.new
+*.pcap
+02-sunrise-sunset-esp.pcap
+08-sunrise-sunset-aes.pcap
+08-sunrise-sunset-esp.pcap
+08-sunrise-sunset-esp2.pcap
+isakmp-delete-segfault.pcap
+isakmp-identification-segfault.pcap
+isakmp-pointer-loop.pcap
+run1.pcap
+run2.pcap
diff --git a/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu b/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu
new file mode 100644
index 000000000000..0ceffc1c1c83
--- /dev/null
+++ b/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu
@@ -0,0 +1,34 @@
+begin 644 02-sunrise-sunset-esp.pcap
+MU,.RH0(`!``````````````&```!``````````````"6````E@```!```&1D
+M11```&1D(P@`10``B/]G``!`,O:5P`$"%\`!`BT2-%9X`````4P@12\\L)(1
+MTZ=(S>7($>.<3N@\_I:AY"K/TKAZJP719"NCKYP;PT(0+$"M%=]-X"`*8V.'
+M-'$1A]02"3N#OZI#&1R]A*1;`G8S@YFQ]<H7S))417Y9!E4:<$'CW)%VZ&_3
+M_]T`L+P1^!`PEP``````````E@```)8````0``!D9$40``!D9",(`$4``(C_
+M:```0#+VE,`!`A?``0(M$C16>`````(:<$'CW)%VZ',2KQMB@CN?'"^GJ<=:
+MD-0`+.V^J'2AK).'XQ_B"B8:[%A_+K[6KS2'XR[UN`,R"BJP?^].ZM#/[$)#
+M17^!D"8_[BZ>GU4Z*$7I"N$U*>J47?C-4;I>#`%6+#0%]D75YC']*Z\`````
+M`````)8```"6````$```9&1%$```9&0C"`!%``"(_VD``$`R]I/``0(7P`$"
+M+1(T5G@````#7?C-4;I>#`%@W%89?QJ#$TJ,4G\FO&HO=F+,,%1E(]);XI]T
+MV7W.RY$2=JZ1%!QCNX[;^.JD4W91;7)NJWV2MF4?7`=&_3OWW%V&6RIXKB75
+M#;2TWNL"A:MF!I@_5R^]L6;Z`L?E@1:T&71G``````````"6````E@```!``
+M`&1D11```&1D(P@`10``B/]J``!`,O:2P`$"%\`!`BT2-%9X````!*MF!I@_
+M5R^]%';9*Q:S_B]]O_8FV:2K1A!]/SQHI7>OS815*I?4%/:.=BBJUEGJ(X8\
+M<SZ>P1E/@&P\9MR)DP3[UCWI@,MR%A$\CR]=G(("[CFB7AUN$AENZOO&\:7%
+M2KLW<'NP,L(I=!;8=0``````````E@```)8````0``!D9$40``!D9",(`$4`
+M`(C_:P``0#+VD<`!`A?``0(M$C16>`````5NZOO&\:7%2J12,9;LOK"-S,=$
+MO0]X+J(OJQED#PLBRY[\^352UZK&57<R0L9JQ:KH6`)BUN$`5]1WU@"A!8TM
+MO^)<;`-SW;1HQO$CE\#`O[W[17GW[0G&M,^T?7>6,Z<:%73AWV3:;Y/:=@(`
+M`````````)8```"6````$```9&1%$```9&0C"`!%``"(_VP``$`R]I#``0(7
+MP`$"+1(T5G@````&M,^T?7>6,Z=>N_YZQFV[H1^6\!/I*IMAOHZE\E0M.Z!X
+M#[0EG3#>%]7`]*2F?@S4X2''TK09J@NG/.HEXCE./..K^'-@":X[\?0L+B`S
+MQA\HTK\'J]:S]N6O`]\)NQD)9;H2P\K`^NX37`R5``````````"6````E@``
+M`!```&1D11```&1D(P@`10``B/]M``!`,O:/P`$"%\`!`BT2-%9X````!^6O
+M`]\)NQD)>BYZ>`/DA=N;A2...3-7FZOK?:5KGXBN`/E?$\[-11-$G#E;(>N"
+M+<$/YP'SM$>16LU18&Q]9)$]0)/M]:2Z#A6]-,SM*>FI/`X*K-*-:KS3IW<"
+MO(>(P(K=:X::SJ;O[J>0K```````````E@```)8````0``!D9$40``!D9",(
+M`$4``(C_;@``0#+VCL`!`A?``0(M$C16>`````C3IW<"O(>(P'-43;C[`MCD
+M`BMZAX]F!?'Z$8Q"5HYMVDC9"8I^O(Z4!/)`/IVD-(ZK)_52-H2XK+,(-LR)
+MM)K#XLF">KY0>C?\[MA%3F%$?ORJ@:>O]5H>?-$OQH)J<ZFOW_+K%G=UG0"[
+"G'T`
+`
+end
diff --git a/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu b/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu
new file mode 100644
index 000000000000..ec8793d02238
--- /dev/null
+++ b/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu
@@ -0,0 +1,36 @@
+begin 644 08-sunrise-sunset-aes.pcap
+MU,.RH0(`!``````````````&```!``````````````"F````I@```!```&1D
+M11```&1D(P@`10``F/SJ``!`,OD"P`$"%\`!`BW1(T5G`````>:['.C0J(%P
+MVF'>(TU6&*"9A,`,/KS\:>DH>O_L(51)_[YY"L<H#LJ/;(BQ)=[*$<APY/A1
+M-"T@(`_Q&)S!C)$*7S?G3Q4H\F=)OYF+P@S&11%^*]S)N@L*TZ@!:&&:QFZT
+ML'#7<>9?8'?J4V:_.]B+6UR\T>39D+=NA;$``````````*8```"F````$```
+M9&1%$```9&0C"`!%``"8_.L``$`R^0'``0(7P`$"+=$C16<````";K2P<-=Q
+MYE]@=^I39K\[V$1HDU9'L,6BVK.^B4]E6QY&:?3?T)G?"RSU;X!J]]7S)<`,
+M*L!SYO^RUWR?!EIJMWU=5B406YL-I`]LK`^;-3%(NEY#R`ST=W40=:*[M$*8
+M#<KX)19@.`.4_5YD^:V;G@3>`GLTK(5ZCS"BC@``````````I@```*8````0
+M``!D9$40``!D9",(`$4``)C\[```0#+Y`,`!`A?``0(MT2-%9P````,-RO@E
+M%F`X`Y3]7F3YK9N>=6-;U&'6">_4H80DMY^Z9E3ZL3[ONN*L<"Z@7(VO]XT^
+M/2JP<(/^8NTO-4\/B5AJEC4N;,\"7-&(;9AM_2G5A1C.[LBK3')P?AE;$I[)
+M!8N&RC?OTD7<V)AIU4,*E>7ELURFXRD/JD(:@RER``````````"F````I@``
+M`!```&1D11```&1D(P@`10``F/SM``!`,OC_P`$"%\`!`BW1(T5G````!(;*
+M-^_21=S8F&G50PJ5Y>5K%@R;)A(E<5YD'@86@GT"-&&MHP*.A=?%=:FDZH=4
+M*9":>]'G'CB4%2?PJ"2^H*51\8P!9T`X3#;F+H$[<GW7=?K.R30-'6'L3AO8
+MR=:M3S$GIZ>4Z$7ZL0<\S=S\%`:BW9U2'@U^@D,,:.P``````````*8```"F
+M````$```9&1%$```9&0C"`!%``"8_.X``$`R^/[``0(7P`$"+=$C16<````%
+M,2>GIY3H1?JQ!SS-W/P4!BW&*&A[$!XGK<^M^>_X193"G"1QTWG>Q"CO25$"
+MPM+1+8[6&(17\EE\P:6-WVPT=911?@'-Z,,/UVZ2!QV(X4513U9]P62CJMS>
+M^ODBGHU=%T.H2&Z<4,8(!4,2[&A4^H="L:+`=4G?*(7,2@``````````I@``
+M`*8````0``!D9$40``!D9",(`$4``)C\[P``0#+X_<`!`A?``0(MT2-%9P``
+M``870ZA(;IQ0Q@@%0Q+L:%3Z@*HQPZA]3STWDY#CYJGOJH)K<KVT9G61>>I'
+MEHMF"X!^G,H@,YWT7^=60.3/$7?AYH)G9GBD%%#,D]!EDA]B*?UE>U96+"5\
+MK=""/.LO'__^;$N<E@!.2&3^@U:P__8_'D^YC!41E,!@!6<K``````````"F
+M````I@```!```&1D11```&1D(P@`10``F/SP``!`,OC\P`$"%\`!`BW1(T5G
+M````!_YL2YR6`$Y(9/Z#5K#_]C_ZJU%7M?L23>I`L#D]@&G?Z7B2O#GI?NDK
+MF[7JPN,8V\H>%G+)'+%+FL*&\8+H2^KFWF5YQ:$4V!,1?G;=OYD;!,3YD'V(
+MW[Y!I(U=X9[\:L)(5GBJ,B!-5N$.CGV$VLD^R?Z,KL[AMI(ZC-P`````````
+M`*8```"F````$```9&1%$```9&0C"`!%``"8_/$``$`R^/O``0(7P`$"+=$C
+M16<````(PDA6>*HR($U6X0Z.?83:R;Y0<E/4SN)UX;Q:D$D%K(DZZ:^_\K$'
+MZQ81NT4KBGD#Z=_^`E^!HS*KHEJ!)!KE>&'2065/"*M'ELXD?1%3\L3TC.UK
+HKWB(C5O@78>9LQ^<0Z6]F=:<;@[>L^;/\-6WB81[GX)<MS0B=>LGD@``
+`
+end
diff --git a/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu b/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu
new file mode 100644
index 000000000000..4785f2b808c9
--- /dev/null
+++ b/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu
@@ -0,0 +1,43 @@
+begin 644 08-sunrise-sunset-esp2.pcap
+MU,.RH0(`!``````````````&```!``````````````#.````S@```!```&1D
+M11```&1D(P@`10``P"E-``!`,LQXP`$"%\`!`BT2-%9X`````4=!+\5+F8`+
+M[[NOU-#98*AO5\780X[VDXF@2W8<10:J!'!Z!-[7N4CFNRKIH;PUA1SL"Y9\
+M-?_3N_,W/@*T+C/"]=S[`;D!/;`SR5,3+><9K.^\9N><18TY9Z\!I\S./L8R
+MFE53,S6Y5X_Z\(T)ZIUS?X$8>&(_MT1"!SV:VPP!\XU$[3S-5L)4-O"&>]`Z
+M1:./61=%C6`6U1/65"A&KUE902]*``````````#.````S@```!```&1D11``
+M`&1D(P@`10``P"E/``!`,LQVP`$"%\`!`BT2-%9X`````CIU^SX%;G^!GUSP
+MSA<?/8FY?L/'^2]6'&3[\-NES3E]33Z$Q]#7D9$8TFS5);?S?)ZJOP4;ZD-M
+M+0_/@#*U=7A9;FYR*5&/^V%MSFEM`DAZY,8'<0.9M^'::<M+M2G0LG6*S/[3
+M?T`IIJUJ[GW,L+&PH<AR&K(]^=[K7IMGD[`8[ONL8LD3AM`N@$S!*?=;*8=>
+ML7P6FM81),N>T/1Z'"P7H5;```````````#.````S@```!```&1D11```&1D
+M(P@`10``P"E1``!`,LQTP`$"%\`!`BT2-%9X`````R4)-P&F>HPK/?_$MTFC
+M^TOO=/L#W_APTK6MIH_BC*I7\L<,9(?/0M"HK3[T3F;(Y2V70$P5?D'7GFIB
+MJZ/C",S/BD!9N8GV"\.;GVME[P!@!B1"DT=1W0_75FMI23H!T2^C);4GY>`I
+M-2T^O_0_WU&$)&+/P)%[TQUQ-T7G%\RXYJT0HO</^*)F`^2<W8KTY.W<FK4K
+M8UC+J'.*X)NH%<UTK+K+``````````#.````S@```!```&1D11```&1D(P@`
+M10``P"E3``!`,LQRP`$"%\`!`BT2-%9X````!)`9]]SHKI[EGW4M?W8>[$=<
+M`@@TL1#(Y980]E*/!^2@G`*&S9O^QMS1S?/`TL=5F9B(12?(145>Y2I+;+T?
+MKWUD@&.7U36]K-$[.%9CB*FK^E8>N:K/)4#$]ZO/:=#;MRH-)_139\,W6M4T
+M7SQ?BBX&GT,+A3#BB5^O=>+GKIC-4]5VBP)D-S<X2O)H[_/#M*T+&$\7PL.M
+M>7-)\W&;<@_J@,*!``````````#.````S@```!```&1D11```&1D(P@`10``
+MP"E5``!`,LQPP`$"%\`!`BT2-%9X````!0OIFA;,@2C4HF3>5!-C(0>5LR0"
+M='1\OQ.!-?@D(U0!453"<Q/!\*CDK.&OU'+WE:^7J8"AMS<@UYX*,<(&YA2Q
+MGQ(.3+0\#`!+`.TE,;\3:.<+F:?=T@.KOBL%VAAX9_RY$/^%$C+I*4&S<AM]
+MP*]SZ"RD'G.AJH76?SV&2HQLF+!J/QZ;.:<LB::-]+AE1+&);M^]`XZ-W2CX
+M+&CPZINP*9?>``````````#.````S@```!```&1D11```&1D(P@`10``P"E7
+M``!`,LQNP`$"%\`!`BT2-%9X````!I0M"-THEF=+!L=>A3N,\1+"'Z7(J?O0
+M.B?)(#X=/5F-.">%3.X'(=JKK:W<MZF2^8#73C[US$-O&ZZ+L:94R9E2#=J=
+M18HP?AN`5^)A+HW6EB*5P=AZ(S"\TIBZ'\.=]4A,#18'0/R_#C:4XX_?>ZMN
+M=B+^Q3"(KE\1299]=5E,'.&U(`H9N)+>9FS/`CA*>D^>AV.-C(S\)BM&)*XM
+M^BF__^<_``````````#.````S@```!```&1D11```&1D(P@`10``P"E9``!`
+M,LQLP`$"%\`!`BT2-%9X````!R"SQ'[6%(;Q>>O+]CS6D*+AD3IMC\^MMK8[
+M:T3)KM06!G^.H\>%UAT@)X6JL9\3V.HR"+_Q^_T-O$Y_S":_TP;V,LIV1O]H
+M-G@DOL'V-5)O@%<%!#O$2V,AS@W7(&$IX.YKK]\K#>FITU)<>O42T2GKFW+^
+M\/[,>E4P[Q"+7O,Y1(R22LND[H+469(%3,SN&3:U:/I`'&R@<`<TR"-4:&8+
+MQ5SX``````````#.````S@```!```&1D11```&1D(P@`10``P"E;``!`,LQJ
+MP`$"%\`!`BT2-%9X````"*',]A6A,Q(*B+]=&6X&T*L^\)Z6N%,G)(.;6X-K
+MM@&4<FRJ]#IJ%Y'-^T+4[&;0;_%7HM85LR8W(>HKGOV,^#L9,QF%)W^9!VFM
+MXG'XY]CWI5VF33?7,*P?6:.PS'&[\N$7W<*==+;P*$./4*OH&=O,6G!JIN>I
+M'ZDP*D&4K>SK-\/!7\Z&<&5J4%NU?NRM&25'*_"'UE3VH&?U]/V@932UYZT\
+`
+end
diff --git a/contrib/tcpdump/tests/alltests.sh b/contrib/tcpdump/tests/alltests.sh
new file mode 100644
index 000000000000..7df25991f1b6
--- /dev/null
+++ b/contrib/tcpdump/tests/alltests.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+for i in *.sh
+do
+ if [ "X$i" = "Xalltests.sh" ]
+ then
+ continue;
+ fi
+ sh ./$i
+done
+
+
diff --git a/contrib/tcpdump/tests/bgp_vpn_attrset.out b/contrib/tcpdump/tests/bgp_vpn_attrset.out
new file mode 100644
index 000000000000..7fb12ae4b3e4
--- /dev/null
+++ b/contrib/tcpdump/tests/bgp_vpn_attrset.out
@@ -0,0 +1,18 @@
+IP (tos 0xc0, ttl 62, id 58628, offset 0, flags [none], proto: TCP (6), length: 173) 12.4.4.4.2051 > 12.1.1.1.179: P, cksum 0xcf18 (correct), 3293077573:3293077694(121) ack 3348108582 win 16384 <nop,nop,timestamp 383131 890299>: BGP, length: 121
+ Update Message (2), length: 121
+ Origin (1), length: 1, Flags [T]: IGP
+ AS Path (2), length: 0, Flags [T]: empty
+ Local Preference (5), length: 4, Flags [T]: 100
+ Extended Community (16), length: 8, Flags [OT]:
+ target (0x0002), Flags [none]: 300:0.0.1.44
+ Attribute Set (128), length: 36, Flags [OT]:
+ Origin AS: 65001
+ Origin (1), length: 1, Flags [T]: IGP
+ AS Path (2), length: 4, Flags [T]: 5555
+ Local Preference (5), length: 4, Flags [T]: 44
+ Originator ID (9), length: 4, Flags [O]: 22.5.5.5
+ Cluster List (10), length: 4, Flags [O]: 22.5.5.5
+ Multi-Protocol Reach NLRI (14), length: 30, Flags [OE]:
+ AFI: IPv4 (1), SAFI: labeled VPN Unicast (128)
+ nexthop: RD: 0:0.0.0.0, 12.4.4.4, nh-length: 12, no SNPA
+ RD: 500:0.0.1.244, 133.0.0.0/8, label:100208 (bottom)
diff --git a/contrib/tcpdump/tests/bgp_vpn_attrset.sh b/contrib/tcpdump/tests/bgp_vpn_attrset.sh
new file mode 100755
index 000000000000..c32872c83bea
--- /dev/null
+++ b/contrib/tcpdump/tests/bgp_vpn_attrset.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+echo -n test bgp_vpn_attrset...
+if (../tcpdump -t -n -v -r bgp_vpn_attrset.pcap | diff -w - bgp_vpn_attrset.out)
+then
+ echo passed.
+else
+ echo failed.
+fi
+
+
diff --git a/contrib/tcpdump/tests/eapon1.gdbinit b/contrib/tcpdump/tests/eapon1.gdbinit
new file mode 100644
index 000000000000..37ad0bcd029e
--- /dev/null
+++ b/contrib/tcpdump/tests/eapon1.gdbinit
@@ -0,0 +1 @@
+set args -r eapon1.pcap
diff --git a/contrib/tcpdump/tests/eapon1.out b/contrib/tcpdump/tests/eapon1.out
new file mode 100644
index 000000000000..c5042e3ff13f
--- /dev/null
+++ b/contrib/tcpdump/tests/eapon1.out
@@ -0,0 +1,114 @@
+IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138)
+IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138)
+IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138)
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138)
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+arp who-has 192.168.1.1 tell 192.168.1.249
+arp reply 192.168.1.1 is-at 00:0d:88:4f:25:91 (oui Unknown)
+IP 192.168.1.249.bootpc > 192.168.1.1.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+EAP code=1 id=0 length=5
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+EAP code=1 id=1 length=0
+EAP code=1 id=0 length=5
+EAP code=1 id=0 length=45
+EAP code=1 id=0 length=20
+EAP code=1 id=0 length=76
+EAP code=1 id=0 length=80
+EAP code=1 id=0 length=28
+EAP code=1 id=0 length=4
+EAP code=1 id=3 length=57
+EAP code=1 id=3 length=44
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+EAP code=1 id=1 length=0
+EAP code=1 id=0 length=5
+EAP code=1 id=0 length=45
+EAP code=1 id=0 length=20
+EAP code=1 id=0 length=76
+EAP code=1 id=0 length=80
+EAP code=1 id=0 length=28
+EAP code=1 id=0 length=4
+EAP code=1 id=3 length=57
+EAP code=1 id=3 length=44
+arp who-has 169.254.67.194 tell 169.254.67.194
+arp who-has 169.254.67.194 tell 169.254.67.194
+arp who-has 169.254.67.194 tell 169.254.67.194
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194 > IGMP: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194 > IGMP: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP code=1 id=1 length=0
+EAP code=1 id=0 length=5
+EAP code=1 id=0 length=45
+EAP code=1 id=0 length=20
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP code=1 id=0 length=76
+EAP code=1 id=0 length=80
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP code=1 id=0 length=28
+EAP code=1 id=0 length=4
+EAP code=1 id=3 length=57
+EAP code=1 id=3 length=44
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300
+EAP code=1 id=1 length=0
+EAP code=1 id=0 length=5
+EAP code=1 id=0 length=45
+EAP code=1 id=0 length=20
+IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138)
+EAP code=1 id=0 length=76
+EAP code=1 id=0 length=80
+EAP code=1 id=0 length=28
+EAP code=1 id=0 length=4
+EAP code=1 id=3 length=57
+EAP code=1 id=3 length=44
diff --git a/contrib/tcpdump/tests/eapon1.puu b/contrib/tcpdump/tests/eapon1.puu
new file mode 100644
index 000000000000..25c14367780a
--- /dev/null
+++ b/contrib/tcpdump/tests/eapon1.puu
@@ -0,0 +1,368 @@
+begin 644 eapon1.pcap
+MU,.RH0(`!````````````/__```!````"%5@0)*@#@#=````W0```/______
+M_P`$(U>E>@@`10``SSB'``"`$7Q.P*@!^<"H`?\`B@"*`+M3[!$.B1W`J`'Y
+M`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#
+M14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00#_4TU")0``````````````
+M`````````````````````!$```L```````````#H`P``````````"P!6``,`
+M`0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`"%5@0/2@#@#=
+M````W0```/_______P`$(U>E>@@`10``SSB(``"`$7Q-P*@!^<"H`?\`B@"*
+M`+L,\A$.B1[`J`'Y`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!
+M0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149&4$9004-!0@#_4TU"
+M)0```````````````````````````````````!$```L```````````#H`P``
+M````````"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353
+M,$H`"%5@0("C#@#[````^P```/_______P`$(U>E>@@`10``[3B)``"`$7PN
+MP*@!^<"H`?\`B@"*`-E#WA$.B1_`J`'Y`(H`PP``($5%14M&041*1$9&1$1!
+M14M#04-!0T%#04-!0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149&
+M4$9004-!0@#_4TU")0```````````````````````````````````!$``"D`
+M``````````#H`P``````````*0!6``,``0`!``(`.@!<34%)3%-,3U1<0E)/
+M5U-%``P`8.H``$%20D5)5%-'4E504$4``0`#"@`0`(!,_@0#1$I0.353,$H`
+M"%5@0/JI#@!<````7````/_______P`$(U>E>@@`10``3CB*``"`$7S,P*@!
+M^<"H`?\`B0")`#J"=XDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-&
+M1D9!1D%%1D-!0T%"3```(``!"55@0//8"@!<````7````/_______P`$(U>E
+M>@@`10``3CB-``"`$7S)P*@!^<"H`?\`B0")`#J"=XDA`1```0```````"!%
+M0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3```(``!"E5@0+,)!P!<
+M````7````/_______P`$(U>E>@@`10``3CB.``"`$7S(P*@!^<"H`?\`B0")
+M`#J"=XDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!
+M0T%"3```(``!"E5@0,@N#`#S````\P```/_______P`$(U>E>@@`10``Y3B/
+M``"`$7PPP*@!^<"H`?\`B@"*`-'GIA$.B2+`J`'Y`(H`NP``($5%14M&041*
+M1$9&1$1!14M#04-!0T%#04-!0T%#04-!`"!%0D9#14-%1D5*1D5&1$5(1D-&
+M1D9!1D%%1D-!0T%"3P#_4TU")0``````````````````````````````````
+M`!$``"$```````````#H`P``````````(0!6``,``0````(`,@!<34%)3%-,
+M3U1<0E)/5U-%``\`@/P*`$1*4#DU4S!*``!R`&\`<P`%`0,0!0`/`56J``U5
+M8$!5%0<`7````%P```#_______\`!"-7I7H(`$4``$XXE```@!%\PL"H`?G`
+MJ`'_`(D`B0`Z@G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&
+M049!149#04-!0DP``"```0Y58$`>10,`7````%P```#_______\`!"-7I7H(
+M`$4``$XXE0``@!%\P<"H`?G`J`'_`(D`B0`Z@G")*`$0``$````````@14)&
+M0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```0Y58$!0N`X`7```
+M`%P```#_______\`!"-7I7H(`$4``$XXE@``@!%\P,"H`?G`J`'_`(D`B0`Z
+M@G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!
+M0DP``"```0]58$#*.`<`*@```"H```#_______\`!"-7I7H(!@`!"``&!``!
+M``0C5Z5ZP*@!^0```````,"H`0$/56!`%UD'`#P````\``````0C5Z5Z``V(
+M3R61"`8``0@`!@0``@`-B$\ED<"H`0$`!"-7I7K`J`'Y````````````````
+M````````#U5@0"E9!P!6`0``5@$````-B$\ED0`$(U>E>@@`10`!2#B7``"`
+M$7S#P*@!^<"H`0$`1`!#`31YVP$!!@#(+24]CP&``,"H`?D`````````````
+M````!"-7I7H`````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````8X)38S4!!S8$P*@!`3T'
+M`0`$(U>E>O\`````````````````````````````````````````````````
+M``````]58$`6@0D`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!`0`%`0``
+M```````````````````````````````````````````````/56!`"BL*`%8!
+M``!6`0``________``0C5Z5Z"`!%``%(.)\``(`1`0<`````_____P!$`$,!
+M-,&K`0$&`)@7ASP````````````````````````````$(U>E>@``````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````!C@E-C-0$!=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y
+M-5,P2CP(35-&5"`U+C`W"P$/`P8L+B\?(?DK_P``````#U5@0![^#`!6`0``
+M5@$``/_______P`$(U>E>@@`10`!2#BA``"`$0$%`````/____\`1`!#`32.
+MS0$!!@#5`WTN````````````````````````````!"-7I7H`````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353
+M,$H\"$U31E0@-2XP-PL!#P,&+"XO'R'Y*_\``````!!58$"$8P(`$P```!,`
+M````#,Z(,9H`!"-7I7J(C@$!````$%5@0.IK`@`\````/``````$(U>E>@`,
+MSH@QFHB.`0``!0$"``4!````````````````````````````````````````
+M`````````!%58$!>L`L`/P```#\`````#,Z(,9H`!"-7I7J(C@$``"T"`@`M
+M`3$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO=VQA;BYO<F<156!`
+M81`,`#P````\``````0C5Z5Z``S.B#&:B(X!```4`1``%!(*```/`@`"``$`
+M`!$!`0``````````````````````````````$55@0,VL#`!>````7@`````,
+MSH@QF@`$(U>E>HB.`0``3`(0`$P2"@``#@L`*#$R.34P,C,X,C`P,#4S.3%`
+M;6YC,#(S+FUC8S(Y-2YO=VQA;BYO<F<'!0``XM+Y<LO)&X'VQ\&EG)_*XA`!
+M``$156!`P?(,`&(```!B``````0C5Z5Z``S.B#&:B(X!``!0`1$`4!(+```!
+M#0``,````````````````````#$````````````````````R````````````
+M````````"P4``.OTCH!BE[/.*TUX]HB,9O8256!`LQD*`"X````N``````S.
+MB#&:``0C5Z5ZB(X!```<`A$`'!(+```+!0``#*NYLZ2O7U"%636?B,5I[A)5
+M8$`H=0H`/````#P`````!"-7I7H`#,Z(,9J(C@$```0#```$````````````
+M```````````````````````````````````````256!`%GD*`$L```!+````
+M``0C5Z5Z``S.B#&:B(X!`P`Y`0`-``!`8%41`)MJNAB%#R>L.*X:RH)3A8\F
+M`ET1,5U'QWV%1Z`@V,N=24.:\=%3TKI<SV/#HB:X$E5@0$Y\"@`^````/@``
+M```$(U>E>@`,SH@QFHB.`0,`+`$`#0``0&!5$0"<E?@]+KE3IY6RR"$-=DAO
+M3H-QX7H>=&X[D=]]>4;W^,JD$U5@0*@!#0!6`0``5@$``/_______P`$(U>E
+M>@@`10`!2#BG``"`$0#_`````/____\`1`!#`30ES`$!!@#5`WTN:0$`````
+M````````````````````!"-7I7H`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````8X)3
+M8S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U31E0@-2XP-PL!
+M#P,&+"XO'R'Y*_\``````!I58$#O`@T`5@$``%8!``#_______\`!"-7I7H(
+M`$4``4@XKP``@!$`]P````#_____`$0`0P$T)<P!`08`U0-]+FD!````````
+M``````````````````0C5Z5Z````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````&."4V,U
+M`0%T`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\#
+M!BPN+Q\A^2O_```````J56!`^P(-`%8!``!6`0``________``0C5Z5Z"`!%
+M``%(.+(``(`1`/0`````_____P!$`$,!-"7,`0$&`-4#?2YI`0``````````
+M```````````````$(U>E>@``````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!C@E-C-0$!
+M=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U+C`W"P$/`P8L
+M+B\?(?DK_P``````,%5@0.B$"@`3````$P`````,SH@QF@`$(U>E>HB.`0$`
+M```P56!`^J$*`#P````\``````0C5Z5Z``S.B#&:B(X!```%`0,`!0$`````
+M````````````````````````````````````````````,%5@0)SA"@`_````
+M/P`````,SH@QF@`$(U>E>HB.`0``+0(#`"T!,3(Y-3`R,S@R,#`P-3,Y,4!M
+M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9S!58$#0!`P`/````#P`````!"-7I7H`
+M#,Z(,9J(C@$``!0!+P`4$@H```\"``(``0``$0$!````````````````````
+M```````````R56!`-$(%`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`B\`
+M3!(*```."P`H,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N
+M+F]R9P<%``#7H!![\\SE,P[&']$W6C<%$`$``3)58$#,.`<`8@```&(`````
+M!"-7I7H`#,Z(,9J(C@$``%`!,`!0$@L```$-```P````````````````````
+M,0```````````````````#(````````````````````+!0``0WL?0G!%;49D
+M0(DL@MD'#C-58$!S4P(`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P",``<
+M$@L```L%``!%[_\P8H+&6U!$B#@$)T-",U5@0"'6`P`\````/``````$(U>E
+M>@`,SH@QFHB.`0``!`,```0`````````````````````````````````````
+M`````````````#-58$!=V@,`2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D!
+M``T``$!@53$`G7]!<++?0.3Y>#A83O[YHHT"0T@&N\)FL/6P9NHATX%<E?[@
+M45S@"_@>BIRI%B`S56!`F-T#`#X````^``````0C5Z5Z``S.B#&:B(X!`P`L
+M`0`-``!`8%4Q`)[N$`!R;$K*.XLG`JO9N"A#@XK>5*[_:U"C]E[O?""IR!5+
+M56!`]Q(-`"H````J````________``0C5Z5Z"`8``0@`!@0``0`$(U>E>JG^
+M0\(```````"I_D/"2U5@0'&!#0`J````*@```/_______P`$(U>E>@@&``$(
+M``8$``$`!"-7I7JI_D/"````````J?Y#PDQ58$`X@@T`*@```"H```#_____
+M__\`!"-7I7H(!@`!"``&!``!``0C5Z5ZJ?Y#P@```````*G^0\)-56!`*=H-
+M`*\```"O`````0!>?__Z``0C5Z5Z"`!%``"A.+X```$1HM.I_D/"[___^A#+
+M!VP`C6+X32U314%20T@@*B!(5%10+S$N,0T*2&]S=#HR,SDN,C4U+C(U-2XR
+M-3`Z,3DP,`T*4U0Z=7)N.G-C:&5M87,M=7!N<"UO<F<Z9&5V:6-E.DEN=&5R
+M;F5T1V%T97=A>41E=FEC93HQ#0I-86XZ(G-S9'`Z9&ES8V]V97(B#0I-6#HS
+M#0H-"DU58$"\Y`T`-@```#8````!`%X``!8`!"-7I7H(`$8``"@XP````0(>
+M.:G^0\+@```6E`0``"(`Z@,````!!````.____I-56!`OK4.`&X```!N````
+M________``0C5Z5Z"`!%``!@.,(``(`1:@RI_D/"J?[__P")`(D`3+4(B2XI
+M$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!```@
+M``'`#``@``$`!)/@``9@`*G^0\).56!`!H\*`#8````V`````0!>```6``0C
+M5Z5Z"`!&```H.,0```$"'C6I_D/"X```%I0$```B`.H#`````00```#O___Z
+M3E5@0!3E"@!N````;@```/_______P`$(U>E>@@`10``8#C%``"`$6H)J?Y#
+MPJG^__\`B0")`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%#
+M04-!0T%#04-!0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5@0#,6!P!N
+M````;@```/_______P`$(U>E>@@`10``8#C&``"`$6H(J?Y#PJG^__\`B0")
+M`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!
+M0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5@0*^U#0!6`0``5@$``/__
+M_____P`$(U>E>@@`10`!2#C'``"`$0#?`````/____\`1`!#`325:P$!!@"2
+M13E.``"`````````````````````````!"-7I7H`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U3
+M1E0@-2XP-PL!#P,&+"XO'R'Y*_\``````%!58$`T1P,`;@```&X```#_____
+M__\`!"-7I7H(`$4``&`XR```@!%J!JG^0\*I_O__`(D`B0!,M@B)+B@0``$`
+M``````$@145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!04$``"```<`,
+M`"```0`$D^``!F``J?Y#PE!58$",WPT`KP```*\````!`%Y___H`!"-7I7H(
+M`$4``*$XR@```1&BQZG^0\+O___Z$,L';`"-8OA-+5-%05)#2"`J($A45%`O
+M,2XQ#0I(;W-T.C(S.2XR-34N,C4U+C(U,#HQ.3`P#0I35#IU<FXZ<V-H96UA
+M<RUU<&YP+6]R9SID979I8V4Z26YT97)N971'871E=V%Y1&5V:6-E.C$-"DUA
+M;CHB<W-D<#ID:7-C;W9E<B(-"DU8.C,-"@T*4%5@0`"\#@!N````;@```/__
+M_____P`$(U>E>@@`10``8#C,``"`$6H"J?Y#PJG^__\`B0")`$PP]8DO*1``
+M`0```````2!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00``(``!
+MP`P`(``!``23X``&X`"I_D/"455@0#/A`P`3````$P`````,SH@QF@`$(U>E
+M>HB.`0$```!156!`8>D#`#P````\``````0C5Z5Z``S.B#&:B(X!```%`00`
+M!0$`````````````````````````````````````````````````455@0+TU
+M!``_````/P`````,SH@QF@`$(U>E>HB.`0``+0($`"T!,3(Y-3`R,S@R,#`P
+M-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9U%58$#Y[@4`/````#P`````
+M!"-7I7H`#,Z(,9J(C@$``!0!4``4$@H```\"``(``0``$0$!````````````
+M``````````````````!156!`9.L*`&X```!N````________``0C5Z5Z"`!%
+M``!@.,T``(`1:@&I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-%
+M0T5&14I&149$14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@
+M`*G^0\)256!`71P'`&X```!N````________``0C5Z5Z"`!%``!@.,X``(`1
+M:@"I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-%0T5&14I&149$
+M14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@`*G^0\)256!`
+M9[(.`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`E``3!(*```."P`H,3(Y
+M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```Z)]TL
+M?V'JYOR&8?J))U]%$`$``5)58$`"$P\`8@```&(`````!"-7I7H`#,Z(,9J(
+MC@$``%`!40!0$@L```$-```P````````````````````,0``````````````
+M`````#(````````````````````+!0``*IFHOZ$\8[TX!>!F]%P6:%-58$!8
+M30,`;@```&X```#_______\`!"-7I7H(`$4``&`XSP``@!%I_ZG^0\*I_O__
+M`(D`B0!,,?6)+R@0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!
+M149#04-!04$``"```<`,`"```0`$D^``!N``J?Y#PE-58$#M3`H`+@```"X`
+M````#,Z(,9H`!"-7I7J(C@$``!P"40`<$@L```L%``#BE(K>$<9]M,I(_@G,
+MC).Y4U5@0`*="@`\````/``````$(U>E>@`,SH@QFHB.`0``!`,```0`````
+M`````````````````````````````````````````````%-58$#CH`H`2P``
+M`$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@55(`GZN0MGOEA8[@4WO*
+M&_11@$@"&2ZIH`.YHY==8)$_%6#R:U/Z"F'14BLDK,Z)I:%356!`&*0*`#X`
+M```^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%52`*!&UK1?K<RECIT@
+MY'<O#NGZ@YJ^O,Y@JP;?M,0[/;M1?PY356!`9+H-`%8!``!6`0``________
+M``0C5Z5Z"`!%``%(.-```(`1`-8`````_____P!$`$,!-&QJ`0$&`))%.4XI
+M`8`````````````````````````$(U>E>@``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``!C@E-C-0$!=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U
+M+C`W"P$/`P8L+B\?(?DK_P``````4U5@0)?A#0"O````KP````$`7G__^@`$
+M(U>E>@@`10``H3C2```!$:*_J?Y#PN____H0RP=L`(UB^$TM4T5!4D-(("H@
+M2%144"\Q+C$-"DAO<W0Z,C,Y+C(U-2XR-34N,C4P.C$Y,#`-"E-4.G5R;CIS
+M8VAE;6%S+75P;G`M;W)G.F1E=FEC93I);G1E<FYE=$=A=&5W87E$979I8V4Z
+M,0T*36%N.B)S<V1P.F1I<V-O=F5R(@T*35@Z,PT*#0I356!`N<(.`&X```!N
+M````________``0C5Z5Z"`!%``!@.-0``(`1:?JI_D/"J?[__P")`(D`3+4$
+MB3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!
+M```@``'`#``@``$`!)/@``9@`*G^0\)356!`V,0.`&X```!N````________
+M``0C5Z5Z"`!%``!@.-4``(`1:?FI_D/"J?[__P")`(D`3"+RB3$I$``!````
+M```!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@
+M``$`!)/@``;@`*G^0\)456!`C/$*`&X```!N````________``0C5Z5Z"`!%
+M``!@.-@``(`1:?:I_D/"J?[__P")`(D`3+4$B3`I$``!```````!($5%14M&
+M041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@``$`!)/@``9@
+M`*G^0\)456!`4?4*`&X```!N````________``0C5Z5Z"`!%``!@.-D``(`1
+M:?6I_D/"J?[__P")`(D`3"+RB3$I$``!```````!($5"1D-%0T5&14I&149$
+M14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@`*G^0\)556!`
+MB2('`&X```!N````________``0C5Z5Z"`!%``!@.-H``(`1:?2I_D/"J?[_
+M_P")`(D`3+4$B3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#
+M04-!0T%#04-!```@``'`#``@``$`!)/@``9@`*G^0\)556!`328'`&X```!N
+M````________``0C5Z5Z"`!%``!@.-L``(`1:?.I_D/"J?[__P")`(D`3"+R
+MB3$I$``!```````!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/
+M```@``'`#``@``$`!)/@``;@`*G^0\)656!`?%,#`&X```!N````________
+M``0C5Z5Z"`!%``!@.-P``(`1:?*I_D/"J?[__P")`(D`3+8$B3`H$``!````
+M```!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@
+M``$`!)/@``9@`*G^0\)656!`1E<#`&X```!N````________``0C5Z5Z"`!%
+M``!@.-T``(`1:?&I_D/"J?[__P")`(D`3"/RB3$H$``!```````!($5"1D-%
+M0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@
+M`*G^0\)656!`R<P.`-T```#=````________``0C5Z5Z"`!%``#/..,``(`1
+M:7RI_D/"J?[__P"*`(H`NPE!$0Z),JG^0\(`B@"E```@145%2T9!1$I$1D9$
+M1$%%2T-!0T%#04-!0T%#04-!04$`($5"1D-%0T5&14I&149$14A&0T9&1D%&
+M045&0T%#04).`/]334(E````````````````````````````````````$0``
+M"P```````````.@#```````````+`%8``P`!``$``@`<`%Q-04E,4TQ/5%Q"
+M4D]74T4``@!$2E`Y-5,P2@!656!`W<T.`/,```#S````________``0C5Z5Z
+M"`!%``#E..0``(`1:66I_D/"J?[__P"*`(H`T1`"$0Z),ZG^0\(`B@"[```@
+M145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!0T$`($5"1D-%0T5&14I&
+M149$14A&0T9&1D%&045&0T%#04).`/]334(E````````````````````````
+M````````````$0``(0```````````.@#```````````A`%8``P`!`````@`R
+M`%Q-04E,4TQ/5%Q"4D]74T4``0"`_`H`1$I0.353,$H````````!``4!`Q`!
+M``\!5:H`6%5@0+\L!P#=````W0```/_______P`$(U>E>@@`10``SSCF``"`
+M$6EYJ?Y#PJG^__\`B@"*`+L)/1$.B3:I_D/"`(H`I0``($5%14M&041*1$9&
+M1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!
+M1D%%1D-!0T%"3@#_4TU")0```````````````````````````````````!$`
+M``L```````````#H`P``````````"P!6``,``0`!``(`'`!<34%)3%-,3U1<
+M0E)/5U-%``(`1$I0.353,$H`655@0.K0#@#=````W0```/_______P`$(U>E
+M>@@`10``SSCG``"`$6EXJ?Y#PJG^__\`B@"*`+L)/!$.B3>I_D/"`(H`I0``
+M($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5*
+M1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0``````````````````````
+M`````````````!$```L```````````#H`P``````````"P!6``,``0`!``(`
+M'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`6U5@0-@R!P#=````W0``
+M`/_______P`$(U>E>@@`10``SSCH``"`$6EWJ?Y#PJG^__\`B@"*`+L).Q$.
+MB3BI_D/"`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!
+M`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0``````
+M`````````````````````````````!$```L```````````#H`P``````````
+M"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`7%5@
+M0"2]#0!6`0``5@$``/_______P`$(U>E>@@`10`!2#CI``"`$0"]`````/__
+M__\`1`!#`31L:@$!!@"213E.*0&`````````````````````````!"-7I7H`
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!
+M^0P(1$I0.353,$H\"$U31E0@-2XP-PL!#P,&+"XO'R'Y*_\``````%Q58$`#
+MUPX`Z0```.D```#_______\`!"-7I7H(`$4``-LXZ@``@!%I::G^0\*I_O__
+M`(H`B@#';@L1#HDYJ?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%#04-!
+M0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0D\`
+M_U--0B4````````````````````````````````````1```7````````````
+MZ`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=310`(`2`/
+M`1!9L1D5`````$1*4#DU4S!*`%U58$#/UPX`Z0```.D```#_______\`!"-7
+MI7H(`$4``-LXZP``@!%I:*G^0\*I_O__`(H`B@#';@H1#HDZJ?Y#P@"*`+$`
+M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149%
+M2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4`````````````````````
+M```````````````1```7````````````Z`,``````````!<`5@`#``$``0`"
+M`"@`7$U!24Q33$]47$)23U=310`(`2`/`1!9L1D5`````$1*4#DU4S!*`%Y5
+M8$"+V`X`Z0```.D```#_______\`!"-7I7H(`$4``-LX[```@!%I9ZG^0\*I
+M_O__`(H`B@#';@D1#HD[J?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%#
+M04-!0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!
+M0D\`_U--0B4````````````````````````````````````1```7````````
+M````Z`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=310`(
+M`2`/`1!9L1D5`````$1*4#DU4S!*`%]58$!)V0X`Z0```.D```#_______\`
+M!"-7I7H(`$4``-LX[0``@!%I9JG^0\*I_O__`(H`B@#';@@1#HD\J?Y#P@"*
+M`+$``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#
+M149%2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4`````````````````
+M```````````````````1```7````````````Z`,``````````!<`5@`#``$`
+M`0`"`"@`7$U!24Q33$]47$)23U=310`(`2`/`1!9L1D5`````$1*4#DU4S!*
+M`&!58$"CV@X`;@```&X```#_______\`!"-7I7H(`$4``&`X[@``@!%IX*G^
+M0\*I_O__`(D`B0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9#
+M1D9&049!149#04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF%58$#F"@L`
+M;@```&X```#_______\`!"-7I7H(`$4``&`X[P``@!%IWZG^0\*I_O__`(D`
+MB0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#
+M04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF)58$#?.P<`;@```&X```#_
+M______\`!"-7I7H(`$4``&`X\```@!%IWJG^0\*I_O__`(D`B0!,H^:)/2D0
+M``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"``
+M`<`,`"```0`$D^``!F``J?Y#PF-58$#9;`,`;@```&X```#_______\`!"-7
+MI7H(`$4``&`X\P``@!%IVZG^0\*I_O__`(D`B0!,I.:)/2@0``$```````$@
+M14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"```<`,`"```0`$
+MD^``!F``J?Y#PF-58$"'X`X`;@```&X```#_______\`!"-7I7H(`$4``&`X
+M]```@!%IVJG^0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!%
+M3D9$14-&0T501DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y#
+MPF158$`/$0L`;@```&X```#_______\`!"-7I7H(`$4``&`X]0``@!%IV:G^
+M0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T50
+M1DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF558$`&0@<`
+M;@```&X```#_______\`!"-7I7H(`$4``&`X]@``@!%IV*G^0\*I_O__`(D`
+MB0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&
+M4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF958$#^<@,`;@```&X```#_
+M______\`!"-7I7H(`$4``&`X]P``@!%IUZG^0\*I_O__`(D`B0!,ZNR)/B@0
+M``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(``"``
+M`<`,`"```0`$D^``!N``J?Y#PF958$!_Y@X`W0```-T```#_______\`!"-7
+MI7H(`$4``,\X^```@!%I9ZG^0\*I_O__`(H`B@"[%C41#HD_J?Y#P@"*`*4`
+M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149%
+M2D9%1D1%2$9#1D9&049!149#04-!04$`_U--0B4`````````````````````
+M```````````````1```+````````````Z`,```````````L`5@`#``$``0`"
+M`!P`7$U!24Q33$]47$)23U=310`"`$1*4#DU4S!*`&958$!AYPX`W0```-T`
+M``#_______\`!"-7I7H(`$4``,\X^0``@!%I9JG^0\*I_O__`(H`B@"[SSH1
+M#HE`J?Y#P@"*`*4``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!
+M00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(`_U--0B4`````
+M```````````````````````````````1```+````````````Z`,`````````
+M``L`5@`#``$``0`"`!P`7$U!24Q33$]47$)23U=310`"`$1*4#DU4S!*`&95
+M8$!PZ@X`^P```/L```#_______\`!"-7I7H(`$4``.TX^@``@!%I1ZG^0\*I
+M_O__`(H`B@#9)2,1#HE!J?Y#P@"*`,,``"!%145+1D%$2D1&1D1$045+0T%#
+M04-!0T%#04-!0T%!00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#
+M04(`_U--0B4````````````````````````````````````1```I````````
+M````Z`,``````````"D`5@`#``$``0`"`#H`7$U!24Q33$]47$)23U=310`,
+M`&#J``!!4D)%25131U)54%!%``$``PH`$`"`;/[%!D1*4#DU4S!*`&958$"4
+M\`X`7````%P```#_______\`!"-7I7H(`$4``$XX^P``@!%IY:G^0\*I_O__
+M`(D`B0`Z;]^)0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!
+M149#04-!0DP``"```6=58$`('PL`7````%P```#_______\`!"-7I7H(`$4`
+M`$XX_```@!%IY*G^0\*I_O__`(D`B0`Z;]^)0P$0``$````````@14)&0T5#
+M149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6A58$`&4`<`7````%P`
+M``#_______\`!"-7I7H(`$4``$XX_0``@!%IXZG^0\*I_O__`(D`B0`Z;]^)
+M0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP`
+M`"```6M58$"J6P<`7````%P```#_______\`!"-7I7H(`$4``$XY`0``@!%I
+MWZG^0\*I_O__`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1%
+M2$9#1D9&049!149#04-!0DP``"```6Q58$`-BP,`7````%P```#_______\`
+M!"-7I7H(`$4``$XY`@``@!%IWJG^0\*I_O__`(D`B0`Z;]N)1P$0``$`````
+M```@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6Q58$!%
+M_@X`7````%P```#_______\`!"-7I7H(`$4``$XY!```@!%IW*G^0\*I_O__
+M`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!
+M149#04-!0DP``"```6U58$`7O@T`5@$``%8!``#_______\`!"-7I7H(`$4`
+M`4@Y!@``@!$`H`````#_____`$0`0P$T;&H!`08`DD4Y3BD!@```````````
+M``````````````0C5Z5Z````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````&."4V,U`0%T
+M`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\#!BPN
+M+Q\A^2O_``````!Q56!`]:$*`!,````3``````S.B#&:``0C5Z5ZB(X!`0``
+M`'%58$!%P`H`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!!0`%`0``````
+M``````````````````````````````````````````!Q56!`C?4*`#\````_
+M``````S.B#&:``0C5Z5ZB(X!```M`@4`+0$Q,CDU,#(S.#(P,#`U,SDQ0&UN
+M8S`R,RYM8V,R.34N;W=L86XN;W)G<55@0/XV"P`\````/``````$(U>E>@`,
+MSH@QFHB.`0``%`%P`!02"@``#P(``@`!```1`0$`````````````````````
+M`````````')58$#=.0P`\P```/,```#_______\`!"-7I7H(`$4``.4Y#```
+M@!%I/:G^0\*I_O__`(H`B@#1\^D1#HE*J?Y#P@"*`+L``"!%145+1D%$2D1&
+M1D1$045+0T%#04-!0T%#04-!0T%#00`@14)&0T5#149%2D9%1D1%2$9#1D9&
+M049!149#04-!0D\`_U--0B4````````````````````````````````````1
+M```A````````````Z`,``````````"$`5@`#``$````"`#(`7$U!24Q33$]4
+M7$)23U=310`/`(#\"@!$2E`Y-5,P2@``60!<`%4`!0$#$`4`#P%5J@!S56!`
+MJ'L$`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`G``3!(*```."P`H,3(Y
+M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```)[DNV
+M]<TYOH8?&=*L`<`&$`$``7-58$#3Q`0`8@```&(`````!"-7I7H`#,Z(,9J(
+MC@$``%`!<0!0$@L```$-```P````````````````````,0``````````````
+M`````#(````````````````````+!0``4,1=:28,Y[A5';!-.W&=A7-58$"#
+M.0\`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P"<0`<$@L```L%``#,G3O*
+M(MF[ZP#.U#83NT:1=%5@0#-7```\````/``````$(U>E>@`,SH@QFHB.`0``
+M!`,```0``````````````````````````````````````````````````'15
+M8$`G6P``2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@57(`H7=G
+MF]`<U=:Q_.ODF.0!O^<"RF-&L(?"6]$(GK,%9)J4;"'MPR]@Y#?:1B?;0,UT
+M56!`55X``#X````^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%5R`*(I
+@:.4"VF#:A*@Q;&CP#+\$@]3C#=%3<0P&M\#VWIK`IL$`
+`
+end
diff --git a/contrib/tcpdump/tests/eapon1.sh b/contrib/tcpdump/tests/eapon1.sh
new file mode 100755
index 000000000000..1c8aa631d12b
--- /dev/null
+++ b/contrib/tcpdump/tests/eapon1.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode eapon1.puu
+
+echo -n test eapon1...
+../tcpdump -t -N -r eapon1.pcap > eapon1.new
+if diff eapon1.new eapon1.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/eapon2.puu b/contrib/tcpdump/tests/eapon2.puu
new file mode 100644
index 000000000000..70abb23d6337
--- /dev/null
+++ b/contrib/tcpdump/tests/eapon2.puu
@@ -0,0 +1,66 @@
+begin 644 eapon2.pcap
+MU,.RH0(`!````````````&`````!````_E1@0(0`#`!"````0@`````+VY#]
+M`@#@3UR$8`@`11``-"500``W!O$4U8'_>L&:EKBMN@`6*6Y2?^.:F>V`$/C@
+M9C@```$!"`H974FMBM15+Q!58$!QG`8`8````.L`````"]N0_0(`X$]<A&`(
+M`$4``-TH'P``]A%NH=6!_WK!FI:X5(X'%`#)!M0!%`#!,KA08YA%<^E.@.W\
+MVGEAG@$J,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\056!``J0&
+M`&````"*```````,!ZR%``O;D/T""`!%``!\``!``$`1#2+!FI:XU8'_>@<4
+M5(X`:)P-"Q0`8$$!<I3L?-I\^CLZZ8W&J$<(!O____X,!@```D`&!@````)/
+M%@$0`!02"@``#P(``@`!$%5@0/N`!P!@````'`$````+VY#]`@#@3UR$8`@`
+M10`!#B@@``#V$6YOU8'_>L&:EKA4C@<4`/I,<`$5`/+M5G/\`0<0G:=Q]S4<
+MM<W1`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;Q!58$"?AP<`
+M8````,8```````P'K(4`"]N0_0((`$4``+@``4``0!$,Y<&:EKC5@?]Z!Q14
+MC@"D*@T+%0"<GZ@ST?&@X&3DA[P+.!KY+@@&_____@P&```"0`8&`````D]2
+M`1$`4!(+```!#0``,``156!`QP`%`&````#L``````O;D/T"`.!/7(1@"`!%
+M``#>*"$``/81;I[5@?]ZP9J6N%2.!Q0`RHLB`18`PB*WG4W^01LM]B4XN&`'
+M6E(!*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO$55@0!P&!0!@
+M````!@$`````#`>LA0`+VY#]`@@`10``^``"0`!`$0RDP9J6N-6!_WH'%%2.
+M`.2>DP(6`-P04TN>&O"\WL%@,.`1V142"`;____^#`8```)`!@8````"&CH`
+M``$W$32`+U<1;LS62B]58$!:H@8`8````.L`````"]N0_0(`X$]<A&`(`$4`
+M`-TH)```]A%NG-6!_WK!FI:X5(X'%`#)G_(!&`#!8I@\,J5DDRGEM>@M>A=G
+MB0$J,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\O56!`G*<&`&``
+M``"*```````,!ZR%``O;D/T""`!%``!\``-``$`1#1_!FI:XU8'_>@<45(X`
+M:#<F"Q@`8$VXJ\Z['F%^RCK?B4C^(6T(!O____X,!@```D`&!@````)/%@$O
+M`!02"@``#P(``@`!,55@0-S/`0!@````'`$````+VY#]`@#@3UR$8`@`10`!
+M#B@E``#V$6YJU8'_>L&:EKA4C@<4`/H2$P$9`/)6HP7H8R0(O<O]:/"4@0=%
+M`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;S%58$!7U@$`8```
+M`,8```````P'K(4`"]N0_0((`$4``+@`!$``0!$,XL&:EKC5@?]Z!Q14C@"D
+MZ2,+&0"<(Y3XP!`C^NV)J[-Q+PU3"@@&_____@P&```"0`8&`````D]2`3``
+M4!(+```!#0``,``Q56!`$JX-`&````#L``````O;D/T"`.!/7(1@"`!%``#>
+M*"8``/81;IG5@?]ZP9J6N%2.!Q0`R@WC`1H`PCS/?&QHIT8SX.[2#=[S68H!
+M*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO,55@0#VS#0!@````
+M!@$`````#`>LA0`+VY#]`@@`10``^``%0`!`$0RAP9J6N-6!_WH'%%2.`.3B
+MMP(:`-S*Z(?9H34)&AB0":D9<!O)"`;____^#`8```)`!@8````"&CH```$W
+M$321P=T3ADE-XU!58$"$D@``8````.L`````"]N0_0(`X$]<A&`(`$4``-TH
+M*```]A%NF-6!_WK!FI:X5(X'%`#)[%H!&P#!PB<W7,;1#%UAF"-V*ORC90$J
+M,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]056!`8I<``&````"*
+M```````,!ZR%``O;D/T""`!%``!\``9``$`1#1S!FI:XU8'_>@<45(X`:#0%
+M"QL`8(N:^N5L(EK&#H6-':U$XV((!O____X,!@```D`&!@````)/%@%0`!02
+M"@``#P(``@`!455@0*VL"0!@````'`$````+VY#]`@#@3UR$8`@`10`!#B@I
+M``#V$6YFU8'_>L&:EKA4C@<4`/KDFP$<`/+H$R8P9(B"W[^G<4!"HKQ+`2HQ
+M,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;U%58$"ZL@D`8````,8`
+M``````P'K(4`"]N0_0((`$4``+@`!T``0!$,W\&:EKC5@?]Z!Q14C@"DI=@+
+M'`"<G^$P>;*!>&FY;C?2/)T74`@&_____@P&```"0`8&`````D]2`5$`4!(+
+M```!#0``,`!256!`@SL%`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"H`
+M`/81;I75@?]ZP9J6N%2.!Q0`RI"T`1T`PE:^P6JH@]U$D*!C#8CO0UP!*C$R
+M.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO4E5@0'M`!0!@````!@$`
+M````#`>LA0`+VY#]`@@`10``^``(0`!`$0R>P9J6N-6!_WH'%%2.`.2<&@(=
+M`-P&]WGHNB++Z0K&A"^B<2S/"`;____^#`8```)`!@8````"&CH```$W$32F
+M=DT@&\D[/G!58$!OW04`8````.L`````"]N0_0(`X$]<A&`(`$4``-TH*P``
+M]A%NE=6!_WK!FI:X5(X'%`#)*:D!'@#!I[D+3?C+./K-`/>AS"W^P0$J,3(Y
+M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]P56!`L>(%`&````"*````
+M```,!ZR%``O;D/T""`!%``!\``E``$`1#1G!FI:XU8'_>@<45(X`:`.V"QX`
+M8+P/!*Y!RZ>(/:C.%/A62\((!O____X,!@```D`&!@````)/%@%P`!02"@``
+M#P(``@`!<55@0)*H#@!@````'`$````+VY#]`@#@3UR$8`@`10`!#B@L``#V
+M$6YCU8'_>L&:EKA4C@<4`/JLH@$?`/*.M".D<>M4,KL=.(:"[-F;`2HQ,CDU
+M,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;W%58$#$K@X`8````,8`````
+M``P'K(4`"]N0_0((`$4``+@`"D``0!$,W,&:EKC5@?]Z!Q14C@"DK7D+'P"<
+MMWVPJO:XC`JEY#15<5U0Z@@&_____@P&```"0`8&`````D]2`7$`4!(+```!
+M#0``,`!R56!`S#4*`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"T``/81
+M;I+5@?]ZP9J6N%2.!Q0`RE>1`2``PK+"]?UCV]G1I<-+X16?0+L!*C$R.34P
+M,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO<E5@0,,Z"@!@````!@$`````
+M#`>LA0`+VY#]`@@`10``^``+0`!`$0R;P9J6N-6!_WH'%%2.`.1M%P(@`-PJ
+M=?H'6<1=UD&:FRVA,V+S"`;____^#`8```)`!@8````"&CH```$W$32RVRE=
+$I%P\00``
+`
+end
diff --git a/contrib/tcpdump/tests/esp-secrets.txt b/contrib/tcpdump/tests/esp-secrets.txt
new file mode 100644
index 000000000000..81847a0e3e50
--- /dev/null
+++ b/contrib/tcpdump/tests/esp-secrets.txt
@@ -0,0 +1,5 @@
+# a comment
+
+0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840
+0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043
+0xd1234567@192.1.2.45 aes256-cbc-hmac96:0xaaaabbbbccccdddd4043434545464649494a4a4c4c4f4f515152525454575758
diff --git a/contrib/tcpdump/tests/esp0.out b/contrib/tcpdump/tests/esp0.out
new file mode 100644
index 000000000000..a0ddf1b2dc71
--- /dev/null
+++ b/contrib/tcpdump/tests/esp0.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116
diff --git a/contrib/tcpdump/tests/esp0.sh b/contrib/tcpdump/tests/esp0.sh
new file mode 100644
index 000000000000..daf407c441e5
--- /dev/null
+++ b/contrib/tcpdump/tests/esp0.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+echo -n test esp0...
+uudecode 02-sunrise-sunset-esp.puu
+if (../tcpdump -t -n -r 02-sunrise-sunset-esp.pcap | diff - esp0.out)
+then
+ echo passed.
+else
+ echo failed.
+fi
+
+
diff --git a/contrib/tcpdump/tests/esp1.gdbinit b/contrib/tcpdump/tests/esp1.gdbinit
new file mode 100644
index 000000000000..6c8ae890cbd5
--- /dev/null
+++ b/contrib/tcpdump/tests/esp1.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap
diff --git a/contrib/tcpdump/tests/esp1.out b/contrib/tcpdump/tests/esp1.out
new file mode 100644
index 000000000000..61b2967639ad
--- /dev/null
+++ b/contrib/tcpdump/tests/esp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/contrib/tcpdump/tests/esp1.sh b/contrib/tcpdump/tests/esp1.sh
new file mode 100644
index 000000000000..87ee3b92df1e
--- /dev/null
+++ b/contrib/tcpdump/tests/esp1.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode 02-sunrise-sunset-esp.puu
+
+echo -n test esp1...
+../tcpdump -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap >esp1.new
+if diff esp1.new esp1.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/esp2.gdbinit b/contrib/tcpdump/tests/esp2.gdbinit
new file mode 100644
index 000000000000..7c1840758622
--- /dev/null
+++ b/contrib/tcpdump/tests/esp2.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.pcap
diff --git a/contrib/tcpdump/tests/esp2.out b/contrib/tcpdump/tests/esp2.out
new file mode 100644
index 000000000000..a829c8ea3390
--- /dev/null
+++ b/contrib/tcpdump/tests/esp2.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) (ipip-proto-4)
diff --git a/contrib/tcpdump/tests/esp2.sh b/contrib/tcpdump/tests/esp2.sh
new file mode 100644
index 000000000000..18a70833e05f
--- /dev/null
+++ b/contrib/tcpdump/tests/esp2.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode 08-sunrise-sunset-esp2.puu
+
+echo -n test esp2...
+../tcpdump -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.pcap >esp2.new
+if diff esp2.new esp2.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/esp3.gdbinit b/contrib/tcpdump/tests/esp3.gdbinit
new file mode 100644
index 000000000000..71501187a220
--- /dev/null
+++ b/contrib/tcpdump/tests/esp3.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840" -r 08-sunrise-sunset-esp2.pcap
diff --git a/contrib/tcpdump/tests/esp3.sh b/contrib/tcpdump/tests/esp3.sh
new file mode 100644
index 000000000000..122beab97ede
--- /dev/null
+++ b/contrib/tcpdump/tests/esp3.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+uudecode 02-sunrise-sunset-esp.puu
+echo -n test esp3...
+ ../tcpdump -t -n -E "3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap >esp3.new
+if diff esp3.new esp1.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/esp4.gdbinit b/contrib/tcpdump/tests/esp4.gdbinit
new file mode 100644
index 000000000000..8007444b74e2
--- /dev/null
+++ b/contrib/tcpdump/tests/esp4.gdbinit
@@ -0,0 +1,2 @@
+set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap
+
diff --git a/contrib/tcpdump/tests/esp4.sh b/contrib/tcpdump/tests/esp4.sh
new file mode 100644
index 000000000000..bba26e722a86
--- /dev/null
+++ b/contrib/tcpdump/tests/esp4.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode 08-sunrise-sunset-esp2.puu
+
+echo -n test esp4...
+../tcpdump -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap >esp4.new
+if diff esp4.new esp2.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/esp5.gdbinit b/contrib/tcpdump/tests/esp5.gdbinit
new file mode 100644
index 000000000000..2f578e327042
--- /dev/null
+++ b/contrib/tcpdump/tests/esp5.gdbinit
@@ -0,0 +1,3 @@
+set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap
+
+
diff --git a/contrib/tcpdump/tests/esp5.out b/contrib/tcpdump/tests/esp5.out
new file mode 100644
index 000000000000..73f35e0b2201
--- /dev/null
+++ b/contrib/tcpdump/tests/esp5.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x1), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x2), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x3), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x4), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x5), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x6), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x7), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x8), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/contrib/tcpdump/tests/esp5.sh b/contrib/tcpdump/tests/esp5.sh
new file mode 100644
index 000000000000..405b677bf36e
--- /dev/null
+++ b/contrib/tcpdump/tests/esp5.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode 08-sunrise-sunset-aes.puu
+
+echo -n test esp5...
+../tcpdump -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap > esp5.new
+if diff esp5.new esp5.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/espudp1.out b/contrib/tcpdump/tests/espudp1.out
new file mode 100644
index 000000000000..8999ff4d602b
--- /dev/null
+++ b/contrib/tcpdump/tests/espudp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x2), length 116: ip-proto-227 49
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x3), length 116: PIMv13, length: 10
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x6), length 116: ip-proto-183 28
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x7), length 116: ip-proto-72 34
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x8), length 116: ip-proto-224 59
diff --git a/contrib/tcpdump/tests/espudp1.puu b/contrib/tcpdump/tests/espudp1.puu
new file mode 100644
index 000000000000..353c1c9c3d5e
--- /dev/null
+++ b/contrib/tcpdump/tests/espudp1.puu
@@ -0,0 +1,35 @@
+begin 644 espudp1.pcap
+MU,.RH0(`!``````````````&```!``````````````">````G@```!```&1D
+M11```&1D(P@`10``D*8.``!`$5`(P`$"%\`!`BT1E!&4`'P``!(T5G@````!
+MIQI1WARY*2.,3*N>\E4-MV0"Q0&B9RG\CH]Z?F.J2U2J6?9"%WHI),PCC4.T
+MPHU1D2,KT6".3TG`1R:V$E7'FE[]PG%1#\!'O=1;9"P[#Q*U;DU12<9BO$:/
+M(AI2S*,BK5H_YVKC,]K'@[Y^``````````">````G@```!```&1D11```&1D
+M(P@`10``D*8/``!`$5`'P`$"%\`!`BT1E!&4`'P``!(T5G@````"*3$H)*^K
+MG65!9?U^[O>)/*D1"&WNUN@=BGJZV$;E12<$J$SGOAFJ!<5)O%=NY:HY\B$3
+M!*Q.N--U/:_F^;L-H0>[$9AU0\QP"`F5JD8GY307\SDD5=Y\G@%('76R5O`G
+MA/2`=,$VWF]0[L\*``````````">````G@```!```&1D11```&1D(P@`10``
+MD*80``!`$5`&P`$"%\`!`BT1E!&4`'P``!(T5G@````#C]!\R;K$H/YX7>T6
+MZT6>/2I[+Q4&*]7A`VLB)[%A_/MKQMX-:R"-)DA.[G>)\5]KF#Z5:3L+JCMC
+MXDHKBE%/Q%D1VV#=?\3JEZ?8)&[3[(4F"4*0W"B)."[.?0U(7!!Z2_69:0DV
+M98H$8R%=``````````">````G@```!```&1D11```&1D(P@`10``D*81``!`
+M$5`%P`$"%\`!`BT1E!&4`'P``!(T5G@````$FV8=\*GR(@_[&TF2&3'AZ9)Q
+M*?@[(M!I:IE"@-?4W5TEZ-5@(F\613%V19L#%[XCJFJY^G4BVW"O\/*X\!A6
+M@1<[4J(5+60M8]9R>$=\TU>XX7AB7\T'1W1HAPX[(KPTVN"*NEC)E/7@5D_1
+M``````````">````G@```!```&1D11```&1D(P@`10``D*82``!`$5`$P`$"
+M%\`!`BT1E!&4`'P``!(T5G@````%=@CRA49O0D;A1@T5[WR$Q5?Y(\M[>D@C
+MRFK+$5I%Y8:85K`)&LZ.Q@G&N)8-RG@2;GNYJ\2OC9ZV?,IT7HJU7K&DM/1_
+M:K+-8KXY4?22*8=.1@O<,#R&;^R2P`>PAR9E7*>!>3*D24OK4*C1````````
+M``">````G@```!```&1D11```&1D(P@`10``D*83``!`$5`#P`$"%\`!`BT1
+ME!&4`'P``!(T5G@````&OTF+$=SM[Y.=U8E>9V&69R:M\.1&LA]$#9Q^:+E7
+MQE#E^)1R]--?O]SW!%7]KB<7\MLR56^<HT.D."4A5M1LBB7FNX7DP-C$&AH]
+M+':VL$0V)[[KSCAW[YA,>WX)#?)/IJR<_@C91NG`(S^S``````````">````
+MG@```!```&1D11```&1D(P@`10``D*84``!`$5`"P`$"%\`!`BT1E!&4`'P`
+M`!(T5G@````'!12933DTC1RSTN*./4ZCE%A8GGVL:;@`.%'8MEA.C7/6]D[S
+MO1C([D/N6]%[?NISR>1W1EE,)=\I9&.PF-'Q*LXZQU71100.[\,-HK41G3/R
+MG9DY$,].(M58U1\0XT\4R[<=RCCXM;_%AVM)``````````">````G@```!``
+M`&1D11```&1D(P@`10``D*85``!`$5`!P`$"%\`!`BT1E!&4`'P``!(T5G@`
+M```(*_3L6&DE`65QQPA"@BAQ5FY@=%,+]@C9K+O)@],/GCI4%,MKI282(0M9
+M*<@/=L.DB"**EM":*2KJK`^H=0YM,$^[`=L%(RO,O_<4`MNKJ*:^9W8@1BP$
+59LK`-:)VQ/=2B;1'4FV3B?L]2;O!
+`
+end
diff --git a/contrib/tcpdump/tests/espudp1.sh b/contrib/tcpdump/tests/espudp1.sh
new file mode 100644
index 000000000000..35dc0a880367
--- /dev/null
+++ b/contrib/tcpdump/tests/espudp1.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode espudp1.puu
+
+echo -n test espudp1...
+../tcpdump -t -n -E "file esp-secrets.txt" -r espudp1.pcap >espudp1.new
+if diff espudp1.new espudp1.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/isakmp-delete-segfault.puu b/contrib/tcpdump/tests/isakmp-delete-segfault.puu
new file mode 100644
index 000000000000..11512b128424
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp-delete-segfault.puu
@@ -0,0 +1,20 @@
+begin 644 isakmp-delete-segfault.pcap
+MU,.RH0(`!``````````````$```!````@"X```````"I`@``J0(``/______
+M_P$!`0$!`0@`10``I@`O0`!`$3PA?P```7\```$!]`'T`<@``!N3$,+\/7K^
+M3SF!FR'H6?T,OKXN&YH=5T,AEYH%R@(@71+C65#___\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/contrib/tcpdump/tests/isakmp-identification-segfault.puu b/contrib/tcpdump/tests/isakmp-identification-segfault.puu
new file mode 100644
index 000000000000..6f0ae0e8db38
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp-identification-segfault.puu
@@ -0,0 +1,11 @@
+begin 644 isakmp-identification-segfault.pcap
+MU,.RH0(`!````````````/__````````HV%@0"_*#@`\`0``/`$```(```!%
+M``$XH&P``/\1'$9_```!?P```0'U`?0!)$KL)9EPC(1ZBP(```````````40
+M`@`````````!'````0`"````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+I````````````````````````````````````````````````````````
+`
+end
diff --git a/contrib/tcpdump/tests/isakmp-pointer-loop.puu b/contrib/tcpdump/tests/isakmp-pointer-loop.puu
new file mode 100644
index 000000000000..fc582482c1e7
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp-pointer-loop.puu
@@ -0,0 +1,6 @@
+begin 644 isakmp-pointer-loop.pcap
+MU,.RH0(`!````````````/__```!````DR;5/[_@!0!(````2``````$6D[H
+ME``"+6_:]@@`10``.H=E0`#S$0HB@:KY?H&J^5<!]`'T`";R?@``````````
+6```````````($`$````````````*````
+`
+end
diff --git a/contrib/tcpdump/tests/isakmp1.out b/contrib/tcpdump/tests/isakmp1.out
new file mode 100644
index 000000000000..67a6ed1685a5
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp1.out
@@ -0,0 +1 @@
+IP 127.0.0.1.500 > 127.0.0.1.500: isakmp: phase 2/others ? #190[C]
diff --git a/contrib/tcpdump/tests/isakmp1.sh b/contrib/tcpdump/tests/isakmp1.sh
new file mode 100644
index 000000000000..ce2de7d1ba79
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp1.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+uudecode isakmp-delete-segfault.puu
+
+echo -n test isakmp1...
+if (../tcpdump -t -n -r isakmp-delete-segfault.pcap | diff - isakmp1.out)
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/isakmp2.out b/contrib/tcpdump/tests/isakmp2.out
new file mode 100644
index 000000000000..44c28db87b15
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp2.out
@@ -0,0 +1 @@
+IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base
diff --git a/contrib/tcpdump/tests/isakmp2.sh b/contrib/tcpdump/tests/isakmp2.sh
new file mode 100644
index 000000000000..d0006a8feeee
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp2.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+uudecode isakmp-pointer-loop.puu
+
+echo -n test isakmp2...
+if (../tcpdump -t -n -r isakmp-pointer-loop.pcap | diff - isakmp2.out)
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/isakmp3.out b/contrib/tcpdump/tests/isakmp3.out
new file mode 100644
index 000000000000..6b37b77af8ec
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp3.out
@@ -0,0 +1,2 @@
+IP (tos 0x0, ttl 255, id 41068, offset 0, flags [none], proto: UDP (17), length: 312) 127.0.0.1.501 > 127.0.0.1.500: isakmp 1.0 msgid : phase 1 I ident:
+ (id: idtype=FQDN protoid=0 port=0 len=248 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)
diff --git a/contrib/tcpdump/tests/isakmp3.sh b/contrib/tcpdump/tests/isakmp3.sh
new file mode 100644
index 000000000000..e6003cc31fc8
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp3.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode isakmp-identification-segfault.puu
+
+echo -n test isakmp3...
+../tcpdump -t -v -n -r isakmp-identification-segfault.pcap > isakmp3.new
+if diff isakmp3.new isakmp3.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/isakmp4.out b/contrib/tcpdump/tests/isakmp4.out
new file mode 100644
index 000000000000..8c5b7daeb0d2
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp4.out
@@ -0,0 +1,35 @@
+arp who-has 192.1.2.23 tell 192.1.2.254
+arp reply 192.1.2.23 is-at 10:00:00:64:64:23
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 1 I ident[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 1 R ident[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x1), length 132
+arp who-has 192.1.2.254 tell 192.1.2.23
+arp reply 192.1.2.254 is-at 10:00:00:de:ad:ba
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x2), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x3), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x4), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x5), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x6), length 132
+arp who-has 192.1.2.23 tell 192.1.2.254
+arp reply 192.1.2.23 is-at 10:00:00:64:64:23
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x7), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x8), length 132
+arp who-has 192.1.2.254 tell 192.1.2.23
+arp reply 192.1.2.254 is-at 10:00:00:de:ad:ba
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R inf[E]
diff --git a/contrib/tcpdump/tests/isakmp4.sh b/contrib/tcpdump/tests/isakmp4.sh
new file mode 100644
index 000000000000..dd7bf0780399
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp4.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uudecode isakmp4500.puu
+
+echo -n test isakmp4...
+../tcpdump -t -n -E "file esp-secrets.txt" -r isakmp4500.pcap >isakmp4.new
+if diff isakmp4.new isakmp4.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
diff --git a/contrib/tcpdump/tests/isakmp4500.puu b/contrib/tcpdump/tests/isakmp4500.puu
new file mode 100644
index 000000000000..0b55dccfde4a
--- /dev/null
+++ b/contrib/tcpdump/tests/isakmp4500.puu
@@ -0,0 +1,155 @@
+begin 644 isakmp4500.pcap
+MU,.RH0(`!``````````````&```!```````````````J````*@```/______
+M_Q```-ZMN@@&``$(``8$``$0``#>K;K``0+^````````P`$"%P``````````
+M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``"$```9&0CP`$"%Q```-ZM
+MNL`!`OX``````````$X!``!.`0``$```9&0C$```WJVZ"`!%``%```!``#\1
+MM97``0+^P`$"%P'T`?0!+)6LGHGR.(^0O!X```````````$0`@`````````!
+M)`T``)0````!`````0```(@``0`$`P``(``!``"`"P`!@`P.$(`!``6``@`!
+M@`,``X`$``4#```@`0$``(`+``&`#`X0@`$`!8`"``*``P`#@`0`!0,``"`"
+M`0``@`L``8`,#A"``0`%@`(``H`#``.`!``"````(`,!``"`"P`!@`P.$(`!
+M``6``@`!@`,``X`$``(-```03T5K4F)'6%)V;5!%#0``%*_*UQ-HH?'):X:6
+M_'=7`0`-```42A,<@0<#6$5<5RCR#I5%+PT``!1]E!FF4Q#*;RP7G9(54IU6
+M#0``%,U@1D,UWR'X?/VR_&BVI$@````41(45+1BVN\T+Z*A&E7G=S```````
+M````L@```+(````0``#>K;H0``!D9",(`$4``*0``$``0!&U,<`!`A?``0+^
+M`?0!]`"08%.>B?(XCY"\'@IT-7SCT:2_`1`"``````````"(#0``-`````$`
+M```!````*``!``$````@``$``(`+``&`#`X0@`$`!8`"``&``P`#@`0`!0T`
+M`!!/16M28D=84G9M4$4-```4K\K7$VBA\<EKAI;\=U<!`````!1*$QR!!P-8
+M15Q7*/(.E44O``````````!&`0``1@$``!```&1D(Q```-ZMN@@`10`!.```
+M0``_$;6=P`$"_L`!`A<!]`'T`206L9Z)\CB/D+P>"G0U?./1I+\$$`(`````
+M`````1P*``#$M]N'X4E&AEMT*7(UA)]?Z:M`RW>TPRPR/2V-U^-O'ST7,9K7
+MCQQFQ`#^2/PP0G^@]QHR=9!Y7?/EL'O(\L(I'#51V6N1?)1J+6P-A6&T0Y@"
+M-KJ[,_WPC+W%H'KSV>J_(W#3`3A4&A^4Q*T^3Q*2'^M#9[XHW-IVWO.#J=M?
+MDHTX?/DS#]CDJG;?BC_E:$W:3AD]N9+!U'[+6UU.`,)4^&ASH2SO\CU.=2!#
+MH'<T@54L9-$X/5ZQ*&_;9BF5E3Q7%```%&;6]C)I>UY(FI*395>I?Z@4```4
+M;OX2\$KY#?O/L5UQN$&[G@```!1$]1?@/[.!^`^$+14XS/^L``````````!&
+M`0``1@$``!```-ZMNA```&1D(P@`10`!.```0`!`$;2=P`$"%\`!`OX!]`'T
+M`20!UYZ)\CB/D+P>"G0U?./1I+\$$`(``````````1P*``#$YYI?^#V[%WO*
+M+,?[XKU\"YVFZ0UCMOA'6Y:C93#4^M&/)'3",1Q/"&7*"D0_<1SX#@"KRZDV
+M\_XCB4O9XNS0"_O8-'[C&AG5O;G^G_N*#?4,"OA'?R><"WN68Q(H<1EONM3!
+MS3=]U]MRZ(4UBM]&:I\KW&3X;LQ%M[B0:,/"]DTM1^J8+8CESE'6JEFCE,,$
+M?$W5P,^5=1K1AT@YX0J-9%/E]`MY&<%C?*Y*K\'5X#2B5OD6+FTGJ)^V299#
+M*>H6%```%&Q^7ZRJ16$T%<6UJE<?IS$4```4.9,$U0^]3*/;'AEZ]\$>;P``
+M`!1N_A+P2OD-^\^Q77&X0;N>``````````!R`0``<@$``!```&1D(Q```-ZM
+MN@@`10`!9```0``_$;5QP`$"_L`!`A<1E!&4`5!RH0````">B?(XCY"\'@IT
+M-7SCT:2_!1`"`0````````%$H"1@W`ZTW:4&'Z=!K*`IRTNLK:3J/^$DD/B4
+M>Q,F?M5`3=(?!HGW$/M)`\W8Z/'FXK6$!(9!7BL9!@QV=(^E7><\)R8EVE3F
+M6`.O^:2F!(>LD7%71N]`LA?B!/!0\*H2"YOJ0]_W9#9DJYZ).M/.;+8A?L[O
+M`J-'HV_0*'&&^P\8:$'I^"13SN]VT%5\8O8;P2VV=`+&9+4]'MH+/&:'PR!H
+M4O#,GI+1=+*MRN"5.-8D&$16)<O!`SBZM\AKC&P_X<;S]@/)1)Y\.&WOY7\H
+M1V\P7.NL<92?18X,F+:L`^^F#O1Y505Q0H85DLC9DG)B/V<^\\%WS5TO;E$:
+M"1$F`DG*=R<?ZQYTN1P^4Q#1].60GK<.AK=_XOM^<JSB!P9\:C2X3QI`L]D`
+M`````````%H!``!:`0``$```WJVZ$```9&0C"`!%``%,``!``$`1M(G``0(7
+MP`$"_A&4$90!.,?$`````)Z)\CB/D+P>"G0U?./1I+\%$`(!`````````2S"
+M8Z5]+<^-M8Q9P&X;^%JN2^*NYC1"AZ%4J-PIMZM611W<D%]6ET9DUBF=TH.0
+MQQSMHS[FF;=E?$HJP1Z27H0;DRN`@QD+=-Y#&>A:Z$*6IBWC.3.9037)<B;;
+M0U&M+H9[&=K##GX++CXGX(L;7E^)B\Q+'_'N5/5,"[?P96K'-(4;25\#D%M/
+MVIN6C#7'Q:0PBF3\=1($ODAZ(&:$((=V1,STM/MIB(]C;^7T=R$*%X?+MTX^
+MB*X%6DJ09BC(XU@(,4IU1Q]MV_;%S@8Y96MB,W3/!#M5BS)JGA5$(J4H5W@8
+M<*B:G<;Q^>L`[ADSH`K&0*^[6)>")$E3;"4;U="I",2*`1TP_=5+%B"II3>(
+M'@``````````V@$``-H!```0``!D9",0``#>K;H(`$4``<P``$``/Q&U"<`!
+M`O[``0(7$901E`&XW3@`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'```!
+MK''I#[H$<_"<YEGG2)8)!97PF%0-_\8^X(V1[(=%+UAMJ9A(1/!,[6+WM32C
+M)*0IG:EM/C)SF$P$=$P"Y_R.@/MCQOS;\U>4YQ5SAO`10)\84&I?],R2.?5M
+MZ/Y^Y"#*%+0.<9KX(/Z$'&M,-)/2I7U^,!G,*G!E_O.D;7F_;D^V#&&*(R.+
+MH;YSI'1@I8GV%+\'*6,1(8`8D(VUP[,(R?PQ7#,5WQY3[HT+IFF"3?.+;(*M
+M_?C;JQ#]O'9522*ZO7>'TEDYLLA`*L$8(XJ$!T>_HYS?G=WR11E($-021FMS
+MB[NXAJ^CQVGO87[B@^I6THHW-%Z8%PTH&BCO^.[@K_NS8RVTE7CE&MA]6C@>
+MEDIDM&T^.41?F(\X$Z-5[547$HC='*\>8``"[9.IHT)+[,^LZ?_6(6I\L32#
+MF-JM7U".L4?X/8=G*KFA<>THJ-622W,;J`IW2^MLBI?_O<<EC)!V1^7\U,YK
+M7'E&R_].`C#$#;X]E]1SX@092]ZE(@C-2M!ZAW.#%L^J[^'13BY&SG@`````
+M`````(H!``"*`0``$```WJVZ$```9&0C"`!%``%\``!``$`1M%G``0(7P`$"
+M_A&4$90!:,KN`````)Z)\CB/D+P>"G0U?./1I+\($"`!BWZ)1P```5RM:&N4
+MQ1;W19+;77%JE,,H'8&F6ITJM=R5O>KL1%[]#E/LJ#&./WFJ`#,3C!H=I_'*
+M34/)_E+)(`!A&W00*T\"9O9JX0N">$#'(ZL<$'\P=GHB.0:\AXT/!^^*<P2!
+M<!A\>%U.'5#'2IX<Q;9+I6GRVRW_+T,S>:7/2KZ$%^3W;%R4[&2T>'?2(@FF
+M#T/=+2O[?Q4.(\@Q;]3V=L5Q2XFG)^E)0J:1AX`J4%E3_Y]^6='!R-ENY%9#
+M3!XD:5K?/V&.!&X#>I_$96Y;P_!5']<G(@<:I94]["%1#F3MY*U1V%WQVL1_
+MRT*Z$\KEVW>070(D3N#$47!AZ^VCW-?I?JT2AL5YOWBO5[D!"OV)46(FK)9"
+M$C40GNJ7*A,SE6%6A(4>KPE(-$)=L6=2VQLO>Y12N8QBH3V%(90.\5YL`R,O
+M1@``````````8@```&(````0``!D9",0``#>K;H(`$4``%0``$``/Q&V@<`!
+M`O[``0(7$901E`!`KQ<`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'````
+M-"4[,88.:.R$%:1S6K/X<EH]YZH).22D`@``````````K@```*X````0``!D
+M9",0``#>K;H(`$4``*"JM```/Q%+@<`!`O[``0(7$901E`",``#TW`KE````
+M`?SD"<11-X_=FBX7J&]'/C[B>;BA23X"^A;(BA/H;8_\0'U,E@M&;+=R&*LY
+MAF.NT6<PXR31!Z\MX@W4>/*J.SL[UR2)+H^A6#5<38R;!FY\:AV_6ZV)FQ2!
+M1T\L:`GPK6U?_?TVHSK[6(WSF?Q"XF5K/0U,A.Y+D\RP]G(``````````"H`
+M```J````$```WJVZ$```9&0C"`8``0@`!@0``1```&1D(\`!`A<```````#`
+M`0+^```````````J````*@```!```&1D(Q```-ZMN@@&``$(``8$``(0``#>
+MK;K``0+^$```9&0CP`$"%P``````````B@$``(H!```0``#>K;H0``!D9",(
+M`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0O!X*=#5\
+MX]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM=<6J4PR@=@:9:G2JUW)6]ZNQ$
+M7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=!`K3P)F]FKA"X)X0,<C
+MJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=4,=*GAS%MDNE:?+;+?\O0S-Y
+MI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+B:<GZ4E"
+MII&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO#\%4?UR<B
+M!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=Y!=`B1.X,11<&'K[:/<U^E^
+MK1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4@T0EVQ9U+;
+M&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````!B````8@```!```&1D(Q``
+M`-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1E!&4`$"O%P````">B?(XCY"\
+M'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA@YH[(05I'-:L_AR6CWGJ@DY)*0"
+M``````````"N````K@```!```&1D(Q```-ZMN@@`10``H*JU```_$4N`P`$"
+M_L`!`A<1E!&4`(P``/3<"N4````";5_]_3:C.OM8C?.9_$+B9;KU/R+D"U^-
+MLGB)>"40ZCMW:+^A4%UI1Y)\.O4B]`44T(2XS\S=2[[[X.6A-PCDZP*3XFAD
+M294>+W:M%%+\`)?XP#[:6]NHG>#;FFF-RMAA7D"KQ-&OX<E(GNRS/6*%P8?B
+M>3Z5S'CBYC"740``````````*P```"L````0``!D9",0``#>K;H(`$4``!T`
+M`$``/Q&VN,`!`O[``0(7$901E``)6)O_``````````"N````K@```!```&1D
+M(Q```-ZMN@@`10``H*JV```_$4M_P`$"_L`!`A<1E!&4`(P``/3<"N4````#
+M7D"KQ-&OX<E(GNRS/6*%P6M-D[MJGU)RI[EA3)LD/W^:S2V!1P<2Y/0I:_`%
+MF3-`LSA3&QM8DD^\>1F0#F$^I@1V5E>.`*!H=Z?(&*,.MS]E4H#P+<JB/C=Q
+MS26IBN>2"^MMG?%@Y3*L%D'7$>LLOA,HUEB3IB;87,\:-0``````````B@$`
+M`(H!```0``#>K;H0``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%H
+MRNX`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM=
+M<6J4PR@=@:9:G2JUW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@
+M`&$;=!`K3P)F]FKA"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=
+M4,=*GAS%MDNE:?+;+?\O0S-YI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_
+M%0XCR#%OU/9VQ7%+B:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_
+M88X$;@-ZG\1E;EO#\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;
+M=Y!=`B1.X,11<&'K[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J
+M$S.585:$A1ZO"4@T0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&````````
+M``!B````8@```!```&1D(Q```-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1
+ME!&4`$"O%P````">B?(XCY"\'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA@YH
+M[(05I'-:L_AR6CWGJ@DY)*0"``````````"N````K@```!```&1D(Q```-ZM
+MN@@`10``H*JW```_$4M^P`$"_L`!`A<1E!&4`(P``/3<"N4````$"^MMG?%@
+MY3*L%D'7$>LLOHFXH,6B3<'M/]A_UT%X.MP;F`ZT@=\62*]W'/Y5@1,(8+`W
+MTIZ(C;<M^%)G.9R$N1)6J_7Z_!GT%\UMQ:XQPM8]>8G'VC<"+'VM:$K/=:VI
+MD#:KB^/G$BB@:+=TSV\S)T5-E#UOBKZ"E5_,%P``````````*P```"L````0
+M``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[``0(7$901E``)6)O_````
+M``````"N````K@```!```&1D(Q```-ZMN@@`10``H*JX```_$4M]P`$"_L`!
+M`A<1E!&4`(P``/3<"N4````%D#:KB^/G$BB@:+=TSV\S)XZ>X,YAOI/W1_BS
+M7:N%MO?3J+1\I=>O-<R^HIZU--!X&6`$]U#*J@;R@64%SKQ.B/^^IGB<&88W
+M[8)FS;H6%4)M9NV]\#Q+3^^'.,PQY7<SC6OG8>36N1GBDD+HMR]D8U)G(OJ]
+MMX!><$3'U0``````````K@```*X````0``!D9",0``#>K;H(`$4``*"JN0``
+M/Q%+?,`!`O[``0(7$901E`",``#TW`KE````!HUKYV'DUKD9XI)"Z+<O9&,5
+M_X1R'`1@>@>3:9638^IH_2\8CVE-BL2&43,3ZAY3'1@3Z:+\)XSXDSO]L,@?
+MCOL6<I7.*]L#N>@]+&+X^#H(D.X>B;)<%[E4:S:#.D70:!#<8Q\QZFH`<C&^
+MG'`JQ0_F"K\L?F]\HUG$8G,``````````"H````J````$```9&0C$```WJVZ
+M"`8``0@`!@0``1```-ZMNL`!`OX```````#``0(7```````````J````*@``
+M`!```-ZMNA```&1D(P@&``$(``8$``(0``!D9"/``0(7$```WJVZP`$"_@``
+M````````*P```"L````0``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[`
+M`0(7$901E``)6)O_``````````"N````K@```!```&1D(Q```-ZMN@@`10``
+MH*JZ```_$4M[P`$"_L`!`A<1E!&4`(P``/3<"N4````'$-QC'S'J:@!R,;Z<
+M<"K%#ST!-8\O2;F**R/9Z%HAZ`2#KQIW*9'HI9C067ZK-G^XAL^O0I7Z/'H(
+M<.`7P<QG3<<?7R7Z!!3MQ1MY5B=F9N",J@L.`]?M!U5)TB`<"]W5C[,`[Y'2
+MT6\N$CD@6'"CP$3F`AEER>@/P'/E0@``````````B@$``(H!```0``#>K;H0
+M``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0
+MO!X*=#5\X]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM=<6J4PR@=@:9:G2JU
+MW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=!`K3P)F]FKA
+M"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=4,=*GAS%MDNE:?+;
+M+?\O0S-YI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+
+MB:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO#
+M\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=Y!=`B1.X,11<&'K
+M[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4@T
+M0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````"N````K@```!``
+M`&1D(Q```-ZMN@@`10``H*J[```_$4MZP`$"_L`!`A<1E!&4`(P``/3<"N4`
+M```(C[,`[Y'2T6\N$CD@6'"CP*@CBNC9!,,HJ*K#(R8N5?*%N(<XX+>GVJ+F
+M#M/G_FP&NANM[W@`)Y9\\Z?F4SX%'E.^2BCP\9+!/`25PK%+G'U@$&1+=@%(
+M#9RV^U"B8-5,EXJ0-QZTLOJ/L^F\).BC@++XQGOL8JC_`L;'=```````````
+M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``!$```9&0CP`$"%P``````
+M`,`!`OX``````````"H````J````$```9&0C$```WJVZ"`8``0@`!@0``A``
+M`-ZMNL`!`OX0``!D9"/``0(7```````````K````*P```!```&1D(Q```-ZM
+MN@@`10``'0``0``_$;:XP`$"_L`!`A<1E!&4``E8F_\``````````'H```!Z
+M````$```WJVZ$```9&0C"`!%``!L``!``$`1M6G``0(7P`$"_A&4$90`6,G#
+M`````)Z)\CB/D+P>"G0U?./1I+\($`4!`KW&3P```$S_T\^1(\?(IVCQDA]J
+C20SF@.^<&]2'1D(_3FHHKW7PKQJ'!!.01QV>?]$9K_EN`N<`
+`
+end
diff --git a/contrib/tcpdump/tests/lmp.out b/contrib/tcpdump/tests/lmp.out
new file mode 100644
index 000000000000..ee37bca05923
--- /dev/null
+++ b/contrib/tcpdump/tests/lmp.out
@@ -0,0 +1,191 @@
+IP (tos 0x0, ttl 1, id 44530, offset 0, flags [none], proto: UDP (17), length: 84) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Begin Verify, Flags: [Control Channel Down], length: 56
+ Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 3 (0x00000003)
+ Link ID Object (3), Class-Type: IPv4 Remote (2) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Verify Begin Object (8), Class-Type: 1 (1) Flags: [negotiable], length: 24
+ Flags: none
+ Verify Interval: 20
+ Data links: 30
+ Encoding type: Lambda (photonic)
+ Verify Tranport Mechanism: 32768 (0x8000)
+ Transmission Rate: 100.000 Mbps
+ Wavelength: 8
+IP (tos 0x0, ttl 1, id 44531, offset 0, flags [none], proto: UDP (17), length: 56) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Hello, Flags: [Control Channel Down], length: 28
+ Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Control Channel ID: 1 (0x00000001)
+ Hello Object (7), Class-Type: 1 (1) Flags: [non-negotiable], length: 12
+ TxSeqNum: 50
+ RcvSeqNum: 60
+IP (tos 0x0, ttl 1, id 44532, offset 0, flags [none], proto: UDP (17), length: 84) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Config NACK, Flags: [Control Channel Down], length: 56
+ Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Control Channel ID: 1 (0x00000001)
+ Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Node ID: 10.0.50.1 (0x0a003201)
+ Control Channel ID Object (1), Class-Type: Remote (2) Flags: [non-negotiable], length: 8
+ Control Channel ID: 2 (0x00000002)
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+ Node ID Object (2), Class-Type: Remote (2) Flags: [non-negotiable], length: 8
+ Node ID: 10.0.50.2 (0x0a003202)
+ Configuration Object (6), Class-Type: 1 (1) Flags: [negotiable], length: 8
+ Hello Interval: 5
+ Hello Dead Interval: 15
+IP (tos 0x0, ttl 1, id 44533, offset 0, flags [none], proto: UDP (17), length: 76) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Config ACK, Flags: [Control Channel Down], length: 48
+ Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Control Channel ID: 1 (0x00000001)
+ Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Node ID: 10.0.50.1 (0x0a003201)
+ Control Channel ID Object (1), Class-Type: Remote (2) Flags: [non-negotiable], length: 8
+ Control Channel ID: 2 (0x00000002)
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+ Node ID Object (2), Class-Type: Remote (2) Flags: [non-negotiable], length: 8
+ Node ID: 10.0.50.2 (0x0a003202)
+IP (tos 0x0, ttl 1, id 44534, offset 0, flags [none], proto: UDP (17), length: 68) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Config, Flags: [Control Channel Down], length: 40
+ Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Control Channel ID: 1 (0x00000001)
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 3 (0x00000003)
+ Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8
+ Node ID: 10.0.50.1 (0x0a003201)
+ Configuration Object (6), Class-Type: 1 (1) Flags: [negotiable], length: 8
+ Hello Interval: 5
+ Hello Dead Interval: 15
+IP (tos 0x0, ttl 1, id 44535, offset 0, flags [none], proto: UDP (17), length: 44) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Link Summary ACK, Flags: [Control Channel Down], length: 16
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 1 (0x00000001)
+IP (tos 0x0, ttl 1, id 44536, offset 0, flags [none], proto: UDP (17), length: 124) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Link Summary NACK, Flags: [Control Channel Down], length: 96
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 1 (0x00000001)
+ Error Code Object (20), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Error Code:
+ Unacceptable non-negotiable LINK_SUMMARY parameters,
+ Renegotiate LINK_SUMMARY parameters,
+ Invalid DATA-LINK Object,
+ Unknown TE-LINK Object c-type,
+ Unknown DATA-LINK Object c-type
+ Data Link Object (12), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 36
+ Flags: [none]
+ Local Interface ID: 192.168.1.1 (0xc0a80101)
+ Remote Interface ID: 192.168.1.2 (0xc0a80102)
+ Subobject, Type: Interface Switching Type (1), Length: 12
+ Switching Type: Lambda-Switch Capable (150)
+ Encoding Type: Lambda (photonic) (8)
+ Min Reservable Bandwidth: 100.000 Mbps
+ Max Reservable Bandwidth: 100.000 Mbps
+ Subobject, Type: Wavelength (2), Length: 8
+ Wavelength: 6
+ Data Link Object (12), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 36
+ Flags: [none]
+ Local Interface ID: 10.1.1.1 (0x0a010101)
+ Remote Interface ID: 10.1.1.2 (0x0a010102)
+ Subobject, Type: Interface Switching Type (1), Length: 12
+ Switching Type: Lambda-Switch Capable (150)
+ Encoding Type: ANSI/ETSI PDH (3)
+ Min Reservable Bandwidth: 1234736768.000 Mbps
+ Max Reservable Bandwidth: 1290693376.000 Mbps
+ Subobject, Type: Wavelength (2), Length: 8
+ Wavelength: 353
+IP (tos 0x0, ttl 1, id 44537, offset 0, flags [none], proto: UDP (17), length: 68) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Begin Verify ACK, Flags: [Control Channel Down], length: 40
+ Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 1 (0x00000001)
+ Verify Begin ACK Object (9), Class-Type: 1 (1) Flags: [negotiable], length: 8
+ Verify Dead Interval: 50
+ Verify Transport Response: 100
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44538, offset 0, flags [none], proto: UDP (17), length: 60) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Begin Verify NACK, Flags: [Control Channel Down], length: 32
+ Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 10.0.0.0 (0x0a000000)
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+ Error Code Object (20), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Error Code:
+ Link Verification Procedure Not supported,
+ Unwilling to verify,
+ Unsupported verification transport mechanism
+IP (tos 0x0, ttl 1, id 44539, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: End Verify, Flags: [Control Channel Down], length: 24
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 3 (0x00000003)
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44540, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: End Verify ACK, Flags: [Control Channel Down], length: 24
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44541, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Test, Flags: [Control Channel Down], length: 24
+ Interface ID Object (4), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44542, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Test Status Failure, Flags: [Control Channel Down], length: 24
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 1 (0x00000001)
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44543, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Test Status ACK, Flags: [Control Channel Down], length: 24
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 1 (0x00000001)
+ Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Verify ID: 5
+IP (tos 0x0, ttl 1, id 44544, offset 0, flags [none], proto: UDP (17), length: 44) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Channel Status ACK, Flags: [Control Channel Down], length: 16
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+IP (tos 0x0, ttl 1, id 44545, offset 0, flags [none], proto: UDP (17), length: 64) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Channel Status Request, Flags: [Control Channel Down], length: 36
+ Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 3 (0x00000003)
+ Channel Status Request Object (14), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 12
+ Interface ID: 2.0.0.0 (0x02000000)
+ Interface ID: 2.0.0.0 (0x02000000)
+IP (tos 0x0, ttl 1, id 44546, offset 0, flags [none], proto: UDP (17), length: 72) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Channel Status, Flags: [Control Channel Down], length: 44
+ Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8
+ IPv4 Link ID: 1.0.0.0 (0x01000000)
+ Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8
+ Message ID: 3 (0x00000003)
+ Channel Status Object (13), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 20
+ Interface ID: 1.0.0.0 (0x01000000)
+ Active: Allocated (1)
+ Direction: Transmit (1)
+ Channel Status: Signal Fail (3)
+ Interface ID: 1.0.0.0 (0x01000000)
+ Active: Allocated (1)
+ Direction: Receive (0)
+ Channel Status: Signal Degraded (2)
+IP (tos 0x0, ttl 1, id 44547, offset 0, flags [none], proto: UDP (17), length: 64) 10.0.12.1.49998 > 10.0.12.2.49998:
+ LMPv1, msg-type: Channel Status Response, Flags: [Control Channel Down], length: 36
+ Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8
+ Message ID Ack: 3 (0x00000003)
+ Channel Status Object (13), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 20
+ Interface ID: 1.0.0.0 (0x01000000)
+ Active: Allocated (1)
+ Direction: Transmit (1)
+ Channel Status: Signal Degraded (2)
+ Interface ID: 1.0.0.0 (0x01000000)
+ Active: Allocated (1)
+ Direction: Transmit (1)
+ Channel Status: Signal Okay (1)
diff --git a/contrib/tcpdump/tests/lmp.puu b/contrib/tcpdump/tests/lmp.puu
new file mode 100644
index 000000000000..c14cd560c96c
--- /dev/null
+++ b/contrib/tcpdump/tests/lmp.puu
@@ -0,0 +1,42 @@
+begin 644 lmp.pcap
+MU,.RH0(`!````````````/__```!````I!J-0&;J``!B````8@`````%75SJ
+MQ@`$=="&2@@`10``5*WR```!$=^D"@`,`0H`#`+#3L-.`$```!````4`.```
+M`0,`"`$````!!0`(`````P(#``@!````@0@`&````!0````>")*``$+(````
+M```(I!J-0#SQ``!&````1@`````%75SJQ@`$=="&2@@`10``.*WS```!$=^_
+M"@`,`0H`#`+#3L-.`"0``!````0`'````0$`"`````$!!P`,````,@```#RD
+M&HU`@/(``&(```!B``````5=7.K&``1UT(9*"`!%``!4K?0```$1WZ(*``P!
+M"@`,`L-.PTX`0```$````P`X```!`0`(`````0$"``@*`#(!`@$`"`````("
+M!0`(`````P("``@*`#("@08`"``%``^D&HU`?_,``%H```!:``````5=7.K&
+M``1UT(9*"`!%``!,K?4```$1WZD*``P!"@`,`L-.PTX`.```$````@`P```!
+M`0`(`````0$"``@*`#(!`@$`"`````("!0`(`````P("``@*`#("I!J-0'+T
+M``!2````4@`````%75SJQ@`$=="&2@@`10``1*WV```!$=^P"@`,`0H`#`+#
+M3L-.`#```!````$`*````0$`"`````$!!0`(`````P$"``@*`#(!@08`"``%
+M``^D&HU`0_4``#H````Z``````5=7.K&``1UT(9*"`!%```LK?<```$1W\<*
+M``P!"@`,`L-.PTX`&```$```#P`0```"!0`(`````:0:C4"E]P``B@```(H`
+M````!5U<ZL8`!'70ADH(`$4``'RM^````1'?=@H`#`$*``P"PT[#3@!H```0
+M```0`&````(%``@````!`A0`"````#L!#``D`````,"H`0'`J`$"`0R6"$+(
+M``!"R````@@```````8!#``D``````H!`0$*`0$"`0R6`TZ3,2U.F=S6`@@`
+M`````6&D&HU`C/@``%(```!2``````5=7.K&``1UT(9*"`!%``!$K?D```$1
+MWZT*``P!"@`,`L-.PTX`,```$```!@`H```!`P`(`0````(%``@````!@0D`
+M"``R`&0!"@`(````!:0:C4!E^0``2@```$H`````!5U<ZL8`!'70ADH(`$4`
+M`#RM^@```1'?M`H`#`$*``P"PT[#3@`H```0```'`"````$#``@*`````@4`
+M"`````,!%``(````!Z0:C4`Q^@``0@```$(`````!5U<ZL8`!'70ADH(`$4`
+M`#2M^P```1'?NPH`#`$*``P"PT[#3@`@```0```(`!@```$%``@````#`0H`
+M"`````6D&HU``_L``$(```!"``````5=7.K&``1UT(9*"`!%```TK?P```$1
+MW[H*``P!"@`,`L-.PTX`(```$```"0`8```"!0`(`````P$*``@````%I!J-
+M0-#[``!"````0@`````%75SJQ@`$=="&2@@`10``-*W]```!$=^Y"@`,`0H`
+M#`+#3L-.`"```!````H`&````00`"`$````!"@`(````!:0:C4"=_```0@``
+M`$(`````!5U<ZL8`!'70ADH(`$4``#2M_@```1'?N`H`#`$*``P"PT[#3@`@
+M```0```,`!@```$%``@````!`0H`"`````6D&HU`:?T``$(```!"``````5=
+M7.K&``1UT(9*"`!%```TK?\```$1W[<*``P!"@`,`L-.PTX`(```$```#0`8
+M```"!0`(`````0$*``@````%I!J-0#C^```Z````.@`````%75SJQ@`$=="&
+M2@@`10``+*X````!$=^^"@`,`0H`#`+#3L-.`!@``!```!(`$````@4`"```
+M``.D&HU`)?\``$X```!.``````5=7.K&``1UT(9*"`!%``!`K@$```$1WZD*
+M``P!"@`,`L-.PTX`+```$```$P`D```!`P`(`0````$%``@````#`0X`#`(`
+M```"````I!J-0`8``0!6````5@`````%75SJQ@`$=="&2@@`10``2*X"```!
+M$=^@"@`,`0H`#`+#3L-.`#0``!```!$`+````0,`"`$````!!0`(`````P$-
+M`!0!````P````P$```"````"I!J-0-4``0!.````3@`````%75SJQ@`$=="&
+M2@@`10``0*X#```!$=^G"@`,`0H`#`+#3L-.`"P``!```!0`)````@4`"```
+6``,!#0`4`0```,````(!````P````0``
+`
+end
diff --git a/contrib/tcpdump/tests/lmp.sh b/contrib/tcpdump/tests/lmp.sh
new file mode 100755
index 000000000000..991904480e83
--- /dev/null
+++ b/contrib/tcpdump/tests/lmp.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+uudecode lmp.puu
+
+echo -n test lmp ...
+../tcpdump -t -n -v -r lmp.pcap >lmp.new
+if diff lmp.new lmp.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
+
diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.out b/contrib/tcpdump/tests/mpls-ldp-hello.out
new file mode 100644
index 000000000000..fa621ca4c080
--- /dev/null
+++ b/contrib/tcpdump/tests/mpls-ldp-hello.out
@@ -0,0 +1,9 @@
+IP (tos 0xc0, ttl 1, id 15579, offset 0, flags [none], proto: UDP (17), length: 70) 10.1.1.3.646 > 224.0.0.2.646:
+ LDP, Label-Space-ID: 10.1.0.2:0, pdu-length: 38
+ Hello Message (0x0100), length: 28, Message ID: 0x00011970, Flags: [ignore if unknown]
+ Common Hello Parameters TLV (0x0400), length: 4, Flags: [ignore and don't forward if unknown]
+ Hold Time: 15s, Flags: [Link Hello]
+ IPv4 Transport Address TLV (0x0401), length: 4, Flags: [ignore and don't forward if unknown]
+ IPv4 Transport Address: 10.1.0.2
+ Configuration Sequence Number TLV (0x0402), length: 4, Flags: [ignore and don't forward if unknown]
+ Sequence Number: 1
diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.puu b/contrib/tcpdump/tests/mpls-ldp-hello.puu
new file mode 100644
index 000000000000..b7f3b625b34e
--- /dev/null
+++ b/contrib/tcpdump/tests/mpls-ldp-hello.puu
@@ -0,0 +1,6 @@
+begin 644 mpls-ldp-hello.pcap
+MU,.RH0(`!````````````.H%```)````1UFZ/E2'#`!*````2@```/\#`"%%
+MP`!&/-L```$1D08*`0$#X````@*&`H8`,M2>``$`)@H!``(```$``!P``1EP
+8!```!``/```$`0`$"@$``@0"``0````!
+`
+end
diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.sh b/contrib/tcpdump/tests/mpls-ldp-hello.sh
new file mode 100755
index 000000000000..b1a5b1941705
--- /dev/null
+++ b/contrib/tcpdump/tests/mpls-ldp-hello.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+uudecode mpls-ldp-hello.puu
+
+echo -n test mpls-ldp-hello ...
+../tcpdump -t -n -v -r mpls-ldp-hello.pcap >mpls-ldp-hello.new
+if diff mpls-ldp-hello.new mpls-ldp-hello.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
+
diff --git a/contrib/tcpdump/tests/ospf-gmpls.out b/contrib/tcpdump/tests/ospf-gmpls.out
new file mode 100644
index 000000000000..965affc2773a
--- /dev/null
+++ b/contrib/tcpdump/tests/ospf-gmpls.out
@@ -0,0 +1,83 @@
+IP (tos 0xc0, ttl 1, id 4052, offset 0, flags [none], proto: OSPF (89), length: 172) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 152
+ Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+ LSA #1
+ Advertising Router: 10.255.245.37, seq 0x80000002, age 9s, length: 104
+ Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 8
+ Options: [External]
+ Link TLV (2), length: 100
+ Link Type subTLV (1), length: 1, Point-to-point (1)
+ Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+ Local Interface IP address subTLV (3), length: 4, 10.9.142.1
+ Remote Interface IP address subTLV (4), length: 4, 10.9.142.2
+ Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+ Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+ Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+ Unreserved Bandwidth subTLV (8), length: 32
+ TE-Class 0: 622.080 Mbps
+ TE-Class 1: 622.080 Mbps
+ TE-Class 2: 622.080 Mbps
+ TE-Class 3: 622.080 Mbps
+ TE-Class 4: 622.080 Mbps
+ TE-Class 5: 622.080 Mbps
+ TE-Class 6: 622.080 Mbps
+ TE-Class 7: 622.080 Mbps
+ Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4106, offset 0, flags [none], proto: OSPF (89), length: 172) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 152
+ Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+ LSA #1
+ Advertising Router: 10.255.245.37, seq 0x80000002, age 9s, length: 104
+ Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 9
+ Options: [External]
+ Link TLV (2), length: 100
+ Link Type subTLV (1), length: 1, Point-to-point (1)
+ Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+ Local Interface IP address subTLV (3), length: 4, 10.9.143.1
+ Remote Interface IP address subTLV (4), length: 4, 10.9.143.2
+ Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+ Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+ Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+ Unreserved Bandwidth subTLV (8), length: 32
+ TE-Class 0: 622.080 Mbps
+ TE-Class 1: 622.080 Mbps
+ TE-Class 2: 622.080 Mbps
+ TE-Class 3: 622.080 Mbps
+ TE-Class 4: 622.080 Mbps
+ TE-Class 5: 622.080 Mbps
+ TE-Class 6: 622.080 Mbps
+ TE-Class 7: 622.080 Mbps
+ Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4160, offset 0, flags [none], proto: OSPF (89), length: 212) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 192
+ Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+ LSA #1
+ Advertising Router: 10.255.245.35, seq 0x80000003, age 3s, length: 144
+ Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 3
+ Options: [External]
+ Link TLV (2), length: 140
+ Link Type subTLV (1), length: 1, Point-to-point (1)
+ Link ID subTLV (2), length: 4, 10.255.245.40 (0x0afff528)
+ Local Interface IP address subTLV (3), length: 4, 10.40.35.14
+ Remote Interface IP address subTLV (4), length: 4, 10.40.35.13
+ Traffic Engineering Metric subTLV (5), length: 4, Metric 1
+ Maximum Bandwidth subTLV (6), length: 4, 100.000 Mbps
+ Maximum Reservable Bandwidth subTLV (7), length: 4, 100.000 Mbps
+ Unreserved Bandwidth subTLV (8), length: 32
+ TE-Class 0: 0.000 Mbps
+ TE-Class 1: 0.000 Mbps
+ TE-Class 2: 0.000 Mbps
+ TE-Class 3: 0.000 Mbps
+ TE-Class 4: 0.000 Mbps
+ TE-Class 5: 0.000 Mbps
+ TE-Class 6: 0.000 Mbps
+ TE-Class 7: 0.000 Mbps
+ Interface Switching Capability subTLV (15), length: 44
+ Interface Switching Capability: Packet-Switch Capable-1
+ LSP Encoding: Ethernet V2/DIX
+ Max LSP Bandwidth:
+ priority level 0: 0.000 Mbps
+ priority level 1: 0.000 Mbps
+ priority level 2: 0.000 Mbps
+ priority level 3: 0.000 Mbps
+ priority level 4: 0.000 Mbps
+ priority level 5: 0.000 Mbps
+ priority level 6: 0.000 Mbps
+ priority level 7: 0.000 Mbps
diff --git a/contrib/tcpdump/tests/ospf-gmpls.puu b/contrib/tcpdump/tests/ospf-gmpls.puu
new file mode 100644
index 000000000000..691e38e9f54e
--- /dev/null
+++ b/contrib/tcpdump/tests/ospf-gmpls.puu
@@ -0,0 +1,18 @@
+begin 644 ospf-gmpls.pcap
+MU,.RH0(`!````````````'81````````KME</_6D!0"P````L`````(```!%
+MP`"L#]0```%9GSLH(P$"X```!0($`)@*__4C`````*F*````````````````
+M``$`"0(*`0``"`K_]26````">#X`?``"`&0``0`!`0`````"``0*__5%``,`
+M!`H)C@$`!``$"@F.`@`%``0````_``8`!$R44,``!P`$3)10P``(`"!,E%#`
+M3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0`````Y-E</P;,#0"P
+M````L`````(```!%P`"L$`H```%9GP4H(P$"X```!0($`)@*__4C`````&_$
+M``````````````````$`"0(*`0``"0K_]26````"L`,`?``"`&0``0`!`0``
+M```"``0*__5%``,`!`H)CP$`!``$"@F/`@`%``0````_``8`!$R44,``!P`$
+M3)10P``(`"!,E%#`3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0`
+M````&=I</S4\!@#8````V`````(```!%P`#4$$````%9GJ<H(P$"X```!0($
+M`,`*__4C`````-HW``````````````````$``P(*`0```PK_]2.````#(00`
+MI``"`(P``0`!`0`````"``0*__4H``,`!`HH(PX`!``$"B@C#0`%``0````!
+M``8`!$L^O"``!P`$2SZ\(``(`"``````````````````````````````````
+M```````````/`"P!`@``````````````````````````````````````````
+*``!+/KP@"B@`````
+`
+end
diff --git a/contrib/tcpdump/tests/ospf-gmpls.sh b/contrib/tcpdump/tests/ospf-gmpls.sh
new file mode 100755
index 000000000000..da2dd3ba1758
--- /dev/null
+++ b/contrib/tcpdump/tests/ospf-gmpls.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+uudecode ospf-gmpls.puu
+
+echo -n test ospf-gmpls...
+../tcpdump -t -n -v -r ospf-gmpls.pcap > ospf-gmpls.new
+if diff ospf-gmpls.new ospf-gmpls.out
+then
+ echo passed.
+else
+ echo failed.
+fi
+
+
diff --git a/contrib/tcpdump/tests/print-A.out b/contrib/tcpdump/tests/print-A.out
new file mode 100644
index 000000000000..107ffcbb1d0f
--- /dev/null
+++ b/contrib/tcpdump/tests/print-A.out
@@ -0,0 +1,193 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+ <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly. The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes. These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf. Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled. Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it. Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+ This page was initially created by Johnie Ingram (http://netgod.net/)
+ It was later edited by Matthew Wilcox and Josip Rodin.
+ Last modified: $Date: 2004/06/20 15:33:57 $.
+ -->
+
+</BODY>
+</HTML>
+
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/contrib/tcpdump/tests/print-AA.out b/contrib/tcpdump/tests/print-AA.out
new file mode 100644
index 000000000000..52c0a7751549
--- /dev/null
+++ b/contrib/tcpdump/tests/print-AA.out
@@ -0,0 +1,193 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+..............E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+..............E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+..............E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+..............E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+..............E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+..............E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+ <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly. The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes. These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf. Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled. Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it. Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+ This page was initially created by Johnie Ingram (http://netgod.net/)
+ It was later edited by Matthew Wilcox and Josip Rodin.
+ Last modified: $Date: 2004/06/20 15:33:57 $.
+ -->
+
+</BODY>
+</HTML>
+
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+..............E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+..............E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+..............E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+..............E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/contrib/tcpdump/tests/print-X.out b/contrib/tcpdump/tests/print-X.out
new file mode 100644
index 000000000000..53e44edb6b1c
--- /dev/null
+++ b/contrib/tcpdump/tests/print-X.out
@@ -0,0 +1,409 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001 E..<.h@.@.!R....
+ 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000 .....p.P7X.~....
+ 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a .....!....@.....
+ 0x0030: 4ddc 9216 0000 0000 0103 0302 M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 E..<..@.@.<.....
+ 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f .....P.p7z..7X..
+ 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a ....n.....@.....
+ 0x0030: 4ddc 9216 4ddc 9216 0103 0302 M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001 E..4.j@.@.!X....
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z..
+ 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216 ....7.......M...
+ 0x0030: 4ddc 9216 M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001 E....l@.@.......
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z..
+ 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217 ............M...
+ 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31 M...GET./.HTTP/1
+ 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68 .1..Host:.localh
+ 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a ost..User-Agent:
+ 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37 .ELinks/0.10.4-7
+ 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64 -debian.(textmod
+ 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d e;.Linux.2.6.11-
+ 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20 1-686-smp.i686;.
+ 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570 132x56-2)..Accep
+ 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45 t:.*/*..Accept-E
+ 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41 ncoding:.gzip..A
+ 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 ccept-Language:.
+ 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20 en..Connection:.
+ 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a Keep-Alive....
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001 E..4..@.@.......
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I
+ 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218 ....7.......M...
+ 0x0030: 4ddc 9217 M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001 E.....@.@..%....
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I
+ 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219 ............M...
+ 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030 M...HTTP/1.1.200
+ 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20 .OK..Date:.Wed,.
+ 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35 06.Jul.2005.03:5
+ 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572 7:35.GMT..Server
+ 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d :.Apache/1.3.33.
+ 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20 .Last-Modified:.
+ 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034 Sun,.15.Aug.2004
+ 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45 .00:43:41.GMT..E
+ 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438 Tag:."6e80f0-148
+ 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363 a-411eb1bd"..Acc
+ 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465 ept-Ranges:.byte
+ 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774 s..Content-Lengt
+ 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c h:.5258..Keep-Al
+ 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c ive:.timeout=15,
+ 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563 .max=100..Connec
+ 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665 tion:.Keep-Alive
+ 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20 ..Content-Type:.
+ 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273 text/html;.chars
+ 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d et=iso-8859-1...
+ 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20 .<!DOCTYPE.HTML.
+ 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f PUBLIC."-//W3C//
+ 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472 DTD.HTML.4.01.Tr
+ 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e ansitional//EN">
+ 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20 .<HTML>.<HEAD>..
+ 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155 ..<META.HTTP-EQU
+ 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065 IV="Content-Type
+ 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f ".CONTENT="text/
+ 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973 html;.charset=is
+ 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d o-8859-1">....<M
+ 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269 ETA.NAME="Descri
+ 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22 ption".CONTENT="
+ 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374 The.initial.inst
+ 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269 allation.of.Debi
+ 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020 an.apache.">....
+ 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64 <TITLE>Placehold
+ 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a er.page</TITLE>.
+ 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445 </HEAD>.<BODY.TE
+ 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743 XT="#000000".BGC
+ 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c OLOR="#FFFFFF".L
+ 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c INK="#0000EF".VL
+ 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c INK="#55188A".AL
+ 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a INK="#FF0000">..
+ 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220 <H1>Placeholder.
+ 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966 page</H1>.<H2>If
+ 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272 .you.are.just.br
+ 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f owsing.the.web</
+ 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65 h2>..<P>The.owne
+ 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369 r.of.this.web.si
+ 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075 te.has.not.put.u
+ 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320 p.any.web.pages.
+ 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65 yet..Please.come
+ 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e .back.later.</P>
+ 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954 ..<P><SMALL><CIT
+ 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f E>Move.along,.no
+ 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572 thing.to.see.her
+ 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c e...</CITE>.:-)<
+ 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 /SMALL></P>..<H2
+ 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969 >If.you.are.tryi
+ 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865 ng.to.locate.the
+ 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f .administrator.o
+ 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f f.this.machine</
+ 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077 H2>..<P>If.you.w
+ 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f ant.to.report.so
+ 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468 mething.about.th
+ 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669 is.host's.behavi
+ 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461 or,.please.conta
+ 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420 ct.the.Internet.
+ 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572 Service.Provider
+ 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420 .(ISP).involved.
+ 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c directly.</P>..<
+ 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265 P>See.the.<A.hre
+ 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162 f="http://www.ab
+ 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72 use.net/">Networ
+ 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67 k.Abuse.Clearing
+ 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f house</A>.for.ho
+ 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50 w.to.do.this.</P
+ 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172 >..<H2>If.you.ar
+ 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261 e.the.administra
+ 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368 tor.of.this.mach
+ 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865 ine</H2>..<P>The
+ 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c .initial.install
+ 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566 ation.of.<A.href
+ 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb
+ 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e ian.org/">Debian
+ 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765 's.apache</A>.we
+ 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package
+ 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e .was.successful.
+ 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47 </P>..<P><STRONG
+ 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c >You.should.repl
+ 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769 ace.this.page.wi
+ 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220 th.your.own.web.
+ 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173 pages.as.soon.as
+ 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f .possible.</STRO
+ 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 NG></P>..<P>Unle
+ 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069 ss.you.changed.i
+ 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e ts.configuration
+ 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665 ,.your.new.serve
+ 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420 r.is.configured.
+ 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e as.follows:.<UL>
+ 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174 .<LI>.Configurat
+ 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265 ion.files.can.be
+ 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65 .found.in.<TT>/e
+ 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c tc/apache</TT>.<
+ 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c /LI>..<LI>.The.<
+ 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c TT>DocumentRoot<
+ 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074 /TT>,.which.is.t
+ 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64 he.directory.und
+ 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75 er.which.all.you
+ 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f r.HTML.files.sho
+ 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365 uld.exist,.is.se
+ 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777 t.to.<TT>/var/ww
+ 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c w</TT>.</LI>..<L
+ 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061 I>.CGI.scripts.a
+ 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e re.looked.for.in
+ 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367 .<TT>/usr/lib/cg
+ 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963 i-bin</TT>,.whic
+ 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961 h.is.where.Debia
+ 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20 n.packages.will.
+ 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269 place.their.scri
+ 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a pts.</LI>..<LI>.
+ 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c Log.files.are.pl
+ 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172 aced.in.<TT>/var
+ 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e /log/apache</TT>
+ 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f ,.and.will.be.ro
+ 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054 tated.weekly...T
+ 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620 he.frequency.of.
+ 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520 rotation.can.be.
+ 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062 easily.changed.b
+ 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65 y.editing.<TT>/e
+ 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61 tc/logrotate.d/a
+ 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e pache</TT>.</LI>
+ 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175 ..<LI>.The.defau
+ 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64 lt.directory.ind
+ 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e ex.is.<TT>index.
+ 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69 html</TT>,.meani
+ 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473 ng.that.requests
+ 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279 .for.a.directory
+ 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f .<TT>/foo/bar/</
+ 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468 TT>.will.give.th
+ 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468 e.contents.of.th
+ 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f e.file.<TT>/var/
+ 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465 www/foo/bar/inde
+ 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069 x.html</TT>.if.i
+ 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69 t.exists.(assumi
+ 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172 ng.that.<TT>/var
+ 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75 /www</TT>.is.you
+ 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f r.<TT>DocumentRo
+ 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a ot</TT>).</LI>..
+ 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374 <LI>.User.direct
+ 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65 ories.are.enable
+ 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375 d,.and.user.docu
+ 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f ments.will.be.lo
+ 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520 oked.for.in.the.
+ 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c <TT>public_html<
+ 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f /TT>.directory.o
+ 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d f.the.users'.hom
+ 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a es...These.dirs.
+ 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220 should.be.under.
+ 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20 <TT>/home</TT>,.
+ 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e and.users.will.n
+ 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379 ot.be.able.to.sy
+ 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074 mlink.to.files.t
+ 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f hey.don't.own.</
+ 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 LI>..</UL>.All.t
+ 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163 he.standard.apac
+ 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061 he.modules.are.a
+ 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468 vailable.with.th
+ 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061 is.release.and.a
+ 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077 re.now.managed.w
+ 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479 ith.debconf...Ty
+ 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f pe.<TT>dpkg-reco
+ 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f nfigure.apache</
+ 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768 TT>.to.select.wh
+ 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520 ich.modules.you.
+ 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d want.enabled...M
+ 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65 any.other.module
+ 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a s.are.available.
+ 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269 through.the.Debi
+ 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465 an.package.syste
+ 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573 m.with.the.names
+ 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d .<TT>libapache-m
+ 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f od-*</TT>..If.yo
+ 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c u.need.to.compil
+ 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273 e.a.module.yours
+ 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65 elf,.you.will.ne
+ 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468 ed.to.install.th
+ 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576 e.<TT>apache-dev
+ 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a </TT>.package...
+ 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74 <P>More.document
+ 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520 ation.on.Apache.
+ 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a can.be.found.on:
+ 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c .<UL>.<LI>.The.<
+ 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061 A.HREF="/doc/apa
+ 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22 che-doc/manual/"
+ 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74 >Apache.document
+ 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564 ation</A>.stored
+ 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e .on.your.server.
+ 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 </LI>..<LI>.The.
+ 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f <A.HREF="http://
+ 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22 www.apache.org/"
+ 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c >Apache.Project<
+ 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f /A>.home.site.</
+ 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A
+ 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww
+ 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267 w.apache-ssl.org
+ 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41 /">Apache-SSL</A
+ 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI
+ 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H
+ 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c REF="http://perl
+ 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f .apache.org/">mo
+ 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520 d.perl</A>.home.
+ 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e site.</LI>..<LI>
+ 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874 .The.<A.HREF="ht
+ 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577 tp://www.apachew
+ 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865 eek.com/">Apache
+ 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574 Week</A>.newslet
+ 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a ter.</LI>..<LI>.
+ 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474 The.<A.HREF="htt
+ 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f p://www.debian.o
+ 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20 rg/doc/">Debian.
+ 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74 Project.Document
+ 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820 ation</A>.which.
+ 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c contains.HOWTOs,
+ 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477 .FAQs,.and.softw
+ 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49 are.updates.</LI
+ 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520 >.</UL>..<P>You.
+ 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74 can.also.consult
+ 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120 .the.list.of.<A.
+ 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777 HREF="http://www
+ 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171 .boutell.com/faq
+ 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765 /">World.Wide.We
+ 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b b.Frequently.Ask
+ 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e ed.Questions</A>
+ 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e .for.information
+ 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572 ...<H2>Let.other
+ 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f .people.know.abo
+ 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f ut.this.server</
+ 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874 H2>..<A.HREF="ht
+ 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f tp://netcraft.co
+ 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e m/">Netcraft</A>
+ 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74 .provides.an.int
+ 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365 eresting.free.se
+ 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369 rvice.for.web.si
+ 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e te.monitoring.an
+ 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c d.statistic.coll
+ 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20 ection..You.can.
+ 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162 let.them.know.ab
+ 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220 out.your.server.
+ 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048 using.their.<A.H
+ 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469 REF="http://upti
+ 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f me.netcraft.com/
+ 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e ">interface</A>.
+ 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f .Enabling.the.mo
+ 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572 nitoring.of.your
+ 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f .server.will.pro
+ 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c vide.a.better.gl
+ 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66 obal.overview.of
+ 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768 .who.is.using.wh
+ 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e at.and.where,.an
+ 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520 d.it.would.give.
+ 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a Debian.a.better.
+ 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520 overview.of.the.
+ 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075 apache.package.u
+ 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574 sage...<H2>About
+ 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a .this.page</H2>.
+ 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967 .<IMG.ALIGN="rig
+ 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748 ht".ALT="".HEIGH
+ 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232 T="247".WIDTH="2
+ 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a 78".SRC="icons/j
+ 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e he061.png">..<P>
+ 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568 This.is.a.placeh
+ 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461 older.page.insta
+ 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48 lled.by.the.<A.H
+ 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www.
+ 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562 debian.org/">Deb
+ 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520 ian</A>.release.
+ 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765 of.the.apache.We
+ 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package
+ 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075 ...<P>This.compu
+ 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65 ter.has.installe
+ 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55 d.the.Debian.GNU
+ 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67 /Linux.operating
+ 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420 .system,.but.it.
+ 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468 has.<strong>noth
+ 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074 ing.to.do.with.t
+ 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563 he.Debian.Projec
+ 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561 t</strong>..Plea
+ 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f se.do.<strong>no
+ 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461 t</strong>.conta
+ 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072 ct.the.Debian.Pr
+ 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c oject.about.it.<
+ 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066 /P>..<P>If.you.f
+ 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869 ind.a.bug.in.thi
+ 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765 s.apache.package
+ 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069 ,.or.in.Apache.i
+ 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669 tself,.please.fi
+ 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420 le.a.bug.report.
+ 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374 on.it...Instruct
+ 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468 ions.on.doing.th
+ 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374 is,.and.the.list
+ 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474 .of.<A.HREF="htt
+ 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e p://bugs.debian.
+ 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e org/src:apache">
+ 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f known.bugs</A>.o
+ 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20 f.this.package,.
+ 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20 can.be.found.in.
+ 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874 the..<A.HREF="ht
+ 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e tp://www.debian.
+ 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469 org/Bugs/Reporti
+ 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054 ng">Debian.Bug.T
+ 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f racking.System</
+ 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066 A>...<P>Thanks.f
+ 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061 or.using.this.pa
+ 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772 ckage,.and.congr
+ 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079 atulations.for.y
+ 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120 our.choice.of.a.
+ 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f Debian.system!</
+ 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22 P>..<DIV.align="
+ 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566 center">.<a.href
+ 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb
+ 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720 ian.org/">.<IMG.
+ 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068 align="middle".h
+ 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468 eight="30".width
+ 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73 ="25".src="icons
+ 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f /debian/openlogo
+ 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465 -25.jpg".alt="De
+ 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068 bian">.</a>.<a.h
+ 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e ref="http://www.
+ 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49 apache.org/">.<I
+ 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65 MG.align="middle
+ 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769 ".height="32".wi
+ 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269 dth="259".src="i
+ 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70 cons/apache_pb.p
+ 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522 ng".alt="Apache"
+ 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c >.</a>.</DIV>..<
+ 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520 !--...This.page.
+ 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372 was.initially.cr
+ 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520 eated.by.Johnie.
+ 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e Ingram.(http://n
+ 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974 etgod.net/)...It
+ 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465 .was.later.edite
+ 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c d.by.Matthew.Wil
+ 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f cox.and.Josip.Ro
+ 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469 din....Last.modi
+ 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030 fied:.$Date:.200
+ 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537 4/06/20.15:33:57
+ 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 .$....-->..</BOD
+ 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a Y>.</HTML>.
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001 E..4.n@.@.!T....
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z..
+ 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219 ..0_........M...
+ 0x0030: 4ddc 9219 M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001 E..4.p@.@.!R....
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z..
+ 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721 ..0_........M..!
+ 0x0030: 4ddc 9219 M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001 E..4..@.@.......
+ 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a .....P.p7z..7X.J
+ 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723 .....5......M..#
+ 0x0030: 4ddc 9721 M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001 E..4.r@.@.!P....
+ 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa .....p.P7X.J7z..
+ 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723 ..0_........M..#
+ 0x0030: 4ddc 9723 M..#
diff --git a/contrib/tcpdump/tests/print-XX.out b/contrib/tcpdump/tests/print-XX.out
new file mode 100644
index 000000000000..6921a017a04a
--- /dev/null
+++ b/contrib/tcpdump/tests/print-XX.out
@@ -0,0 +1,419 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00 .<.h@.@.!R......
+ 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002 ...p.P7X.~......
+ 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc ...!....@.....M.
+ 0x0040: 9216 0000 0000 0103 0302 ..........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00 .<..@.@.<.......
+ 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012 ...P.p7z..7X....
+ 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc ..n.....@.....M.
+ 0x0040: 9216 4ddc 9216 0103 0302 ..M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00 .4.j@.@.!X......
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010 ...p.P7X..7z....
+ 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc ..7.......M...M.
+ 0x0040: 9216 ..
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00 ...l@.@.........
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018 ...p.P7X..7z....
+ 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc ..........M...M.
+ 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31 ..GET./.HTTP/1.1
+ 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73 ..Host:.localhos
+ 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045 t..User-Agent:.E
+ 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64 Links/0.10.4-7-d
+ 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b ebian.(textmode;
+ 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d .Linux.2.6.11-1-
+ 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133 686-smp.i686;.13
+ 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a 2x56-2)..Accept:
+ 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63 .*/*..Accept-Enc
+ 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363 oding:.gzip..Acc
+ 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e ept-Language:.en
+ 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65 ..Connection:.Ke
+ 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a ep-Alive....
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00 .4..@.@.........
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010 ...P.p7z..7X.I..
+ 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc ..7.......M...M.
+ 0x0040: 9217 ..
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00 ....@.@..%......
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018 ...P.p7z..7X.I..
+ 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc ..........M...M.
+ 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f ..HTTP/1.1.200.O
+ 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036 K..Date:.Wed,.06
+ 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a .Jul.2005.03:57:
+ 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20 35.GMT..Server:.
+ 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c Apache/1.3.33..L
+ 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375 ast-Modified:.Su
+ 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030 n,.15.Aug.2004.0
+ 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461 0:43:41.GMT..ETa
+ 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d g:."6e80f0-148a-
+ 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570 411eb1bd"..Accep
+ 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d t-Ranges:.bytes.
+ 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a .Content-Length:
+ 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976 .5258..Keep-Aliv
+ 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d e:.timeout=15,.m
+ 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469 ax=100..Connecti
+ 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a on:.Keep-Alive..
+ 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type:.te
+ 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574 xt/html;.charset
+ 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c =iso-8859-1....<
+ 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055 !DOCTYPE.HTML.PU
+ 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454 BLIC."-//W3C//DT
+ 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e D.HTML.4.01.Tran
+ 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c sitional//EN">.<
+ 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020 HTML>.<HEAD>....
+ 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956 <META.HTTP-EQUIV
+ 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220 ="Content-Type".
+ 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874 CONTENT="text/ht
+ 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d ml;.charset=iso-
+ 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554 8859-1">....<MET
+ 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074 A.NAME="Descript
+ 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468 ion".CONTENT="Th
+ 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c e.initial.instal
+ 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e lation.of.Debian
+ 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54 .apache.">....<T
+ 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572 ITLE>Placeholder
+ 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f .page</TITLE>.</
+ 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854 HEAD>.<BODY.TEXT
+ 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c ="#000000".BGCOL
+ 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e OR="#FFFFFF".LIN
+ 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e K="#0000EF".VLIN
+ 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e K="#55188A".ALIN
+ 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48 K="#FF0000">..<H
+ 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061 1>Placeholder.pa
+ 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079 ge</H1>.<H2>If.y
+ 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77 ou.are.just.brow
+ 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832 sing.the.web</h2
+ 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220 >..<P>The.owner.
+ 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465 of.this.web.site
+ 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020 .has.not.put.up.
+ 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965 any.web.pages.ye
+ 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062 t..Please.come.b
+ 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a ack.later.</P>..
+ 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e <P><SMALL><CITE>
+ 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468 Move.along,.noth
+ 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e ing.to.see.here.
+ 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53 ..</CITE>.:-)</S
+ 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49 MALL></P>..<H2>I
+ 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67 f.you.are.trying
+ 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061 .to.locate.the.a
+ 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620 dministrator.of.
+ 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832 this.machine</H2
+ 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e >..<P>If.you.wan
+ 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65 t.to.report.some
+ 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973 thing.about.this
+ 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72 .host's.behavior
+ 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374 ,.please.contact
+ 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365 .the.Internet.Se
+ 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028 rvice.Provider.(
+ 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469 ISP).involved.di
+ 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e rectly.</P>..<P>
+ 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d See.the.<A.href=
+ 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573 "http://www.abus
+ 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20 e.net/">Network.
+ 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f Abuse.Clearingho
+ 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720 use</A>.for.how.
+ 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a to.do.this.</P>.
+ 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520 .<H2>If.you.are.
+ 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f the.administrato
+ 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e r.of.this.machin
+ 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069 e</H2>..<P>The.i
+ 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174 nitial.installat
+ 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22 ion.of.<A.href="
+ 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia
+ 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773 n.org/">Debian's
+ 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220 .apache</A>.web.
+ 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077 server.package.w
+ 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f as.successful.</
+ 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59 P>..<P><STRONG>Y
+ 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163 ou.should.replac
+ 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468 e.this.page.with
+ 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061 .your.own.web.pa
+ 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070 ges.as.soon.as.p
+ 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47 ossible.</STRONG
+ 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373 ></P>..<P>Unless
+ 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473 .you.changed.its
+ 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20 .configuration,.
+ 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220 your.new.server.
+ 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173 is.configured.as
+ 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c .follows:.<UL>.<
+ 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f LI>.Configuratio
+ 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066 n.files.can.be.f
+ 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463 ound.in.<TT>/etc
+ 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c /apache</TT>.</L
+ 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454 I>..<LI>.The.<TT
+ 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54 >DocumentRoot</T
+ 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865 T>,.which.is.the
+ 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572 .directory.under
+ 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a .which.all.your.
+ 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c HTML.files.shoul
+ 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420 d.exist,.is.set.
+ 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c to.<TT>/var/www<
+ 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e /TT>.</LI>..<LI>
+ 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265 .CGI.scripts.are
+ 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c .looked.for.in.<
+ 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d TT>/usr/lib/cgi-
+ 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820 bin</TT>,.which.
+ 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20 is.where.Debian.
+ 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c packages.will.pl
+ 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074 ace.their.script
+ 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f s.</LI>..<LI>.Lo
+ 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163 g.files.are.plac
+ 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c ed.in.<TT>/var/l
+ 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20 og/apache</TT>,.
+ 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461 and.will.be.rota
+ 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865 ted.weekly...The
+ 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f .frequency.of.ro
+ 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561 tation.can.be.ea
+ 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920 sily.changed.by.
+ 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463 editing.<TT>/etc
+ 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061 /logrotate.d/apa
+ 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a che</TT>.</LI>..
+ 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74 <LI>.The.default
+ 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578 .directory.index
+ 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874 .is.<TT>index.ht
+ 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67 ml</TT>,.meaning
+ 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66 .that.requests.f
+ 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c or.a.directory.<
+ 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454 TT>/foo/bar/</TT
+ 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520 >.will.give.the.
+ 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520 contents.of.the.
+ 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777 file.<TT>/var/ww
+ 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e w/foo/bar/index.
+ 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420 html</TT>.if.it.
+ 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67 exists.(assuming
+ 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77 .that.<TT>/var/w
+ 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220 ww</TT>.is.your.
+ 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74 <TT>DocumentRoot
+ 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c </TT>).</LI>..<L
+ 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72 I>.User.director
+ 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c ies.are.enabled,
+ 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65 .and.user.docume
+ 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b nts.will.be.look
+ 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54 ed.for.in.the.<T
+ 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54 T>public_html</T
+ 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620 T>.directory.of.
+ 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573 the.users'.homes
+ 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368 ...These.dirs.sh
+ 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54 ould.be.under.<T
+ 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e T>/home</TT>,.an
+ 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74 d.users.will.not
+ 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c .be.able.to.syml
+ 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865 ink.to.files.the
+ 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49 y.don't.own.</LI
+ 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865 >..</UL>.All.the
+ 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865 .standard.apache
+ 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661 .modules.are.ava
+ 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973 ilable.with.this
+ 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265 .release.and.are
+ 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974 .now.managed.wit
+ 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065 h.debconf...Type
+ 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66 .<TT>dpkg-reconf
+ 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454 igure.apache</TT
+ 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963 >.to.select.whic
+ 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761 h.modules.you.wa
+ 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e nt.enabled...Man
+ 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320 y.other.modules.
+ 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468 are.available.th
+ 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e rough.the.Debian
+ 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20 .package.system.
+ 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c with.the.names.<
+ 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64 TT>libapache-mod
+ 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520 -*</TT>..If.you.
+ 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520 need.to.compile.
+ 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c a.module.yoursel
+ 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564 f,.you.will.need
+ 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a .to.install.the.
+ 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f <TT>apache-dev</
+ 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50 TT>.package...<P
+ 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174 >More.documentat
+ 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361 ion.on.Apache.ca
+ 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c n.be.found.on:.<
+ 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120 UL>.<LI>.The.<A.
+ 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368 HREF="/doc/apach
+ 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41 e-doc/manual/">A
+ 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174 pache.documentat
+ 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f ion</A>.stored.o
+ 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f n.your.server.</
+ 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A
+ 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww
+ 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41 w.apache.org/">A
+ 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41 pache.Project</A
+ 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI
+ 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H
+ 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www.
+ 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22 apache-ssl.org/"
+ 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20 >Apache-SSL</A>.
+ 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a home.site.</LI>.
+ 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245 .<LI>.The.<A.HRE
+ 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61 F="http://perl.a
+ 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420 pache.org/">mod.
+ 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369 perl</A>.home.si
+ 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54 te.</LI>..<LI>.T
+ 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470 he.<A.HREF="http
+ 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565 ://www.apachewee
+ 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765 k.com/">ApacheWe
+ 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465 ek</A>.newslette
+ 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 r.</LI>..<LI>.Th
+ 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a e.<A.HREF="http:
+ 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267 //www.debian.org
+ 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072 /doc/">Debian.Pr
+ 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174 oject.Documentat
+ 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f ion</A>.which.co
+ 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046 ntains.HOWTOs,.F
+ 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172 AQs,.and.softwar
+ 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a e.updates.</LI>.
+ 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361 </UL>..<P>You.ca
+ 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074 n.also.consult.t
+ 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852 he.list.of.<A.HR
+ 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62 EF="http://www.b
+ 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22 outell.com/faq/"
+ 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220 >World.Wide.Web.
+ 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564 Frequently.Asked
+ 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066 .Questions</A>.f
+ 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a or.information..
+ 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070 .<H2>Let.other.p
+ 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574 eople.know.about
+ 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832 .this.server</H2
+ 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470 >..<A.HREF="http
+ 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f ://netcraft.com/
+ 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070 ">Netcraft</A>.p
+ 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572 rovides.an.inter
+ 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276 esting.free.serv
+ 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465 ice.for.web.site
+ 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420 .monitoring.and.
+ 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563 statistic.collec
+ 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65 tion..You.can.le
+ 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75 t.them.know.abou
+ 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573 t.your.server.us
+ 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245 ing.their.<A.HRE
+ 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65 F="http://uptime
+ 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e .netcraft.com/">
+ 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45 interface</A>..E
+ 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69 nabling.the.moni
+ 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073 toring.of.your.s
+ 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669 erver.will.provi
+ 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62 de.a.better.glob
+ 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077 al.overview.of.w
+ 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174 ho.is.using.what
+ 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420 .and.where,.and.
+ 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465 it.would.give.De
+ 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76 bian.a.better.ov
+ 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170 erview.of.the.ap
+ 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361 ache.package.usa
+ 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074 ge...<H2>About.t
+ 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c his.page</H2>..<
+ 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874 IMG.ALIGN="right
+ 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d ".ALT="".HEIGHT=
+ 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738 "247".WIDTH="278
+ 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865 ".SRC="icons/jhe
+ 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468 061.png">..<P>Th
+ 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c is.is.a.placehol
+ 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c der.page.install
+ 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245 ed.by.the.<A.HRE
+ 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465 F="http://www.de
+ 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961 bian.org/">Debia
+ 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66 n</A>.release.of
+ 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220 .the.apache.Web.
+ 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a server.package..
+ 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465 .<P>This.compute
+ 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420 r.has.installed.
+ 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c the.Debian.GNU/L
+ 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073 inux.operating.s
+ 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861 ystem,.but.it.ha
+ 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e s.<strong>nothin
+ 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865 g.to.do.with.the
+ 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c .Debian.Project<
+ 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365 /strong>..Please
+ 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c .do.<strong>not<
+ 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374 /strong>.contact
+ 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a .the.Debian.Proj
+ 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50 ect.about.it.</P
+ 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e >..<P>If.you.fin
+ 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320 d.a.bug.in.this.
+ 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20 apache.package,.
+ 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473 or.in.Apache.its
+ 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65 elf,.please.file
+ 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e .a.bug.report.on
+ 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f .it...Instructio
+ 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973 ns.on.doing.this
+ 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f ,.and.the.list.o
+ 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a f.<A.HREF="http:
+ 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72 //bugs.debian.or
+ 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e g/src:apache">kn
+ 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620 own.bugs</A>.of.
+ 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361 this.package,.ca
+ 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468 n.be.found.in.th
+ 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470 e..<A.HREF="http
+ 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72 ://www.debian.or
+ 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67 g/Bugs/Reporting
+ 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261 ">Debian.Bug.Tra
+ 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e cking.System</A>
+ 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72 ...<P>Thanks.for
+ 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b .using.this.pack
+ 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174 age,.and.congrat
+ 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75 ulations.for.you
+ 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465 r.choice.of.a.De
+ 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e bian.system!</P>
+ 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365 ..<DIV.align="ce
+ 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22 nter">.<a.href="
+ 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia
+ 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c n.org/">.<IMG.al
+ 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569 ign="middle".hei
+ 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22 ght="30".width="
+ 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64 25".src="icons/d
+ 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32 ebian/openlogo-2
+ 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269 5.jpg".alt="Debi
+ 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265 an">.</a>.<a.hre
+ 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170 f="http://www.ap
+ 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47 ache.org/">.<IMG
+ 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220 .align="middle".
+ 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474 height="32".widt
+ 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f h="259".src="ico
+ 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67 ns/apache_pb.png
+ 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a ".alt="Apache">.
+ 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d </a>.</DIV>..<!-
+ 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761 -...This.page.wa
+ 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561 s.initially.crea
+ 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e ted.by.Johnie.In
+ 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574 gram.(http://net
+ 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077 god.net/)...It.w
+ 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420 as.later.edited.
+ 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f by.Matthew.Wilco
+ 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469 x.and.Josip.Rodi
+ 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669 n....Last.modifi
+ 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f ed:.$Date:.2004/
+ 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024 06/20.15:33:57.$
+ 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e ....-->..</BODY>
+ 0x15f0: 0a3c 2f48 544d 4c3e 0a .</HTML>.
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00 .4.n@.@.!T......
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010 ...p.P7X.I7z....
+ 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc 0_........M...M.
+ 0x0040: 9219 ..
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00 .4.p@.@.!R......
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011 ...p.P7X.I7z....
+ 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc 0_........M..!M.
+ 0x0040: 9219 ..
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00 .4..@.@.........
+ 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011 ...P.p7z..7X.J..
+ 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc ...5......M..#M.
+ 0x0040: 9721 .!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00 .4.r@.@.!P......
+ 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010 ...p.P7X.J7z....
+ 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc 0_........M..#M.
+ 0x0040: 9723 .#
diff --git a/contrib/tcpdump/tests/print-capX.out b/contrib/tcpdump/tests/print-capX.out
new file mode 100644
index 000000000000..696316950b3a
--- /dev/null
+++ b/contrib/tcpdump/tests/print-capX.out
@@ -0,0 +1,409 @@
+20:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001 E..<.h@.@.!R....
+ 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000 .....p.P7X.~....
+ 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a .....!....@.....
+ 0x0030: 4ddc 9216 0000 0000 0103 0302 M...........
+20:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 E..<..@.@.<.....
+ 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f .....P.p7z..7X..
+ 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a ....n.....@.....
+ 0x0030: 4ddc 9216 4ddc 9216 0103 0302 M...M.......
+20:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001 E..4.j@.@.!X....
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z..
+ 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216 ....7.......M...
+ 0x0030: 4ddc 9216 M...
+20:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001 E....l@.@.......
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z..
+ 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217 ............M...
+ 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31 M...GET./.HTTP/1
+ 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68 .1..Host:.localh
+ 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a ost..User-Agent:
+ 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37 .ELinks/0.10.4-7
+ 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64 -debian.(textmod
+ 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d e;.Linux.2.6.11-
+ 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20 1-686-smp.i686;.
+ 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570 132x56-2)..Accep
+ 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45 t:.*/*..Accept-E
+ 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41 ncoding:.gzip..A
+ 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 ccept-Language:.
+ 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20 en..Connection:.
+ 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a Keep-Alive....
+20:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001 E..4..@.@.......
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I
+ 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218 ....7.......M...
+ 0x0030: 4ddc 9217 M...
+20:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001 E.....@.@..%....
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I
+ 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219 ............M...
+ 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030 M...HTTP/1.1.200
+ 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20 .OK..Date:.Wed,.
+ 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35 06.Jul.2005.03:5
+ 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572 7:35.GMT..Server
+ 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d :.Apache/1.3.33.
+ 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20 .Last-Modified:.
+ 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034 Sun,.15.Aug.2004
+ 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45 .00:43:41.GMT..E
+ 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438 Tag:."6e80f0-148
+ 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363 a-411eb1bd"..Acc
+ 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465 ept-Ranges:.byte
+ 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774 s..Content-Lengt
+ 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c h:.5258..Keep-Al
+ 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c ive:.timeout=15,
+ 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563 .max=100..Connec
+ 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665 tion:.Keep-Alive
+ 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20 ..Content-Type:.
+ 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273 text/html;.chars
+ 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d et=iso-8859-1...
+ 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20 .<!DOCTYPE.HTML.
+ 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f PUBLIC."-//W3C//
+ 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472 DTD.HTML.4.01.Tr
+ 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e ansitional//EN">
+ 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20 .<HTML>.<HEAD>..
+ 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155 ..<META.HTTP-EQU
+ 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065 IV="Content-Type
+ 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f ".CONTENT="text/
+ 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973 html;.charset=is
+ 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d o-8859-1">....<M
+ 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269 ETA.NAME="Descri
+ 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22 ption".CONTENT="
+ 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374 The.initial.inst
+ 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269 allation.of.Debi
+ 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020 an.apache.">....
+ 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64 <TITLE>Placehold
+ 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a er.page</TITLE>.
+ 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445 </HEAD>.<BODY.TE
+ 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743 XT="#000000".BGC
+ 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c OLOR="#FFFFFF".L
+ 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c INK="#0000EF".VL
+ 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c INK="#55188A".AL
+ 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a INK="#FF0000">..
+ 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220 <H1>Placeholder.
+ 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966 page</H1>.<H2>If
+ 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272 .you.are.just.br
+ 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f owsing.the.web</
+ 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65 h2>..<P>The.owne
+ 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369 r.of.this.web.si
+ 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075 te.has.not.put.u
+ 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320 p.any.web.pages.
+ 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65 yet..Please.come
+ 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e .back.later.</P>
+ 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954 ..<P><SMALL><CIT
+ 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f E>Move.along,.no
+ 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572 thing.to.see.her
+ 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c e...</CITE>.:-)<
+ 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 /SMALL></P>..<H2
+ 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969 >If.you.are.tryi
+ 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865 ng.to.locate.the
+ 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f .administrator.o
+ 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f f.this.machine</
+ 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077 H2>..<P>If.you.w
+ 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f ant.to.report.so
+ 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468 mething.about.th
+ 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669 is.host's.behavi
+ 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461 or,.please.conta
+ 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420 ct.the.Internet.
+ 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572 Service.Provider
+ 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420 .(ISP).involved.
+ 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c directly.</P>..<
+ 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265 P>See.the.<A.hre
+ 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162 f="http://www.ab
+ 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72 use.net/">Networ
+ 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67 k.Abuse.Clearing
+ 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f house</A>.for.ho
+ 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50 w.to.do.this.</P
+ 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172 >..<H2>If.you.ar
+ 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261 e.the.administra
+ 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368 tor.of.this.mach
+ 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865 ine</H2>..<P>The
+ 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c .initial.install
+ 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566 ation.of.<A.href
+ 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb
+ 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e ian.org/">Debian
+ 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765 's.apache</A>.we
+ 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package
+ 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e .was.successful.
+ 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47 </P>..<P><STRONG
+ 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c >You.should.repl
+ 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769 ace.this.page.wi
+ 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220 th.your.own.web.
+ 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173 pages.as.soon.as
+ 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f .possible.</STRO
+ 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 NG></P>..<P>Unle
+ 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069 ss.you.changed.i
+ 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e ts.configuration
+ 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665 ,.your.new.serve
+ 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420 r.is.configured.
+ 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e as.follows:.<UL>
+ 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174 .<LI>.Configurat
+ 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265 ion.files.can.be
+ 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65 .found.in.<TT>/e
+ 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c tc/apache</TT>.<
+ 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c /LI>..<LI>.The.<
+ 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c TT>DocumentRoot<
+ 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074 /TT>,.which.is.t
+ 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64 he.directory.und
+ 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75 er.which.all.you
+ 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f r.HTML.files.sho
+ 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365 uld.exist,.is.se
+ 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777 t.to.<TT>/var/ww
+ 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c w</TT>.</LI>..<L
+ 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061 I>.CGI.scripts.a
+ 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e re.looked.for.in
+ 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367 .<TT>/usr/lib/cg
+ 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963 i-bin</TT>,.whic
+ 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961 h.is.where.Debia
+ 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20 n.packages.will.
+ 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269 place.their.scri
+ 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a pts.</LI>..<LI>.
+ 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c Log.files.are.pl
+ 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172 aced.in.<TT>/var
+ 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e /log/apache</TT>
+ 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f ,.and.will.be.ro
+ 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054 tated.weekly...T
+ 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620 he.frequency.of.
+ 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520 rotation.can.be.
+ 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062 easily.changed.b
+ 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65 y.editing.<TT>/e
+ 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61 tc/logrotate.d/a
+ 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e pache</TT>.</LI>
+ 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175 ..<LI>.The.defau
+ 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64 lt.directory.ind
+ 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e ex.is.<TT>index.
+ 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69 html</TT>,.meani
+ 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473 ng.that.requests
+ 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279 .for.a.directory
+ 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f .<TT>/foo/bar/</
+ 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468 TT>.will.give.th
+ 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468 e.contents.of.th
+ 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f e.file.<TT>/var/
+ 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465 www/foo/bar/inde
+ 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069 x.html</TT>.if.i
+ 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69 t.exists.(assumi
+ 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172 ng.that.<TT>/var
+ 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75 /www</TT>.is.you
+ 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f r.<TT>DocumentRo
+ 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a ot</TT>).</LI>..
+ 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374 <LI>.User.direct
+ 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65 ories.are.enable
+ 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375 d,.and.user.docu
+ 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f ments.will.be.lo
+ 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520 oked.for.in.the.
+ 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c <TT>public_html<
+ 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f /TT>.directory.o
+ 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d f.the.users'.hom
+ 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a es...These.dirs.
+ 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220 should.be.under.
+ 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20 <TT>/home</TT>,.
+ 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e and.users.will.n
+ 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379 ot.be.able.to.sy
+ 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074 mlink.to.files.t
+ 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f hey.don't.own.</
+ 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 LI>..</UL>.All.t
+ 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163 he.standard.apac
+ 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061 he.modules.are.a
+ 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468 vailable.with.th
+ 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061 is.release.and.a
+ 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077 re.now.managed.w
+ 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479 ith.debconf...Ty
+ 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f pe.<TT>dpkg-reco
+ 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f nfigure.apache</
+ 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768 TT>.to.select.wh
+ 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520 ich.modules.you.
+ 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d want.enabled...M
+ 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65 any.other.module
+ 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a s.are.available.
+ 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269 through.the.Debi
+ 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465 an.package.syste
+ 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573 m.with.the.names
+ 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d .<TT>libapache-m
+ 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f od-*</TT>..If.yo
+ 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c u.need.to.compil
+ 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273 e.a.module.yours
+ 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65 elf,.you.will.ne
+ 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468 ed.to.install.th
+ 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576 e.<TT>apache-dev
+ 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a </TT>.package...
+ 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74 <P>More.document
+ 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520 ation.on.Apache.
+ 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a can.be.found.on:
+ 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c .<UL>.<LI>.The.<
+ 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061 A.HREF="/doc/apa
+ 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22 che-doc/manual/"
+ 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74 >Apache.document
+ 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564 ation</A>.stored
+ 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e .on.your.server.
+ 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 </LI>..<LI>.The.
+ 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f <A.HREF="http://
+ 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22 www.apache.org/"
+ 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c >Apache.Project<
+ 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f /A>.home.site.</
+ 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A
+ 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww
+ 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267 w.apache-ssl.org
+ 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41 /">Apache-SSL</A
+ 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI
+ 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H
+ 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c REF="http://perl
+ 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f .apache.org/">mo
+ 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520 d.perl</A>.home.
+ 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e site.</LI>..<LI>
+ 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874 .The.<A.HREF="ht
+ 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577 tp://www.apachew
+ 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865 eek.com/">Apache
+ 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574 Week</A>.newslet
+ 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a ter.</LI>..<LI>.
+ 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474 The.<A.HREF="htt
+ 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f p://www.debian.o
+ 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20 rg/doc/">Debian.
+ 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74 Project.Document
+ 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820 ation</A>.which.
+ 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c contains.HOWTOs,
+ 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477 .FAQs,.and.softw
+ 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49 are.updates.</LI
+ 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520 >.</UL>..<P>You.
+ 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74 can.also.consult
+ 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120 .the.list.of.<A.
+ 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777 HREF="http://www
+ 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171 .boutell.com/faq
+ 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765 /">World.Wide.We
+ 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b b.Frequently.Ask
+ 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e ed.Questions</A>
+ 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e .for.information
+ 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572 ...<H2>Let.other
+ 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f .people.know.abo
+ 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f ut.this.server</
+ 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874 H2>..<A.HREF="ht
+ 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f tp://netcraft.co
+ 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e m/">Netcraft</A>
+ 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74 .provides.an.int
+ 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365 eresting.free.se
+ 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369 rvice.for.web.si
+ 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e te.monitoring.an
+ 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c d.statistic.coll
+ 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20 ection..You.can.
+ 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162 let.them.know.ab
+ 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220 out.your.server.
+ 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048 using.their.<A.H
+ 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469 REF="http://upti
+ 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f me.netcraft.com/
+ 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e ">interface</A>.
+ 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f .Enabling.the.mo
+ 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572 nitoring.of.your
+ 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f .server.will.pro
+ 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c vide.a.better.gl
+ 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66 obal.overview.of
+ 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768 .who.is.using.wh
+ 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e at.and.where,.an
+ 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520 d.it.would.give.
+ 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a Debian.a.better.
+ 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520 overview.of.the.
+ 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075 apache.package.u
+ 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574 sage...<H2>About
+ 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a .this.page</H2>.
+ 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967 .<IMG.ALIGN="rig
+ 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748 ht".ALT="".HEIGH
+ 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232 T="247".WIDTH="2
+ 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a 78".SRC="icons/j
+ 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e he061.png">..<P>
+ 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568 This.is.a.placeh
+ 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461 older.page.insta
+ 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48 lled.by.the.<A.H
+ 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www.
+ 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562 debian.org/">Deb
+ 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520 ian</A>.release.
+ 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765 of.the.apache.We
+ 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package
+ 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075 ...<P>This.compu
+ 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65 ter.has.installe
+ 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55 d.the.Debian.GNU
+ 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67 /Linux.operating
+ 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420 .system,.but.it.
+ 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468 has.<strong>noth
+ 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074 ing.to.do.with.t
+ 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563 he.Debian.Projec
+ 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561 t</strong>..Plea
+ 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f se.do.<strong>no
+ 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461 t</strong>.conta
+ 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072 ct.the.Debian.Pr
+ 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c oject.about.it.<
+ 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066 /P>..<P>If.you.f
+ 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869 ind.a.bug.in.thi
+ 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765 s.apache.package
+ 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069 ,.or.in.Apache.i
+ 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669 tself,.please.fi
+ 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420 le.a.bug.report.
+ 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374 on.it...Instruct
+ 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468 ions.on.doing.th
+ 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374 is,.and.the.list
+ 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474 .of.<A.HREF="htt
+ 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e p://bugs.debian.
+ 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e org/src:apache">
+ 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f known.bugs</A>.o
+ 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20 f.this.package,.
+ 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20 can.be.found.in.
+ 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874 the..<A.HREF="ht
+ 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e tp://www.debian.
+ 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469 org/Bugs/Reporti
+ 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054 ng">Debian.Bug.T
+ 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f racking.System</
+ 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066 A>...<P>Thanks.f
+ 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061 or.using.this.pa
+ 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772 ckage,.and.congr
+ 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079 atulations.for.y
+ 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120 our.choice.of.a.
+ 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f Debian.system!</
+ 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22 P>..<DIV.align="
+ 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566 center">.<a.href
+ 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb
+ 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720 ian.org/">.<IMG.
+ 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068 align="middle".h
+ 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468 eight="30".width
+ 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73 ="25".src="icons
+ 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f /debian/openlogo
+ 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465 -25.jpg".alt="De
+ 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068 bian">.</a>.<a.h
+ 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e ref="http://www.
+ 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49 apache.org/">.<I
+ 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65 MG.align="middle
+ 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769 ".height="32".wi
+ 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269 dth="259".src="i
+ 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70 cons/apache_pb.p
+ 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522 ng".alt="Apache"
+ 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c >.</a>.</DIV>..<
+ 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520 !--...This.page.
+ 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372 was.initially.cr
+ 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520 eated.by.Johnie.
+ 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e Ingram.(http://n
+ 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974 etgod.net/)...It
+ 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465 .was.later.edite
+ 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c d.by.Matthew.Wil
+ 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f cox.and.Josip.Ro
+ 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469 din....Last.modi
+ 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030 fied:.$Date:.200
+ 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537 4/06/20.15:33:57
+ 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 .$....-->..</BOD
+ 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a Y>.</HTML>.
+20:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001 E..4.n@.@.!T....
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z..
+ 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219 ..0_........M...
+ 0x0030: 4ddc 9219 M...
+20:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001 E..4.p@.@.!R....
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z..
+ 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721 ..0_........M..!
+ 0x0030: 4ddc 9219 M...
+20:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001 E..4..@.@.......
+ 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a .....P.p7z..7X.J
+ 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723 .....5......M..#
+ 0x0030: 4ddc 9721 M..!
+20:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001 E..4.r@.@.!P....
+ 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa .....p.P7X.J7z..
+ 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723 ..0_........M..#
+ 0x0030: 4ddc 9723 M..#
diff --git a/contrib/tcpdump/tests/print-capXX.out b/contrib/tcpdump/tests/print-capXX.out
new file mode 100644
index 000000000000..7c57e0cfd6d3
--- /dev/null
+++ b/contrib/tcpdump/tests/print-capXX.out
@@ -0,0 +1,419 @@
+20:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00 .<.h@.@.!R......
+ 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002 ...p.P7X.~......
+ 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc ...!....@.....M.
+ 0x0040: 9216 0000 0000 0103 0302 ..........
+20:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00 .<..@.@.<.......
+ 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012 ...P.p7z..7X....
+ 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc ..n.....@.....M.
+ 0x0040: 9216 4ddc 9216 0103 0302 ..M.......
+20:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00 .4.j@.@.!X......
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010 ...p.P7X..7z....
+ 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc ..7.......M...M.
+ 0x0040: 9216 ..
+20:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00 ...l@.@.........
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018 ...p.P7X..7z....
+ 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc ..........M...M.
+ 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31 ..GET./.HTTP/1.1
+ 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73 ..Host:.localhos
+ 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045 t..User-Agent:.E
+ 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64 Links/0.10.4-7-d
+ 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b ebian.(textmode;
+ 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d .Linux.2.6.11-1-
+ 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133 686-smp.i686;.13
+ 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a 2x56-2)..Accept:
+ 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63 .*/*..Accept-Enc
+ 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363 oding:.gzip..Acc
+ 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e ept-Language:.en
+ 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65 ..Connection:.Ke
+ 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a ep-Alive....
+20:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00 .4..@.@.........
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010 ...P.p7z..7X.I..
+ 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc ..7.......M...M.
+ 0x0040: 9217 ..
+20:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00 ....@.@..%......
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018 ...P.p7z..7X.I..
+ 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc ..........M...M.
+ 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f ..HTTP/1.1.200.O
+ 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036 K..Date:.Wed,.06
+ 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a .Jul.2005.03:57:
+ 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20 35.GMT..Server:.
+ 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c Apache/1.3.33..L
+ 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375 ast-Modified:.Su
+ 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030 n,.15.Aug.2004.0
+ 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461 0:43:41.GMT..ETa
+ 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d g:."6e80f0-148a-
+ 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570 411eb1bd"..Accep
+ 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d t-Ranges:.bytes.
+ 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a .Content-Length:
+ 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976 .5258..Keep-Aliv
+ 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d e:.timeout=15,.m
+ 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469 ax=100..Connecti
+ 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a on:.Keep-Alive..
+ 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type:.te
+ 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574 xt/html;.charset
+ 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c =iso-8859-1....<
+ 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055 !DOCTYPE.HTML.PU
+ 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454 BLIC."-//W3C//DT
+ 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e D.HTML.4.01.Tran
+ 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c sitional//EN">.<
+ 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020 HTML>.<HEAD>....
+ 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956 <META.HTTP-EQUIV
+ 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220 ="Content-Type".
+ 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874 CONTENT="text/ht
+ 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d ml;.charset=iso-
+ 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554 8859-1">....<MET
+ 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074 A.NAME="Descript
+ 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468 ion".CONTENT="Th
+ 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c e.initial.instal
+ 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e lation.of.Debian
+ 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54 .apache.">....<T
+ 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572 ITLE>Placeholder
+ 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f .page</TITLE>.</
+ 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854 HEAD>.<BODY.TEXT
+ 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c ="#000000".BGCOL
+ 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e OR="#FFFFFF".LIN
+ 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e K="#0000EF".VLIN
+ 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e K="#55188A".ALIN
+ 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48 K="#FF0000">..<H
+ 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061 1>Placeholder.pa
+ 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079 ge</H1>.<H2>If.y
+ 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77 ou.are.just.brow
+ 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832 sing.the.web</h2
+ 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220 >..<P>The.owner.
+ 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465 of.this.web.site
+ 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020 .has.not.put.up.
+ 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965 any.web.pages.ye
+ 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062 t..Please.come.b
+ 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a ack.later.</P>..
+ 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e <P><SMALL><CITE>
+ 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468 Move.along,.noth
+ 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e ing.to.see.here.
+ 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53 ..</CITE>.:-)</S
+ 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49 MALL></P>..<H2>I
+ 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67 f.you.are.trying
+ 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061 .to.locate.the.a
+ 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620 dministrator.of.
+ 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832 this.machine</H2
+ 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e >..<P>If.you.wan
+ 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65 t.to.report.some
+ 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973 thing.about.this
+ 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72 .host's.behavior
+ 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374 ,.please.contact
+ 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365 .the.Internet.Se
+ 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028 rvice.Provider.(
+ 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469 ISP).involved.di
+ 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e rectly.</P>..<P>
+ 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d See.the.<A.href=
+ 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573 "http://www.abus
+ 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20 e.net/">Network.
+ 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f Abuse.Clearingho
+ 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720 use</A>.for.how.
+ 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a to.do.this.</P>.
+ 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520 .<H2>If.you.are.
+ 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f the.administrato
+ 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e r.of.this.machin
+ 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069 e</H2>..<P>The.i
+ 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174 nitial.installat
+ 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22 ion.of.<A.href="
+ 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia
+ 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773 n.org/">Debian's
+ 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220 .apache</A>.web.
+ 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077 server.package.w
+ 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f as.successful.</
+ 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59 P>..<P><STRONG>Y
+ 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163 ou.should.replac
+ 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468 e.this.page.with
+ 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061 .your.own.web.pa
+ 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070 ges.as.soon.as.p
+ 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47 ossible.</STRONG
+ 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373 ></P>..<P>Unless
+ 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473 .you.changed.its
+ 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20 .configuration,.
+ 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220 your.new.server.
+ 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173 is.configured.as
+ 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c .follows:.<UL>.<
+ 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f LI>.Configuratio
+ 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066 n.files.can.be.f
+ 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463 ound.in.<TT>/etc
+ 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c /apache</TT>.</L
+ 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454 I>..<LI>.The.<TT
+ 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54 >DocumentRoot</T
+ 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865 T>,.which.is.the
+ 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572 .directory.under
+ 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a .which.all.your.
+ 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c HTML.files.shoul
+ 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420 d.exist,.is.set.
+ 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c to.<TT>/var/www<
+ 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e /TT>.</LI>..<LI>
+ 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265 .CGI.scripts.are
+ 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c .looked.for.in.<
+ 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d TT>/usr/lib/cgi-
+ 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820 bin</TT>,.which.
+ 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20 is.where.Debian.
+ 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c packages.will.pl
+ 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074 ace.their.script
+ 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f s.</LI>..<LI>.Lo
+ 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163 g.files.are.plac
+ 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c ed.in.<TT>/var/l
+ 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20 og/apache</TT>,.
+ 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461 and.will.be.rota
+ 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865 ted.weekly...The
+ 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f .frequency.of.ro
+ 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561 tation.can.be.ea
+ 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920 sily.changed.by.
+ 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463 editing.<TT>/etc
+ 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061 /logrotate.d/apa
+ 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a che</TT>.</LI>..
+ 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74 <LI>.The.default
+ 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578 .directory.index
+ 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874 .is.<TT>index.ht
+ 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67 ml</TT>,.meaning
+ 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66 .that.requests.f
+ 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c or.a.directory.<
+ 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454 TT>/foo/bar/</TT
+ 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520 >.will.give.the.
+ 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520 contents.of.the.
+ 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777 file.<TT>/var/ww
+ 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e w/foo/bar/index.
+ 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420 html</TT>.if.it.
+ 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67 exists.(assuming
+ 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77 .that.<TT>/var/w
+ 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220 ww</TT>.is.your.
+ 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74 <TT>DocumentRoot
+ 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c </TT>).</LI>..<L
+ 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72 I>.User.director
+ 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c ies.are.enabled,
+ 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65 .and.user.docume
+ 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b nts.will.be.look
+ 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54 ed.for.in.the.<T
+ 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54 T>public_html</T
+ 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620 T>.directory.of.
+ 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573 the.users'.homes
+ 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368 ...These.dirs.sh
+ 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54 ould.be.under.<T
+ 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e T>/home</TT>,.an
+ 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74 d.users.will.not
+ 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c .be.able.to.syml
+ 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865 ink.to.files.the
+ 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49 y.don't.own.</LI
+ 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865 >..</UL>.All.the
+ 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865 .standard.apache
+ 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661 .modules.are.ava
+ 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973 ilable.with.this
+ 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265 .release.and.are
+ 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974 .now.managed.wit
+ 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065 h.debconf...Type
+ 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66 .<TT>dpkg-reconf
+ 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454 igure.apache</TT
+ 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963 >.to.select.whic
+ 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761 h.modules.you.wa
+ 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e nt.enabled...Man
+ 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320 y.other.modules.
+ 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468 are.available.th
+ 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e rough.the.Debian
+ 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20 .package.system.
+ 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c with.the.names.<
+ 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64 TT>libapache-mod
+ 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520 -*</TT>..If.you.
+ 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520 need.to.compile.
+ 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c a.module.yoursel
+ 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564 f,.you.will.need
+ 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a .to.install.the.
+ 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f <TT>apache-dev</
+ 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50 TT>.package...<P
+ 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174 >More.documentat
+ 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361 ion.on.Apache.ca
+ 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c n.be.found.on:.<
+ 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120 UL>.<LI>.The.<A.
+ 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368 HREF="/doc/apach
+ 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41 e-doc/manual/">A
+ 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174 pache.documentat
+ 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f ion</A>.stored.o
+ 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f n.your.server.</
+ 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A
+ 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww
+ 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41 w.apache.org/">A
+ 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41 pache.Project</A
+ 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI
+ 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H
+ 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www.
+ 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22 apache-ssl.org/"
+ 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20 >Apache-SSL</A>.
+ 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a home.site.</LI>.
+ 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245 .<LI>.The.<A.HRE
+ 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61 F="http://perl.a
+ 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420 pache.org/">mod.
+ 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369 perl</A>.home.si
+ 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54 te.</LI>..<LI>.T
+ 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470 he.<A.HREF="http
+ 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565 ://www.apachewee
+ 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765 k.com/">ApacheWe
+ 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465 ek</A>.newslette
+ 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 r.</LI>..<LI>.Th
+ 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a e.<A.HREF="http:
+ 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267 //www.debian.org
+ 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072 /doc/">Debian.Pr
+ 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174 oject.Documentat
+ 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f ion</A>.which.co
+ 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046 ntains.HOWTOs,.F
+ 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172 AQs,.and.softwar
+ 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a e.updates.</LI>.
+ 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361 </UL>..<P>You.ca
+ 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074 n.also.consult.t
+ 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852 he.list.of.<A.HR
+ 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62 EF="http://www.b
+ 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22 outell.com/faq/"
+ 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220 >World.Wide.Web.
+ 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564 Frequently.Asked
+ 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066 .Questions</A>.f
+ 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a or.information..
+ 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070 .<H2>Let.other.p
+ 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574 eople.know.about
+ 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832 .this.server</H2
+ 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470 >..<A.HREF="http
+ 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f ://netcraft.com/
+ 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070 ">Netcraft</A>.p
+ 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572 rovides.an.inter
+ 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276 esting.free.serv
+ 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465 ice.for.web.site
+ 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420 .monitoring.and.
+ 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563 statistic.collec
+ 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65 tion..You.can.le
+ 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75 t.them.know.abou
+ 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573 t.your.server.us
+ 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245 ing.their.<A.HRE
+ 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65 F="http://uptime
+ 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e .netcraft.com/">
+ 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45 interface</A>..E
+ 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69 nabling.the.moni
+ 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073 toring.of.your.s
+ 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669 erver.will.provi
+ 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62 de.a.better.glob
+ 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077 al.overview.of.w
+ 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174 ho.is.using.what
+ 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420 .and.where,.and.
+ 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465 it.would.give.De
+ 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76 bian.a.better.ov
+ 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170 erview.of.the.ap
+ 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361 ache.package.usa
+ 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074 ge...<H2>About.t
+ 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c his.page</H2>..<
+ 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874 IMG.ALIGN="right
+ 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d ".ALT="".HEIGHT=
+ 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738 "247".WIDTH="278
+ 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865 ".SRC="icons/jhe
+ 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468 061.png">..<P>Th
+ 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c is.is.a.placehol
+ 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c der.page.install
+ 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245 ed.by.the.<A.HRE
+ 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465 F="http://www.de
+ 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961 bian.org/">Debia
+ 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66 n</A>.release.of
+ 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220 .the.apache.Web.
+ 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a server.package..
+ 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465 .<P>This.compute
+ 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420 r.has.installed.
+ 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c the.Debian.GNU/L
+ 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073 inux.operating.s
+ 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861 ystem,.but.it.ha
+ 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e s.<strong>nothin
+ 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865 g.to.do.with.the
+ 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c .Debian.Project<
+ 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365 /strong>..Please
+ 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c .do.<strong>not<
+ 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374 /strong>.contact
+ 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a .the.Debian.Proj
+ 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50 ect.about.it.</P
+ 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e >..<P>If.you.fin
+ 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320 d.a.bug.in.this.
+ 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20 apache.package,.
+ 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473 or.in.Apache.its
+ 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65 elf,.please.file
+ 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e .a.bug.report.on
+ 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f .it...Instructio
+ 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973 ns.on.doing.this
+ 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f ,.and.the.list.o
+ 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a f.<A.HREF="http:
+ 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72 //bugs.debian.or
+ 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e g/src:apache">kn
+ 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620 own.bugs</A>.of.
+ 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361 this.package,.ca
+ 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468 n.be.found.in.th
+ 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470 e..<A.HREF="http
+ 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72 ://www.debian.or
+ 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67 g/Bugs/Reporting
+ 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261 ">Debian.Bug.Tra
+ 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e cking.System</A>
+ 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72 ...<P>Thanks.for
+ 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b .using.this.pack
+ 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174 age,.and.congrat
+ 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75 ulations.for.you
+ 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465 r.choice.of.a.De
+ 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e bian.system!</P>
+ 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365 ..<DIV.align="ce
+ 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22 nter">.<a.href="
+ 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia
+ 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c n.org/">.<IMG.al
+ 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569 ign="middle".hei
+ 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22 ght="30".width="
+ 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64 25".src="icons/d
+ 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32 ebian/openlogo-2
+ 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269 5.jpg".alt="Debi
+ 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265 an">.</a>.<a.hre
+ 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170 f="http://www.ap
+ 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47 ache.org/">.<IMG
+ 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220 .align="middle".
+ 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474 height="32".widt
+ 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f h="259".src="ico
+ 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67 ns/apache_pb.png
+ 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a ".alt="Apache">.
+ 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d </a>.</DIV>..<!-
+ 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761 -...This.page.wa
+ 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561 s.initially.crea
+ 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e ted.by.Johnie.In
+ 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574 gram.(http://net
+ 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077 god.net/)...It.w
+ 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420 as.later.edited.
+ 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f by.Matthew.Wilco
+ 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469 x.and.Josip.Rodi
+ 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669 n....Last.modifi
+ 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f ed:.$Date:.2004/
+ 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024 06/20.15:33:57.$
+ 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e ....-->..</BODY>
+ 0x15f0: 0a3c 2f48 544d 4c3e 0a .</HTML>.
+20:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00 .4.n@.@.!T......
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010 ...p.P7X.I7z....
+ 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc 0_........M...M.
+ 0x0040: 9219 ..
+20:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00 .4.p@.@.!R......
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011 ...p.P7X.I7z....
+ 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc 0_........M..!M.
+ 0x0040: 9219 ..
+20:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00 .4..@.@.........
+ 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011 ...P.p7z..7X.J..
+ 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc ...5......M..#M.
+ 0x0040: 9721 .!
+20:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
+ 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00 .4.r@.@.!P......
+ 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010 ...p.P7X.J7z....
+ 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc 0_........M..#M.
+ 0x0040: 9723 .#
diff --git a/contrib/tcpdump/tests/print-flags.puu b/contrib/tcpdump/tests/print-flags.puu
new file mode 100644
index 000000000000..bcd8b9926839
--- /dev/null
+++ b/contrib/tcpdump/tests/print-flags.puu
@@ -0,0 +1,151 @@
+begin 644 print-flags.pcap
+MU,.RH0(`!````````````/__```!````KU;+0E)0#@!*````2@``````````
+M``````````@`10``/!MH0`!`!B%2?P```7\```':<`!0-UB)?@````"@`G__
+M%"$```($0`P$`@@*3=R2%@`````!`P,"KU;+0HI0#@!*````2@``````````
+M``````````@`10``/```0`!`!CRZ?P```7\```$`4-IP-WJ-\3=8B7^@$G__
+M;K$```($0`P$`@@*3=R2%DW<DA8!`P,"KU;+0K=0#@!"````0@``````````
+M``````````@`10``-!MJ0`!`!B%8?P```7\```':<`!0-UB)?S=ZC?*`$"``
+M-]````$!"`I-W)(63=R2%J]6RT*?50X`#`$```P!```````````````````(
+M`$4``/X;;$``0`8@C'\```%_```!VG``4#=8B7\W>HWR@!@@`/[R```!`0@*
+M3=R2%TW<DA9'150@+R!(5%10+S$N,0T*2&]S=#H@;&]C86QH;W-T#0I5<V5R
+M+4%G96YT.B!%3&EN:W,O,"XQ,"XT+3<M9&5B:6%N("AT97AT;6]D93L@3&EN
+M=7@@,BXV+C$Q+3$M-C@V+7-M<"!I-C@V.R`Q,S)X-38M,BD-"D%C8V5P=#H@
+M*B\J#0I!8V-E<'0M16YC;V1I;F<Z(&=Z:7`-"D%C8V5P="U,86YG=6%G93H@
+M96X-"D-O;FYE8W1I;VXZ($ME97`M06QI=F4-"@T*KU;+0KI9#@!"````0@``
+M``````````````````@`10``-!_D0`!`!AS>?P```7\```$`4-IP-WJ-\C=8
+MBDF`$"``-P,```$!"`I-W)(83=R2%Z]6RT*P7`X`^14``/D5````````````
+M```````(`$4`%>L?YD``0`8')7\```%_```!`%#:<#=ZC?(W6(I)@!@@`!/@
+M```!`0@*3=R2&4W<DA=(5%10+S$N,2`R,#`@3TL-"D1A=&4Z(%=E9"P@,#8@
+M2G5L(#(P,#4@,#,Z-3<Z,S4@1TU4#0I397)V97(Z($%P86-H92\Q+C,N,S,-
+M"DQA<W0M36]D:69I960Z(%-U;BP@,34@075G(#(P,#0@,#`Z-#,Z-#$@1TU4
+M#0I%5&%G.B`B-F4X,&8P+3$T.&$M-#$Q96(Q8F0B#0I!8V-E<'0M4F%N9V5S
+M.B!B>71E<PT*0V]N=&5N="U,96YG=&@Z(#4R-3@-"DME97`M06QI=F4Z('1I
+M;65O=70],34L(&UA>#TQ,#`-"D-O;FYE8W1I;VXZ($ME97`M06QI=F4-"D-O
+M;G1E;G0M5'EP93H@=&5X="]H=&UL.R!C:&%R<V5T/6ES;RTX.#4Y+3$-"@T*
+M/"%$3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,#$@
+M5')A;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*("`@/$U%5$$@2%14
+M4"U%455)5CTB0V]N=&5N="U4>7!E(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H
+M87)S970]:7-O+3@X-3DM,2(^"B`@(#Q-151!($Y!344](D1E<V-R:7!T:6]N
+M(B!#3TY414Y4/2)4:&4@:6YI=&EA;"!I;G-T86QL871I;VX@;V8@1&5B:6%N
+M(&%P86-H92XB/@H@("`\5$E43$4^4&QA8V5H;VQD97(@<&%G93PO5$E43$4^
+M"CPO2$5!1#X*/$)/1%D@5$585#TB(S`P,#`P,"(@0D=#3TQ/4CTB(T9&1D9&
+M1B(@3$E.2STB(S`P,#!%1B(@5DQ)3DL](B,U-3$X.$$B($%,24Y+/2(C1D8P
+M,#`P(CX*"CQ(,3Y0;&%C96AO;&1E<B!P86=E/"](,3X*/$@R/DEF('EO=2!A
+M<F4@:G5S="!B<F]W<VEN9R!T:&4@=V5B/"]H,CX*"CQ0/E1H92!O=VYE<B!O
+M9B!T:&ES('=E8B!S:71E(&AA<R!N;W0@<'5T('5P(&%N>2!W96(@<&%G97,@
+M>65T+@I0;&5A<V4@8V]M92!B86-K(&QA=&5R+CPO4#X*"CQ0/CQ334%,3#X\
+M0TE413Y-;W9E(&%L;VYG+"!N;W1H:6YG('1O('-E92!H97)E+BXN/"]#251%
+M/B`Z+2D\+U--04Q,/CPO4#X*"CQ(,CY)9B!Y;W4@87)E('1R>6EN9R!T;R!L
+M;V-A=&4@=&AE(&%D;6EN:7-T<F%T;W(@;V8@=&AI<R!M86-H:6YE/"](,CX*
+M"CQ0/DEF('EO=2!W86YT('1O(')E<&]R="!S;VUE=&AI;F<@86)O=70@=&AI
+M<R!H;W-T)W,@8F5H879I;W(L('!L96%S90IC;VYT86-T('1H92!);G1E<FYE
+M="!397)V:6-E(%!R;W9I9&5R("A)4U`I(&EN=F]L=F5D(&1I<F5C=&QY+CPO
+M4#X*"CQ0/E-E92!T:&4@/$$@:')E9CTB:'1T<#HO+W=W=RYA8G5S92YN970O
+M(CY.971W;W)K($%B=7-E"D-L96%R:6YG:&]U<V4\+T$^(&9O<B!H;W<@=&\@
+M9&\@=&AI<RX\+U`^"@H\2#(^268@>6]U(&%R92!T:&4@861M:6YI<W1R871O
+M<B!O9B!T:&ES(&UA8VAI;F4\+T@R/@H*/%`^5&AE(&EN:71I86P@:6YS=&%L
+M;&%T:6]N(&]F(#Q!(&AR968](FAT='`Z+R]W=W<N9&5B:6%N+F]R9R\B/D1E
+M8FEA;B=S"F%P86-H93PO03X@=V5B('-E<G9E<B!P86-K86=E('=A<R!S=6-C
+M97-S9G5L+CPO4#X*"CQ0/CQ35%)/3D<^66]U('-H;W5L9"!R97!L86-E('1H
+M:7,@<&%G92!W:71H('EO=7(@;W=N('=E8B!P86=E<R!A<PIS;V]N(&%S('!O
+M<W-I8FQE+CPO4U123TY'/CPO4#X*"CQ0/E5N;&5S<R!Y;W4@8VAA;F=E9"!I
+M=',@8V]N9FEG=7)A=&EO;BP@>6]U<B!N97<@<V5R=F5R(&ES(&-O;F9I9W5R
+M960@87,@9F]L;&]W<SH*/%5,/@H\3$D^"D-O;F9I9W5R871I;VX@9FEL97,@
+M8V%N(&)E(&9O=6YD(&EN(#Q45#XO971C+V%P86-H93PO5%0^+CPO3$D^"@H\
+M3$D^"E1H92`\5%0^1&]C=6UE;G12;V]T/"]45#XL('=H:6-H(&ES('1H92!D
+M:7)E8W1O<GD@=6YD97(@=VAI8V@@86QL('EO=7(*2%1-3"!F:6QE<R!S:&]U
+M;&0@97AI<W0L(&ES('-E="!T;R`\5%0^+W9A<B]W=W<\+U14/BX\+TQ)/@H*
+M/$Q)/@I#1TD@<V-R:7!T<R!A<F4@;&]O:V5D(&9O<B!I;B`\5%0^+W5S<B]L
+M:6(O8V=I+6)I;CPO5%0^+"!W:&EC:"!I<R!W:&5R90I$96)I86X@<&%C:V%G
+M97,@=VEL;"!P;&%C92!T:&5I<B!S8W)I<'1S+CPO3$D^"@H\3$D^"DQO9R!F
+M:6QE<R!A<F4@<&QA8V5D(&EN(#Q45#XO=F%R+VQO9R]A<&%C:&4\+U14/BP@
+M86YD('=I;&P@8F4@<F]T871E9`IW965K;'DN("!4:&4@9G)E<75E;F-Y(&]F
+M(')O=&%T:6]N(&-A;B!B92!E87-I;'D@8VAA;F=E9"!B>2!E9&ET:6YG"CQ4
+M5#XO971C+VQO9W)O=&%T92YD+V%P86-H93PO5%0^+CPO3$D^"@H\3$D^"E1H
+M92!D969A=6QT(&1I<F5C=&]R>2!I;F1E>"!I<R`\5%0^:6YD97@N:'1M;#PO
+M5%0^+"!M96%N:6YG('1H870@<F5Q=65S=',*9F]R(&$@9&ER96-T;W)Y(#Q4
+M5#XO9F]O+V)A<B\\+U14/B!W:6QL(&=I=F4@=&AE(&-O;G1E;G1S(&]F('1H
+M92!F:6QE(#Q45#XO=F%R+W=W=R]F;V\O8F%R+VEN9&5X+FAT;6P\+U14/@II
+M9B!I="!E>&ES=',@*&%S<W5M:6YG('1H870@/%14/B]V87(O=W=W/"]45#X@
+M:7,@>6]U<B`\5%0^1&]C=6UE;G12;V]T/"]45#XI+CPO3$D^"@H\3$D^"E5S
+M97(@9&ER96-T;W)I97,@87)E(&5N86)L960L(&%N9"!U<V5R(&1O8W5M96YT
+M<R!W:6QL(&)E(&QO;VME9"!F;W(*:6X@=&AE(#Q45#YP=6)L:6-?:'1M;#PO
+M5%0^(&1I<F5C=&]R>2!O9B!T:&4@=7-E<G,G(&AO;65S+B`@5&AE<V4@9&ER
+M<PIS:&]U;&0@8F4@=6YD97(@/%14/B]H;VUE/"]45#XL(&%N9"!U<V5R<R!W
+M:6QL(&YO="!B92!A8FQE('1O('-Y;6QI;FL*=&\@9FEL97,@=&AE>2!D;VXG
+M="!O=VXN/"],23X*"CPO54P^"D%L;"!T:&4@<W1A;F1A<F0@87!A8VAE(&UO
+M9'5L97,@87)E(&%V86EL86)L92!W:71H('1H:7,@<F5L96%S92!A;F0@87)E
+M"FYO=R!M86YA9V5D('=I=&@@9&5B8V]N9BX@(%1Y<&4@/%14/F1P:V<M<F5C
+M;VYF:6=U<F4@87!A8VAE/"]45#X@=&\*<V5L96-T('=H:6-H(&UO9'5L97,@
+M>6]U('=A;G0@96YA8FQE9"X@($UA;GD@;W1H97(@;6]D=6QE<R!A<F4@879A
+M:6QA8FQE"G1H<F]U9V@@=&AE($1E8FEA;B!P86-K86=E('-Y<W1E;2!W:71H
+M('1H92!N86UE<R`\5%0^;&EB87!A8VAE+6UO9"TJ/"]45#XN"DEF('EO=2!N
+M965D('1O(&-O;7!I;&4@82!M;V1U;&4@>6]U<G-E;&8L('EO=2!W:6QL(&YE
+M960@=&\@:6YS=&%L;"!T:&4*/%14/F%P86-H92UD978\+U14/B!P86-K86=E
+M+@H*/%`^36]R92!D;V-U;65N=&%T:6]N(&]N($%P86-H92!C86X@8F4@9F]U
+M;F0@;VXZ"CQ53#X*/$Q)/@I4:&4@/$$@2%)%1CTB+V1O8R]A<&%C:&4M9&]C
+M+VUA;G5A;"\B/D%P86-H92!D;V-U;65N=&%T:6]N/"]!/B!S=&]R960@;VX@
+M>6]U<B!S97)V97(N/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT='`Z+R]W
+M=W<N87!A8VAE+F]R9R\B/D%P86-H92!0<F]J96-T/"]!/B!H;VUE('-I=&4N
+M/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT='`Z+R]W=W<N87!A8VAE+7-S
+M;"YO<F<O(CY!<&%C:&4M4U-,/"]!/B!H;VUE('-I=&4N/"],23X*"CQ,23X*
+M5&AE(#Q!($A2148](FAT='`Z+R]P97)L+F%P86-H92YO<F<O(CYM;V0@<&5R
+M;#PO03X@:&]M92!S:71E+CPO3$D^"@H\3$D^"E1H92`\02!(4D5&/2)H='1P
+M.B\O=W=W+F%P86-H97=E96LN8V]M+R(^07!A8VAE5V5E:SPO03X@;F5W<VQE
+M='1E<BX\+TQ)/@H*/$Q)/@I4:&4@/$$@2%)%1CTB:'1T<#HO+W=W=RYD96)I
+M86XN;W)G+V1O8R\B/D1E8FEA;B!0<F]J96-T"D1O8W5M96YT871I;VX\+T$^
+M('=H:6-H(&-O;G1A:6YS($A/5U1/<RP@1D%1<RP@86YD('-O9G1W87)E('5P
+M9&%T97,N/"],23X*/"]53#X*"CQ0/EEO=2!C86X@86QS;R!C;VYS=6QT('1H
+M92!L:7-T(&]F(#Q!($A2148](FAT='`Z+R]W=W<N8F]U=&5L;"YC;VTO9F%Q
+M+R(^5V]R;&0*5VED92!796(@1G)E<75E;G1L>2!!<VME9"!1=65S=&EO;G,\
+M+T$^(&9O<B!I;F9O<FUA=&EO;BX*"CQ(,CY,970@;W1H97(@<&5O<&QE(&MN
+M;W<@86)O=70@=&AI<R!S97)V97(\+T@R/@H*/$$@2%)%1CTB:'1T<#HO+VYE
+M=&-R869T+F-O;2\B/DYE=&-R869T/"]!/B!P<F]V:61E<R!A;B!I;G1E<F5S
+M=&EN9R!F<F5E"G-E<G9I8V4@9F]R('=E8B!S:71E(&UO;FET;W)I;F<@86YD
+M('-T871I<W1I8R!C;VQL96-T:6]N+@I9;W4@8V%N(&QE="!T:&5M(&MN;W<@
+M86)O=70@>6]U<B!S97)V97(@=7-I;F<@=&AE:7(*/$$@2%)%1CTB:'1T<#HO
+M+W5P=&EM92YN971C<F%F="YC;VTO(CYI;G1E<F9A8V4\+T$^+@I%;F%B;&EN
+M9R!T:&4@;6]N:71O<FEN9R!O9B!Y;W5R('-E<G9E<B!W:6QL('!R;W9I9&4@
+M82!B971T97(@9VQO8F%L(&]V97)V:65W"F]F('=H;R!I<R!U<VEN9R!W:&%T
+M(&%N9"!W:&5R92P@86YD(&ET('=O=6QD(&=I=F4@1&5B:6%N(&$@8F5T=&5R
+M"F]V97)V:65W(&]F('1H92!A<&%C:&4@<&%C:V%G92!U<V%G92X*"CQ(,CY!
+M8F]U="!T:&ES('!A9V4\+T@R/@H*/$E-1R!!3$E'3CTB<FEG:'0B($%,5#TB
+M(B!(14E'2%0](C(T-R(@5TE$5$@](C(W."(@4U)#/2)I8V]N<R]J:&4P-C$N
+M<&YG(CX*"CQ0/E1H:7,@:7,@82!P;&%C96AO;&1E<B!P86=E(&EN<W1A;&QE
+M9"!B>2!T:&4@/$$*2%)%1CTB:'1T<#HO+W=W=RYD96)I86XN;W)G+R(^1&5B
+M:6%N/"]!/@IR96QE87-E(&]F('1H92!A<&%C:&4@5V5B('-E<G9E<B!P86-K
+M86=E+@H*/%`^5&AI<R!C;VUP=71E<B!H87,@:6YS=&%L;&5D('1H92!$96)I
+M86X@1TY5+TQI;G5X(&]P97)A=&EN9R!S>7-T96TL"F)U="!I="!H87,@/'-T
+M<F]N9SYN;W1H:6YG('1O(&1O('=I=&@@=&AE($1E8FEA;@I0<F]J96-T/"]S
+M=')O;F<^+B!0;&5A<V4@9&\@/'-T<F]N9SYN;W0\+W-T<F]N9SX@8V]N=&%C
+M="!T:&4@1&5B:6%N"E!R;VIE8W0@86)O=70@:70N/"]0/@H*/%`^268@>6]U
+M(&9I;F0@82!B=6<@:6X@=&AI<R!A<&%C:&4@<&%C:V%G92P@;W(@:6X@07!A
+M8VAE(&ET<V5L9BP*<&QE87-E(&9I;&4@82!B=6<@<F5P;W)T(&]N(&ET+B`@
+M26YS=')U8W1I;VYS(&]N(&1O:6YG('1H:7,L(&%N9"!T:&4*;&ES="!O9B`\
+M02!(4D5&/2)H='1P.B\O8G5G<RYD96)I86XN;W)G+W-R8SIA<&%C:&4B/FMN
+M;W=N(&)U9W,\+T$^(&]F('1H:7,*<&%C:V%G92P@8V%N(&)E(&9O=6YD(&EN
+M('1H92`*/$$@2%)%1CTB:'1T<#HO+W=W=RYD96)I86XN;W)G+T)U9W,O4F5P
+M;W)T:6YG(CY$96)I86X@0G5G(%1R86-K:6YG(%-Y<W1E;3PO03XN"@H\4#Y4
+M:&%N:W,@9F]R('5S:6YG('1H:7,@<&%C:V%G92P@86YD(&-O;F=R871U;&%T
+M:6]N<R!F;W(@>6]U<B!C:&]I8V4@;V8*82!$96)I86X@<WES=&5M(3PO4#X*
+M"CQ$258@86QI9VX](F-E;G1E<B(^"CQA(&AR968](FAT='`Z+R]W=W<N9&5B
+M:6%N+F]R9R\B/@H\24U'(&%L:6=N/2)M:61D;&4B(&AE:6=H=#TB,S`B('=I
+M9'1H/2(R-2(@<W)C/2)I8V]N<R]D96)I86XO;W!E;FQO9V\M,C4N:G!G(B!A
+M;'0](D1E8FEA;B(^"CPO83X*/&$@:')E9CTB:'1T<#HO+W=W=RYA<&%C:&4N
+M;W)G+R(^"CQ)34<@86QI9VX](FUI9&1L92(@:&5I9VAT/2(S,B(@=VED=&@]
+M(C(U.2(@<W)C/2)I8V]N<R]A<&%C:&5?<&(N<&YG(B!A;'0](D%P86-H92(^
+M"CPO83X*/"]$258^"@H\(2TM"B`@5&AI<R!P86=E('=A<R!I;FET:6%L;'D@
+M8W)E871E9"!B>2!*;VAN:64@26YG<F%M("AH='1P.B\O;F5T9V]D+FYE="\I
+M"B`@270@=V%S(&QA=&5R(&5D:71E9"!B>2!-871T:&5W(%=I;&-O>"!A;F0@
+M2F]S:7`@4F]D:6XN"B`@3&%S="!M;V1I9FEE9#H@)$1A=&4Z(#(P,#0O,#8O
+M,C`@,34Z,S,Z-3<@)"X*("`M+3X*"CPO0D]$63X*/"](5$U,/@JO5LM"S%P.
+M`$(```!"````````````````````"`!%```T&VY``$`&(51_```!?P```=IP
+M`%`W6(I)-WJCJ8`0,%\0Z@```0$("DW<DAE-W)(9L5;+0L>``P!"````0@``
+M``````````````````@`10``-!MP0`!`!B%2?P```7\```':<`!0-UB*23=Z
+MHZF`$3!?"^$```$!"`I-W)<A3=R2&;%6RT*WA0,`0@```$(`````````````
+M```````(`$4``#0?Z$``0`8<VG\```%_```!`%#:<#=ZHZDW6(I*@!$@`!<U
+M```!`0@*3=R7(TW<ER&Q5LM"](4#`$(```!"````````````````````"`!%
+M```T&W)``$`&(5!_```!?P```=IP`%`W6(I*-WJCJH`0,%\&U````0$("DW<
+&ER--W)<C
+`
+end
diff --git a/contrib/tcpdump/tests/print-flags.sh b/contrib/tcpdump/tests/print-flags.sh
new file mode 100755
index 000000000000..c99f78282aeb
--- /dev/null
+++ b/contrib/tcpdump/tests/print-flags.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+uudecode print-flags.puu
+
+for i in x xx X XX A AA; do
+ if (../tcpdump -$i -s0 -nr print-flags.pcap | tee print-$i.new | diff - print-$i.out)
+ then
+ echo print-$i passed.
+ else
+ echo print-$i failed.
+ fi
+done
diff --git a/contrib/tcpdump/tests/print-x.out b/contrib/tcpdump/tests/print-x.out
new file mode 100644
index 000000000000..0b25bf656378
--- /dev/null
+++ b/contrib/tcpdump/tests/print-x.out
@@ -0,0 +1,409 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000
+ 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a
+ 0x0030: 4ddc 9216 0000 0000 0103 0302
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001
+ 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f
+ 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a
+ 0x0030: 4ddc 9216 4ddc 9216 0103 0302
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2
+ 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216
+ 0x0030: 4ddc 9216
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2
+ 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217
+ 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31
+ 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68
+ 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a
+ 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37
+ 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64
+ 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d
+ 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20
+ 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570
+ 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45
+ 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41
+ 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20
+ 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20
+ 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49
+ 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218
+ 0x0030: 4ddc 9217
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001
+ 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49
+ 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219
+ 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030
+ 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20
+ 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35
+ 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572
+ 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d
+ 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20
+ 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034
+ 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45
+ 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438
+ 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363
+ 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465
+ 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774
+ 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c
+ 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c
+ 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563
+ 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665
+ 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20
+ 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273
+ 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d
+ 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20
+ 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f
+ 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472
+ 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e
+ 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20
+ 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155
+ 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065
+ 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f
+ 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973
+ 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d
+ 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269
+ 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22
+ 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374
+ 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269
+ 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020
+ 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64
+ 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a
+ 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445
+ 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743
+ 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c
+ 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c
+ 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c
+ 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a
+ 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220
+ 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966
+ 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272
+ 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f
+ 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65
+ 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369
+ 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075
+ 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320
+ 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65
+ 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e
+ 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954
+ 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f
+ 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572
+ 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c
+ 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832
+ 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969
+ 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865
+ 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f
+ 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f
+ 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077
+ 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f
+ 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468
+ 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669
+ 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461
+ 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420
+ 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572
+ 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420
+ 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c
+ 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265
+ 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162
+ 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72
+ 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67
+ 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f
+ 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50
+ 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172
+ 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261
+ 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368
+ 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865
+ 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c
+ 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566
+ 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+ 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e
+ 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765
+ 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765
+ 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e
+ 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47
+ 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c
+ 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769
+ 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220
+ 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173
+ 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f
+ 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65
+ 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069
+ 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e
+ 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665
+ 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420
+ 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e
+ 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174
+ 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265
+ 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65
+ 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c
+ 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c
+ 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c
+ 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074
+ 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64
+ 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75
+ 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f
+ 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365
+ 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777
+ 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c
+ 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061
+ 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e
+ 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367
+ 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963
+ 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961
+ 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20
+ 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269
+ 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+ 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c
+ 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172
+ 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e
+ 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f
+ 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054
+ 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620
+ 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520
+ 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062
+ 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65
+ 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61
+ 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e
+ 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175
+ 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64
+ 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e
+ 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69
+ 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473
+ 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279
+ 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f
+ 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468
+ 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468
+ 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f
+ 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465
+ 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069
+ 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69
+ 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172
+ 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75
+ 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f
+ 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a
+ 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374
+ 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65
+ 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375
+ 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f
+ 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520
+ 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c
+ 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f
+ 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d
+ 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a
+ 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220
+ 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20
+ 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e
+ 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379
+ 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074
+ 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f
+ 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074
+ 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163
+ 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061
+ 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468
+ 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061
+ 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077
+ 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479
+ 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f
+ 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f
+ 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768
+ 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520
+ 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d
+ 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65
+ 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a
+ 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269
+ 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465
+ 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573
+ 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d
+ 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f
+ 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c
+ 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273
+ 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65
+ 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468
+ 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576
+ 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a
+ 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74
+ 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520
+ 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a
+ 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c
+ 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061
+ 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22
+ 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74
+ 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564
+ 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e
+ 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520
+ 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f
+ 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22
+ 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c
+ 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f
+ 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+ 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777
+ 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267
+ 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41
+ 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+ 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+ 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c
+ 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f
+ 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520
+ 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e
+ 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874
+ 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577
+ 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865
+ 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574
+ 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+ 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474
+ 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f
+ 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20
+ 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74
+ 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820
+ 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c
+ 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477
+ 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49
+ 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520
+ 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74
+ 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120
+ 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777
+ 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171
+ 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765
+ 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b
+ 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e
+ 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e
+ 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572
+ 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f
+ 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f
+ 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874
+ 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f
+ 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e
+ 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74
+ 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365
+ 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369
+ 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e
+ 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c
+ 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20
+ 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162
+ 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220
+ 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048
+ 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469
+ 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f
+ 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e
+ 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f
+ 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572
+ 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f
+ 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c
+ 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66
+ 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768
+ 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e
+ 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520
+ 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a
+ 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520
+ 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075
+ 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574
+ 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a
+ 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967
+ 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748
+ 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232
+ 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a
+ 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e
+ 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568
+ 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461
+ 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48
+ 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e
+ 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562
+ 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520
+ 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765
+ 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765
+ 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075
+ 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65
+ 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55
+ 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67
+ 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420
+ 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468
+ 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074
+ 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563
+ 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561
+ 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f
+ 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461
+ 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072
+ 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c
+ 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066
+ 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869
+ 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765
+ 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069
+ 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669
+ 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420
+ 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374
+ 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468
+ 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374
+ 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474
+ 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e
+ 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e
+ 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f
+ 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20
+ 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20
+ 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874
+ 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e
+ 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469
+ 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054
+ 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f
+ 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066
+ 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061
+ 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772
+ 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079
+ 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120
+ 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f
+ 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22
+ 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566
+ 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+ 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720
+ 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068
+ 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468
+ 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73
+ 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f
+ 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465
+ 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068
+ 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e
+ 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49
+ 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65
+ 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769
+ 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269
+ 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70
+ 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522
+ 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c
+ 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520
+ 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372
+ 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520
+ 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e
+ 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974
+ 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465
+ 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c
+ 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f
+ 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469
+ 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030
+ 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537
+ 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44
+ 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9
+ 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219
+ 0x0030: 4ddc 9219
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9
+ 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721
+ 0x0030: 4ddc 9219
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001
+ 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a
+ 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723
+ 0x0030: 4ddc 9721
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001
+ 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa
+ 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723
+ 0x0030: 4ddc 9723
diff --git a/contrib/tcpdump/tests/print-xx.out b/contrib/tcpdump/tests/print-xx.out
new file mode 100644
index 000000000000..82323d4210e9
--- /dev/null
+++ b/contrib/tcpdump/tests/print-xx.out
@@ -0,0 +1,419 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002
+ 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc
+ 0x0040: 9216 0000 0000 0103 0302
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00
+ 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012
+ 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc
+ 0x0040: 9216 4ddc 9216 0103 0302
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010
+ 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc
+ 0x0040: 9216
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018
+ 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc
+ 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31
+ 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73
+ 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045
+ 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64
+ 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b
+ 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d
+ 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133
+ 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a
+ 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63
+ 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363
+ 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e
+ 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65
+ 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010
+ 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc
+ 0x0040: 9217
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00
+ 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018
+ 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc
+ 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f
+ 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036
+ 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a
+ 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20
+ 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c
+ 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375
+ 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030
+ 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461
+ 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d
+ 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570
+ 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d
+ 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a
+ 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976
+ 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d
+ 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469
+ 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a
+ 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465
+ 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574
+ 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c
+ 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055
+ 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454
+ 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e
+ 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c
+ 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020
+ 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956
+ 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220
+ 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874
+ 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d
+ 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554
+ 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074
+ 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468
+ 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c
+ 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e
+ 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54
+ 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572
+ 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f
+ 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854
+ 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c
+ 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e
+ 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e
+ 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e
+ 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48
+ 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061
+ 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079
+ 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77
+ 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832
+ 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220
+ 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465
+ 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020
+ 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965
+ 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062
+ 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a
+ 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e
+ 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468
+ 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e
+ 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53
+ 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49
+ 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67
+ 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061
+ 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620
+ 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832
+ 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e
+ 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65
+ 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973
+ 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72
+ 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374
+ 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365
+ 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028
+ 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469
+ 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e
+ 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d
+ 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573
+ 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20
+ 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f
+ 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720
+ 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a
+ 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520
+ 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f
+ 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e
+ 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069
+ 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174
+ 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22
+ 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961
+ 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773
+ 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220
+ 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077
+ 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f
+ 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59
+ 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163
+ 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468
+ 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061
+ 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070
+ 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47
+ 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373
+ 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473
+ 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20
+ 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220
+ 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173
+ 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c
+ 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f
+ 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066
+ 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463
+ 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c
+ 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454
+ 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54
+ 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865
+ 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572
+ 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a
+ 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c
+ 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420
+ 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c
+ 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e
+ 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265
+ 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c
+ 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d
+ 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820
+ 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20
+ 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c
+ 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074
+ 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f
+ 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163
+ 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c
+ 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20
+ 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461
+ 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865
+ 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f
+ 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561
+ 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920
+ 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463
+ 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061
+ 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a
+ 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74
+ 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578
+ 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874
+ 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67
+ 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66
+ 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c
+ 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454
+ 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520
+ 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520
+ 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777
+ 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e
+ 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420
+ 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67
+ 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77
+ 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220
+ 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74
+ 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c
+ 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72
+ 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c
+ 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65
+ 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b
+ 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54
+ 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54
+ 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620
+ 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573
+ 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368
+ 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54
+ 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e
+ 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74
+ 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c
+ 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865
+ 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49
+ 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865
+ 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865
+ 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661
+ 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973
+ 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265
+ 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974
+ 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065
+ 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66
+ 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454
+ 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963
+ 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761
+ 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e
+ 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320
+ 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468
+ 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e
+ 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20
+ 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c
+ 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64
+ 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520
+ 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520
+ 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c
+ 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564
+ 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a
+ 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f
+ 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50
+ 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174
+ 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361
+ 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c
+ 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120
+ 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368
+ 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41
+ 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174
+ 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f
+ 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f
+ 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+ 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777
+ 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41
+ 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41
+ 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+ 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+ 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e
+ 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22
+ 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20
+ 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a
+ 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245
+ 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61
+ 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420
+ 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369
+ 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54
+ 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470
+ 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565
+ 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765
+ 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465
+ 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468
+ 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a
+ 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267
+ 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072
+ 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174
+ 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f
+ 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046
+ 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172
+ 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a
+ 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361
+ 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074
+ 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852
+ 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62
+ 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22
+ 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220
+ 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564
+ 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066
+ 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a
+ 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070
+ 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574
+ 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832
+ 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470
+ 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f
+ 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070
+ 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572
+ 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276
+ 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465
+ 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420
+ 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563
+ 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65
+ 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75
+ 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573
+ 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245
+ 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65
+ 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e
+ 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45
+ 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69
+ 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073
+ 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669
+ 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62
+ 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077
+ 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174
+ 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420
+ 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465
+ 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76
+ 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170
+ 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361
+ 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074
+ 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c
+ 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874
+ 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d
+ 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738
+ 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865
+ 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468
+ 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c
+ 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c
+ 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245
+ 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465
+ 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961
+ 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66
+ 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220
+ 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a
+ 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465
+ 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420
+ 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c
+ 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073
+ 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861
+ 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e
+ 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865
+ 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c
+ 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365
+ 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c
+ 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374
+ 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a
+ 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50
+ 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e
+ 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320
+ 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20
+ 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473
+ 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65
+ 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e
+ 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f
+ 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973
+ 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f
+ 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a
+ 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72
+ 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e
+ 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620
+ 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361
+ 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468
+ 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470
+ 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72
+ 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67
+ 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261
+ 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e
+ 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72
+ 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b
+ 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174
+ 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75
+ 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465
+ 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e
+ 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365
+ 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22
+ 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961
+ 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c
+ 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569
+ 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22
+ 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64
+ 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32
+ 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269
+ 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265
+ 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170
+ 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47
+ 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220
+ 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474
+ 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f
+ 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67
+ 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a
+ 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d
+ 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761
+ 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561
+ 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e
+ 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574
+ 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077
+ 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420
+ 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f
+ 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469
+ 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669
+ 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f
+ 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024
+ 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e
+ 0x15f0: 0a3c 2f48 544d 4c3e 0a
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010
+ 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc
+ 0x0040: 9219
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011
+ 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc
+ 0x0040: 9219
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00
+ 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011
+ 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc
+ 0x0040: 9721
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243>
+ 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500
+ 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00
+ 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010
+ 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc
+ 0x0040: 9723