Import of tcpdump v3.9.4

This commit is contained in:
Sam Leffler 2006-09-04 20:04:42 +00:00
parent 06885fed80
commit 2ebc47db5b
114 changed files with 6746 additions and 598 deletions

View File

@ -1,8 +1,27 @@
$Header: /tcpdump/master/tcpdump/CHANGES,v 1.87.2.1 2005/07/05 21:08:01 mcr Exp $ $Header: /tcpdump/master/tcpdump/CHANGES,v 1.87.2.11 2005/09/20 06:05:34 guy Exp $
Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.x tcpdump 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.
Option to chroot() when dropping privs 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, Fixes for compiling on nearly every platform,
including improved 64bit support including improved 64bit support
Many new testcases 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: Decoders & DLT Changes, Updates and New:
AES ESP support AES ESP support
Juniper ATM, FRF.15, FRF.16, PPPoE, Juniper ATM, FRF.15, FRF.16, PPPoE,
ML-FR, ML-PIC, ML-PPP, PL-PPP, LS-PIC ML-FR, ML-PIC, ML-PPP, PL-PPP, LS-PIC
GGSN,ES,MONITOR,SERVICES GGSN,ES,MONITOR,SERVICES
L2VPN L2VPN
Axent Raptor/Symantec Firewall Axent Raptor/Symantec Firewall
@ -27,6 +46,7 @@ Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.x tcpdump
BACnet MS/TP BACnet MS/TP
SS7 SS7
LDP over TCP LDP over TCP
LACP, MARKER as per 802.3ad
PGM (RFC 3208) PGM (RFC 3208)
LSP-PING LSP-PING
G.7041/Y.1303 Generic Framing Procedure 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 changed syntax of -E argument so that multiple SAs can be decrypted
fixes for Digital Unix headers and Documentation fixes for Digital Unix headers and Documentation
__attribute__ fixes __attribute__ fixes
CDP changes from Terry Kennedy <terry@tmk.com>. CDP changes from Terry Kennedy <terry@tmk.com>.
IPv6 mobility updates from Kazushi Sugyo <sugyo@pb.jp.nec.com> IPv6 mobility updates from Kazushi Sugyo <sugyo@pb.jp.nec.com>
Fixes for ASN.1 decoder for 2.100.3 forms. Fixes for ASN.1 decoder for 2.100.3 forms.
Added a count of packets received and processed to clarify numbers. Added a count of packets received and processed to clarify numbers.
Incorporated WinDUMP patches for Win32 builds. Incorporated WinDUMP patches for Win32 builds.
PPPoE payload length headers. PPPoE payload length headers.
Fixes for HP C compiler builds. Fixes for HP C compiler builds.
Use new pcap_breakloop() and pcap_findalldevs() if we can. 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 802.11 decoding.
Fixes to PIM decoder. Fixes to PIM decoder.
SuperH is a CPU that can't handle unaligned access. Many fixes for SuperH is a CPU that can't handle unaligned access. Many fixes for
unaligned access work. unaligned access work.
Fixes to Frame-Relay decoder for Q.933/922 frames. Fixes to Frame-Relay decoder for Q.933/922 frames.
Clarified when Solaris can do captures as non-root. 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 -U flag. -flush stdout after every packet
New -A flag -print ascii only 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 more verbosity for tftp decoder
mDNS decoder mDNS decoder
new BFD 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. RFC 3561 AODV support.
UDP/TCP pseudo-checksum properly for source-route options. UDP/TCP pseudo-checksum properly for source-route options.
sanitized all files to modified BSD license 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. fixes for DECnet support.
Support RFC 2684 bridging of Ethernet, 802.5 Token Ring, and FDDI. Support RFC 2684 bridging of Ethernet, 802.5 Token Ring, and FDDI.
RFC 2684 encapsulation of BPDUs. 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. Better OSI/802.2 support on Linux.
IEEE 802.11 support, from clenahan@fortresstech.com, achirica@ttd.net. IEEE 802.11 support, from clenahan@fortresstech.com, achirica@ttd.net.
LLC SAP support for FDDI/token ring/RFC-1483 style ATM 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. improvements to SNAP demux.
Changes to "any" interface documentation. Changes to "any" interface documentation.
Documentation on pcap_stats() counters. Documentation on pcap_stats() counters.
Fix a memory leak found by Miklos Szeredi - pcap_ether_aton(). Fix a memory leak found by Miklos Szeredi - pcap_ether_aton().
Added MPLS encapsulation decoding per RFC3032. Added MPLS encapsulation decoding per RFC3032.
DNS dissector handles TKEY, TSIG and IXFR. DNS dissector handles TKEY, TSIG and IXFR.
adaptive SLIP interface patch from Igor Khristophorov <igor@atdot.org> adaptive SLIP interface patch from Igor Khristophorov <igor@atdot.org>
SMB printing has much improved bounds checks SMB printing has much improved bounds checks
OUI 0x0000f8 decoded as encapsulated ethernet for Cisco-custom bridging OUI 0x0000f8 decoded as encapsulated ethernet for Cisco-custom bridging
Zephyr support, from Nickolai Zeldovich <kolya@MIT.EDU>. 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. IPX socket 0x85be is for Cisco EIGRP over IPX.
Improvements to fragmented ESP handling. Improvements to fragmented ESP handling.
SCTP support from Armando L. Caro Jr. <acaro@mail.eecis.udel.edu> 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. Added a "netbeui" keyword, which selects NetBEUI packets.
IPv6 ND improvements, MobileIP dissector, 2292bis-02 for RA option. IPv6 ND improvements, MobileIP dissector, 2292bis-02 for RA option.
Handle ARPHDR_HDLC from Marcus Felipe Pereira <marcus@task.com.br>. 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. Better Linux libc5 compat.
BIND9 lwres dissector added. BIND9 lwres dissector added.
MIPS and SPARC get strict alignment macros (affects print-bgp.c) 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. cjclark@alum.mit.edu: print the IP proto for non-initial fragments.
LLC frames with a DSAP and LSAP of 0xe0 are IPX frames. 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. 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 captures on the "any" device won't be done in promiscuous mode
Token Ring support on DLPI - Onno van der Linden <onno@simplex.nl> Token Ring support on DLPI - Onno van der Linden <onno@simplex.nl>
ARCNet support, from NetBSD. ARCNet support, from NetBSD.
HSRP dissector, from Julian Cowley <julian@lava.net>. HSRP dissector, from Julian Cowley <julian@lava.net>.
Handle (GRE-encapsulated) PPTP 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. 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, Added dissector support for: ISOCLNS, Token Ring, IGMPv3, bxxp,
timed, vrrp, radius, chdlc, cnfp, cdp, IEEE802.1d, raw-AppleTalk 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. HP-UX 11.0 -- find the right dlpi device.
Solaris 8 - IPv6 works Solaris 8 - IPv6 works
Linux - Added support for an "any" device to capture on all interfaces Linux - Added support for an "any" device to capture on all interfaces
Security fixes: buffer overrun audit done. Strcpy replaced with Security fixes: buffer overrun audit done. Strcpy replaced with
strlcpy, sprintf replaced with snprintf. strlcpy, sprintf replaced with snprintf.
Look for lex problems, and warn about them. 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 - Don't checksum ip header if we don't have all of it. Thanks to John
Hawkinson (jhawk@mit.edu). Hawkinson (jhawk@mit.edu).
- Print out hostnames if possible in egp printer. Thanks to Jeffrey - Print out hostnames if possible in egp printer. Thanks to Jeffrey
Honig (jhc@bsdi.com) Honig (jhc@bsdi.com)

View File

@ -20,6 +20,7 @@ Additional people who have contributed patches:
Andy Heffernan <ahh@juniper.net> Andy Heffernan <ahh@juniper.net>
Arkadiusz Miskiewicz <misiek@pld.org.pl> Arkadiusz Miskiewicz <misiek@pld.org.pl>
Armando L. Caro Jr. <acaro@mail.eecis.udel.edu> Armando L. Caro Jr. <acaro@mail.eecis.udel.edu>
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Atsushi Onoe <onoe@netbsd.org> Atsushi Onoe <onoe@netbsd.org>
Ben Smithurst <ben@scientia.demon.co.uk> Ben Smithurst <ben@scientia.demon.co.uk>
Brent L. Bates <blbates@vigyan.com> Brent L. Bates <blbates@vigyan.com>
@ -36,6 +37,7 @@ Additional people who have contributed patches:
Daniel Hagerty <hag@ai.mit.edu> Daniel Hagerty <hag@ai.mit.edu>
Darren Reed <darrenr@reed.wattle.id.au> Darren Reed <darrenr@reed.wattle.id.au>
David Binderman <d.binderman@virgin.net> David Binderman <d.binderman@virgin.net>
David Smith <dsmith@redhat.com>
David Young <dyoung@ojctech.com> David Young <dyoung@ojctech.com>
Eddie Kohler <xexd@sourceforge.net> Eddie Kohler <xexd@sourceforge.net>
Francis Dupont <Francis.Dupont@enst-bretagne.fr> Francis Dupont <Francis.Dupont@enst-bretagne.fr>
@ -53,6 +55,7 @@ Additional people who have contributed patches:
Harry Raaymakers <harryr@connect.com.au> Harry Raaymakers <harryr@connect.com.au>
Heinz-Ado Arnolds <Ado.Arnolds@dhm-systems.de> Heinz-Ado Arnolds <Ado.Arnolds@dhm-systems.de>
Hendrik Scholz <hendrik@scholz.net> Hendrik Scholz <hendrik@scholz.net>
Ian McDonald <imcdnzl@gmail.com>
Jakob Schlyter <jakob@openbsd.org> Jakob Schlyter <jakob@openbsd.org>
Jan Oravec <wsx@wsx6.net> Jan Oravec <wsx@wsx6.net>
Jason R. Thorpe <thorpej@netbsd.org> Jason R. Thorpe <thorpej@netbsd.org>
@ -85,6 +88,7 @@ Additional people who have contributed patches:
Martin Husemann <martin@netbsd.org> Martin Husemann <martin@netbsd.org>
Michael Madore <mmadore@turbolinux.com> Michael Madore <mmadore@turbolinux.com>
Michael Shalayeff <mickey@openbsd.org> Michael Shalayeff <mickey@openbsd.org>
Michael Shields <shields@msrl.com>
Michael T. Stolarchuk <mts@off.to> Michael T. Stolarchuk <mts@off.to>
Michele "mydecay" Marchetto <smarchetto1@tin.it> Michele "mydecay" Marchetto <smarchetto1@tin.it>
Monroe Williams <monroe@pobox.com> Monroe Williams <monroe@pobox.com>
@ -127,6 +131,7 @@ Additional people who have contributed patches:
Uns Lider <unslider@miranda.org> Uns Lider <unslider@miranda.org>
Wilbert de Graaf <wilbertdg@hetnet.nl> Wilbert de Graaf <wilbertdg@hetnet.nl>
Yen Yen Lim Yen Yen Lim
Yoshifumi Nishida
The original LBL crew: The original LBL crew:
Steve McCanne Steve McCanne

View File

@ -29,6 +29,7 @@ configure
configure.in configure.in
cpack.c cpack.c
cpack.h cpack.h
dccp.h
decnet.h decnet.h
decode_prefix.h decode_prefix.h
enc.h enc.h
@ -125,6 +126,7 @@ print-cdp.c
print-chdlc.c print-chdlc.c
print-cip.c print-cip.c
print-cnfp.c print-cnfp.c
print-dccp.c
print-decnet.c print-decnet.c
print-dhcp6.c print-dhcp6.c
print-domain.c print-domain.c
@ -188,6 +190,7 @@ print-sctp.c
print-sip.c print-sip.c
print-sl.c print-sl.c
print-sll.c print-sll.c
print-slow.c
print-smb.c print-smb.c
print-snmp.c print-snmp.c
print-stp.c print-stp.c

View File

@ -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 If you have not built libpcap, do so first. See the README
file in this directory for the ftp location. file in this directory for the ftp location.
@ -71,6 +71,7 @@ config.h.in - autoconf input
config.sub - autoconf support config.sub - autoconf support
configure - configure script (run this first) configure - configure script (run this first)
configure.in - configure script source configure.in - configure script source
dccp.h - DCCP definitions
decnet.h - DECnet definitions decnet.h - DECnet definitions
decode_prefix.h - Declarations of "decode_prefix{4,6}()" decode_prefix.h - Declarations of "decode_prefix{4,6}()"
enc.h - OpenBSD IPsec encapsulation BPF layer definitions 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-chdlc.c - Cisco HDLC printer routines
print-cip.c - Classical-IP over ATM routines print-cip.c - Classical-IP over ATM routines
print-cnfp.c - Cisco NetFlow printer routines print-cnfp.c - Cisco NetFlow printer routines
print-dccp.c - DCCP printer routines
print-decnet.c - DECnet printer routines print-decnet.c - DECnet printer routines
print-dhcp6.c - IPv6 DHCP printer routines print-dhcp6.c - IPv6 DHCP printer routines
print-domain.c - Domain Name System 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-sip.c - SIP printer routines
print-sl.c - Compressed Serial Line Internet Protocol printer routines print-sl.c - Compressed Serial Line Internet Protocol printer routines
print-sll.c - Linux "cooked" capture 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-smb.c - SMB/CIFS printer routines
print-snmp.c - Simple Network Management Protocol printer routines print-snmp.c - Simple Network Management Protocol printer routines
print-stp.c - IEEE 802.1d spanning tree protocol printer routines print-stp.c - IEEE 802.1d spanning tree protocol printer routines

View File

@ -17,7 +17,7 @@
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # 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) # 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-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-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-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-domain.c print-dvmrp.c print-enc.c print-egp.c \
print-eap.c print-eigrp.c\ print-eap.c print-eigrp.c\
print-esp.c print-ether.c print-fddi.c print-fr.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-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-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-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-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-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 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 # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
# hack the extra indirection # hack the extra indirection
OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) $(LOCALSRC:.c=.o) $(LIBOBJS) 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 \ 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 \ ipx.h llc.h machdep.h mib.h nfsfh.h nfsv2.h ntp.h ospf.h \
setsignal.h \ setsignal.h \

View File

@ -1 +1 @@
3.9.1 3.9.4

View File

@ -23,7 +23,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -88,7 +88,6 @@ struct hnamemem tporttable[HASHNAMESIZE];
struct hnamemem uporttable[HASHNAMESIZE]; struct hnamemem uporttable[HASHNAMESIZE];
struct hnamemem eprototable[HASHNAMESIZE]; struct hnamemem eprototable[HASHNAMESIZE];
struct hnamemem dnaddrtable[HASHNAMESIZE]; struct hnamemem dnaddrtable[HASHNAMESIZE];
struct hnamemem llcsaptable[HASHNAMESIZE];
struct hnamemem ipxsaptable[HASHNAMESIZE]; struct hnamemem ipxsaptable[HASHNAMESIZE];
#if defined(INET6) && defined(WIN32) #if defined(INET6) && defined(WIN32)
@ -461,9 +460,10 @@ lookup_protoid(const u_char *pi)
const char * const char *
etheraddr_string(register const u_char *ep) etheraddr_string(register const u_char *ep)
{ {
register u_int i, oui; register int i;
register char *cp; register char *cp;
register struct enamemem *tp; register struct enamemem *tp;
int oui;
char buf[BUFSIZE]; char buf[BUFSIZE];
tp = lookup_emem(ep); 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 *" * We don't cast it to "const struct ether_addr *"
* because some systems don't modify the Ethernet * because some systems fail to declare the second
* address but fail to declare the second argument * argument as a "const" pointer, even though they
* as a "const" pointer. * don't modify what it points to.
*/ */
if (ether_ntohost(buf2, (struct ether_addr *)ep) == 0) { if (ether_ntohost(buf2, (struct ether_addr *)ep) == 0) {
tp->e_name = strdup(buf2); tp->e_name = strdup(buf2);
@ -486,20 +486,20 @@ etheraddr_string(register const u_char *ep)
} }
#endif #endif
cp = buf; cp = buf;
oui=EXTRACT_24BITS(ep); oui = EXTRACT_24BITS(ep);
*cp++ = hex[*ep >> 4 ]; *cp++ = hex[*ep >> 4 ];
*cp++ = hex[*ep++ & 0xf]; *cp++ = hex[*ep++ & 0xf];
for (i = 5; (int)--i >= 0;) { for (i = 5; --i >= 0;) {
*cp++ = ':'; *cp++ = ':';
*cp++ = hex[*ep >> 4 ]; *cp++ = hex[*ep >> 4 ];
*cp++ = hex[*ep++ & 0xf]; *cp++ = hex[*ep++ & 0xf];
} }
if (!nflag) { if (!nflag) {
snprintf(cp,BUFSIZE," (oui %s)", snprintf(cp, BUFSIZE - (2 + 5*3), " (oui %s)",
tok2str(oui_values,"Unknown",oui)); tok2str(oui_values, "Unknown", oui));
} else } else
*cp = '\0'; *cp = '\0';
tp->e_name = strdup(buf); tp->e_name = strdup(buf);
return (tp->e_name); return (tp->e_name);
} }
@ -585,25 +585,6 @@ protoid_string(register const u_char *pi)
return (tp->p_name); 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 #define ISONSAP_MAX_LENGTH 20
const char * const char *
isonsap_string(const u_char *nsap, register u_int nsap_length) 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[] = { static struct tok ipxsap_db[] = {
{ 0x0000, "Unknown" }, { 0x0000, "Unknown" },
{ 0x0001, "User" }, { 0x0001, "User" },
@ -1162,7 +1109,6 @@ init_addrtoname(u_int32_t localnet, u_int32_t mask)
init_etherarray(); init_etherarray();
init_servarray(); init_servarray();
init_eprotoarray(); init_eprotoarray();
init_llcsaparray();
init_protoidarray(); init_protoidarray();
init_ipxsaparray(); init_ipxsaparray();
} }

View File

@ -1,5 +1,5 @@
#! /bin/sh #! /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. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.57. # Generated by GNU Autoconf 2.57.
# #
@ -11494,7 +11494,15 @@ echo $ECHO_N "checking for SSLeay... $ECHO_C" >&6
ac_cv_ssleay_path=no ac_cv_ssleay_path=no
incdir=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 for dir in $Xprefix /usr/${host_alias} /usr /usr/local /usr/local/ssl /usr/pkg; do
# #

View File

@ -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
dnl Copyright (c) 1994, 1995, 1996, 1997 dnl Copyright (c) 1994, 1995, 1996, 1997
dnl The Regents of the University of California. All rights reserved. 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 Process this file with autoconf to produce a configure script.
dnl dnl
AC_REVISION($Revision: 1.188.2.6 $) AC_REVISION($Revision: 1.188.2.7 $)
AC_PREREQ(2.50) AC_PREREQ(2.50)
AC_INIT(tcpdump.c) AC_INIT(tcpdump.c)
@ -908,7 +908,15 @@ AC_MSG_CHECKING(for SSLeay)
ac_cv_ssleay_path=no ac_cv_ssleay_path=no
incdir=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 for dir in $Xprefix /usr/${host_alias} /usr /usr/local /usr/local/ssl /usr/pkg; do
# #

137
contrib/tcpdump/dccp.h Normal file
View File

@ -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__ */

View File

@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * 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 #ifndef ETHERTYPE_PPP
#define ETHERTYPE_PPP 0x880b #define ETHERTYPE_PPP 0x880b
#endif #endif
#ifndef ETHERTYPE_SLOW
#define ETHERTYPE_SLOW 0x8809
#endif
#ifndef ETHERTYPE_MPLS #ifndef ETHERTYPE_MPLS
#define ETHERTYPE_MPLS 0x8847 #define ETHERTYPE_MPLS 0x8847
#endif #endif

View File

@ -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 $ */ /* $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 $ */ /* $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 MLD6_LISTENER_DONE 132 /* multicast listener done */
#define ND_ROUTER_SOLICIT 133 /* router solicitation */ #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_SOLICIT 135 /* neighbor solicitation */
#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisment */ #define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisement */
#define ND_REDIRECT 137 /* redirect */ #define ND_REDIRECT 137 /* redirect */
#define ICMP6_ROUTER_RENUMBERING 138 /* router renumbering */ #define ICMP6_ROUTER_RENUMBERING 138 /* router renumbering */

View File

@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * 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 #ifndef tcpdump_interface_h
@ -155,7 +155,6 @@ extern void safeputchar(int);
extern void safeputs(const char *); extern void safeputs(const char *);
extern const char *isonsap_string(const u_char *, register u_int); 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 *protoid_string(const u_char *);
extern const char *ipxsap_string(u_short); extern const char *ipxsap_string(u_short);
extern const char *dnname_string(u_short); extern const char *dnname_string(u_short);
@ -166,11 +165,13 @@ extern const char *dnnum_string(u_short);
#include <pcap.h> #include <pcap.h>
extern int print_unknown_data(const u_char *, const char *,int); 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 u_char *, u_int);
extern void ascii_print(const char *, 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 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 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 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 *, extern int llc_print(const u_char *, u_int, u_int, const u_char *,
const u_char *, u_short *); 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 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_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int fr_print(register const u_char *, u_int); 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_if_print(const struct pcap_pkthdr *, const u_char *);
extern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *, extern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *,
const u_char *); 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 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 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_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_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_atm2_print(const struct pcap_pkthdr *, const u_char *);
extern u_int juniper_mfr_print(const struct pcap_pkthdr *, register 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_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_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_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 u_int sll_if_print(const struct pcap_pkthdr *, const u_char *);
extern void snmp_print(const u_char *, u_int); extern void snmp_print(const u_char *, u_int);
extern void sunrpcrequest_print(const u_char *, u_int, const u_char *); 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 print_data(const unsigned char *, int);
extern void l2tp_print(const u_char *, u_int); extern void l2tp_print(const u_char *, u_int);
extern void vrrp_print(const u_char *, u_int, 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 pgm_print(const u_char *, u_int, const u_char *);
extern void cdp_print(const u_char *, u_int, u_int); extern void cdp_print(const u_char *, u_int, u_int);
extern void stp_print(const u_char *, u_int); extern void stp_print(const u_char *, u_int);
extern void radius_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 lwres_print(const u_char *, u_int);
extern void pptp_print(const u_char *); 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 sctp_print(const u_char *, const u_char *, u_int);
extern void mpls_print(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); 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 Xflag gndo->ndo_Xflag
#define Cflag gndo->ndo_Cflag #define Cflag gndo->ndo_Cflag
#define Aflag gndo->ndo_Aflag #define Aflag gndo->ndo_Aflag
#define suppress_default_print gndo->ndo_suppress_default_print
#define packettype gndo->ndo_packettype #define packettype gndo->ndo_packettype
#define tcpmd5secret gndo->ndo_tcpmd5secret #define tcpmd5secret gndo->ndo_tcpmd5secret
#define Wflag gndo->ndo_Wflag #define Wflag gndo->ndo_Wflag

View File

@ -15,7 +15,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -36,6 +36,7 @@ struct tok ipproto_values[] = {
{ IPPROTO_EGP, "EGP" }, { IPPROTO_EGP, "EGP" },
{ IPPROTO_PIGP, "IGRP" }, { IPPROTO_PIGP, "IGRP" },
{ IPPROTO_UDP, "UDP" }, { IPPROTO_UDP, "UDP" },
{ IPPROTO_DCCP, "DCCP" },
{ IPPROTO_IPV6, "IPv6" }, { IPPROTO_IPV6, "IPv6" },
{ IPPROTO_ROUTING, "Routing" }, { IPPROTO_ROUTING, "Routing" },
{ IPPROTO_FRAGMENT, "Fragment" }, { IPPROTO_FRAGMENT, "Fragment" },

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * 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: * From:
* @(#)in.h 8.3 (Berkeley) 1/3/94 * @(#)in.h 8.3 (Berkeley) 1/3/94
@ -66,6 +66,9 @@ extern struct tok ipproto_values[];
#ifndef IPPROTO_UDP #ifndef IPPROTO_UDP
#define IPPROTO_UDP 17 /* user datagram protocol */ #define IPPROTO_UDP 17 /* user datagram protocol */
#endif #endif
#ifndef IPPROTO_DCCP
#define IPPROTO_DCCP 33 /* datagram congestion control protocol */
#endif
#ifndef IPPROTO_IPV6 #ifndef IPPROTO_IPV6
#define IPPROTO_IPV6 41 #define IPPROTO_IPV6 41
#endif #endif

View File

@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * 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_U_FMT 3
#define LLC_GSAP 1 #define LLC_GSAP 1
#define LLC_IG 1 /* Individual / Group */
#define LLC_S_FMT 1 #define LLC_S_FMT 1
#define LLC_U_POLL 0x10 #define LLC_U_POLL 0x10
@ -63,6 +64,9 @@
#ifndef LLCSAP_8021B_G #ifndef LLCSAP_8021B_G
#define LLCSAP_8021B_G 0x03 #define LLCSAP_8021B_G 0x03
#endif #endif
#ifndef LLCSAP_SNA
#define LLCSAP_SNA 0x04
#endif
#ifndef LLCSAP_IP #ifndef LLCSAP_IP
#define LLCSAP_IP 0x06 #define LLCSAP_IP 0x06
#endif #endif

View File

@ -21,7 +21,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * 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 #ifndef netdissect_h
@ -107,7 +107,8 @@ struct netdissect_options {
int ndo_Cflag; /* rotate dump files after this many bytes */ 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_Cflag_count; /* Keep track of which file number we're writing */
int ndo_Wflag; /* recycle output files after this number of files */ 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; const char *ndo_dltname;
char *ndo_espsecret; char *ndo_espsecret;
@ -234,7 +235,6 @@ extern void safeputs(const char *);
#if 0 #if 0
extern const char *isonsap_string(netdissect_options *, const u_char *); 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 *protoid_string(netdissect_options *, const u_char *);
extern const char *dnname_string(netdissect_options *, u_short); extern const char *dnname_string(netdissect_options *, u_short);
extern const char *dnnum_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 */ /* stuff that has not yet been rototiled */
#if 0 #if 0
extern void ascii_print_with_offset(netdissect_options *, const char *, extern void ascii_print(netdissect_options *,u_int);
u_int, u_int); extern void hex_and_ascii_print_with_offset(netdissect_options *,const char *,
extern void ascii_print(netdissect_options *,const char *, u_int); 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 *, extern void hex_print_with_offset(netdissect_options *,const char *,
u_int, u_int); 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);
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 *, extern int ether_encap_print(netdissect_options *,u_short, const u_char *,
u_int, u_int, u_short *); u_int, u_int, u_short *);
extern int llc_print(netdissect_options *, extern int llc_print(netdissect_options *,

View File

@ -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 * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * 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_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_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_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_PTP 1 /* rfc3630 */
#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_MA 2 /* rfc3630 */ #define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_MA 2 /* rfc3630 */

View File

@ -22,7 +22,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -62,23 +62,7 @@ do { \
} while (0) } while (0)
static const char *auth_alg_text[]={"Open System","Shared Key","EAP"}; static const char *auth_alg_text[]={"Open System","Shared Key","EAP"};
static const char *subtype_text[]={ #define NUM_AUTH_ALGS (sizeof auth_alg_text / sizeof auth_alg_text[0])
"Assoc Request",
"Assoc Response",
"ReAssoc Request",
"ReAssoc Response",
"Probe Request",
"Probe Response",
"",
"",
"Beacon",
"ATIM",
"Disassociation",
"Authentication",
"DeAuthentication",
"",
""
};
static const char *status_text[] = { static const char *status_text[] = {
"Succesful", /* 0 */ "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 because AP is unable to handle additional associated stations", /* 17 */
"Association denied due to requesting station not supporting all of the " \ "Association denied due to requesting station not supporting all of the " \
"data rates in BSSBasicRateSet parameter", /* 18 */ "data rates in BSSBasicRateSet parameter", /* 18 */
NULL
}; };
#define NUM_STATUSES (sizeof status_text / sizeof status_text[0])
static const char *reason_text[] = { static const char *reason_text[] = {
"Reserved", /* 0 */ "Reserved", /* 0 */
@ -112,12 +96,12 @@ static const char *reason_text[] = {
"Deauthenticated because sending station is leaving (or has left) IBSS or ESS", /* 3 */ "Deauthenticated because sending station is leaving (or has left) IBSS or ESS", /* 3 */
"Disassociated due to inactivity", /* 4 */ "Disassociated due to inactivity", /* 4 */
"Disassociated because AP is unable to handle all currently associated stations", /* 5 */ "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 */ "Class 3 frame received from nonassociated station", /* 7 */
"Disassociated because sending station is leaving (or has left) BSS", /* 8 */ "Disassociated because sending station is leaving (or has left) BSS", /* 8 */
"Station requesting (re)association is not authenticated with responding station", /* 9 */ "Station requesting (re)association is not authenticated with responding station", /* 9 */
NULL
}; };
#define NUM_REASONS (sizeof reason_text / sizeof reason_text[0])
static int static int
wep_print(const u_char *p) 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 , printf(" AID(%x) :%s: %s", ((u_int16_t)(pbody.aid << 2 )) >> 2 ,
CAPABILITY_PRIVACY(pbody.capability_info) ? " PRIVACY " : "", 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; return 1;
} }
@ -419,8 +405,9 @@ handle_disassoc(const u_char *p)
pbody.reason_code = EXTRACT_LE_16BITS(p); pbody.reason_code = EXTRACT_LE_16BITS(p);
printf(": %s", printf(": %s",
(pbody.reason_code < 10) ? reason_text[pbody.reason_code] (pbody.reason_code < NUM_REASONS)
: "Reserved" ); ? reason_text[pbody.reason_code]
: "Reserved" );
return 1; return 1;
} }
@ -449,21 +436,25 @@ handle_auth(const u_char *p)
((pbody.auth_trans_seq_num == 2) || ((pbody.auth_trans_seq_num == 2) ||
(pbody.auth_trans_seq_num == 3))) { (pbody.auth_trans_seq_num == 3))) {
printf(" (%s)-%x [Challenge Text] %s", printf(" (%s)-%x [Challenge Text] %s",
(pbody.auth_alg < 4) ? auth_alg_text[pbody.auth_alg] (pbody.auth_alg < NUM_AUTH_ALGS)
: "Reserved", ? auth_alg_text[pbody.auth_alg]
: "Reserved",
pbody.auth_trans_seq_num, pbody.auth_trans_seq_num,
((pbody.auth_trans_seq_num % 2) ((pbody.auth_trans_seq_num % 2)
? ((pbody.status_code < 19) ? ((pbody.status_code < NUM_STATUSES)
? status_text[pbody.status_code] ? status_text[pbody.status_code]
: "n/a") : "")); : "n/a") : ""));
return 1; return 1;
} }
printf(" (%s)-%x: %s", 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,
(pbody.auth_trans_seq_num % 2) (pbody.auth_trans_seq_num % 2)
? ((pbody.status_code < 19) ? status_text[pbody.status_code] ? ((pbody.status_code < NUM_STATUSES)
: "n/a") ? status_text[pbody.status_code]
: "n/a")
: ""); : "");
return 1; 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); pbody.reason_code = EXTRACT_LE_16BITS(p);
offset += IEEE802_11_REASON_LEN; offset += IEEE802_11_REASON_LEN;
reason = (pbody.reason_code < 10) ? reason_text[pbody.reason_code] reason = (pbody.reason_code < NUM_REASONS)
: "Reserved"; ? reason_text[pbody.reason_code]
: "Reserved";
if (eflag) { if (eflag) {
printf(": %s", reason); printf(": %s", reason);
@ -504,28 +496,36 @@ static int
mgmt_body_print(u_int16_t fc, const struct mgmt_header_t *pmh, mgmt_body_print(u_int16_t fc, const struct mgmt_header_t *pmh,
const u_char *p) const u_char *p)
{ {
printf("%s", subtype_text[FC_SUBTYPE(fc)]);
switch (FC_SUBTYPE(fc)) { switch (FC_SUBTYPE(fc)) {
case ST_ASSOC_REQUEST: case ST_ASSOC_REQUEST:
printf("Assoc Request");
return handle_assoc_request(p); return handle_assoc_request(p);
case ST_ASSOC_RESPONSE: case ST_ASSOC_RESPONSE:
printf("Assoc Response");
return handle_assoc_response(p); return handle_assoc_response(p);
case ST_REASSOC_REQUEST: case ST_REASSOC_REQUEST:
printf("ReAssoc Request");
return handle_reassoc_request(p); return handle_reassoc_request(p);
case ST_REASSOC_RESPONSE: case ST_REASSOC_RESPONSE:
printf("ReAssoc Response");
return handle_reassoc_response(p); return handle_reassoc_response(p);
case ST_PROBE_REQUEST: case ST_PROBE_REQUEST:
printf("Probe Request");
return handle_probe_request(p); return handle_probe_request(p);
case ST_PROBE_RESPONSE: case ST_PROBE_RESPONSE:
printf("Probe Response");
return handle_probe_response(p); return handle_probe_response(p);
case ST_BEACON: case ST_BEACON:
printf("Beacon");
return handle_beacon(p); return handle_beacon(p);
case ST_ATIM: case ST_ATIM:
printf("ATIM");
return handle_atim(); return handle_atim();
case ST_DISASSOC: case ST_DISASSOC:
printf("Disassociation");
return handle_disassoc(p); return handle_disassoc(p);
case ST_AUTH: case ST_AUTH:
printf("Authentication");
if (!TTEST2(*p, 3)) if (!TTEST2(*p, 3))
return 0; return 0;
if ((p[0] == 0 ) && (p[1] == 0) && (p[2] == 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); return handle_auth(p);
case ST_DEAUTH: case ST_DEAUTH:
printf("DeAuthentication");
return handle_deauth(pmh, p); return handle_deauth(pmh, p);
break; break;
default: default:
@ -900,7 +901,7 @@ ieee802_11_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string( etherproto_string(
htons(extracted_ethertype))); htons(extracted_ethertype)));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
break; break;

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -111,7 +111,7 @@ ap1394_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag) if (!eflag)
ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN); ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }

View File

@ -42,7 +42,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#include <tcpdump-stdinc.h> #include <tcpdump-stdinc.h>
#include <stdio.h> #include <stdio.h>
@ -57,78 +57,74 @@ static const char rcsid[] _U_ =
(HEXDUMP_HEXSTUFF_PER_SHORT * HEXDUMP_SHORTS_PER_LINE) (HEXDUMP_HEXSTUFF_PER_SHORT * HEXDUMP_SHORTS_PER_LINE)
void void
ascii_print_with_offset(register const char *ident, register const u_char *cp, register u_int length, ascii_print(register const u_char *cp, register u_int length)
register u_int oset) {
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 u_int i;
register int s1, s2; register int s1, s2;
register int nshorts; register int nshorts;
char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp; char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp;
char asciistuff[ASCII_LINELENGTH+1], *asp; char asciistuff[ASCII_LINELENGTH+1], *asp;
u_int maxlength = (Aflag ? ASCII_LINELENGTH : HEXDUMP_SHORTS_PER_LINE);
nshorts = length / sizeof(u_short); nshorts = length / sizeof(u_short);
i = 0; i = 0;
hsp = hexstuff; asp = asciistuff; hsp = hexstuff; asp = asciistuff;
if (Aflag) *(asp++) = '\n';
while (--nshorts >= 0) { while (--nshorts >= 0) {
s1 = *cp++; s1 = *cp++;
s2 = *cp++; s2 = *cp++;
if (Aflag) { (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
i += 2; " %02x%02x", s1, s2);
*(asp++) = (isgraph(s1) ? s1 : (s1 != '\t' && s1 != ' ' && s1 != '\n' && s1 != '\r' ? '.' : s1) ); hsp += HEXDUMP_HEXSTUFF_PER_SHORT;
*(asp++) = (isgraph(s2) ? s2 : (s2 != '\t' && s2 != ' ' && s2 != '\n' && s2 != '\r' ? '.' : s2) ); *(asp++) = (isgraph(s1) ? s1 : '.');
if (s1 == '\n' || s2 == '\n') i = maxlength; *(asp++) = (isgraph(s2) ? s2 : '.');
i++;
} else { if (i >= HEXDUMP_SHORTS_PER_LINE) {
(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) {
*hsp = *asp = '\0'; *hsp = *asp = '\0';
if (Aflag) { (void)printf("%s0x%04x: %-*s %s",
(void)printf("%s", asciistuff); ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
} else { hexstuff, asciistuff);
(void)printf("%s0x%04x: %-*s %s",
ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
hexstuff, asciistuff);
}
i = 0; hsp = hexstuff; asp = asciistuff; i = 0; hsp = hexstuff; asp = asciistuff;
oset += HEXDUMP_BYTES_PER_LINE; oset += HEXDUMP_BYTES_PER_LINE;
} }
} }
if (length & 1) { if (length & 1) {
s1 = *cp++; s1 = *cp++;
if (Aflag) { (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
*(asp++) = (isgraph(s1) ? s1 : (s1 != '\t' && s1 != ' ' && s1 != '\n' && s1 != '\r' ? '.' : s1) ); " %02x", s1);
} else { hsp += 3;
(void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff), *(asp++) = (isgraph(s1) ? s1 : '.');
" %02x", s1);
hsp += 3;
*(asp++) = (isgraph(s1) ? s1 : '.');
}
++i; ++i;
} }
if (i > 0) { if (i > 0) {
*hsp = *asp = '\0'; *hsp = *asp = '\0';
if (Aflag) { (void)printf("%s0x%04x: %-*s %s",
(void)printf("%s%s", ident, asciistuff); ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
} else { hexstuff, asciistuff);
(void)printf("%s0x%04x: %-*s %s",
ident, oset, HEXDUMP_HEXSTUFF_PER_LINE,
hexstuff, asciistuff);
}
} }
} }
void 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 int
main(int argc, char *argv[]) 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"); printf("\n");
ascii_print("Hello, World!\n", 14); ascii_print("Hello, World!\n", 14);
printf("\n"); printf("\n");
#define TMSG "Now is the winter of our discontent...\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"); printf("\n");
exit(0); exit(0);
} }
#endif /* MAIN */ #endif /* MAIN */

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -106,7 +106,7 @@ atm_llc_print(const u_char *p, int length, int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} }

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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 length = h->len;
register u_int caplen = h->caplen; register u_int caplen = h->caplen;
const struct ip *ip;
u_int proto;
if (caplen < CHDLC_HDRLEN) { if (caplen < CHDLC_HDRLEN) {
printf("[|chdlc]"); printf("[|chdlc]");
return (caplen); 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]); proto = EXTRACT_16BITS(&p[2]);
if (eflag) { if (eflag) {

View File

@ -22,7 +22,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -94,7 +94,7 @@ cip_if_print(const struct pcap_pkthdr *h, const u_char *p)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} else { } else {

View File

@ -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;
}

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -65,6 +65,7 @@ const struct tok ethertype_values[] = {
{ ETHERTYPE_AARP, "Appletalk ARP" }, { ETHERTYPE_AARP, "Appletalk ARP" },
{ ETHERTYPE_IPX, "IPX" }, { ETHERTYPE_IPX, "IPX" },
{ ETHERTYPE_PPP, "PPP" }, { ETHERTYPE_PPP, "PPP" },
{ ETHERTYPE_SLOW, "Slow Protocols" },
{ ETHERTYPE_PPPOED, "PPPoE D" }, { ETHERTYPE_PPPOED, "PPPoE D" },
{ ETHERTYPE_PPPOES, "PPPoE S" }, { ETHERTYPE_PPPOES, "PPPoE S" },
{ ETHERTYPE_EAPOL, "EAPOL" }, { ETHERTYPE_EAPOL, "EAPOL" },
@ -136,7 +137,7 @@ ether_print(const u_char *p, u_int length, u_int caplen)
if (!eflag) if (!eflag)
ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN); ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} else if (ether_encap_print(ether_type, p, length, 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) if (!eflag)
ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN); ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); 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); ether_hdr_print(p - 18, length + 4);
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p - 18, caplen + 4); default_print(p - 18, caplen + 4);
return (1); return (1);
@ -270,7 +271,7 @@ ether_encap_print(u_short ether_type, const u_char *p,
ether_hdr_print(p - 16, length + 2); ether_hdr_print(p - 16, length + 2);
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p - 16, caplen + 2); default_print(p - 16, caplen + 2);
return (1); return (1);
@ -295,6 +296,10 @@ ether_encap_print(u_short ether_type, const u_char *p,
} }
return (1); return (1);
case ETHERTYPE_SLOW:
slow_print(p, length);
return (1);
case ETHERTYPE_LOOPBACK: case ETHERTYPE_LOOPBACK:
return (1); return (1);

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -280,7 +280,7 @@ fddi_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} else if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_SMT) } 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) if (!eflag)
fddi_hdr_print(fddip, length + FDDI_HDRLEN, ESRC(&ehdr), fddi_hdr_print(fddip, length + FDDI_HDRLEN, ESRC(&ehdr),
EDST(&ehdr)); EDST(&ehdr));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} }

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -82,6 +82,20 @@ struct tok fr_header_flag_values[] = {
{ 0, NULL } { 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 /* Finds out Q.922 address length, DLCI and flags. Returns 0 on success
* save the flags dep. on address length * save the flags dep. on address length
@ -250,7 +264,6 @@ fr_print(register const u_char *p, u_int length)
if (eflag) if (eflag)
fr_hdr_print(length, addr_len, dlci, flags, nlpid); fr_hdr_print(length, addr_len, dlci, flags, nlpid);
p += hdr_len; p += hdr_len;
length -= hdr_len; length -= hdr_len;
@ -276,7 +289,7 @@ fr_print(register const u_char *p, u_int length)
if (!eflag) if (!eflag)
fr_hdr_print(length + hdr_len, hdr_len, fr_hdr_print(length + hdr_len, hdr_len,
dlci, flags, nlpid); dlci, flags, nlpid);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p - hdr_len, length + hdr_len); default_print(p - hdr_len, length + hdr_len);
} }
break; 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 /* an NLPID of 0xb1 indicates a 2-byte
* FRF.15 header * 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 #define FR_FRF15_FRAGTYPE 0x01
static void static void
@ -334,13 +525,13 @@ frf15_print (const u_char *p, u_int length) {
u_int16_t sequence_num, flags; u_int16_t sequence_num, flags;
flags = p[0]&0xe0; flags = p[0]&MFR_BEC_MASK;
sequence_num = (p[0]&0x1e)<<7 | p[1]; sequence_num = (p[0]&0x1e)<<7 | p[1];
printf("FRF.15, seq 0x%03x, Flags [%s],%s Fragmentation, length %u", printf("FRF.15, seq 0x%03x, Flags [%s],%s Fragmentation, length %u",
sequence_num, sequence_num,
bittok2str(frf15_flag_values,"none",flags), bittok2str(frf_flag_values,"none",flags),
flags&FR_FRF15_FRAGTYPE ? "Interface" : "End-to-End", p[0]&FR_FRF15_FRAGTYPE ? "Interface" : "End-to-End",
length); length);
/* TODO: /* TODO:
@ -452,10 +643,10 @@ struct tok fr_lmi_report_type_ie_values[] = {
{ 0, NULL } { 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[] = { static struct tok *fr_q933_ie_codesets[] = {
NULL, NULL,
NULL, fr_q933_ie_values_codeset5,
NULL, NULL,
NULL, NULL,
NULL, NULL,
@ -472,22 +663,16 @@ static struct tok *fr_q933_ie_codesets[] = {
NULL NULL
}; };
static int fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p,
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,
const u_char *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); 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[] = { static codeset_pr_func_t fr_q933_print_ie_codeset[] = {
NULL, NULL,
NULL, fr_q933_print_ie_codeset5,
NULL, NULL,
NULL, NULL,
NULL, NULL,
@ -508,10 +693,11 @@ void
q933_print(const u_char *p, u_int length) q933_print(const u_char *p, u_int length)
{ {
const u_char *ptemp = p; const u_char *ptemp = p;
struct common_ie_header *ie_p; struct ie_tlv_header_t *ie_p;
int olen; int olen;
int is_ansi = 0; int is_ansi = 0;
u_int codeset; u_int codeset;
u_int ie_is_known = 0;
if (length < 9) { /* shortest: Q.933a LINK VERIFY */ if (length < 9) { /* shortest: Q.933a LINK VERIFY */
printf("[|q.933]"); printf("[|q.933]");
@ -526,7 +712,7 @@ q933_print(const u_char *p, u_int length)
printf("%s", eflag ? "" : "Q.933, "); printf("%s", eflag ? "" : "Q.933, ");
/* printing out header part */ /* printing out header part */
printf(is_ansi ? "ANSI" : "CCITT"); printf("%s, codeset %u", is_ansi ? "ANSI" : "CCITT", codeset);
if (p[0]) if (p[0])
printf(", Call Ref: 0x%02x", 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; ptemp += 2 + is_ansi;
/* Loop through the rest of IE */ /* Loop through the rest of IE */
while (length > sizeof(struct common_ie_header)) { while (length > sizeof(struct ie_tlv_header_t )) {
ie_p = (struct common_ie_header *)ptemp; ie_p = (struct ie_tlv_header_t *)ptemp;
if (length < sizeof(struct common_ie_header) || if (length < sizeof(struct ie_tlv_header_t ) ||
length < sizeof(struct common_ie_header) + ie_p->ie_len) { length < sizeof(struct ie_tlv_header_t ) + ie_p->ie_len) {
if (vflag) /* not bark if there is just a trailer */ if (vflag) /* not bark if there is just a trailer */
printf("\n[|q.933]"); printf("\n[|q.933]");
else else
@ -565,19 +751,23 @@ q933_print(const u_char *p, u_int length)
* however some IEs (DLCI Status, Link Verify) * however some IEs (DLCI Status, Link Verify)
* are also intereststing in non-verbose mode */ * are also intereststing in non-verbose mode */
if (vflag) if (vflag)
printf("\n\t%s IE (%u), length %u: ", printf("\n\t%s IE (0x%02x), length %u: ",
tok2str(fr_q933_ie_codesets[codeset],"unknown",ie_p->ie_id), tok2str(fr_q933_ie_codesets[codeset],"unknown",ie_p->ie_type),
ie_p->ie_id, ie_p->ie_type,
ie_p->ie_len); ie_p->ie_len);
if (!fr_q933_print_ie_codeset[codeset] || /* sanity check */
(*fr_q933_print_ie_codeset[codeset])(ie_p, ptemp)) { if (ie_p->ie_type == 0 || ie_p->ie_len == 0)
if (vflag <= 1) return;
print_unknown_data(ptemp+2,"\n\t",ie_p->ie_len);
} 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 ? */ /* 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); print_unknown_data(ptemp+2,"\n\t ",ie_p->ie_len);
length = length - ie_p->ie_len - 2; length = length - ie_p->ie_len - 2;
@ -588,11 +778,11 @@ q933_print(const u_char *p, u_int length)
} }
static int 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; 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_ANSI_REPORT_TYPE_IE: /* fall through */
case FR_LMI_CCITT_REPORT_TYPE_IE: case FR_LMI_CCITT_REPORT_TYPE_IE:

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -75,7 +75,7 @@ static struct tok icmp6_type_values[] = {
{ ND_ROUTER_SOLICIT, "router solicitation"}, { ND_ROUTER_SOLICIT, "router solicitation"},
{ ND_ROUTER_ADVERT, "router advertisement"}, { ND_ROUTER_ADVERT, "router advertisement"},
{ ND_NEIGHBOR_SOLICIT, "neighbor solicitation"}, { ND_NEIGHBOR_SOLICIT, "neighbor solicitation"},
{ ND_NEIGHBOR_ADVERT, "neighbor advertisment"}, { ND_NEIGHBOR_ADVERT, "neighbor advertisement"},
{ ND_REDIRECT, "redirect"}, { ND_REDIRECT, "redirect"},
{ ICMP6_ROUTER_RENUMBERING, "router renumbering"}, { ICMP6_ROUTER_RENUMBERING, "router renumbering"},
{ IND_SOLICIT, "inverse neighbor solicitation"}, { IND_SOLICIT, "inverse neighbor solicitation"},
@ -131,7 +131,7 @@ static struct tok icmp6_opt_values[] = {
{ ND_OPT_PREFIX_INFORMATION, "prefix info"}, { ND_OPT_PREFIX_INFORMATION, "prefix info"},
{ ND_OPT_REDIRECTED_HEADER, "redirected header"}, { ND_OPT_REDIRECTED_HEADER, "redirected header"},
{ ND_OPT_MTU, "mtu"}, { ND_OPT_MTU, "mtu"},
{ ND_OPT_ADVINTERVAL, "advertisment interval"}, { ND_OPT_ADVINTERVAL, "advertisement interval"},
{ ND_OPT_HOMEAGENT_INFO, "homeagent information"}, { ND_OPT_HOMEAGENT_INFO, "homeagent information"},
{ ND_OPT_ROUTE_INFO, "route info"}, { ND_OPT_ROUTE_INFO, "route info"},
{ 0, NULL } { 0, NULL }
@ -764,13 +764,13 @@ mldv2_report_print(const u_char *bp, u_int len)
printf(" [invalid number of groups]"); printf(" [invalid number of groups]");
return; return;
} }
TCHECK2(bp[group + 4], 16); TCHECK2(bp[group + 4], sizeof(struct in6_addr));
printf(" [gaddr %s", ip6addr_string(&bp[group + 4])); printf(" [gaddr %s", ip6addr_string(&bp[group + 4]));
printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]", printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]",
bp[group])); bp[group]));
nsrcs = (bp[group + 2] << 8) + bp[group + 3]; nsrcs = (bp[group + 2] << 8) + bp[group + 3];
/* Check the number of sources and print them */ /* 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); printf(" [invalid number of sources %d]", nsrcs);
return; return;
} }
@ -780,13 +780,14 @@ mldv2_report_print(const u_char *bp, u_int len)
/* Print the sources */ /* Print the sources */
(void)printf(" {"); (void)printf(" {");
for (j = 0; j < nsrcs; j++) { for (j = 0; j < nsrcs; j++) {
TCHECK2(bp[group + 20 + j * 16], 16); TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)],
printf(" %s", ip6addr_string(&bp[group + 20 + j * 16])); sizeof(struct in6_addr));
printf(" %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)]));
} }
(void)printf(" }"); (void)printf(" }");
} }
/* Next group record */ /* Next group record */
group += 20 + nsrcs * 16; group += 20 + nsrcs * sizeof(struct in6_addr);
printf("]"); printf("]");
} }
} }
@ -820,7 +821,7 @@ mldv2_query_print(const u_char *bp, u_int len)
if (vflag) { if (vflag) {
(void)printf(" [max resp delay=%d]", mrt); (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])); printf(" [gaddr %s", ip6addr_string(&bp[8]));
if (vflag) { if (vflag) {
@ -842,13 +843,14 @@ mldv2_query_print(const u_char *bp, u_int len)
TCHECK2(bp[26], 2); TCHECK2(bp[26], 2);
nsrcs = ntohs(*(u_short *)&bp[26]); nsrcs = ntohs(*(u_short *)&bp[26]);
if (nsrcs > 0) { if (nsrcs > 0) {
if (len < 28 + nsrcs * 16) if (len < 28 + nsrcs * sizeof(struct in6_addr))
printf(" [invalid number of sources]"); printf(" [invalid number of sources]");
else if (vflag > 1) { else if (vflag > 1) {
printf(" {"); printf(" {");
for (i = 0; i < nsrcs; i++) { for (i = 0; i < nsrcs; i++) {
TCHECK2(bp[28 + i * 16], 16); TCHECK2(bp[28 + i * sizeof(struct in6_addr)],
printf(" %s", ip6addr_string(&bp[28 + i * 16])); sizeof(struct in6_addr));
printf(" %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)]));
} }
printf(" }"); printf(" }");
} else } else

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -411,6 +411,10 @@ ip_print_demux(netdissect_options *ndo,
case IPPROTO_SCTP: case IPPROTO_SCTP:
sctp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); sctp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len);
break; break;
case IPPROTO_DCCP:
dccp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len);
break;
case IPPROTO_TCP: case IPPROTO_TCP:
tcp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, 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; ipds->nh = ipds->ip->ip_p;
if (ipds->nh != IPPROTO_TCP && ipds->nh != IPPROTO_UDP && 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: ", (void)printf("%s > %s: ",
ipaddr_string(&ipds->ip->ip_src), ipaddr_string(&ipds->ip->ip_src),
ipaddr_string(&ipds->ip->ip_dst)); ipaddr_string(&ipds->ip->ip_dst));

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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) && if (cp == (const u_char *)(ip6 + 1) &&
nh != IPPROTO_TCP && nh != IPPROTO_UDP && nh != IPPROTO_TCP && nh != IPPROTO_UDP &&
nh != IPPROTO_SCTP) { nh != IPPROTO_DCCP && nh != IPPROTO_SCTP) {
(void)printf("%s > %s: ", ip6addr_string(&ip6->ip6_src), (void)printf("%s > %s: ", ip6addr_string(&ip6->ip6_src),
ip6addr_string(&ip6->ip6_dst)); ip6addr_string(&ip6->ip6_dst));
} }
@ -160,6 +160,9 @@ ip6_print(register const u_char *bp, register u_int length)
case IPPROTO_SCTP: case IPPROTO_SCTP:
sctp_print(cp, (const u_char *)ip6, len); sctp_print(cp, (const u_char *)ip6, len);
return; return;
case IPPROTO_DCCP:
dccp_print(cp, (const u_char *)ip6, len);
return;
case IPPROTO_TCP: case IPPROTO_TCP:
tcp_print(cp, len, (const u_char *)ip6, fragmented); tcp_print(cp, len, (const u_char *)ip6, fragmented);
return; return;

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -117,7 +117,7 @@ ipfc_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} }

View File

@ -26,7 +26,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -110,7 +110,9 @@ static struct tok isis_pdu_values[] = {
#define ISIS_TLV_LSP 9 /* iso10589 */ #define ISIS_TLV_LSP 9 /* iso10589 */
#define ISIS_TLV_AUTH 10 /* iso10589, rfc3567 */ #define ISIS_TLV_AUTH 10 /* iso10589, rfc3567 */
#define ISIS_TLV_CHECKSUM 12 /* rfc3358 */ #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 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_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_IS_ALIAS_ID 24 /* draft-ietf-isis-ext-lsp-frags-02 */
#define ISIS_TLV_DECNET_PHASE4 42 #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_PROTOCOLS 129 /* rfc1195 */
#define ISIS_TLV_EXT_IP_REACH 130 /* rfc1195, rfc2966 */ #define ISIS_TLV_EXT_IP_REACH 130 /* rfc1195, rfc2966 */
#define ISIS_TLV_IDRP_INFO 131 /* rfc1195 */ #define ISIS_TLV_IDRP_INFO 131 /* rfc1195 */
#define ISIS_TLV_IDRP_INFO_MINLEN 1
#define ISIS_TLV_IPADDR 132 /* rfc1195 */ #define ISIS_TLV_IPADDR 132 /* rfc1195 */
#define ISIS_TLV_IPAUTH 133 /* rfc1195 */ #define ISIS_TLV_IPAUTH 133 /* rfc1195 */
#define ISIS_TLV_TE_ROUTER_ID 134 /* draft-ietf-isis-traffic-05 */ #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_PRIVATE1 176
#define ISIS_TLV_NORTEL_PRIVATE2 177 #define ISIS_TLV_NORTEL_PRIVATE2 177
#define ISIS_TLV_RESTART_SIGNALING 211 /* rfc3847 */ #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_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 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_IP6ADDR 232 /* draft-ietf-isis-ipv6-02 */
#define ISIS_TLV_MT_IP_REACH 235 /* draft-ietf-isis-wg-multi-topology-05 */ #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_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_MT_IP6_REACH 237 /* draft-ietf-isis-wg-multi-topology-05 */
#define ISIS_TLV_PTP_ADJ 240 /* rfc3373 */ #define ISIS_TLV_PTP_ADJ 240 /* rfc3373 */
#define ISIS_TLV_IIH_SEQNR 241 /* draft-shen-isis-iih-sequence-00 */ #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 250 /* draft-ietf-isis-experimental-tlv-01 */
#define ISIS_TLV_VENDOR_PRIVATE_MINLEN 3
static struct tok isis_tlv_values[] = { static struct tok isis_tlv_values[] = {
{ ISIS_TLV_AREA_ADDR, "Area address(es)"}, { 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_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_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_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_UNRESERVED_BW 11 /* rfc4124 */
#define ISIS_SUBTLV_EXT_IS_REACH_DIFFSERV_TE 12 /* draft-ietf-tewg-diff-te-proto-06 */ #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_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_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_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[] = { static struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP, "Administrative groups" }, { 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_MAX_LINK_BW, "Maximum link bandwidth" },
{ ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW, "Reservable 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_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_TE_METRIC, "Traffic Engineering Metric" },
{ ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE, "Link Protection Type" }, { 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_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" }, { 250, "Reserved for cisco specific extensions" },
{ 251, "Reserved for cisco specific extensions" }, { 251, "Reserved for cisco specific extensions" },
{ 252, "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) { if (clnp_flags & CLNP_SEGMENT_PART) {
clnp_segment_header = (const struct clnp_segment_header_t *) pptr; 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", 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->data_unit_id),
EXTRACT_16BITS(clnp_segment_header->segment_offset), 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) { if (tlen < source_address_length+1) {
printf("\n\t NSAP address goes past end of option"); printf("\n\t NSAP address goes past end of option");
break; break;
} }
if (source_address_length > 0) { if (source_address_length > 0) {
source_address=(tptr+1); source_address=(tptr+1);
TCHECK2(*source_address, source_address_length); TCHECK2(*source_address, source_address_length);
@ -1398,9 +1409,9 @@ isis_print_ip_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *i
*/ */
static int 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 */ union { /* int to float conversion buffer for several subTLVs */
float f; float f;
u_int32_t i; 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; break;
case ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR: case ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR:
case ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR: case ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR:
if (subl >= 4) if (subl >= sizeof(struct in_addr))
printf(", %s", ipaddr_string(tptr)); printf(", %s", ipaddr_string(tptr));
break; break;
case ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW : 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; break;
case ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW : case ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW :
if (subl >= 32) { 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); bw.i = EXTRACT_32BITS(tptr);
printf("%s priority level %d: %.3f Mbps", printf("%s TE-Class %u: %.3f Mbps",
ident, ident,
priority_level, te_class,
bw.f*8/1000000 ); bw.f*8/1000000 );
tptr+=4; tptr+=4;
} }
} }
break; 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)", printf("%sBandwidth Constraints Model ID: %s (%u)",
ident, ident,
tok2str(diffserv_te_bc_values, "unknown", *tptr), tok2str(diffserv_te_bc_values, "unknown", *tptr),
*tptr); *tptr);
tptr++; tptr++;
/* decode BCs until the subTLV ends */ /* 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); bw.i = EXTRACT_32BITS(tptr);
printf("%s Bandwidth constraint %d: %.3f Mbps", printf("%s Bandwidth constraint CT%u: %.3f Mbps",
ident, ident,
bandwidth_constraint, te_class,
bw.f*8/1000000 ); bw.f*8/1000000 );
tptr+=4; 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) { isis_print_extd_ip_reach (const u_int8_t *tptr, const char *ident, u_int16_t afi) {
char ident_buffer[20]; 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; u_int metric, status_byte, bit_length, byte_length, sublen, processed, subtlvtype, subtlvlen;
if (!TTEST2(*tptr, 4)) 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)) if (!TTEST2(*tptr, byte_length))
return (0); 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 */ memcpy(prefix,tptr,byte_length); /* copy as much as is stored in the TLV */
tptr+=byte_length; tptr+=byte_length;
processed+=byte_length; processed+=byte_length;
@ -2262,15 +2274,15 @@ static int isis_print (const u_int8_t *p, u_int length)
break; break;
case ISIS_TLV_IP6ADDR: case ISIS_TLV_IP6ADDR:
while (tmp>=16) { while (tmp>=sizeof(struct in6_addr)) {
if (!TTEST2(*tptr, 16)) if (!TTEST2(*tptr, sizeof(struct in6_addr)))
goto trunctlv; goto trunctlv;
printf("\n\t IPv6 interface address: %s", printf("\n\t IPv6 interface address: %s",
ip6addr_string(tptr)); ip6addr_string(tptr));
tptr += 16; tptr += sizeof(struct in6_addr);
tmp -= 16; tmp -= sizeof(struct in6_addr);
} }
break; break;
#endif #endif
@ -2360,18 +2372,18 @@ static int isis_print (const u_int8_t *p, u_int length)
break; break;
case ISIS_TLV_TE_ROUTER_ID: case ISIS_TLV_TE_ROUTER_ID:
if (!TTEST2(*pptr, 4)) if (!TTEST2(*pptr, sizeof(struct in_addr)))
goto trunctlv; goto trunctlv;
printf("\n\t Traffic Engineering Router ID: %s", ipaddr_string(pptr)); printf("\n\t Traffic Engineering Router ID: %s", ipaddr_string(pptr));
break; break;
case ISIS_TLV_IPADDR: case ISIS_TLV_IPADDR:
while (tmp>=4) { while (tmp>=sizeof(struct in_addr)) {
if (!TTEST2(*tptr, 4)) if (!TTEST2(*tptr, sizeof(struct in_addr)))
goto trunctlv; goto trunctlv;
printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr)); printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr));
tptr += 4; tptr += sizeof(struct in_addr);
tmp -= 4; tmp -= sizeof(struct in_addr);
} }
break; 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"); printf(", Flags: [%s]", ISIS_MASK_TLV_SHARED_RISK_GROUP(*tptr++) ? "numbered" : "unnumbered");
tmp--; tmp--;
if (tmp < 4) if (tmp < sizeof(struct in_addr))
break; break;
if (!TTEST2(*tptr,4)) if (!TTEST2(*tptr,sizeof(struct in_addr)))
goto trunctlv; goto trunctlv;
printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr)); printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr));
tptr+=4; tptr+=sizeof(struct in_addr);
tmp-=4; tmp-=sizeof(struct in_addr);
if (tmp < 4) if (tmp < sizeof(struct in_addr))
break; break;
if (!TTEST2(*tptr,4)) if (!TTEST2(*tptr,sizeof(struct in_addr)))
goto trunctlv; goto trunctlv;
printf("\n\t IPv4 neighbor address: %s", ipaddr_string(tptr)); printf("\n\t IPv4 neighbor address: %s", ipaddr_string(tptr));
tptr+=4; tptr+=sizeof(struct in_addr);
tmp-=4; tmp-=sizeof(struct in_addr);
while (tmp>=4) { while (tmp>=4) {
if (!TTEST2(*tptr, 4)) if (!TTEST2(*tptr, 4))
@ -2448,9 +2460,9 @@ static int isis_print (const u_int8_t *p, u_int length)
break; break;
case ISIS_TLV_CHECKSUM: case ISIS_TLV_CHECKSUM:
if (tmp < 2) if (tmp < ISIS_TLV_CHECKSUM_MINLEN)
break; break;
if (!TTEST2(*tptr, 2)) if (!TTEST2(*tptr, ISIS_TLV_CHECKSUM_MINLEN))
goto trunctlv; goto trunctlv;
printf("\n\t checksum: 0x%04x ", EXTRACT_16BITS(tptr)); printf("\n\t checksum: 0x%04x ", EXTRACT_16BITS(tptr));
/* do not attempt to verify the checksum if it is zero /* 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; break;
case ISIS_TLV_MT_SUPPORTED: case ISIS_TLV_MT_SUPPORTED:
if (tmp < ISIS_TLV_MT_SUPPORTED_MINLEN)
break;
while (tmp>1) { while (tmp>1) {
/* length can only be a multiple of 2, otherwise there is /* length can only be a multiple of 2, otherwise there is
something broken -> so decode down until length is 1 */ 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; break;
case ISIS_TLV_RESTART_SIGNALING: case ISIS_TLV_RESTART_SIGNALING:
if (tmp < 3) /* first attempt to decode the flags */
break; if (tmp < ISIS_TLV_RESTART_SIGNALING_FLAGLEN)
if (!TTEST2(*tptr, 3)) break;
if (!TTEST2(*tptr, ISIS_TLV_RESTART_SIGNALING_FLAGLEN))
goto trunctlv; goto trunctlv;
printf("\n\t Flags [%s], Remaining holding time %us", printf("\n\t Flags [%s]",
bittok2str(isis_restart_flag_values, "none", *tptr), bittok2str(isis_restart_flag_values, "none", *tptr));
EXTRACT_16BITS(tptr+1)); tptr+=ISIS_TLV_RESTART_SIGNALING_FLAGLEN;
tptr+=3; tmp-=ISIS_TLV_RESTART_SIGNALING_FLAGLEN;
tmp-=3;
/* 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 (tmp == SYSTEM_ID_LEN) {
if (!TTEST2(*tptr, SYSTEM_ID_LEN)) if (!TTEST2(*tptr, SYSTEM_ID_LEN))
goto trunctlv; goto trunctlv;
printf(", for %s",isis_print_id(tptr,SYSTEM_ID_LEN)); 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; break;
case ISIS_TLV_IDRP_INFO: case ISIS_TLV_IDRP_INFO:
if (tmp < 1) if (tmp < ISIS_TLV_IDRP_INFO_MINLEN)
break; break;
if (!TTEST2(*tptr, 1)) if (!TTEST2(*tptr, ISIS_TLV_IDRP_INFO_MINLEN))
goto trunctlv; goto trunctlv;
printf("\n\t Inter-Domain Information Type: %s", printf("\n\t Inter-Domain Information Type: %s",
tok2str(isis_subtlv_idrp_values, tok2str(isis_subtlv_idrp_values,
@ -2526,9 +2551,9 @@ static int isis_print (const u_int8_t *p, u_int length)
break; break;
case ISIS_TLV_LSP_BUFFERSIZE: case ISIS_TLV_LSP_BUFFERSIZE:
if (tmp < 2) if (tmp < ISIS_TLV_LSP_BUFFERSIZE_MINLEN)
break; break;
if (!TTEST2(*tptr, 2)) if (!TTEST2(*tptr, ISIS_TLV_LSP_BUFFERSIZE_MINLEN))
goto trunctlv; goto trunctlv;
printf("\n\t LSP Buffersize: %u",EXTRACT_16BITS(tptr)); printf("\n\t LSP Buffersize: %u",EXTRACT_16BITS(tptr));
break; break;
@ -2575,17 +2600,17 @@ static int isis_print (const u_int8_t *p, u_int length)
break; break;
case ISIS_TLV_IIH_SEQNR: case ISIS_TLV_IIH_SEQNR:
if (tmp < 4) if (tmp < ISIS_TLV_IIH_SEQNR_MINLEN)
break; 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; goto trunctlv;
printf("\n\t Sequence number: %u", EXTRACT_32BITS(tptr) ); printf("\n\t Sequence number: %u", EXTRACT_32BITS(tptr) );
break; break;
case ISIS_TLV_VENDOR_PRIVATE: case ISIS_TLV_VENDOR_PRIVATE:
if (tmp < 3) if (tmp < ISIS_TLV_VENDOR_PRIVATE_MINLEN)
break; 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; goto trunctlv;
vendor_id = EXTRACT_24BITS(tptr); vendor_id = EXTRACT_24BITS(tptr);
printf("\n\t Vendor: %s (%u)", printf("\n\t Vendor: %s (%u)",

View File

@ -15,7 +15,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -40,14 +40,18 @@ static const char rcsid[] _U_ =
#define JUNIPER_BPF_IN 1 /* Incoming packet */ #define JUNIPER_BPF_IN 1 /* Incoming packet */
#define JUNIPER_BPF_PKT_IN 0x1 /* Incoming packet */ #define JUNIPER_BPF_PKT_IN 0x1 /* Incoming packet */
#define JUNIPER_BPF_NO_L2 0x2 /* L2 header stripped */ #define JUNIPER_BPF_NO_L2 0x2 /* L2 header stripped */
#define JUNIPER_BPF_EXT 0x80 /* extensions present */
#define JUNIPER_MGC_NUMBER 0x4d4743 /* = "MGC" */ #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_SHIFT 4
#define JUNIPER_LSQ_L3_PROTO_MASK (0x17 << JUNIPER_LSQ_L3_PROTO_SHIFT) #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_IPV4 (0 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_IPV6 (1 << 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_MPLS (2 << JUNIPER_LSQ_L3_PROTO_SHIFT)
#define JUNIPER_LSQ_L3_PROTO_ISO (3 << 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_ESP_AUTHEN_TYPE 1
#define JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE 2 #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_IPV4 2
#define JUNIPER_PROTO_IPV6 6 #define JUNIPER_PROTO_IPV6 6
#define MFR_BE_MASK 0xc0
static struct tok juniper_protocol_values[] = { static struct tok juniper_protocol_values[] = {
{ JUNIPER_PROTO_NULL, "Null" }, { JUNIPER_PROTO_NULL, "Null" },
{ JUNIPER_PROTO_IPV4, "IPv4" }, { JUNIPER_PROTO_IPV4, "IPv4" },
@ -352,6 +358,74 @@ juniper_pppoe_print(const struct pcap_pkthdr *h, register const u_char *p)
} }
#endif #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 #ifdef DLT_JUNIPER_PPPOE_ATM
u_int u_int
juniper_pppoe_atm_print(const struct pcap_pkthdr *h, register const u_char *p) 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 */ /* first try the LSQ protos */
switch(l2info.proto) { switch(l2info.proto) {
case JUNIPER_LSQ_L3_PROTO_IPV4: 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; return l2info.header_len;
#ifdef INET6 #ifdef INET6
case JUNIPER_LSQ_L3_PROTO_IPV6: 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; return l2info.header_len;
p+=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 */ /* suppress Bundle-ID if frame was captured on a child-link */
if (eflag && EXTRACT_32BITS(l2info.cookie) != 1) printf("Bundle-ID %u, ",l2info.bundle); if (eflag && EXTRACT_32BITS(l2info.cookie) != 1) printf("Bundle-ID %u, ",l2info.bundle);
switch (l2info.proto) { 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) { 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; struct juniper_cookie_table_t *lp = juniper_cookie_table;
u_int idx; u_int idx, offset;
l2info->header_len = 0; l2info->header_len = 0;
l2info->cookie_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; l2info->direction = p[3]&JUNIPER_BPF_PKT_IN;
TCHECK2(p[0],4); 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; return 0;
else }
l2info->header_len = 4;
if (eflag) /* print direction */ if (eflag) /* print direction */
printf("%3s ",tok2str(juniper_direction_values,"---",l2info->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 ((p[3] & JUNIPER_BPF_NO_L2 ) == JUNIPER_BPF_NO_L2 ) {
if (eflag) if (eflag)
printf("no-L2-hdr, "); 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 * perform the v4/v6 heuristics
* to figure out what it is * to figure out what it is
*/ */
TCHECK2(p[8],1); TCHECK2(p[offset+4],1);
if(ip_heuristic_guess(p+8,l2info->length-8) == 0) if(ip_heuristic_guess(p+offset+4,l2info->length-(offset+4)) == 0)
printf("no IP-hdr found!"); printf("no IP-hdr found!");
l2info->header_len+=4; l2info->header_len=offset+4;
return 0; /* stop parsing the output further */ return 0; /* stop parsing the output further */
} }
l2info->header_len = offset;
p+=l2info->header_len; p+=l2info->header_len;
l2info->length -= l2info->header_len; l2info->length -= l2info->header_len;
l2info->caplen -= 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) { while (lp->s != NULL) {
if (lp->pictype == l2info->pictype) { if (lp->pictype == l2info->pictype) {
l2info->cookie_len = lp->cookie_len; l2info->cookie_len += lp->cookie_len;
l2info->header_len += lp->cookie_len;
switch (p[0]) { switch (p[0]) {
case LS_COOKIE_ID: case LS_COOKIE_ID:
l2info->cookie_type = LS_COOKIE_ID; l2info->cookie_type = LS_COOKIE_ID;
l2info->cookie_len += 2; l2info->cookie_len += 2;
l2info->header_len += 2;
break; break;
case AS_COOKIE_ID: case AS_COOKIE_ID:
l2info->cookie_type = AS_COOKIE_ID; l2info->cookie_type = AS_COOKIE_ID;
l2info->cookie_len += 6; l2info->cookie_len = 8;
l2info->header_len += 6;
break; break;
default: default:
@ -756,6 +871,19 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
break; 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) if (eflag)
printf("%s-PIC, cookie-len %u", printf("%s-PIC, cookie-len %u",
lp->s, lp->s,
@ -783,6 +911,7 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
/* DLT_ specific parsing */ /* DLT_ specific parsing */
switch(l2info->pictype) { switch(l2info->pictype) {
#ifdef DLT_JUNIPER_MLPPP
case DLT_JUNIPER_MLPPP: case DLT_JUNIPER_MLPPP:
switch (l2info->cookie_type) { switch (l2info->cookie_type) {
case LS_COOKIE_ID: case LS_COOKIE_ID:
@ -797,24 +926,51 @@ juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct junip
break; break;
} }
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: case DLT_JUNIPER_MFR:
switch (l2info->cookie_type) { switch (l2info->cookie_type) {
case LS_COOKIE_ID: case LS_COOKIE_ID:
l2info->bundle = l2info->cookie[1]; l2info->bundle = l2info->cookie[1];
l2info->proto = EXTRACT_16BITS(p);
l2info->header_len += 2;
l2info->length -= 2;
l2info->caplen -= 2;
break; break;
case AS_COOKIE_ID: case AS_COOKIE_ID:
l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff; l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff;
l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK;
break; break;
default: default:
l2info->bundle = l2info->cookie[0]; l2info->bundle = l2info->cookie[0];
break; break;
} }
l2info->proto = EXTRACT_16BITS(p);
l2info->header_len += 2;
l2info->length -= 2;
l2info->caplen -= 2;
break; break;
#endif
#ifdef DLT_JUNIPER_ATM2
case DLT_JUNIPER_ATM2: case DLT_JUNIPER_ATM2:
TCHECK2(p[0],4); TCHECK2(p[0],4);
/* ATM cell relay control word present ? */ /* 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)); printf("control-word 0x%08x ",EXTRACT_32BITS(p));
} }
break; break;
#endif
#ifdef DLT_JUNIPER_ATM1
case DLT_JUNIPER_ATM1: case DLT_JUNIPER_ATM1:
break;
#endif
default: default:
printf("Unknown Juniper DLT_ type %u: ", l2info->pictype);
break; break;
} }

View File

@ -22,7 +22,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -146,7 +146,7 @@ lane_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} else if (ether_encap_print(ether_type, p, length, 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 */ /* ether_type not known, print raw packet */
if (!eflag) if (!eflag)
lane_hdr_print((u_char *)ep, length + sizeof(*ep)); lane_hdr_print((u_char *)ep, length + sizeof(*ep));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} }

View File

@ -16,7 +16,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -302,7 +302,7 @@ ldp_tlv_print(register const u_char *tptr) {
printf("IPv4, addresses:"); printf("IPv4, addresses:");
for (i=0; i<(tlv_tlen-2)/4; i++) { for (i=0; i<(tlv_tlen-2)/4; i++) {
printf(" %s",ipaddr_string(tptr)); printf(" %s",ipaddr_string(tptr));
tptr+=4; tptr+=sizeof(struct in_addr);
} }
} }
#ifdef INET6 #ifdef INET6
@ -310,7 +310,7 @@ ldp_tlv_print(register const u_char *tptr) {
printf("IPv6, addresses:"); printf("IPv6, addresses:");
for (i=0; i<(tlv_tlen-2)/16; i++) { for (i=0; i<(tlv_tlen-2)/16; i++) {
printf(" %s",ip6addr_string(tptr)); printf(" %s",ip6addr_string(tptr));
tptr+=16; tptr+=sizeof(struct in6_addr);
} }
} }
#endif #endif

View File

@ -24,7 +24,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -50,6 +50,7 @@ static struct tok llc_values[] = {
{ LLCSAP_8021B_I, "802.1B I" }, { LLCSAP_8021B_I, "802.1B I" },
{ LLCSAP_8021B_G, "802.1B G" }, { LLCSAP_8021B_G, "802.1B G" },
{ LLCSAP_IP, "IP" }, { LLCSAP_IP, "IP" },
{ LLCSAP_SNA, "SNA" },
{ LLCSAP_PROWAYNM, "ProWay NM" }, { LLCSAP_PROWAYNM, "ProWay NM" },
{ LLCSAP_8021D, "STP" }, { LLCSAP_8021D, "STP" },
{ LLCSAP_RS511, "RS511" }, { LLCSAP_RS511, "RS511" },
@ -62,7 +63,7 @@ static struct tok llc_values[] = {
{ 0, NULL }, { 0, NULL },
}; };
static struct tok cmd2str[] = { static struct tok llc_cmd_values[] = {
{ LLC_UI, "ui" }, { LLC_UI, "ui" },
{ LLC_TEST, "test" }, { LLC_TEST, "test" },
{ LLC_XID, "xid" }, { LLC_XID, "xid" },
@ -74,6 +75,23 @@ static struct tok cmd2str[] = {
{ 0, NULL } { 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[] = { static const struct tok cisco_values[] = {
{ PID_CISCO_CDP, "CDP" }, { PID_CISCO_CDP, "CDP" },
{ 0, NULL } { 0, NULL }
@ -115,7 +133,7 @@ int
llc_print(const u_char *p, u_int length, u_int caplen, llc_print(const u_char *p, u_int length, u_int caplen,
const u_char *esrc, const u_char *edst, u_short *extracted_ethertype) 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; u_int16_t control;
int is_u; int is_u;
register int ret; register int ret;
@ -126,8 +144,10 @@ llc_print(const u_char *p, u_int length, u_int caplen,
return(0); return(0);
} }
dsap = *p; dsap_field = *p;
ssap = *(p + 1); dsap = dsap_field & ~LLC_IG;
ssap_field = *(p + 1);
ssap = ssap_field & ~LLC_GSAP;
/* /*
* OK, what type of LLC frame is this? The length * 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) if (eflag)
printf("IPX-802.3: "); printf("IPX 802.3: ");
ipx_print(p, length); ipx_print(p, length);
return (1); return (1);
} }
if (eflag) { 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) { if (is_u) {
printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x), cmd 0x%02x: ", printf(", cmd 0x%02x: ", control);
tok2str(llc_values, "Unknown", dsap),
dsap,
tok2str(llc_values, "Unknown", ssap),
ssap,
control);
} else { } else {
printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x), cmd 0x%04x: ", printf(", cmd 0x%04x: ", control);
tok2str(llc_values, "Unknown", dsap),
dsap,
tok2str(llc_values, "Unknown", ssap),
ssap,
control);
} }
} }
@ -221,7 +237,9 @@ llc_print(const u_char *p, u_int length, u_int caplen,
* *
* Skip DSAP, LSAP, and control field. * Skip DSAP, LSAP, and control field.
*/ */
printf("(NOV-802.2) "); if (eflag)
printf("IPX 802.2: ");
ipx_print(p+3, length-3); ipx_print(p+3, length-3);
return (1); return (1);
} }
@ -276,42 +294,33 @@ llc_print(const u_char *p, u_int length, u_int caplen,
} }
if (!eflag) { if (!eflag) {
if ((ssap & ~LLC_GSAP) == dsap) { if (ssap == dsap) {
if (esrc == NULL || edst == NULL) if (esrc == NULL || edst == NULL)
(void)printf("%s ", llcsap_string(dsap)); (void)printf("%s ", tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
else else
(void)printf("%s > %s %s ", (void)printf("%s > %s %s ",
etheraddr_string(esrc), etheraddr_string(esrc),
etheraddr_string(edst), etheraddr_string(edst),
llcsap_string(dsap)); tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
} else { } else {
if (esrc == NULL || edst == NULL) if (esrc == NULL || edst == NULL)
(void)printf("%s > %s ", (void)printf("%s > %s ",
llcsap_string(ssap & ~LLC_GSAP), tok2str(llc_values, "Unknown SSAP 0x%02x", ssap),
llcsap_string(dsap)); tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
else else
(void)printf("%s %s > %s %s ", (void)printf("%s %s > %s %s ",
etheraddr_string(esrc), etheraddr_string(esrc),
llcsap_string(ssap & ~LLC_GSAP), tok2str(llc_values, "Unknown SSAP 0x%02x", ssap),
etheraddr_string(edst), etheraddr_string(edst),
llcsap_string(dsap)); tok2str(llc_values, "Unknown DSAP 0x%02x", dsap));
} }
} }
if (is_u) { if (is_u) {
const char *m; printf("Unnumbered, %s, Flags [%s], length %u",
char f; tok2str(llc_cmd_values, "%02x", LLC_U_CMD(control)),
bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_U_POLL)),
m = tok2str(cmd2str, "%02x", LLC_U_CMD(control)); length);
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);
p += 3; p += 3;
length -= 3; length -= 3;
@ -326,27 +335,19 @@ llc_print(const u_char *p, u_int length, u_int caplen,
} }
} }
} else { } 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) { if ((control & LLC_S_FMT) == LLC_S_FMT) {
static const char *llc_s[] = { "rr", "rej", "rnr", "03" }; (void)printf("Supervisory, %s, rcv seq %u, Flags [%s], length %u",
(void)printf("%s (r=%d,%c)", tok2str(llc_supervisory_values,"?",LLC_S_CMD(control)),
llc_s[LLC_S_CMD(control)],
LLC_IS_NR(control), LLC_IS_NR(control),
f); bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)),
length);
} else { } 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_I_NS(control),
LLC_IS_NR(control), LLC_IS_NR(control),
f); bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)),
length);
} }
p += 4; p += 4;
length -= 4; length -= 4;

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -173,7 +173,7 @@ null_if_print(const struct pcap_pkthdr *h, const u_char *p)
/* unknown AF_ value */ /* unknown AF_ value */
if (!eflag) if (!eflag)
null_hdr_print(family, length + NULL_HDRLEN); null_hdr_print(family, length + NULL_HDRLEN);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }

View File

@ -23,7 +23,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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_LINK_PROTECTION_TYPE, "Link Protection Type" },
{ LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR, "Interface Switching Capability" }, { 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_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 } { 0, NULL }
}; };
@ -253,7 +253,7 @@ ospf_print_lsa(register const struct lsa *lsap)
register const struct aslametric *almp; register const struct aslametric *almp;
register const struct mcla *mcp; register const struct mcla *mcp;
register const u_int32_t *lp; 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; register int ls_length;
const u_int8_t *tptr; const u_int8_t *tptr;
int count_srlg; int count_srlg;
@ -627,22 +627,22 @@ ospf_print_lsa(register const struct lsa *lsap)
printf(", %.3f Mbps", bw.f*8/1000000 ); printf(", %.3f Mbps", bw.f*8/1000000 );
break; break;
case LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW: case LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW:
for (priority_level = 0; priority_level < 8; priority_level++) { for (te_class = 0; te_class < 8; te_class++) {
bw.i = EXTRACT_32BITS(tptr+priority_level*4); bw.i = EXTRACT_32BITS(tptr+te_class*4);
printf("\n\t\tpriority level %d: %.3f Mbps", printf("\n\t\tTE-Class %u: %.3f Mbps",
priority_level, te_class,
bw.f*8/1000000 ); bw.f*8/1000000 );
} }
break; 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)", printf("\n\t\tBandwidth Constraints Model ID: %s (%u)",
tok2str(diffserv_te_bc_values, "unknown", *tptr), tok2str(diffserv_te_bc_values, "unknown", *tptr),
*tptr); *tptr);
/* decode BCs until the subTLV ends */ /* decode BCs until the subTLV ends */
for (bandwidth_constraint = 0; bandwidth_constraint < (subtlv_length-4)/4; bandwidth_constraint++) { for (te_class = 0; te_class < (subtlv_length-4)/4; te_class++) {
bw.i = EXTRACT_32BITS(tptr+4+bandwidth_constraint*4); bw.i = EXTRACT_32BITS(tptr+4+te_class*4);
printf("\n\t\t Bandwidth constraint %d: %.3f Mbps", printf("\n\t\t Bandwidth constraint CT%u: %.3f Mbps",
bandwidth_constraint, te_class,
bw.f*8/1000000 ); bw.f*8/1000000 );
} }
break; break;

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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 */ /* address family not handled, print raw packet */
if (!eflag) if (!eflag)
pflog_print(hdr); pflog_print(hdr);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }

View File

@ -21,7 +21,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -140,7 +140,7 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
return; return;
} }
TCHECK2(bp[0], 4); TCHECK2(bp[0], sizeof(struct in_addr));
if (vflag > 1) if (vflag > 1)
(void)printf("\n"); (void)printf("\n");
(void)printf(" Upstream Nbr: %s", ipaddr_string(bp)); (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 * XXX - does the address have length "addrlen" and the
* mask length "maddrlen"? * mask length "maddrlen"?
*/ */
TCHECK2(bp[0], 4); TCHECK2(bp[0], sizeof(struct in_addr));
(void)printf("\n\tGroup: %s", ipaddr_string(bp)); (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) if (EXTRACT_32BITS(&bp[4]) != 0xffffffff)
(void)printf("/%s", ipaddr_string(&bp[4])); (void)printf("/%s", ipaddr_string(&bp[4]));
TCHECK2(bp[8], 4); TCHECK2(bp[8], 4);
@ -247,7 +247,7 @@ pimv1_print(register const u_char *bp, register u_int len)
break; break;
case 2: case 2:
(void)printf(" Register-Stop"); (void)printf(" Register-Stop");
TCHECK2(bp[12], 4); TCHECK2(bp[12], sizeof(struct in_addr));
(void)printf(" for %s > %s", ipaddr_string(&bp[8]), (void)printf(" for %s > %s", ipaddr_string(&bp[8]),
ipaddr_string(&bp[12])); ipaddr_string(&bp[12]));
break; break;
@ -270,7 +270,7 @@ pimv1_print(register const u_char *bp, register u_int len)
break; break;
case 5: case 5:
(void)printf(" Assert"); (void)printf(" Assert");
TCHECK2(bp[16], 4); TCHECK2(bp[16], sizeof(struct in_addr));
(void)printf(" for %s > %s", ipaddr_string(&bp[16]), (void)printf(" for %s > %s", ipaddr_string(&bp[16]),
ipaddr_string(&bp[8])); ipaddr_string(&bp[8]));
if (EXTRACT_32BITS(&bp[12]) != 0xffffffff) 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]) { switch (bp[0]) {
case 1: case 1:
af = AF_INET; af = AF_INET;
len = 4; len = sizeof(struct in_addr);
break; break;
#ifdef INET6 #ifdef INET6
case 2: case 2:
af = AF_INET6; af = AF_INET6;
len = 16; len = sizeof(struct in6_addr);
break; break;
#endif #endif
default: default:
@ -536,11 +536,11 @@ pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent)
hdrlen = 2; hdrlen = 2;
} else { } else {
switch (pimv2_addr_len) { switch (pimv2_addr_len) {
case 4: case sizeof(struct in_addr):
af = AF_INET; af = AF_INET;
break; break;
#ifdef INET6 #ifdef INET6
case 16: case sizeof(struct in6_addr):
af = AF_INET6; af = AF_INET6;
break; break;
#endif #endif

View File

@ -44,7 +44,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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) switch(attr_code)
{ {
case TUNNEL_PASS: case TUNNEL_PASS:
if (length < 3)
{
printf(" [|radius]");
return;
}
if (*data && (*data <=0x1F) ) if (*data && (*data <=0x1F) )
printf("Tag %u, ",*data); printf("Tag %u, ",*data);
data++; data++;
length--;
printf("Salt %u ",EXTRACT_16BITS(data) ); printf("Salt %u ",EXTRACT_16BITS(data) );
data+=2; data+=2;
length-=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: case TUNNEL_SERVER_AUTH:
if (*data <= 0x1F) if (*data <= 0x1F)
{ {
if (length < 1)
{
printf(" [|radius]");
return;
}
printf("Tag %u",*data); printf("Tag %u",*data);
data++; data++;
length--; length--;
@ -482,7 +493,7 @@ print_attr_string(register u_char *data, u_int length, u_short attr_code )
return; return;
trunc: 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_type;
u_int vendor_length; u_int vendor_length;
/* FIXME: all sort of boundary checks */ if (length < 4)
goto trunc;
TCHECK2(*data, 4);
vendor_id = EXTRACT_32BITS(data); vendor_id = EXTRACT_32BITS(data);
data+=4; data+=4;
length-=4; length-=4;
@ -507,15 +520,29 @@ print_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_)
vendor_id); vendor_id);
while (length >= 2) { while (length >= 2) {
if(!TTEST2(*data, 2)) TCHECK2(*data, 2);
return;
vendor_type = *(data); vendor_type = *(data);
vendor_length = *(data+1); 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; data+=2;
if(!TTEST2(*data, vendor_length)) vendor_length-=2;
return; length-=2;
TCHECK2(*data, vendor_length);
printf("\n\t Vendor Attribute: %u, Length: %u, Value: ", printf("\n\t Vendor Attribute: %u, Length: %u, Value: ",
vendor_type, 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 ); printf("%c",(*data < 32 || *data > 128) ? '.' : *data );
length-=vendor_length; 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; return;
trunc: trunc:
printf("|radius}"); printf(" [|radius]");
} }
@ -683,7 +714,7 @@ print_attr_address(register u_char *data, u_int length, u_short attr_code )
return; return;
trunc: 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; return;
trunc: 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; len_data = 4;
PRINT_HEX(len_data, data); PRINT_HEX(len_data, data);
printf(", Current Time: "); printf(", Current Time: ");
len_data = 4;
TCHECK2(data[0],4); TCHECK2(data[0],4);
len_data = 4;
PRINT_HEX(len_data, data); PRINT_HEX(len_data, data);
break; 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); PRINT_HEX(len_data, data);
break; break;
} }
return;
trunc: trunc:
printf("|radius}"); printf(" [|radius]");
} }
static void 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; register const struct radius_attr *rad_attr = (struct radius_attr *)attr;
const char *attr_string;
if (length < 3)
{
printf(" [|radius]");
return;
}
while (length > 0) 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", printf("\n\t %s Attribute (%u), length: %u (bogus, must be >= 2)",
attr_type[rad_attr->type].name, attr_string,
rad_attr->type); rad_attr->type,
rad_attr->len);
return; 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: ", printf("\n\t %s Attribute (%u), length: %u (bogus, goes past end of packet)",
attr_type[rad_attr->type].name, attr_string,
rad_attr->type, rad_attr->type,
rad_attr->len); 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);
}
}
}
else {
printf(" [|radius]");
return; return;
} }
printf("\n\t %s Attribute (%u), length: %u, Value: ",
attr_string,
rad_attr->type,
rad_attr->len);
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);
}
}
/* do we also want to see a hex dump ? */ /* 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); print_unknown_data((u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
length-=(rad_attr->len); length-=(rad_attr->len);
rad_attr = (struct radius_attr *)( ((char *)(rad_attr))+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) radius_print(const u_char *dat, u_int length)
{ {
register const struct radius_hdr *rad; register const struct radius_hdr *rad;
register u_int i;
u_int len, auth_idx; u_int len, auth_idx;
if (snapend < dat) TCHECK2(*dat, MIN_RADIUS_LEN);
{
printf(" [|radius]");
return;
}
i = snapend - dat;
if (i > length)
i = length;
if (i < MIN_RADIUS_LEN)
{
printf(" [|radius]");
return;
}
rad = (struct radius_hdr *)dat; rad = (struct radius_hdr *)dat;
len = EXTRACT_16BITS(&rad->len); len = EXTRACT_16BITS(&rad->len);
@ -881,22 +906,20 @@ radius_print(const u_char *dat, u_int length)
return; return;
} }
if (len < i) if (len > length)
i = len; len = length;
i -= MIN_RADIUS_LEN;
if (vflag < 1) { if (vflag < 1) {
printf("RADIUS, %s (%u), id: 0x%02x length: %u", printf("RADIUS, %s (%u), id: 0x%02x length: %u",
tok2str(radius_command_values,"Unknown Command",rad->code), tok2str(radius_command_values,"Unknown Command",rad->code),
rad->code, rad->code,
rad->id, rad->id,
length); len);
return; return;
} }
else { else {
printf("RADIUS, length: %u\n\t%s (%u), id: 0x%02x, Authenticator: ", printf("RADIUS, length: %u\n\t%s (%u), id: 0x%02x, Authenticator: ",
length, len,
tok2str(radius_command_values,"Unknown Command",rad->code), tok2str(radius_command_values,"Unknown Command",rad->code),
rad->code, rad->code,
rad->id); rad->id);
@ -905,6 +928,10 @@ radius_print(const u_char *dat, u_int length)
printf("%02x", rad->auth[auth_idx] ); printf("%02x", rad->auth[auth_idx] );
} }
if (i) if (len > MIN_RADIUS_LEN)
radius_attr_print( dat + MIN_RADIUS_LEN, i); radius_attrs_print( dat + MIN_RADIUS_LEN, len - MIN_RADIUS_LEN);
return;
trunc:
printf(" [|radius]");
} }

View File

@ -1,4 +1,6 @@
/* /*
* Copyright (c) 1998-2005 The TCPDUMP project
*
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that: (1) source code * modification, are permitted provided that: (1) source code
* distributions retain the above copyright notice and this paragraph * distributions retain the above copyright notice and this paragraph
@ -15,7 +17,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #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_SESSION 1 /* rfc2205 */
#define RSVP_OBJ_RSVP_HOP 3 /* rfc2205, rfc3473 */ #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_TIME_VALUES 5 /* rfc2205 */
#define RSVP_OBJ_ERROR_SPEC 6 #define RSVP_OBJ_ERROR_SPEC 6
#define RSVP_OBJ_SCOPE 7 #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_UPSTREAM_LABEL 35 /* rfc3473 */
#define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */ #define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */
#define RSVP_OBJ_PROTECTION 37 /* rfc3473 */ #define RSVP_OBJ_PROTECTION 37 /* rfc3473 */
#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-01 */ #define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */
#define RSVP_OBJ_CLASSTYPE 125 /* draft-ietf-tewg-diff-te-proto-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_SUGGESTED_LABEL 129 /* rfc3473 */
#define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */ #define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */
#define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */ #define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */
#define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */ #define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */
#define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */ #define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */
#define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */ #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_SESSION_ATTRIBUTE 207 /* rfc3209 */
#define RSVP_OBJ_CALL_ID 230 /* rfc3474 */ #define RSVP_OBJ_CALL_ID 230 /* rfc3474 */
#define RSVP_OBJ_CALL_OPS 236 /* 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_ACCEPT_LABEL_SET, "Acceptable Label Set" },
{ RSVP_OBJ_DETOUR, "Detour" }, { RSVP_OBJ_DETOUR, "Detour" },
{ RSVP_OBJ_CLASSTYPE, "Class Type" }, { RSVP_OBJ_CLASSTYPE, "Class Type" },
{ RSVP_OBJ_CLASSTYPE_OLD, "Class Type (old)" },
{ RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" }, { RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" },
{ RSVP_OBJ_PROPERTIES, "Properties" }, { RSVP_OBJ_PROPERTIES, "Properties" },
{ RSVP_OBJ_FASTREROUTE, "Fast Re-Route" }, { 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_ERROR_SPEC+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" },
{ 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1, "IPv4" }, { 256*RSVP_OBJ_RESTART_CAPABILITY+RSVP_CTYPE_1, "IPv4" },
{ 256*RSVP_OBJ_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel 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_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" },
{ 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" }, { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" },
{ 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" }, { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" },
{ 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1, "1" },
{ 0, NULL} { 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_SUBOBJ(x) ((x)&0x7f)
#define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80) #define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80)
@ -288,7 +319,7 @@ static const struct tok rsvp_obj_xro_values[] = {
{ 0, NULL} { 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[] = { static const struct tok rsvp_obj_rro_flag_values[] = {
{ 0x01, "Local protection available" }, { 0x01, "Local protection available" },
{ 0x02, "Local protection in use" }, { 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_ROUTING 24
#define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25 #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[] = { static struct tok rsvp_obj_error_code_values[] = {
{ RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" }, { RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" },
{ RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" }, { 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, "Diffserv TE Error" },
{ RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD, "Diffserv TE Error (Old)" },
{ 0, NULL} { 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[] = { static struct tok rsvp_obj_error_code_diffserv_te_values[] = {
{ 1, "Unexpected CLASSTYPE object" }, { 1, "Unexpected CT object" },
{ 2, "Unsupported Class-Type" }, { 2, "Unsupported CT" },
{ 3, "Invalid Class-Type value" }, { 3, "Invalid CT value" },
{ 4, "Class-Type and setup priority do not form a configured TE-Class" }, { 4, "CT/setup priority do not form a configured TE-Class" },
{ 5, "Class-Type and holding priority do not form a configured TE-Class" }, { 5, "CT/holding priority do not form a configured TE-Class" },
{ 6, "Inconsistency between signaled PSC and signaled Class-Type" }, { 6, "CT/setup priority and CT/holding priority do not form a configured TE-Class" },
{ 7, "Inconsistency between signaled PHBs and signaled Class-Type" }, { 7, "Inconsistency between signaled PSC and signaled CT" },
{ 0, NULL} { 8, "Inconsistency between signaled PHBs and signaled CT" },
{ 0, NULL}
}; };
#define FALSE 0 #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 struct rsvp_object_header *rsvp_obj_header;
const u_char *obj_tptr; 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; u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen;
int hexdump,processed,padbytes,error_code,error_value,i; int hexdump,processed,padbytes,error_code,error_value,i;
union { 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", printf("%s IPv4 DestAddress: %s, Protocol ID: 0x%02x",
ident, ident,
ipaddr_string(obj_tptr), ipaddr_string(obj_tptr),
*(obj_tptr+4)); *(obj_tptr+sizeof(struct in_addr)));
printf("%s Flags: [0x%02x], DestPort %u", printf("%s Flags: [0x%02x], DestPort %u",
ident, ident,
*(obj_tptr+5), *(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", printf("%s IPv6 DestAddress: %s, Protocol ID: 0x%02x",
ident, ident,
ip6addr_string(obj_tptr), ip6addr_string(obj_tptr),
*(obj_tptr+16)); *(obj_tptr+sizeof(struct in6_addr)));
printf("%s Flags: [0x%02x], DestPort %u", printf("%s Flags: [0x%02x], DestPort %u",
ident, ident,
*(obj_tptr+17), *(obj_tptr+sizeof(struct in6_addr)+1),
EXTRACT_16BITS(obj_tptr+18)); EXTRACT_16BITS(obj_tptr+sizeof(struct in6_addr)+2));
obj_tlen-=20; obj_tlen-=20;
obj_tptr+=20; obj_tptr+=20;
break; break;
@ -663,23 +702,23 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
case RSVP_OBJ_CONFIRM: case RSVP_OBJ_CONFIRM:
switch(rsvp_obj_ctype) { switch(rsvp_obj_ctype) {
case RSVP_CTYPE_IPV4: case RSVP_CTYPE_IPV4:
if (obj_tlen < 4) if (obj_tlen < sizeof(struct in_addr))
return -1; return -1;
printf("%s IPv4 Receiver Address: %s", printf("%s IPv4 Receiver Address: %s",
ident, ident,
ipaddr_string(obj_tptr)); ipaddr_string(obj_tptr));
obj_tlen-=4; obj_tlen-=sizeof(struct in_addr);
obj_tptr+=4; obj_tptr+=sizeof(struct in_addr);
break; break;
#ifdef INET6 #ifdef INET6
case RSVP_CTYPE_IPV6: case RSVP_CTYPE_IPV6:
if (obj_tlen < 16) if (obj_tlen < sizeof(struct in6_addr))
return -1; return -1;
printf("%s IPv6 Receiver Address: %s", printf("%s IPv6 Receiver Address: %s",
ident, ident,
ip6addr_string(obj_tptr)); ip6addr_string(obj_tptr));
obj_tlen-=16; obj_tlen-=sizeof(struct in6_addr);
obj_tptr+=16; obj_tptr+=sizeof(struct in6_addr);
break; break;
#endif #endif
default: default:
@ -690,23 +729,23 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
case RSVP_OBJ_NOTIFY_REQ: case RSVP_OBJ_NOTIFY_REQ:
switch(rsvp_obj_ctype) { switch(rsvp_obj_ctype) {
case RSVP_CTYPE_IPV4: case RSVP_CTYPE_IPV4:
if (obj_tlen < 4) if (obj_tlen < sizeof(struct in_addr))
return -1; return -1;
printf("%s IPv4 Notify Node Address: %s", printf("%s IPv4 Notify Node Address: %s",
ident, ident,
ipaddr_string(obj_tptr)); ipaddr_string(obj_tptr));
obj_tlen-=4; obj_tlen-=sizeof(struct in_addr);
obj_tptr+=4; obj_tptr+=sizeof(struct in_addr);
break; break;
#ifdef INET6 #ifdef INET6
case RSVP_CTYPE_IPV6: case RSVP_CTYPE_IPV6:
if (obj_tlen < 16) if (obj_tlen < sizeof(struct in6_addr))
return-1; return-1;
printf("%s IPv6 Notify Node Address: %s", printf("%s IPv6 Notify Node Address: %s",
ident, ident,
ip6addr_string(obj_tptr)); ip6addr_string(obj_tptr));
obj_tlen-=16; obj_tlen-=sizeof(struct in6_addr);
obj_tptr+=16; obj_tptr+=sizeof(struct in6_addr);
break; break;
#endif #endif
default: default:
@ -997,7 +1036,8 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
EXTRACT_32BITS(obj_tptr+4)); EXTRACT_32BITS(obj_tptr+4));
obj_tlen-=8; obj_tlen-=8;
obj_tptr+=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; break;
#ifdef INET6 #ifdef INET6
case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ 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; break;
case RSVP_OBJ_FASTREROUTE: 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) { switch(rsvp_obj_ctype) {
case RSVP_CTYPE_TUNNEL_IPV4: case RSVP_CTYPE_1: /* new style */
if (obj_tlen < 16) if (obj_tlen < sizeof(struct rsvp_obj_frr_t))
return-1; return-1;
bw.i = EXTRACT_32BITS(obj_tptr+4);
printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps",
ident, ident,
(int)*obj_tptr, (int)obj_ptr.rsvp_obj_frr->setup_prio,
(int)*(obj_tptr+1), (int)obj_ptr.rsvp_obj_frr->hold_prio,
(int)*(obj_tptr+2), (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;
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); bw.f*8/1000000);
printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x", printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x",
ident, ident,
EXTRACT_32BITS(obj_tptr+8), EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any),
EXTRACT_32BITS(obj_tptr+12)); EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any));
obj_tlen-=16; obj_tlen-=16;
obj_tptr+=16; obj_tptr+=16;
break; break;
default: default:
hexdump=TRUE; hexdump=TRUE;
} }
@ -1177,9 +1239,10 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
break; break;
case RSVP_OBJ_CLASSTYPE: case RSVP_OBJ_CLASSTYPE:
case RSVP_OBJ_CLASSTYPE_OLD: /* fall through */
switch(rsvp_obj_ctype) { switch(rsvp_obj_ctype) {
case RSVP_CTYPE_1: case RSVP_CTYPE_1:
printf("%s Class Type: %u", printf("%s CT: %u",
ident, ident,
EXTRACT_32BITS(obj_tptr)&0x7); EXTRACT_32BITS(obj_tptr)&0x7);
obj_tlen-=4; 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), tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value),
error_value); error_value);
break; 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)", printf(", Error Value: %s (%u)",
tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value), tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value),
error_value); error_value);
@ -1317,12 +1381,40 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) {
} }
break; 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 * FIXME those are the defined objects that lack a decoder
* you are welcome to contribute code ;-) * you are welcome to contribute code ;-)
*/ */
case RSVP_OBJ_INTEGRITY:
case RSVP_OBJ_SCOPE: case RSVP_OBJ_SCOPE:
case RSVP_OBJ_POLICY_DATA: case RSVP_OBJ_POLICY_DATA:
case RSVP_OBJ_LABEL_SET: case RSVP_OBJ_LABEL_SET:

View File

@ -35,7 +35,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -200,7 +200,7 @@ void sctp_print(const u_char *bp, /* beginning of sctp packet */
printf("[Payload"); printf("[Payload");
if (!xflag && !qflag) { if (!suppress_default_print) {
payloadPtr = (const u_char *) (++dataHdrPtr); payloadPtr = (const u_char *) (++dataHdrPtr);
printf(":"); printf(":");
if (htons(chunkDescPtr->chunkLength) < if (htons(chunkDescPtr->chunkLength) <

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -181,7 +181,7 @@ sll_if_print(const struct pcap_pkthdr *h, const u_char *p)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
break; break;
} }
@ -190,7 +190,7 @@ sll_if_print(const struct pcap_pkthdr *h, const u_char *p)
/* ether_type not known, print raw packet */ /* ether_type not known, print raw packet */
if (!eflag) if (!eflag)
sll_print(sllp, length + SLL_HDR_LEN); sll_print(sllp, length + SLL_HDR_LEN);
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }

View File

@ -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");
}

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -105,7 +105,7 @@ symantec_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag) if (!eflag)
symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header)); symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} else if (ether_encap_print(ether_type, p, length, caplen, } else if (ether_encap_print(ether_type, p, length, caplen,
&extracted_ether_type) == 0) { &extracted_ether_type) == 0) {
@ -113,7 +113,7 @@ symantec_if_print(const struct pcap_pkthdr *h, const u_char *p)
if (!eflag) if (!eflag)
symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header)); symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }

View File

@ -799,7 +799,7 @@ tcp_verify_signature(const struct ip *ip, const struct tcphdr *tp,
MD5_Update(&ctx, tcpmd5secret, strlen(tcpmd5secret)); MD5_Update(&ctx, tcpmd5secret, strlen(tcpmd5secret));
MD5_Final(sig, &ctx); MD5_Final(sig, &ctx);
if (memcmp(rcvsig, sig, 16) == 0) if (memcmp(rcvsig, sig, 16))
return (SIGNATURE_VALID); return (SIGNATURE_VALID);
else else
return (SIGNATURE_INVALID); return (SIGNATURE_INVALID);

View File

@ -25,7 +25,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] _U_ = 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 #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -167,7 +167,7 @@ token_print(const u_char *p, u_int length, u_int caplen)
printf("(LLC %s) ", printf("(LLC %s) ",
etherproto_string(htons(extracted_ethertype))); etherproto_string(htons(extracted_ethertype)));
} }
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
} else { } else {
@ -176,7 +176,7 @@ token_print(const u_char *p, u_int length, u_int caplen)
if (!eflag) if (!eflag)
token_hdr_print(trp, length + TOKEN_HDRLEN + route_len, token_hdr_print(trp, length + TOKEN_HDRLEN + route_len,
ESRC(&ehdr), EDST(&ehdr)); ESRC(&ehdr), EDST(&ehdr));
if (!xflag && !qflag) if (!suppress_default_print)
default_print(p, caplen); default_print(p, caplen);
} }
return (hdr_len); return (hdr_len);

View File

@ -29,7 +29,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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 <stdio.h>
#include <winsock2.h> #include <winsock2.h>
#include <Ws2tcpip.h>
#include "bittypes.h" #include "bittypes.h"
#include <ctype.h> #include <ctype.h>
#include <time.h> #include <time.h>
#include <io.h> #include <io.h>
#include "IP6_misc.h"
#include <fcntl.h> #include <fcntl.h>
#include <sys/types.h> #include <sys/types.h>
#include <net/netdb.h> /* in wpcap's Win32/include */ #include <net/netdb.h> /* in wpcap's Win32/include */

View File

@ -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 $ .\" $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. \fItcpdump\fP does not currently know how to parse these protocols.
.IP "\fBvlan \fI[vlan_id]\fR" .IP "\fBvlan \fI[vlan_id]\fR"
True if the packet is an IEEE 802.1Q VLAN packet. 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. \fIvlan_id\fR.
Note that the first \fBvlan\fR keyword encountered in \fIexpression\fR Note that the first \fBvlan\fR keyword encountered in \fIexpression\fR
changes the decoding offsets for the remainder of \fIexpression\fR changes the decoding offsets for the remainder of \fIexpression\fR on
on the assumption that the packet is a VLAN packet. the assumption that the packet is a VLAN packet. The \fBvlan
the \fI[vlan_id]\fR statement may be used more than once, to filter on vlan hierarchies. \fI[vlan_id]\fR expression may be used more than once, to filter on VLAN
each use of the \fI[vlan_id]\fR \fIexpression\fR increments the filter offsets by 4. hierarchies. Each use of that expression increments the filter offsets
by 4.
.IP
For example:
.in +.5i
.nf
\fBvlan 100 && vlan 200\fR
.fi .fi
example(s): .in -.5i
filters on VLAN 200 encapsulated within VLAN 100, and
.in +.5i
.nf
\fBvlan && vlan 300 && ip\fR
.fi .fi
"vlan 100 && vlan 200" filters on vlan 200 encapsulated within vlan 100 .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 .fi
"vlan && vlan 300 && ip" filters IPv4 protocols encapsulated in vlan 300 encapsulated within any higher order vlan .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 .fi
.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" .IP "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
Abbreviations for: Abbreviations for:
.in +.5i .in +.5i

View File

@ -30,7 +30,7 @@ static const char copyright[] _U_ =
"@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ "@(#) 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"; The Regents of the University of California. All rights reserved.\n";
static const char rcsid[] _U_ = 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 #endif
/* /*
@ -252,6 +252,18 @@ static struct printer printers[] = {
#endif #endif
#ifdef DLT_JUNIPER_SERVICES #ifdef DLT_JUNIPER_SERVICES
{ juniper_services_print, 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 #endif
{ NULL, 0 }, { NULL, 0 },
}; };
@ -492,8 +504,6 @@ main(int argc, char **argv)
break; break;
case 'A': case 'A':
++xflag;
++Xflag;
++Aflag; ++Aflag;
break; break;
@ -655,6 +665,7 @@ main(int argc, char **argv)
case 'q': case 'q':
++qflag; ++qflag;
++suppress_default_print;
break; break;
case 'r': case 'r':
@ -735,10 +746,12 @@ main(int argc, char **argv)
case 'x': case 'x':
++xflag; ++xflag;
++suppress_default_print;
break; break;
case 'X': case 'X':
++Xflag; ++Xflag;
++suppress_default_print;
break; break;
case 'y': case 'y':
@ -1224,9 +1237,28 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
snapend = sp + h->caplen; snapend = sp + h->caplen;
hdrlen = (*print_info->printer)(h, sp); 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) { 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, hex_print("\n\t", sp + hdrlen,
h->caplen - 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. * Include the link-layer header.
*/ */
ascii_print("\n\t", sp, h->caplen); ascii_print(sp, h->caplen);
} else { } else {
/* /*
* Don't include the link-layer header - and if * 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. * print nothing.
*/ */
if (h->caplen > hdrlen) if (h->caplen > hdrlen)
ascii_print("\n\t", sp + hdrlen, ascii_print(sp + hdrlen, h->caplen - hdrlen);
h->caplen - hdrlen);
} }
} }
@ -1299,12 +1330,12 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
#endif #endif
/* /*
* By default, print the specified data out in hex. * By default, print the specified data out in hex and ASCII.
*/ */
static void static void
ndo_default_print(netdissect_options *ndo _U_, const u_char *bp, u_int length) 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 void

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,12 @@
#!/bin/sh
for i in *.sh
do
if [ "X$i" = "Xalltests.sh" ]
then
continue;
fi
sh ./$i
done

View File

@ -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)

View File

@ -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

View File

@ -0,0 +1 @@
set args -r eapon1.pcap

View File

@ -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

View File

@ -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

13
contrib/tcpdump/tests/eapon1.sh Executable file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -0,0 +1 @@
set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840" -r 08-sunrise-sunset-esp2.pcap

View File

@ -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

View File

@ -0,0 +1,2 @@
set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap

View File

@ -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

View File

@ -0,0 +1,3 @@
set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
IP 127.0.0.1.500 > 127.0.0.1.500: isakmp: phase 2/others ? #190[C]

View File

@ -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

View File

@ -0,0 +1 @@
IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

14
contrib/tcpdump/tests/lmp.sh Executable file
View File

@ -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

View File

@ -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

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More