Import of tcpdump v3.9.4
This commit is contained in:
parent
06885fed80
commit
2ebc47db5b
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 \
|
||||||
|
@ -1 +1 @@
|
|||||||
3.9.1
|
3.9.4
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
12
contrib/tcpdump/configure
vendored
12
contrib/tcpdump/configure
vendored
@ -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
|
||||||
#
|
#
|
||||||
|
@ -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
137
contrib/tcpdump/dccp.h
Normal 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__ */
|
@ -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
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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" },
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 *,
|
||||||
|
@ -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 */
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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 {
|
||||||
|
526
contrib/tcpdump/print-dccp.c
Normal file
526
contrib/tcpdump/print-dccp.c
Normal 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;
|
||||||
|
}
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)",
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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]");
|
||||||
}
|
}
|
||||||
|
@ -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:
|
||||||
|
@ -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) <
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
264
contrib/tcpdump/print-slow.c
Normal file
264
contrib/tcpdump/print-slow.c
Normal 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");
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
11
contrib/tcpdump/tests/.cvsignore
Normal file
11
contrib/tcpdump/tests/.cvsignore
Normal 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
|
34
contrib/tcpdump/tests/02-sunrise-sunset-esp.puu
Normal file
34
contrib/tcpdump/tests/02-sunrise-sunset-esp.puu
Normal 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
|
36
contrib/tcpdump/tests/08-sunrise-sunset-aes.puu
Normal file
36
contrib/tcpdump/tests/08-sunrise-sunset-aes.puu
Normal 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
|
43
contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu
Normal file
43
contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu
Normal 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>,+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
|
12
contrib/tcpdump/tests/alltests.sh
Normal file
12
contrib/tcpdump/tests/alltests.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in *.sh
|
||||||
|
do
|
||||||
|
if [ "X$i" = "Xalltests.sh" ]
|
||||||
|
then
|
||||||
|
continue;
|
||||||
|
fi
|
||||||
|
sh ./$i
|
||||||
|
done
|
||||||
|
|
||||||
|
|
18
contrib/tcpdump/tests/bgp_vpn_attrset.out
Normal file
18
contrib/tcpdump/tests/bgp_vpn_attrset.out
Normal 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)
|
11
contrib/tcpdump/tests/bgp_vpn_attrset.sh
Executable file
11
contrib/tcpdump/tests/bgp_vpn_attrset.sh
Executable 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
|
||||||
|
|
||||||
|
|
1
contrib/tcpdump/tests/eapon1.gdbinit
Normal file
1
contrib/tcpdump/tests/eapon1.gdbinit
Normal file
@ -0,0 +1 @@
|
|||||||
|
set args -r eapon1.pcap
|
114
contrib/tcpdump/tests/eapon1.out
Normal file
114
contrib/tcpdump/tests/eapon1.out
Normal 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
|
368
contrib/tcpdump/tests/eapon1.puu
Normal file
368
contrib/tcpdump/tests/eapon1.puu
Normal 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
13
contrib/tcpdump/tests/eapon1.sh
Executable 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
|
||||||
|
|
66
contrib/tcpdump/tests/eapon2.puu
Normal file
66
contrib/tcpdump/tests/eapon2.puu
Normal 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
|
5
contrib/tcpdump/tests/esp-secrets.txt
Normal file
5
contrib/tcpdump/tests/esp-secrets.txt
Normal 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
|
8
contrib/tcpdump/tests/esp0.out
Normal file
8
contrib/tcpdump/tests/esp0.out
Normal 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
|
12
contrib/tcpdump/tests/esp0.sh
Normal file
12
contrib/tcpdump/tests/esp0.sh
Normal 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
|
||||||
|
|
||||||
|
|
1
contrib/tcpdump/tests/esp1.gdbinit
Normal file
1
contrib/tcpdump/tests/esp1.gdbinit
Normal file
@ -0,0 +1 @@
|
|||||||
|
set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap
|
8
contrib/tcpdump/tests/esp1.out
Normal file
8
contrib/tcpdump/tests/esp1.out
Normal 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)
|
13
contrib/tcpdump/tests/esp1.sh
Normal file
13
contrib/tcpdump/tests/esp1.sh
Normal 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
|
||||||
|
|
1
contrib/tcpdump/tests/esp2.gdbinit
Normal file
1
contrib/tcpdump/tests/esp2.gdbinit
Normal 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
|
8
contrib/tcpdump/tests/esp2.out
Normal file
8
contrib/tcpdump/tests/esp2.out
Normal 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)
|
13
contrib/tcpdump/tests/esp2.sh
Normal file
13
contrib/tcpdump/tests/esp2.sh
Normal 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
|
||||||
|
|
1
contrib/tcpdump/tests/esp3.gdbinit
Normal file
1
contrib/tcpdump/tests/esp3.gdbinit
Normal file
@ -0,0 +1 @@
|
|||||||
|
set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840" -r 08-sunrise-sunset-esp2.pcap
|
12
contrib/tcpdump/tests/esp3.sh
Normal file
12
contrib/tcpdump/tests/esp3.sh
Normal 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
|
||||||
|
|
2
contrib/tcpdump/tests/esp4.gdbinit
Normal file
2
contrib/tcpdump/tests/esp4.gdbinit
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap
|
||||||
|
|
13
contrib/tcpdump/tests/esp4.sh
Normal file
13
contrib/tcpdump/tests/esp4.sh
Normal 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
|
||||||
|
|
3
contrib/tcpdump/tests/esp5.gdbinit
Normal file
3
contrib/tcpdump/tests/esp5.gdbinit
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap
|
||||||
|
|
||||||
|
|
8
contrib/tcpdump/tests/esp5.out
Normal file
8
contrib/tcpdump/tests/esp5.out
Normal 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)
|
13
contrib/tcpdump/tests/esp5.sh
Normal file
13
contrib/tcpdump/tests/esp5.sh
Normal 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
|
||||||
|
|
8
contrib/tcpdump/tests/espudp1.out
Normal file
8
contrib/tcpdump/tests/espudp1.out
Normal 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
|
35
contrib/tcpdump/tests/espudp1.puu
Normal file
35
contrib/tcpdump/tests/espudp1.puu
Normal 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
|
13
contrib/tcpdump/tests/espudp1.sh
Normal file
13
contrib/tcpdump/tests/espudp1.sh
Normal 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
|
||||||
|
|
20
contrib/tcpdump/tests/isakmp-delete-segfault.puu
Normal file
20
contrib/tcpdump/tests/isakmp-delete-segfault.puu
Normal 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
|
11
contrib/tcpdump/tests/isakmp-identification-segfault.puu
Normal file
11
contrib/tcpdump/tests/isakmp-identification-segfault.puu
Normal 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
|
6
contrib/tcpdump/tests/isakmp-pointer-loop.puu
Normal file
6
contrib/tcpdump/tests/isakmp-pointer-loop.puu
Normal 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
|
1
contrib/tcpdump/tests/isakmp1.out
Normal file
1
contrib/tcpdump/tests/isakmp1.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
IP 127.0.0.1.500 > 127.0.0.1.500: isakmp: phase 2/others ? #190[C]
|
12
contrib/tcpdump/tests/isakmp1.sh
Normal file
12
contrib/tcpdump/tests/isakmp1.sh
Normal 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
|
||||||
|
|
1
contrib/tcpdump/tests/isakmp2.out
Normal file
1
contrib/tcpdump/tests/isakmp2.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base
|
12
contrib/tcpdump/tests/isakmp2.sh
Normal file
12
contrib/tcpdump/tests/isakmp2.sh
Normal 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
|
||||||
|
|
2
contrib/tcpdump/tests/isakmp3.out
Normal file
2
contrib/tcpdump/tests/isakmp3.out
Normal 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)
|
13
contrib/tcpdump/tests/isakmp3.sh
Normal file
13
contrib/tcpdump/tests/isakmp3.sh
Normal 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
|
||||||
|
|
35
contrib/tcpdump/tests/isakmp4.out
Normal file
35
contrib/tcpdump/tests/isakmp4.out
Normal 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]
|
13
contrib/tcpdump/tests/isakmp4.sh
Normal file
13
contrib/tcpdump/tests/isakmp4.sh
Normal 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
|
||||||
|
|
155
contrib/tcpdump/tests/isakmp4500.puu
Normal file
155
contrib/tcpdump/tests/isakmp4500.puu
Normal 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
|
191
contrib/tcpdump/tests/lmp.out
Normal file
191
contrib/tcpdump/tests/lmp.out
Normal 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)
|
42
contrib/tcpdump/tests/lmp.puu
Normal file
42
contrib/tcpdump/tests/lmp.puu
Normal 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
14
contrib/tcpdump/tests/lmp.sh
Executable 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
|
||||||
|
|
||||||
|
|
9
contrib/tcpdump/tests/mpls-ldp-hello.out
Normal file
9
contrib/tcpdump/tests/mpls-ldp-hello.out
Normal 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
|
6
contrib/tcpdump/tests/mpls-ldp-hello.puu
Normal file
6
contrib/tcpdump/tests/mpls-ldp-hello.puu
Normal 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
Loading…
Reference in New Issue
Block a user